精华内容
下载资源
问答
  • 概念整合理论认为隐喻是从一个具体的概念域向一个抽象的概念域的系统映射;隐喻是思维问题,不是语言问题;隐喻是思维方式和认知手段。该理论整体上促进了认知语言学领域的整体发展。数千年来一直被奉为医药圭臬的...
  • 云计算的概念及介绍(通俗解释

    千次阅读 2020-10-07 10:25:02
    云计算的概念及介绍 一.什么是云计算 2006年,亚马逊把基于分布式操作系统聚集起来的强大计算能力,通过互联网的方式输送给千千万万的普通用户,人们给这种计算的在线服务,起的名字叫做云计算。 通俗解释就是:把...

    云计算的概念及介绍

    一.什么是云计算

    2006年,亚马逊把基于分布式操作系统聚集起来的强大计算能力,通过互联网的方式输送给千千万万的普通用户,人们给这种计算的在线服务,起的名字叫做云计算。

    通俗解释就是:把分布式操作系统的这种强大的计算能力像水电煤气一样,成为大众的必需品,输送给千家万户,让每个人都能高效利用这种计算资源。就如同水龙头一样,我们什么时候需要水,就可以打开水龙头使用。曾经有人高度概括云计算带给人们生活的巨变:在云计算时代,人们使用计算资源如同使用水电一样方便,打开水龙头,就有自来水要用,打开开关,就有电可用。

    举例说明:假设你需要计算明天的天气,所有数据备好,用自家电脑去计算。但是自己的电脑计算能力有限,想要计算出结果需要一年,这样我们的计算结果就没有价值。(天气预报具有时效性)但我们不能为了预报天气专门去买服务器,为了降低成本,需要使用云计算。我们只需要把计算的方式传输到云端,让云端(云服务器是由一群计算能力强大的电脑连接而成)计算出结果返回到你的电脑,我们只需要支付相应费用。

    二.云计算的特点

    云计算的特点就是,一是有大规模的计算能力,二是能够使计算能力能够像水电煤一样被分享给千家万户。 在数据爆炸的时代,军方、企业等组织迫切需要庞大的数据群组服务。随着Web网站和电子商务的发展,网络已经成为人们离不开的生活必需品之一。在远程的数据中心里,成千上万台电脑和服务器连接成一片电脑云。因此,云计算甚至可以让你体验每秒10万亿次的运算能力,拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据中心,按自己的需求进行运算。 云计算技术优势明显。

    云计算的技术优势包括:快速部署和拓展、稳定性强、安全可靠、易于整合、低成本等。对企业来说拥有云计算服务,就相当于获得了最顶尖的IT 基础设施。在传统模式中,企业需要购买自己的硬件和软件系统,这就需要内部IT 人员进行维护。随着将业务转移到云中,企业不需要雇佣之前那么多的IT 维护人员,减少了人力成本。

    三.云计算的三种部署模式

    1、公共云

    公共云,是指为外部客户提供服务的云,它所有的服务是供别人使用,而不是自己。(目前,典型的公共云有微软的Windows Azure Platform 亚马逊的AWS、Salesforce .com,以及国内的阿里巴巴、用友伟库等。  对于使用者而言,公共云的最大优点是,其所应用的程序、服务及相关数据都存放在公共云的提供者处,自己无需做相应的投资和建设。目前最大的问题是,由于数据不存储在自己的数据中心,其安全性存在- -定风险。同时,公共云的可用性不受使用者控制,这方面也存在一定的不确定性。

    2、私有云

    私有云,是指企业自己使用的云,它所有的服务不是供别人使用,而是供自己内部人员或分支机构使用。私有云的部署比较适合于有众多分支机构的大型企业或政府部门。随着这些大型企业数据中心的集中化,私有云将会成为他们部署IT 系统的主流模式。  相对于公共云,私有云部署在企业自身内部,因此其数据安全性、系统可用性都可由自己控制。但其缺点是投资较大,尤其是一-次性的建设投资较大。

    3、混合云

    混合云,是指供自己和客户共同使用的云,它所提供的服务既可以供别人使用,也可以供自己使用。相比较而言,混合云的部署方式对提供者的要求较高。

    三种云的解释就是:

    公有云:我自己搭建了云平台,卖给别人用(卖服务的)
    私有云:一般是企业或者公司内部使用,都是比较大的企业自己开发自己用,不会给别人使用,所以叫私有云。
    混合云:我用不完我的云,剩下的部分我卖给别人。

    四.云计算的三种服务模式

    云计算的三种服务模式分别是:IaaS、PaaS和SaaS。

    三种服务模式的通俗解释就是:
    IaaS:相当于电脑主机
    PaaS:相当于操作系统
    SaaS:相当于应用软件

    详细介绍:

    1.IaaS: Infrastructure-as-a-Service(基础设施即服务)

    第一层叫做IaaS,有时候也叫做Hardware-as-a-Service,几年前如果你想在办公室或者公司的网站上运行一些企业应用,你需要去买服务器,或者别的高昂的硬件来控制本地应用,让你的业务运行起来。  但是现在有IaaS,你可以将硬件外包到别的地方去。IaaS公司会提供场外服务器,存储和网络硬件,你可以租用。节省了维护成本和办公场地,公司可以在任何时候利用这些硬件来运行其应用。  一些大的IaaS公司包括Amazon, Microsoft, VMWare, Rackspace和Red Hat.不过这些公司又都有自己的专长,比如Amazon和微软给你提供的不只是IaaS,他们还会将其计算能力出租给你来host你的网站。

    2.PaaS: Platform-as-a-Service(平台即服务)

    第二层就是所谓的PaaS,某些时候也叫做中间件。你公司所有的开发都可以在这一层进行,节省了时间和资源。  PaaS公司在网上提供各种开发和分发应用的解决方案,比如虚拟服务器和操作系统。这节省了你在硬件上的费用,也让分散的工作室之间的合作变得更加容易。网页应用管理,应用设计,应用虚拟主机,存储,安全以及应用开发协作工具等。  一些大的PaaS提供者有Google App Engine,Microsoft Azure,Force.com,Heroku,Engine Yard。最近兴起的公司有AppFog, Mendix 和 Standing Cloud

    3.SaaS: Software-as-a-Service(软件即服务)

    第三层也就是所谓SaaS。这一层是和你的生活每天接触的一层,大多是通过网页浏览器来接入。任何一个远程服务器上的应用都可以通过网络来运行,就是SaaS了。  你消费的服务完全是从网页如Netflix, MOG, Google Apps, Box.net, Dropbox或者苹果的iCloud那里进入这些分类。尽管这些网页服务是用作商务和娱乐或者两者都有,但这也算是云技术的一部分。  一些用作商务的SaaS应用包括Citrix的GoToMeeting,Cisco的WebEx,Salesforce的CRM,ADP,Workday和SuccessFactors。

    展开全文
  • 我们引入了焦点概念挖掘器(FCM),这是一种可解释的深度学习文本挖掘算法,用于(1)从文本数据中自动提取一致的语料库级别的概念,(2)关注概念的发现,以便它们与用户高度相关。指定的结果,以及(3)量化概念对...
  • AI技术发展这么快,但是理解的人比较少。有效地使用AI来创造价值,就要跨行业,让企业家和专家一起结合合作。  因此,从CEO角度,你怎么安排有AI技能的人的工作呢?  很多公司的架构是由CEO和不同...

    [转] http://36kr.com/p/5093367.html


    本文来自微信公众号"笔记侠“(ID:Notesman),作者:吴恩达,责编:戈多吴恩达:史上最通俗易懂的人工智能概念解释

    内容来源:2017年9月11日,斯坦福,吴恩达为GASA大学作主题为“探索人工智能”的分享。笔记侠作为独家课程笔记合作伙伴,经主办方审阅授权发布。

    笔记君邀您,先思考:

    1. 为什么AI会突然在这几年进步这么快?

    2. 人工智能的战略逻辑是什么?

    3. 企业如何面对AI的挑战?

    我在百度就在讲这句话:“人工智能是新电能”。100年前,电能给每个企业带来新的改变。

    吴恩达:史上最通俗易懂的人工智能概念解释

    当人工智能技术足够成熟之后,会给很多企业带来非常大的改变。今天我主要讲人工智能的趋势以及对大家会有什么影响。

    一、supervised learning(监督学习)

    AI,这个词对大多数人来说有一种魔术的感觉,但是它具体能做什么?

    它的技术非常复杂,有很多部分,这两三年进步最快的一部分是 supervised learning(监督学习),也就是从a的input(输入)到b的output(输出),什么意思呢?用具体案例来说明下。 

    比如,你输入足够多的电影影评,然后可以大概知道一个电影是好是坏;

    输入一种图片,然后可以知道图片的内容(图片识别);

    输入一段语音,会输出一个文本(语音识别);

    输入一段英文,会输出一段中文(自动翻译);

    输入一段文本,会输出一段音频(语音输出);

    输入一笔费用,会输出很好的回报(消费金融);

    输入一段传感器信息,会输出一个汽车的位置(自动驾驶)。 

    AI技术有很多不同的部分,进步最快的就是这个部分,今天有很多空间使用新技术,给企业带来价值,比如语音识别对百度就非常有价值。

    很多要做人工智能工作的企业需要理解你自己的生意,才能决定如何放入人工智能来创造价值。

    吴恩达:史上最通俗易懂的人工智能概念解释

    不过这种技术有一个缺点,需要大量的数据,需要a,也需要b。 

    经常有人问我,AI可以做什么?我跟很多团队说,如果有哪个事情想一秒钟就成功搞定,那么就可以这个部分用AI创造价值。

    为什么AI会突然在这几年进步这么快?

    如果你的横轴是你的数据量(amount of data),纵轴是效率或准确度,当企业产生大量的数据,传统企业按照过去的算法无法提供数据的计算效果,但如果训练一个巨大的神经网络,效果会非常巨大。 

    如果你要达到最好的效果,有两个必要条件:

    第一,要训练一个巨大的神经网络(NN);

    第二,要有大数据。

    今天很多企业有海量数据,但几年之前没有办法训练足够大的神经网络来实现计算。

    今天,最好的人工智能团队都可以从算法(机器学习)和超级计算机架构入手。 

    supervised learning(监督学习)是人工智能的一部分,我做人工智能项目的时候,有时候也需要到Ai技术的不同部分。

    吴恩达:史上最通俗易懂的人工智能概念解释

    为什么通常讲supervised learning(监督学习)和神经网络(NN)? 

    supervised learning(监督学习)和神经网络进步非常快,其他部分的进步没有这么快,只是慢慢增加,神经网络这两年有巨大的突破。

    二、神经网络

    中国今天对深度学习和神经网络有这么大的兴趣,我来分享下神经网络这个词具体是什么。神经网络,对于很多人也有魔术的感觉。我用具体的案例来说明。 

    如果你想预测一件房间的价值,横轴是大小,纵轴是价钱,那么输入房间大小,输出一个价格,这是一个最简单的神经网络。

    在知道房间大小、睡房数量以及附近居住者的收入水平的前提下,如果买房子的人想知道房间可以住多少人,可以用一个神经元测算出来;也可以通过一个神经元测算是否需要驾车;还可以通过一个神经元测算附近学校的质量。

    最后把这些神经元汇合到一起,再通过另外一个神经元输出房子的价钱,这就是神经网络。

    吴恩达:史上最通俗易懂的人工智能概念解释

    最后分享一个细节来了解神经网络的重要性:

    如果输入房子的特征(a)和价钱(b),而且有大量的数据(a),它就可以自动学习这中间有什么概念,不用去考虑和担心这些神经元。 

    过去两年,人工智能的神经网络进步这么快,如果得到很多a,就能够计算出很多正确的b。 

    就像语音识别,输入语音a,输出一个文本b,要做到高质量,需要一万个小时的数据量,也就是10年左右的数据量,但要拿到这些数据的价钱也是不少的。 

    拥有比较准确的语音识别能力,用户也会更愿意使用。中国这几年语音识别的用户量增加得非常快,就在于现在语音识别比较准确。

    今天很多人工智能的企业都是开源的,技术本身不能作为壁垒。

    要理解另外一个公司的技术并不太难。我在百度和谷歌工作过,对技术比较了解,知道技术是怎么做的,但是如果我没有数据,我就没办法带一个团队做搜索。

    三、人工智能公司的战略逻辑:

    数据-产品-用户(Data - product - user)

    如果你可以拿到一点点数据,你就可以通过神经网络来做一个产品。

    通常一个产品不用做得太好,只要用户能够接受,用户慢慢会有活跃度,用户就会为你产生数据,然后形成正循环,形成壁垒。 

    如果你有一个用户可以接受的产品,却又被巨头用另外一个产品挖走,那么你的数据就没有办法形成正循环。

    吴恩达:史上最通俗易懂的人工智能概念解释

    人工智能获取的战略已经越来越复杂,人工智能团队要想清楚信息获取的战略。 

    1.什么是互联网公司? 

    如果你要为一个传统的购物中心做一个网站或者app,它们还不是一个互联网公司。就像沃尔玛网站,也不是一家互联网公司。 

    你要做一个互联网公司,不在于是不是有网站,最重要的是整个公司的组织是否具有有效利用互联网的能力。 

    互联网公司会做A/B测试,每天可以做一千次A/B测试,所以互联网公司的学习速度会非常快。 

    互联网公司也会在比较短的时间周期里发布新产品,可以每天发布一个或者20个,传统购物中心不能理解为什么这样做或者怎样做。 

    互联网公司做决定的能力不是只有CEO一个人,还有很多产品经理或工程师。因为在互联网公司,技术和用户行为比较复杂,没办法都交给CEO一个人做决定。传统购物中心因为变动比较慢,由CEO做决定是没有那么大问题的。 

    因此,是不是互联网公司不是看你有没有网站。 

    2.什么是人工智能公司? 

    在人工智能时代,一个传统的互联网公司+神经网络技术,也还不是人工智能公司。 

    一个公司要做成人工智能公司,要组织整个公司有效地使用人工智能的能力。AI现在还处于早期,人们还不能完全理解如何组织公司来使用它。 

    AI公司获取数据的战略非常复杂,有关战略,我们有时候会讨论好几天或好几星期。数据获取的过程要好几年,真的要一步一步来打。

    吴恩达:史上最通俗易懂的人工智能概念解释

    最好的人工智能公司都会把数据放在一个数据库里。

    如果你的数据一部分在你个人电脑上,一部分在你办公室电脑上,一部分在某一个数据库里,一部分在另外一个数据库,你的工程师要做一个新的人工智能的话,如何把这些数据放一起给人工智能使用呢? 

    但如果你把数据放进一个数据库,你的软件或者工程师就可以利用完整的数据来训练有效的人工智能。 

    很多公司有很多数据,但是没有办法放在一起,数据的使用效率就会没那么高,你的工程师的工作效率就会慢很多。 

    在人工智能公司工作的工程师,和传统互联网公司的工程师,工作描述的内容是不一样的。如果你是百度公司的产品经理,你要做一个产品,就会画一个图,然后把图给工程师,工程师再写代码,这样的方式对互联网公司是非常有效的。 

    但如果你要做一辆自动驾驶汽车,产品经理画一张汽车图,是没有用的。在人工智能时代,产品经理也需要理解怎样获取数据;也要理解怎么和工程师沟通。 

    20年前,我们不知道A/B测试在今天会变得如此重要。今天,我们还没有人能完全理解人工智能这么重要的概念,谷歌和百度的想法已经比较领先了,但还没有人完全把人工智能的概念讲清楚。 

    这给了我们什么机会?进入互联网时代,很多新公司有了很多、很大的机会。进入AI时代,有一些传统公司像谷歌、百度都做得非常不错,也给很多新公司很多很大的机会。

    四、使用AI的挑战

    AI技术发展这么快,但是理解的人比较少。有效地使用AI来创造价值,就要跨行业,让企业家和专家一起结合合作。 

    因此,从CEO角度,你怎么安排有AI技能的人的工作呢? 

    很多公司的架构是由CEO和不同的事业部组成,那么你怎样通过AI改变他们的工作呢? 

    比如其中一个事业部是做礼品卡的,那么是否可以通过AI改变售卖礼品卡的工作呢?但礼品卡的leader不懂AI,所以它内部很难建成一个AI团队。

    我经常对很多公司说,如果能够找到一个独立的AI团队,就把这些有AI能力的人放到不同的团队矩阵去。 

    今天懂AI的人才那么少,他们不一定愿意被不懂AI的人领导,所以可以等过几年AI比较成熟,不需要一个单独的AI部门之后,就可以把AI人才放到公司的不同事业部团队内。 

    5、6年前,我们都不知道移动互联网能做什么,也没有想到“定位”可以产生这么大的作用,跨行业的团队产生的作用很大。

    今天,移动互联网技术和手机技术很成熟,大家都可以理解互联网能够做什么,这个时候公司就不需要跨行业团队了。同样,AI现在没有那么成熟,所以很需要跨行业人才。 

    不是每个人都要懂AI,也不是每个CEO都要懂AI,但如果可以找人来帮你建立AI团队,可以让你的团队利用AI拥有不错的机会。 

    我在谷歌带谷歌大脑团队的时候,做的第一个事情就是给几百个工程师提供人工智能课程。今天CEO的工作可以从外面选择内容课程,或者找专家和人才来教育你的团队。 

    AI的成熟速度比较慢,很多企业都有很多机会用AI去改变自己的企业。正如过去,大公司都没有看到Uber和Airbnb的机会;在中国,大公司也没有想到滴滴会做到这样子。

    谢谢大家!

    关于来源:

    GASA大学是一所以“科学复兴”为使命,以“没有受教,求知探索”为校训,致力于给创业者、企业家培养科学精神的新型大学。


    展开全文
  • 软件工程常见名词解释&概念

    千次阅读 2019-04-19 19:48:20
    一个高内聚的类不仅要是信息内聚的,还应该是功能内聚的,也就是说,信息与行为除了要集中之外,还要联合起来表达一个内聚的概念,而不是单纯的堆砌,这就是单一职责原则 19.面向对象的信息隐藏  封装  类...

    有关的教材是南大软院用的教材《软件工程与计算》,覆盖大部分软件工程的知识
    可用于准备南大软院专业课842的复习,也可应对面试中有关软件工程的知识。

    1. 什么是设计?
    设计是一种建造之前的“规划”,包括工程部分,也包含艺术部分。

    2. 软件设计
    1) 广义的软件设计
    程序代码时对真正软件的规划。编译器负责根据规划建造真正产品,为产生程序代码所进行的一切工作都是设计活动。
    好的设计保证质量
    2) 狭义的软件设计
    为使以软件系统满足规定的需求而定义系统或部件的体系结构,部件,接口和其他特征的过程

    3为什么要设计?
    软件开发的最大挑战就是软件的复杂性,所以控制系统复杂度是软件设计方法的核心问题。

    4软件产品设计
    软件产品设计是规定软件产品特性,功能和接口以满足用户需求和愿望的活动,需要用户界面,交互设计,沟通,工业设计,市场营销等技能。

    5软件工程设计
    软件工程设计是规定程序,子系统以及他们的组成部分和工作方式以满足软件产品规格的活动。需要编程,算法,数据结构,软件设计原则,实践,过程,架构和模式等技能。

    6.软件设计的层次性
    高层设计描述系统的高层结构,关注点和设计决策
    中层设计关注组成构件的模块的划分,过程之间的调用关系,类之间的协作
    低层设计关注具体的数据结构,算法,类型,语句等

    7.关注点分解:多视点方法
    常见设计视角
    设计视角 设计关注 样例设计语言
    上下文 系统服务和用户 Uml用例图
    组合 功能分解和运行时分解,子系统的构造,购买vs建造,构建的重用 Uml包图,构件图
    逻辑结构 静态结构,类型和实现的重用。最重要的层,子系统,包,框架,类,接口等的概念性组织 Uml类图,对象图
    依赖 互联,分享,参数化 包图,构件图
    交互 对象之间的消息通讯 顺序图,通信图
    动态状态 动态状态的转移 状态图

    8.软件设计的标准(外部要简洁,内部要坚固)
    效用:需求(功效是必须的,容易达到的)
    坚固:质量(可修改性等)(坚固是设计的重点任务,是合格设计必须的)
    美感包括1)简洁性,抽象,归纳,取出噪音(美感是卓越者的素质)
    2)结构清新:隐喻显而易见是正确的
    3)一致性:用相同的方法做相同的事情

    9.软件设计过程(软件设计没有严谨,精确地过程
    1)经验主义:在软件设计过程中添加一些灵活性以应对设计中人的因素,文档化,原型,尽早验证,迭代式开发
    2)理性主义:利用模型语言,建模语言,工具支持,将软件设计过程组织成系统,规律的模型建立过程,设计方法学的目标就是不断克服人的弱点,最终得到完美。

    10.软件设计的演化(迭代)性
    完美的理性设计不存在,真实的设计过程是演化和迭代的,不是一次完成的。反复迭代,直到最后兼顾了功效,坚固和美感。

    11.软件设计的决策性 (决策要一致!)
    决策:为解决一个问题而采取的决定
    软件设计是问题求解和决策的过程
    决策的影响因素:经验,类似的系统,参考模型,设计约定,设计原理,体系结构风格,设计模式

    12.区分逻辑设计和物理设计
    1)物理设计=逻辑设计+介质匹配
    2)先逻辑后物理的设计思路,否则,如果介质匹配的复杂度较高,可能会扰乱逻辑设计的思路。
    3)物理是逻辑在载体上的实现。物理设计复杂度=事物(逻辑)复杂度+载体与事物的适配复杂度
    4)物理实现的载体
    《1》低层:基本类型+基本控制结构
    《2》中层:oo编程语言机制
    类声明,实例创建与撤销,实例生命期管理
    类权限控制机制
    复杂机制,继承
    《3》高层:导入导出和名称匹配
    5)比较
    基于抽象的体系结构更好的表现系统结构的组织,抓住系统的基本功能和主要协作机制,利用部件和连接件之间的依赖关系将部分有机的联系起来形成整体。
    而实现模型更多的考虑实现细节。

    13.软件体系结构模型:部件+连接件+配置
    部件:在系统体系结构中封装处理和数据的元素称为软件部件,部件通常提供特定应用的服务,部件主要通过端口(port)元素定义自己的外部可见特征,即部件与外部发生联系的窗口
    连接件:定义了部件间的交互。在复杂系统中,交互可能比独立部件的功能更重要且更有挑战性,连接件通过角色(role)元素定义交互参与者的特征
    连接件分为显式和隐式
    配置:部件和连接件是软件体系结构的独立元素单位,相互没有直接关联,配置是将部件和连接件整合起来的专门机制,配置定义部件端口与连接件角色的适配情况,并以此为基础描述整个软件体系结构

    14.体系结构风格
    一.主程序与子程序风格
    《1》部件:程序,函数,模块
    《2》连接件:他们之间的调用
    《3》约束:(控制从子程序层次结构顶部开始且向下移动)
    1)层次化分解,基于定义使用关系,上层使用下层,下层不能使用上层
    2) 单线程控制,主程序拥有最初控制权,在使用中将控制权转移到下层
    3) 隐含子系统结构,子程序通常合并成模块
    4) 层次化推理,子程序的正确性依赖于他所调用的自程序的正确性
    《4》实现:实现机制:模块实现,每个子程序都实现为一个模块
    主程序/子程序风格是基于部件和连接件建立的高层结构,类似于结构化程序的结构,但是部件不同于程序,是粗粒度的模块,部件的实现模块内部可以用结构化分析方法也可以使用面向对象方法。
    《5》效果
    1) 特点:功能分解,集中控制
    2) 优点:流程清晰,易于理解,强控制性,更好的控制程序的正确性
    3) 缺点:强耦合,依赖于交互方的接口,难以修改和复用,隐含的共享数据交流,不必要的公共耦合,破坏“正确性”控制能力
    《6》应用:功能可以分解为多个顺序执行步骤的系统
    二.面向对象风格
    1)将系统组织成多个对象,每个对象封装其内部的数据,并基于数据对外提供接口
    2)部件:对象或模块
    3)连接件:功能或调用(方法)
    4)约束:
    《1》数据表示对于其他对象是隐藏的,信息内聚
    《2》对象负责保持数据表示的完整性,以此为基础对外提供“正确”的服务
    《3》基于方法调用机制建立连接件,连接对象部件
    《4》每个对象都是自主代理,不同对象之间是平级的,没有主次,从属,层次,分解等关系
    5) 实现:模块实现,将每个对象部件实现为一个模块,基于面向对象分析的实现,基于结构化方法的实现
    6) 应用:适用于核心问题是识别和保护相关结构信息(数据)的应用,数据表示和相关操作封装在抽象数据类型
    7) 效果:
    优点:可修改性,不影响外界情况下变更内部实现
    易开发,易理解,易复用,自治单位,自己负责正确性
    缺点:接口的耦合性:方法调用
    标识的耦合性:调用其他对象需要知道对象的标识
    副作用:难以实现程序的正确性(比如A.B使用C,B对C的修改可能会对A产生不可预期的影响)
    三.分层风格
    1)部件:通常是程序或对象的集合
    2)连接件:通常是有限可见度下的程序调用或方法调用
    3)层次结构,通过分解,将复杂系统划分为多个独立的层次,每一层高度内聚,层与层之间的连接器通过层间交互的协议定义
    4)约束:系统组织成层,其中每一层给上一层提供服务,作为下一层的客户端,不允许跨层,层内部件可以交互。逆向调用也是不允许的
    5)应用:适用于包含不同类服务的应用,而且这些服务能够分层组织,尤其当应用可能在某些层改变。例子:分层通信协议,操作系统
    6)实现:关注点分离(每层逐次抽象),层间接口使用固定协议(固定控制),每层一或多个模块实现
    7)效果:
    优点:设计机制清晰,易于理解,支持并行开发,更好的可复用性和内部可修改性
    缺点:交互协议难以修改,性能损失(禁止跨层调用,每次请求都要层次深入,多次调用,可能生成冗余的调用处理),难以确定层次数量和粒度

    四.模型-视图-控制器风格
    1)model:应用程序的核心,封装了内核功能和数据
    业务逻辑(核心)
    数据以及访问数据的函数(视图使用)
    执行特定应用程序处理的过程(控制器代表用户调用)
    模型对于用不可不见,M和V独立
    模型独立于特定输出表示或者输入方式(M与C独立)
    用户只能通过控制器模型操作(C是M与V之间的桥梁)
    2)View:模型的表示,提供交互界面,向用户展示模型信息
    3)Controller:处理用户和系统之间的交互
    4)变更传播机制
    《1》一个模型可对应多个视图,若用户通过一个视图的控制器改变了模型中的数据,那么依赖于该数据的其他视图也应该反映出这样的变化,一旦模型的数据发生了变化,模型需要通知所有相关的视图做出相应的变化。
    《2》维护数据的一致性
    4) 部件:model部件负责维护领域知识和通知视图变化
    View部件负责给用户显示信息和将用户手势发送给控制器
    Controller改变模型的状态,将用户操作映射到模型更新,选择视图进行响应
    5) 连接件:程序调用,消息,事件
    6) 效果:
    优点:易开发性:三种不同内容的抽象,
    视图和控制的可修改性:模型相对独立,模型所封装的业务逻辑相对稳定
    适宜于网络系统开发的特性:业务逻辑,表现和控制的分离是得模型可以同时建立并保持多个视图
    缺点:不利于理解任务实现
    模型修改困难:视图和控制都依赖与模型
    7) 应用:
    适用于以下应用:在运行时,用户界面的改变很容易且是可能的
    用户界面的调整或抑制不会影响该应用功能部分的设计和编码
    例如:web应用

    15.详细设计?(会画类图,以及知道类之间的关系怎么表示
    1)哪些模块需要详细设计?
     view
     逻辑层:oo设计
     数据层:数据设计:简单设计-数据库课程

    3) 详细设计从哪开始?软件体系结构设计解决了需求中关键性的需求和约束,体系结构原型代码为详细设计提供了主要的代码框架,是初步方案,要进行细化–详细设计
    4) 详细设计的目标:实现所有功能性需求和非功能需求(需求驱动,细化每一个构件)
    5) 结果:要能够指导程序员编程的详细设计文档和详细设计原型代码
    a) 模块结构和接口
    b) 类结构,类的协作,类接口(面向对象分析方法)
    c) 控制结构和函数接口(结构化分析方法)
    d) 重要的数据结构和算法逻辑(如果有必要的方法)
    6) 面向对象的设计方法:
    i. 找到所有的对象(实体或者抽象概念)
    ii. 找到所有的任务/协作
    iii. 将任务/协作分配给对象

    对象:数据+算法
    对象完成自己的职责
    对象自己完成不了的通过互相发送消息请求其他对象完成
    对象:根据单一职责进行分解

    产生典型的面向对象式风格,容易陷入分散式控制风格,可以适当补充控制器,建立委托式控制风格

    7) 面向对象设计过程:
     建立设计模型
    通过职责建立静态设计模型(建立类图的步骤)
    抽象类的职责
    抽象类之间的关系
    添加辅助类
    通过协作建立动态设计模型
    抽象类之间的协作
    明确对象的创建
    选择合适的控制风格
     重构设计模型
    i. 根据模块化的思想重构,目标:高内聚,低耦合
    ii. 根据信息隐藏的思想重构,目标:隐藏职责和变更
    iii. 利用设计模式重构

    8) 通过职责建立静态模型
     抽象对象的职责
     类是对对象的抽象,是对所有具有相同属性和相同行为的对象族的一种抽象
    属性职责:对象的状态
    方法职责:对象的行为
     抽象类的关系
     类之间的关系表达了相应职责的划分和组合
     依赖<关联<聚合<组合<继承
     添加辅助类
     接口类
     记录类
     启动类
     控制器类
     实现数据类型的类
     容器类

    9) 通过协作建立动态的模型
     抽象对象之间的协作,通过顺序图和状态图来表达软件的动态模型
     明确对象的创建:谁负责创建类的新实例?解决方案:根据潜在创建者和被实例化类之间的关系决定哪个类应该创建实例
     建立合适的系统控制风格
    为了完成某一个大的职责,需要对职责的分配做很多决策,控制风格决定了决策由谁来做和怎么做决策
     分散式:所有系统行为在对象网络中广泛传播
     集中式:少数控制器记录所有系统行为的逻辑
     委托式(授权式):决策分布在对象网络中,一些控制器作主要决策

    16.耦合
    描述的是两个模块之间关系的复杂程度
    根据其耦合性的高低也可以以此分为内容耦合,公共耦合,重复耦合,控制耦合,印记耦合,数据耦合

    17.内聚
    表达的事一个模块内部的联系的紧密性
    内聚可以分为7个级别,由高到低包括信息内聚,功能内聚,通信内聚,过程内聚,时间内聚,逻辑内聚,偶然内聚

    18.面向对象中提高内聚的方法
     集中信息与行为
    一个高内聚的类应该是信息内聚的,也就是说类的信息应该和访问这些信息的行为放在一个类中,即集中信息与行为
    每个对象都会拥有数据信息和行为,这些信息和行为应该是有关联的:信息联合起来能够支撑行为的执行:行为完成对这些信息的操纵
     单一职责原则
    一个高内聚的类不仅要是信息内聚的,还应该是功能内聚的,也就是说,信息与行为除了要集中之外,还要联合起来表达一个内聚的概念,而不是单纯的堆砌,这就是单一职责原则

    19.面向对象的信息隐藏
     封装
     类应该通过接口对外表现他直接和间接承载的需求,而隐藏类内部的构造机理,这就是“封装”想要达到的
     封装实现细节
     封装数据和行为
     封装内部结构
     封装其他对象的引用
     封装类型信息
     封装潜在变更
    如果预计类的实现中有特定地方会发生变更,就应该将其独立为单独的类或者方法,然后为单独的类或方法抽象建立稳定的接口,并在原类中使用该稳定接口以屏蔽在变更的影响
     隐藏

    20.多态
     不同类型的值能够通过统一的接口来模拟,只需要不同类型的对象拥有统一定义的公共接口,就可以不论实际类型如何,直接调用该统一接口,这样系统就可以根据实际类型的不同表现出不同的行为
     子类型多态(面向对象编程中的狭义多态)
     使用继承机制实现
     表现为很多不同的子类通过共同的父类联系在一起,通过父类表现统一的接口,通过子类表现不同的行为
     程序员不需要预先知道对象的类型,具体的行为是在运行时才决定的
     多态抽象出多个类共同的行为接口,然后通过动态绑定,在运行时根据实际对象类型执行不同的行为实现

    21.设计模式
     策略模式
     设计分析:
     上下文和策略分割为不同的类,上下文Context类负责满足需求,策略类Strategy负责复杂策略的实现
     上下文类和策略类之间使用组合关系
     各种策略在具体策略类(ContreteStrategy)中提供,上下文类拥有统一的策略接口。由于策略和上下文独立,策略的增减,策略实现的修改都不会影响上下文和使用上下文的客户
     解决方案
     应用场景:
     当很多相关类只在他们的行为的实现上不一样时,策略模式提供了一个很好的方式来配置某个类,让其具有上述多种实现之一
     当我们需要同一个行为的不同实现时,策略模式可以用作实现这些变体
     一个类定义了很多行为,这些行为作为一个switch选择语句的分支执行部分,这时策略模式可以消除这些分支选择
     单件模式(会写代码)
     典型问题
     在某些场景中,对于某个类,在内存中只希望有唯一一个对象存在
     每次想得到这个类的一个对象的引用的时候,都指向唯一的那个对象
     无论创建多少次这个类的对象,其实总共还是只创建了一个对象
     设计分析
     为了实现之创建一个对象,首先要让类的构造方法变为私有的
     通过静态的getInstance方法获得Singleton类型的对象的引用
     类的成员变量中拥有一个静态的Singleton类型的引用变量uniqueInstance
     getInstance方法返回引用变量uniqueInstance,如果uniqueInstance等于null,则说明首次创建,通过关键字new创建Singleton对象,并且将该对象的引用变量赋值给uniqueInstance,否则说明不是首次创建,每次只需要返回已创建的对象的引用uniqueInstance即可
     应用场景
     某个类只有一个实例,并且作为客户公共的访问点
     当单一实现需要被继承,客户能够用一个子类的实例,而不需要修改他的代码

    22.设计可靠的代码
     契约式设计(会写)
     异常方式
     断言方式
     Java中断言语句的实现
    为了方便实现契约式设计,java语言提供了断言语句:assert Expression 1(:Exptression 2);
     Expression 1是一个布尔表达式,在契约式设计中可以将其设置为前置条件或者后置条件
     Expression 2是一个值,各种常见类型都可以
     如果Expression 1为true,断言不影响程序执行
     如果Expression 2 为false,断言抛出AssertionError异常,如果存在Expression 2就使用它作为参数构造AssertionError
     防御式编程(代码)
     基本思想:在一个方法与其他方法,操作系统,硬件等外界环境交互时,不能确保外界都是正确的,所以要在外界发生错误时,保护方法内部不受伤害
     常见情景(异常和断言都可以用来实现防御式编程)
     输入参数是否合法
     用户输入是否有效
     外部文件是否存在
     对其他对象引用是否是null
     其他对象是否已初始化
     其他对象的某个方法是否已执行
     其他对象的返回值是否正确
     数据库系统连接是否正常
     网络连接是否正常
     网络接受的消息是否有效

    23.软件测试
     验证与确认
     验证Verification
     检查开发者是否正确的使用技术建立系统,确保系统能够在预期的环境中按照技术要求正确的运行
     例如,“检查需求文档中的书写错误”,“发现设计思路的不完备”,“审查代码中的编程错误”等就属于验证活动
     确认Validation
     检查开发者是否建立了正确的系统,确保最终产品符合规格
     例如,对“需求文档内容是否反映用户真实意图”,“设计能否跟踪到需求”,“测试是否覆盖需求”等事宜的检查属于确认活动
     测试层次
     单元测试,验证独立软件片段的功能,软件片段可以是单个的子程序,或者是由紧密联系的单元组成的较大的组件
     又称为模块测试
     是对程序单元进行正确性检验的测试工作
     在面向对象编程中,一个单元就是类的一个方法
     通常来说,程序员没修改一次程序就会进行最少一次单元测试
     测试一个单元模块时,需要构建桩程序和驱动程序,将其与其他程序单元隔离
     集成测试,验证软件组件之间的交互
     又被称为组装测试,即对程序模块一次性或采用增量方式组装起来,对系统接口进行正确性检验的测试工作
     集成测试一般在单元测试之后,系统测试之前进行
     分为自顶向下的集成测试和自底向上的集成测试
     系统测试,关注整个系统的行为,评价系统功能需求和非功能性需求,也评价系统与外界环境(例如其他应用,硬件设备等)的交互
     单元测试和集成测试的区别
     单元测试的对象是类的一个方法,集成测试的对象是系统的接口
     单元测试的主要测试方法是基于代码的白盒测试,集成测试主要是基于功能的黑盒测试
     只有单元测试通过之后才能进行集成测试,所以单元测试是集成测试的基础,直接影响着集成测试
     测试技术(经常考什么是黑盒测试和白盒测试以及都包含哪些测试方法)
     黑盒测试
     黑盒测试是把测试对象看做是一个黑盒子,完全基于输入和输出数据来判定测试对象的正确性
     测试使用测试对象的规格说明来设计输入和输出数据
     测试方法
     等价类划分
    等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理的假定:测试某等价类的代表值就等于对这一类其他类的测试
    等价类划分可以有两种不同的情况
     有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能
     无效等价类:是指对于程序的规格说明来说是不合理的,无意义的输入数据构成的集合。利用无效等价类可检验程序是否规避了各种错误和异常
     可以将其输入数据划分为三类:
     有效数据:符合前置条件
     无效数据:破坏第一个前置条件
     无效数据:破坏第二个前置条件
     边界值分析
     是对等价类划分方法的补充
     经验表明错误最容易发生在各等价类的边界上,而不是发生等价类内部。因此针对边界情况设计测试用例,可以发现更多的缺陷
     决策表
     用于测试以复杂逻辑判断为规格的测试对象
     决策表既能保证测试的完备性,又能保证成本最小
     决策表的每一列规则选项都是一个等价类
     状态转换
     针对复杂测试对象。该类复杂测试对象对输入数据的反应是多样的,还需要依赖自身的状态才能决定
     通常要先为对象建立状态图,描述测试对象的状态集合,输入集合和输入导致的状态转换集合
     以状态图为基础,可建立测试对象的转换表
     状态转换表每一行都应该被设计为测试用例
     白盒测试(将测试对象看做透明的,按照测试对象内部的程序结构来设计测试用例进行测试工作)
     语句覆盖:确保被测试对象的每一行程序代码都至少执行一次
     条件覆盖:确保程序中每个判断的每个结果都至少满足一次
     路径覆盖:确保程序中每条独立的执行路径都至少执行一次

    25.软件工程定义:
    1)应用系统的,规范的,可量化的方法来开发,运行和维护软件,即将工程应用到软件
    2)对1)中各种方法的研究
    26.软件工程的发展
     20世纪50年代
    科学计算:以机器为中心进行编程,像生产硬件一样生产软件
     20世纪60年代
    业务应用(批量数据处理和事务计算):软件不同于软件,用软件工艺的方式生产软件
     20世纪70年代
    结构化方法:瀑布模型,强调规律和纪律,是后续年代软件工程发展的支撑
     20世纪80年代
    追求生产力最大化,现代结构化方法/面向对象编程广泛应用,重视过程的作用
     20世纪90年代
    企业为中心的大规模软件系统开发,追求快速开发,可变更性和用户价值,web应用出现
     21世纪00年代
    大规模web应用,大量面向大众的web产品,追求快速开发,可变更性,用户价值和创新

    26.团队结构
     主程序员团队
    有一名技术能力出色的成员被指定为主程序员,主程序员负责领导团队完成任务
     民主团队
    因为没有集中的交流点,所以每个成员都可以发挥自己的能动性,能取得更高的士气和工作成就感
     开放团队
    为了创新而存在

    27.软件质量
     质量是一个过于宏观的概念,无法进行管理,所以人们通常会选用系统的某些质量要素进行量化处理,建立质量特征,这些特征被称为质量属性
     为了根据质量属性描述和评价系统的整体质量,人们从很多质量属性的定义选择了一些能够互相配合,互相联系的特征集,他们被称为质量模型
     质量模型例子
     可用性:软件在出现系统故障后保持运行的能力
     扩展性:改进或修改软件效率与功能需要花费的精力
     易学习性:用户理解软件时所花费精力的最小化程度

    28.质量保障
     在软件开发过程中,要监控和执行质量保障计划,在开发活动达到一个里程碑时,要及时根据质量保障计划进行质量验证
     质量验证的主要方法有:
     评审
     评审又称为同级评审
     现在是公认的质量保障最佳实践方法
     分为六个阶段:规划阶段,总体部署阶段,准备阶段,审查会议阶段,返工阶段和跟踪阶段
     在评审中发现问题是整个评审过程的关键阶段
     测试
     质量度量

    29.软件配置管理
     配置管理:用技术和管理的指导和监督方法,来表示和说明配置项的功能和物理特征,控制对这些特征的变更,记录和报告变更处理及其实现状态,并验证与需求规格的一致性
     配置项:置于软件配置管理之下的软件配置的各种有关项目,包括各类管理文档,评审记录与文档,软件文档,源码及其可执行码,运行所需的系统软件和支撑软件以及有关数据等
     基线:已经经过正式评审的规格说明或制品,可以作为进一步开发的基础,并且只有通过正式的变更控制过程才能变更

    30.软件配置管理的主要活动(期末考试)

    1. 标识配置项
      首先要确定有哪些配置项需要被保存和管理。其次要给配置项确定标识,设置唯一的id,最后要详细说明配置项的特征

    2. 版本管理
      为每一个刚纳入配置管理的配置项赋予一个初始的版本号,并在发生变更时更新版本号

    3. 变更控制
      已经纳入配置管理中的配置项发生变化时,需要依据变更控制过程进行处理

    4. 配置审计
      配置审计的目标是确定一个项目满足需求的功能和物理特征的程度,确保软件开发工作按照需求规格和设计特征进行,验证配置项的完整性,正确性,一致性和可跟踪性

    5. 状态报告
      配置状态报告是要标识,收集和维持演化中的配置状态信息,也就是对在动态演化着的配置项信息及其度量取快照

    6. 软件发布管理
      软件发布管理是要将软件配置项发布到开发活动之外,例如发布给客户

      31.软件建立的依据
       开发软件系统的目标:解决实际问题
       单纯的软件系统是不能解决问题的,只有和现实世界之间形成有效的互动才能实现问题的解决
       研究现实世界,分析问题,寻找与现实世界互动的方法

    32需求工程
     定义:所有需求处理活动的总和。他收集信息,分析问题,整合观点,记录需求并验证其正确性,最终描述出软件被应用后与其环境互动形成的期望效应
     三个主要任务:
     需求工程必须说明软件系统将被应用的应用环境及其目标,说明用来达成这些目标的软件功能,同时说明软件需要“做什么”和“为什么”需要做
     需求工程必须将目标和功能反映到软件系统当中,映射为可行的软件行为,并对软件行为进行准确的规格说明
     现实世界是不断变化的世界,因此需求工程还需要妥善处理目标和功能随着时间演化的变化情况
     需求工程的活动
    1) 需求开发
     需求获取
     从人,文档或者环境当中获取需求的过程,
     要利用各种方法和技术来“发现”需求,
     需求工程师两大重要任务:
    目标分析
     根据问题确定目标,问题的反面即为目标
     通过分析利害关系人确定目标
    用户需求获取
     面谈,问答形式,有特定目的的直接会话
     集体获取方法,通过和用户们讨论发现需求,在讨论中达成需求的一致
     头脑风暴,集体面谈,发现潜在的需求(发明需求)
     原型,有形的制品增进用户和需求工程师之间的交流
     需求分析
     通过建模来整合各种信息,以使得人们更好的理解问题
     为问题定义出一个需求集合,这个集合能够为问题界定一个有效的解决方案
     检查需求当中存在的错误,遗漏,不一致等各种缺陷,并加以修正
     需求规格说明
     系统用户之间交流需求信息
     高质量:要简洁,精确,一致和易于理解
     需求工程师的两大重要任务
     定制文档模板
     编写文档
     需求验证
     需求阶段的错误在维护阶段才发现,在维护阶段进行修复的代价可以高达需求阶段修复代价的100-200倍
     需求规格说明文档至少要满足下面几个标准

    1. 文档内每条需求都正确,准确的反映了用户的意图
    2. 文档记录的需求集在整体上具有完整性和一致性
    3. 文档的组织方式和需求的书写方式具有可读性和可修改性
       同级评审,原型等

    2) 需求管理
     需求管理:保证需求作用的持续,稳定和有效发挥
     进行变更控制

    33.需求定义

    1. 用户为了解决问题或达到某些目标所需要的条件或能力
    2. 系统或系统部件为了满足合同,标准,规范或其他正式文档所规定的要求而需要具备的条件或能力
    3. 对1)或2)中的一个条件或一种能力的一种文档化表述

    34.问题域
     现实世界运行规律的一种反映
     需求的产生地,也是需求的解决地
     最终的软件产品要在现实中部署,它能够部分影响问题域,但不能任意改变现实
    软件开发必须尊重问题域,不能因为技术原因妄自修改现实世界的实际情况

    35.规格说明
     软件产品的方案描述,他以软件产品的运行机制为主要内容
     他不是需求但实现需求,不是问题域但需要与问题域互动
     要以关注对外交互的方式描述软件解决方案,它既需要以软件产品的角度而不是用户的角度进行描述,又不能太多的涉及软件产品的内部构造机制

    36.问题,需求,问题域,规格说明
    下面信息内容是哪一种?
     超市的成本太高 问题
     超市的成本应该降低 需求
     超市的成本主要由人力成本和库存成本组成 问题域
     系统的成本计算为:成本=人力成本+库存成本 规格说明

    37.需求层次性(给例子写用户需求,业务需求和系统需求)
    目标:业务需求(解决方案与系统特性)
     系统建立的战略出发点,表现为高层次的目标,他描述了组织为什么要开发系统
     为了满足用户的业务需求,需求工程师需要描述系统高层次的解决方案,定义系统应该具备的特性
    任务:用户需求(问题域知识)
     执行实际工作的用户对系统所能完成的具体任务的期望,描述了系统能够帮助用户做些什么
     用户需求表达了用户对系统的期望,但是要透彻和全面的了解用户的真正意图,仅仅拥有期望是不够的,还需要知道期望所来源的背景知识,因此,对所有的用户需求,都应该有充分的问题域知识作为背景支持

    系统行为:系统级需求(需求分析模型)
     用户对系统行为的期望,每个系统级需求反映了一次外界与系统的交互行为,或者系统的一个实现细节
     直接映射为系统行为,定义了系统中需要实现的功能,描述了开发人员需要实现什么
     一系列的系统级需求联系在一起满足一个用户需求,进而满足业务需求

    38,将用户需求转化为系统需求的过程是一个复杂的过程
     首先需要分析问题域及其特性,从中发现问题域和计算机系统的共享知识,建立系统的知识模型
     然后将用户需求部署到系统模型当中,即定义系列的系统行为,让他们联合起来实现用户需求,每一个系统行为即为一个系统需求
     该过程就是需求工程当中最为重要的需求分析活动,又称为建模与分析活动

    39.软件需求的分类(给出需求让写出属于什么需求)
     功能需求
     定于:和系统主要工作相关的需求,即在不考虑物理约束的情况下,用户希望系统所能够执行的活动,这些活动可以帮助用户完成任务。功能需求主要表现为系统和环境之间的行为交互
     最常见,最主要和最重要的需求
     能够为用户带来业务价值的系统行为
     最需要按照三个抽象层进行展开
     软件产品产生价值的基础
     性能需求
     定义:系统整体或系统组成部分应该拥有的性能特征,例如cpu使用率,内存使用率
     速度,系统完成任务的时间
     容量,系统所能存储的数据量
     吞吐量,系统在连续的时间内完成的事务数量
     负载,系统可以承载的并发工作量
     实时性,严格的实时要求
     质量属性
     定义:系统完成工作的质量,即系统需要在一个“好的程度”上实现功能需求例如可靠性程度,可维护性程度等
     通常是隐式的,在需求开发时非常困难
     极大的影响软件体系结构的设计
     可靠性:在规定时间间隔内和规定条件下,系统或部件执行所要求能力的能力
     可用性:软件系统再投入使用时可操作和可访问的程度或能实现其指定系统功能的概率
     安全性:软件阻止对其程序和数据进行未授权访问的能力,未授权的访问可能是有意的,也可能是无意的
     可维护性:软件系统或部件能修改以排除故障,改进性能或其他属性或适应变更了的环境的容易程度,包括可修改性和可扩展性
     可移植性:系统或部件能从一种硬件或软件环境转换至另外一种环境的特性
     易用性:与用户使用软件所花费的努力及其对使用的评价相关的特性
     对外接口
     定义:系统和环境中其他系统之间需要建立的接口,包括硬件接口,软甲接口,数据库接口等
     约束:(总体上限制了开发人员设计和构建系统时的选择范围)
     系统开发及运行的环境
     问题域内的相关标准
     商业规则
     其他数据需求
    功能需求的补充,如果在功能需求部分明确定义了相关的数据结构,那么就不需要再行定义数据需求
    数据需求是需要在数据库,文件或者其他介质中存储的数据描述,通常包括以下内容
     各个功能使用的数据信息
     使用频率
     科访问性要求‘
     数据实体及其关系
     完整性约束
     数据保持要求’

    40.需求分析的任务
     建立分析模型,达成开发者和用户对需求信息的共同理解
    将复杂的系统分解成简单的部分以及这些部分之间的关系
    确定本质特征,抛弃次要特征
     依据共同的理解,发挥创造性,创建软件系统解决方案

    41.模型与建模
     模型是对事物的抽象,帮助人们在创建一个事物之前可以有更好的理解。
     建立模型的过程称为建模。“它是对系统进行思考和推理的一种方式。建模的目标是建立系统的一个表示,这个表示以精确一致的方式描述系统,使得系统的使用更加容易”
     抽象
     关注重要的信息,忽略次要的内容
     将人质保留在适当的层次,屏蔽更深层次的细节
     通过强调本质特征减少问题复杂性
     分解
     将某个复杂难以理解的问题分解成多个相对容易的子问题,并掌握各子问题的联系
     分而治之

    42.需求分析模型
    描述软件解决方案的模型技术
     介于用户概念和软件内部实体之间的模型形式
     使用软件的内部实体作为模型的基本元素(对象,函数,属性等)
     使用问题域的概念描述软件内部实体,使用问题域语言表现语义

    43.用例
     基本特点:目标,交互,场景(行为序列)
     定义:在系统(或子系统或者类)和外部对象的交互当中所执行的行为序列的描述,包括各种不同的序列和错误的序列,他们能够联合提供一种有价值的服务
     用例描述了在不同条件下系统对某一用户的请求的响应。根据用户的请求和请求时的系统条件,系统将执行不同的行为序列,每一个行为序列被称为一个场景,一个用例是多个场景的集合
     用例模型:以用例为单位建立的一个系统功能展示模型,是系统所有用例的集合,以统一,图形化的方式展示系统的功能和行为特性
     基本元素:
     用例,代表了一组典型的场景,帮助构建,关联,和理解基本需求
     参与者是与开发的系统进行交互的用户或其他系统等角色
    用例图中一个单一的参与者可以代表多个用户(或系统)
    一个单一的用户(或系统)可能扮演多种角色
    参与者不一定是人,例如,需要从当前系统获取信息的外部系统也是参与者
     关系,参与者之间的关系:泛化
    用例之间:泛化,包含,扩展
    参与者与用例之间:关联
     系统边界
    系统所包含的系统成分与系统外事务的分界线,用矩形框表示系统边界
    参与者通常在边界外面,用例通唱在边界里面

    44.用例图的建立
     目标分析与确定解决方向
     寻找参与者
     寻找用例
     细化用例
    如果用例的粒度不合适就需要进行细化和调整
     判断标准是:用例描述了为应对一个业务事件,由一个用户发起,并在一个连续时间段内完成,可以增加业务价值的业务
     不要将没有业务价值(而是技术实现需要)的事件作为用例(例如,登录(安全性需求),输入输出数据检查(数据需求或者业务规则),数据库连接,网络传输等)
     不要将没有独立业务价值的单个操作(他们仅仅是技术实现上独立)作为用例,例如删除,增加,修改,保存等等
     常见错误
     不要将用例细化成单个操作
     不要将单个步骤细化成用例
     不要将片面的一个方面细化成用例‘
     不要将登录,数据验证,连接数据库等没有业务价值的内容作为用例

    45.用例描述(给出场景让写用例)
    项目 内容描述
    Id 用例的标识
    名称 对用例内容的精确描述,体现了用例所描述的任务
    参与者 描述系统的参与者和每个参与者的目标
    触发条件 标识启动用例的条件,可能是系统外部的事件,也可能是系统内部的事件,还可能是正产流程的第一个步骤
    前置条件 用例能够正常启动和工作的系统状态条件
    后置条件 用例执行完成后的系统状态条件
    正常流程 在常见和符合预期的条件下,系统与外界的行为交互序列
    扩展流程 用例中可能发生的其他场景
    特殊需求 和用例相关的其他特殊需求,尤其是非功能性需求

    46.交互图
     描述对象之间的协作
     通常描述的是单个用例的典型场景,他也因此被称为“用例的实现”
     交互图有顺序图,通信图,交互概述图和时间图四种类型,其中顺序图是最为常用的一种

    47.顺序图
    以交互行为中的消息序列为主,消息以时间顺序在图中从上到下排列

    48.系统顺序图
     系统顺序图将整个系统看做一个黑箱的对象而描述的简单顺序图形式,他强调外部参与者和系统的交互行为,重点展示系统级事件
     通过建立系统顺序图模型,可以:
     通过匹配“刺激/响应”发现交互行为的缺失
     只有用户发起刺激,系统才会有响应,否则意味着用户行为信息丢失
     用户发起刺激后,系统必须有响应,否则意味着软件响应行为丢失
     一个刺激,通常有一个系统响应,也可以有连续的多个响应
     通过分析每个刺激响应的异常,发现流程的异常

    49.概念类图
     又被称为“领域模型”
     类图是面向对象分析方法的核心
    描述类(对象)和这些类(对象)之间的关系
     概念类图与设计类图有所不同
    关注现实世界问题域,而不是软件系统的内部构造机制
     类型,方法,可见性等复杂的软件构造细节不会在概念类图中
     基本元素
     对象:使用具体问题域事物的抽象
    标识符:对象的引用
    状态:对象的特征描述,包括对象的属性和属性的取值
    行为:状态发生变化或者接收到外界消息时采取的行动
     类:对象的集合
     链接:对象之间的交互协作的关系
     关联:类之间的关系,潜在的链接抽象
    聚合:部分和整体之间的关系,空心菱形
    组合:整体对部分有完全的管理职责,即一个部分只能属于一个整体,实心菱形
     继承:父类是子类的泛化,子类是父类的特化
     将领域对象类组织成层次结构
     最高层的类反应了所有类的共同特点
     对象类从一到多个父类继承属性和服务,这些属性和服务可能在必要时特化

    50.建立概念类图(会画)
     对每个用例文本描述,尤其是场景描述,建立局部的概念类图
     根据用例的文本描述,识别候选类(找名词)
     筛选候选类,确定概念类
     如果候选类的对象实例既需要维持一定的状态,又需要依据状态表现一定的行为,确定为一个概念类
     如果需要维护状态,不需要表现行为,则为其他概念类的属性
     不需要维护状态。却需要表现行为
    首先要重新审视需求是否有遗漏,因为没有状态支持的对象无法表现行为
    如果确定没有需求的遗漏,就应该删除该候选类,并将行为转交给具备状态支持能力的其他概念类

     既不需要维护状态,又不需要表现行为,应该被完全删除

     识别关联
     分析用例文本描述,发现概念类之间的协作,需要协作的类之间需要建立关联
    是否需要协作的第一标准是满足需求的要求
    是否需要协作的第二标准是现实状况
     分析和补充问题域内的关系,例如概念类之间的整体部分关系和明显的语义联系。对问题域关系的补充要适可而止,不要把关系搞得过度复杂化
     去除冗余关联和导出关联

     识别重要属性
     将所有用例产生的局部概念类图进行合并,建立软件系统的整体概念类图

    51.有限状态机
     有限状态机理论认为系统总是处于一定的状态之中,并且,在某一个时刻,系统只能处于一种状态之中
     系统在任何一个状态中都是稳定的,如果没有外部事件触发,系统会一直持续维持该状态
     如果发生了有效的触发事件,系统将会响应事件,从一种状态转移到另一种状态中
     状态图的基本思想:基于有限状态机理论,如果能够罗列出所有可能的状态,并发现所有有效的外部事件,那么就能够从状态转移的角度完整的表达系统的所有行为

    52.状态图的基本概念
     状态:一组观察到的情况,在一个给定的时间描述系统行为
     状态转移:从一个状态到另一个状态的转移
     事件:导致系统表现出可预测行为的事件
     活动:作为转换的结果而发生的过程

    53.状态图的建立
     确定上下文环境
    状态图是立足于状态快照进行行为描述的,因此建立状态图时 首先要搞清楚状态的主体,确定状态的上下文环境,常见的状态主体有:类,用例,多个用例和整个系统
     识别状态
    状态主体会表现出一些稳定的状态,他们需要被识别出来,并且标记处其中的初始状态和结束状态集,在某些情况下,可能会不存在确定的初始状态和结束状态
     建立状态转换
    根据需求所描述的系统行为,建立各个稳定状态之间可能存在的转换
     补充详细信息,完善状态图
    添加转换的触发事件,转换行为和监护条件等详细信息

    展开全文
  • 上一年代于市场崛起的苹果计算机,由于旧系统的设计不良,使得其后继发展不力,苹果计算机决定重新设计操作系统。经过许多失败的项目后,苹果于1997年发布新操作系统—— Mac OS X 的测试版,而后推出的正式版获取了...

     

    操作系统(计算机管理控制程序)

    简介

     

    操作系统(英语:operating system,缩写作 OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
    操作系统的类型非常多样,不同机器安装的操作系统可从简单到复杂,可从移动电话的嵌入式系统到超级计算机的大型操作系统。许多操作系统制造者对它涵盖范畴的定义也不尽一致,例如有些操作系统集成了图形用户界面,而有些仅使用命令行界面,而将图形用户界面视为一种非必要的应用程序。

     

    组成部分

    内核、驱动程序、接口库、外围

    常见系统

    Android, iOS, Linux, Windows,Mac OS X

     

    特    征

           并发、共享、虚拟、异步

    功    能

           处理器管理、存储器管理、设备管理、文件管理

    基本类型

           批处理系统、分时操作系统、实时操作系统

    体系结构

          模块组合结构、层次结构、微内核结构

    历史

    综观计算机之历史,操作系统与计算机硬件的发展息息相关。操作系统之本意原为提供简单的工作排序能力,后为辅助更新更复杂的硬件设施而渐渐演化。从最早的批量模式开始,分时机制也随之出现,在多处理器时代来临时,操作系统也随之添加多处理器协调功能,甚至是分布式系统的协调功能。其他方面的演变也类似于此。另一方面,在个人计算机上,个人计算机之操作系统因袭大型机的成长之路,在硬件越来越复杂、强大时,也逐步实践以往只有大型机才有的功能。
    总而言之,操作系统的历史就是一部解决计算机系统需求与问题的历史

    1980年代前

    第一部计算机并没有操作系统。这是由于早期计算机的创建方式(如同建造机械算盘)与性能不足以运行如此程序。但在1947年美国贝尔实验室肖克利巴丁布拉顿组成的研究小组发明的晶体管,以及莫里斯·威尔克斯发明的微程序方法,使得计算机不再是机械设备,而是电子产品。系统管理工具以及简化硬件操作流程的程序很快就出现了,且成为操作系统的起源。到了1960年代早期,商用计算机制造商制造了批处理系统,此系统可将工作的建置、调度以及运行序列化。此时,厂商为每一台不同型号的计算机创造不同的操作系统,因此为某计算机而写的程序无法移植到其他计算机上运行,即使是同型号的计算机也不行。
    到了1964年,IBM System/360推出了一系列用途与价位都不同的大型机,而它们都共享代号为OS/360的操作系统(而非每种产品都用量身订做的操作系统)。让单一操作系统适用于整个系列的产品是System/360成功的关键,且实际上IBM目前的大型系统便是此系统的后裔,为System/360所写的应用程序依然可以在现代的IBM机器上运行。
    OS/360也包含另一个优点:永久贮存设备—硬盘的面世(IBM称为DASD)。另一个关键是分时概念的建立:将大型机珍贵的时间资源适当分配到所有用户身上。分时也让用户有独占整部机器的感觉;而Multics的分时系统是此时众多新操作系统中实践此观念最成功的。
    1963年,奇异公司与贝尔实验室合作以PL/I语言创建的Multics,是激发1970年代众多操作系统创建的灵感来源,尤其是由AT&T贝尔实验室的丹尼斯·里奇肯·汤普逊所创建的Unix系统,为了实践平台移植能力,此操作系统在1973年由C语言重写;另一个广为市场采用的小型计算机操作系统是VMS

    1980年代

    第一代微型计算机并不像大型机或小型计算机,没有装设操作系统的需求或能力;它们只需要最基本的操作系统,通常这种操作系统都是从ROM读取的,此种程序被称为监视程序(Monitor)。1980年代,家用计算机开始普及。通常此时的计算机拥有8-bit处理器加上64KB存储器显示器键盘以及低音质喇叭。而80年代早期最著名的套装计算机为使用微处理器6510(6502芯片特别版)的Commodore C64。此计算机没有操作系统,而是以一8KB只读存储器BIOS初始化彩色显示器、键盘以及软盘驱动器和打印机。它可用8KB只读存储器BASIC语言来直接操作BIOS,并依此撰写程序,大部分是游戏。此BASIC语言的解释器勉强可算是此计算机的操作系统,当然就没有内核或软硬件保护机制了。此计算机上的游戏大多跳过BIOS层次,直接控制硬件。

    家用计算机C64的抽象架构

    简单应用程序

    机器语言

    (游戏直接操作)

     

    8kBASICROM

     

     

    8k ROM-BIOS

     

     

    硬件中央处理器、存储设备等)

     

    早期最著名的磁盘启动型操作系统是CP/M,它支持许多早期的微计算机。最早期的IBM PC其架构类似C64。当然它们也使用了BIOS以初始化与抽象化硬件的操作,甚至也附了一个BASIC解释器!但是它的BASIC优于其他公司产品的原因在于他有可携性,并且兼容于任何匹配IBM PC架构的机器上。这样的PC可利用Intel-8088处理器(16-bit寄存器)定址,并最多可有1MB的存储器,然而最初只有640KB。软式磁盘驱动器取代了过去的磁带机,成为新一代的存储设备,并可在他512KB的空间上读写。为了支持更进一步的文件读写概念,磁盘操作系统(Disk Operating System,DOS)因而诞生。此操作系统可以合并任意数量的扇区,因此可以在一张磁盘片上放置任意数量与大小的文件。文件之间以档名区别。IBM并没有很在意其上的DOS,因此以向外部公司购买的方式获取操作系统。1980年微软公司获取了与IBM的合约,并且收购了一家公司出产的操作系统,在将之修改后以MS-DOS的名义出品,此操作系统可以直接让程序操作BIOS与文件系统。到了Intel-80286处理器的时代,才开始实现基本的存储设备保护措施。其后,MS-DOS成为了IBM PC上面最常用的操作系统(IBM自己也有推出DOS,称为IBM-DOS或PC-DOS)。MS-DOS的成功使得微软成为地球上最赚钱的公司之一。

    MS-DOS在个人计算机上的抽象架构

    普通应用程序(Shell script、文本编辑器

    MS-DOS(文件系统)

     

     

    BIOS(驱动程序)

     

     

    硬件中央处理器、存储设备等)

     

    而1980年代另一个崛起的操作系统异数是Mac OS,此操作系统紧紧与麦金塔计算机捆绑在一起。此时一位施乐帕罗奥多研究中心的员工Dominik Hagen访问了苹果计算机的史蒂夫·乔布斯,并且向他展示了此时施乐发展的图形用户界面。苹果计算机惊为天人,并打算向施乐购买此技术,但因帕罗奥多研究中心并非商业单位而是研究单位,因此施乐回绝了这项买卖。在此之后苹果一致认为个人计算机的未来必定属于图形用户界面,因此也开始发展自己的图形化操作系统。

    1990年代

    延续1980年代的竞争,1990年代出现了许多影响未来个人计算机市场深厚的操作系统。由于图形用户界面日趋繁复,操作系统的能力也越来越复杂与巨大,因此强韧且具有弹性的操作系统就成了迫切的需求。此年代是许多套装类的个人计算机操作系统互相竞争的时代。
    上一年代于市场崛起的苹果计算机,由于旧系统的设计不良,使得其后继发展不力,苹果计算机决定重新设计操作系统。经过许多失败的项目后,苹果于1997年发布新操作系统——Mac OS X的测试版,而后推出的正式版获取了巨大的成功。让原先失意离开苹果的史蒂夫·乔布斯风光再现。
    除了商业主流的操作系统外,从1980年代起在开放源代码的世界中,BSD系统也发展了非常久的一段时间,但在1990年代由于与AT&T的法律争端,使得远在芬兰赫尔辛基大学的另一股开源操作系统——Linux兴起。Linux内核是一个标准POSIX内核,其血缘可算是Unix家族的一支。Linux与BSD家族都搭配GNU项目所发展的应用程序,但是由于使用的许可证以及历史因素的作弄下,Linux获取了相当可观的开源操作系统市占率,而BSD则小得多。相较于MS-DOS的架构,Linux除了拥有傲人的可移植性(相较于Linux,MS-DOS只能运行在Intel CPU上),它也是一个分时多进程内核,以及良好的存储器空间管理(普通的进程不能访问内核区域的存储器)。想要访问任何非自己的存储器空间的进程只能透过系统调用来达成。一般进程是处于用户态(User mode)底下,而运行系统调用时会被切换成内核态(Kernel mode),所有的特殊指令只能在内核态运行,此措施让内核可以完美管理系统内部与外部设备,并且拒绝无权限的进程提出的请求。因此理论上任何应用程序运行时的错误,都不可能让系统崩溃

    几乎完整的Linux架构图

    用户

    模式

    应用程序(sh、viOpenOffice.org等)

    复杂KDE、glib等)

     

     简单库(opendbm、sin等)

     

     

    C库(open、fopen、socket、exec、calloc等)

    内核

    模式

    系统中断、调用、错误等软硬件消息

    内核(驱动程序、进程、网上、内存管理等)

    硬件(处理器、内存、各种设备)

    另一方面,微软对于更强力的操作系统呼声的回应便是Windows NT于1993年的面世。
    1983年开始微软就想要为MS-DOS建构一个图形化的操作系统应用程序,称为Windows(有人说这是比尔·盖茨被苹果的Lisa计算机上市所刺激)。一开始Windows并不是一个操作系统,只是一个应用程序,其背景还是纯MS-DOS系统,这是因为当时的BIOS设计以及MS-DOS的架构不甚良好之故。在1990年代初,微软与IBM的合作破裂,微软从OS/2(早期为命令行模式,后来成为一个很技术优秀但是曲高和寡的图形化操作系统)项目中抽身,并且在1993年7月27日推出Windows 3.1,一个以OS/2为基础的图形化操作系统。并在1995年8月15日推出Windows 95。这时的Windows系统依然是创建在MS-DOS的基础上,不过微软在这同时也在开发不依赖于DOS的NT系列Windows系统,并在后来完全放弃了DOS而转向NT作为Windows的基础。
    底下的表格为Windows NT系统的架构:在硬件层次结构之上,有一个由微内核直接接触的硬件抽象层(HAL),而不同的驱动程序以模块的形式挂载在内核上运行。因此微内核可以使用诸如输入输出、文件系统、网上、信息安全机制与虚拟内存等功能。而系统服务层提供所有统一规格的函数调用库,可以统一所有子系统的实现方法。例如尽管POSIX与OS/2对于同一件服务的名称与调用方法差异甚大,它们一样可以无碍地实现于系统服务层上。在系统服务层之上的子系统,全都是用户态,因此可以避免用户程序运行非法行动。

    简化版本的Windows NT抽象架构

    用户

    模式

    OS/2应用程序

    Win32应用程序

    DOS程序

    Win16应用程序

    POSIX应用程序

     

    其他DLL库

    DOS系统

    Windows模拟系统

    OS/2子系统

    Win32子系统

    POSIX.1子系统

    内核

    模式

    系统服务层

    输入输出管理文件系统、网上系统

    对象管理系统 / 安全管理系统 / 进程管理 / 对象间通信管理 / 进程间通信管理 / 虚拟内存管理微内核

    视窗管理程序

    驱动程序

    硬件抽象层(HAL)

    图形驱动

    硬件(处理器、存储器、外部设备等)

    子系统架构第一个实现的子系统群当然是以前的微软系统。DOS子系统将每个DOS程序当成一进程运行,并以个别独立的MS-DOS虚拟机承载其运行环境。另外一个是Windows 3.1模拟系统,实际上是在Win32子系统下运行Win16程序。因此达到了安全掌控为MS-DOS与早期Windows系统所撰写之旧版程序的能力。然而此架构只在Intel 80386处理器及后继机型上实现。且某些会直接读取硬件的程序,例如大部分的Win16游戏,就无法套用这套系统,因此很多早期游戏便无法在Windows NT上运行。Windows NT有3.1、3.5、3.51与4.0版。Windows 2000是Windows NT的改进系列(事实上是Windows NT 5.0)、Windows XP(Windows NT 5.1)以及Windows Server 2003(Windows NT 5.2)与Windows Vista(Windows NT 6.0)也都是立基于Windows NT的架构上。
    而本年代渐渐增长并越趋复杂的嵌入式设备市场也促使嵌入式操作系统的成长。

    今日

    现代操作系统通常都有一个使用的绘图设备的图形用户界面(GUI),并附加如鼠标或触控面版等有别于键盘的输入设备。旧的OS或性能导向的服务器通常不会有如此亲切的接口,而是以命令行界面(CLI)加上键盘为输入设备。以上两种接口其实都是所谓的,其功能为接受并处理用户的指令(例如按下一按钮,或在命令提示列上键入指令)。
    选择要安装的操作系统通常与其硬件架构有很大关系,只有LinuxBSD几乎可在所有硬件架构上运行,而Windows NT仅移植到了DEC Alpha与MIPS Magnum。在1990年代早期,个人计算机的选择就已被局限在Windows家族、类Unix家族以及Linux上,而以Linux及Mac OS X为最主要的另类选择,直至今日。
    大型机嵌入式系统使用很多样化的操作系统。大型主机近期有许多开始支持Java及Linux以便共享其他平台的资源。嵌入式系统近期百家争鸣,从给Sensor Networks用的Berkeley Tiny OS到可以操作Microsoft OfficeWindows CE都有。

    个人计算机

    个人计算机市场目前分为两大阵营,此两种架构分别有支持的操作系统:
    • Apple Macintosh- Mac OS X,Windows(仅Intel平台),Linux、BSD。
    • IBM兼容PC- Windows、Linux、BSD、Mac OS X(非正式支持)。

    大型机

    最早的操作系统是针对20世纪60年代的大型主结构开发的,由于对这些系统在软件方面做了巨大投资,因此原来的计算机厂商继续开发与原来操作系统相兼容的硬件与操作系统。这些早期的操作系统是现代操作系统的先驱。现在仍被支持的大型主机操作系统包括:
    • Burroughs MCP--B5000,1961 toUnisysClearpath/MCP, present.
    • IBMOS/360--IBM System/360, 1964 toIBM zSeries, present
    • UNIVACEXEC 8--UNIVAC 1108, 1964, toUnisysClearpath Dorado, present.
    现代的大型主机一般也可运行Linux或Unix变种。

    嵌入式

    嵌入式系统使用非常广泛的系统(如VxWorkseCosSymbian OSPalm OS)以及某些功能缩减版本的Linux或者其他操作系统。某些情况下,OS指称的是一个内置了固定应用软件的巨大泛用程序。在许多最简单的嵌入式系统中,所谓的OS就是指其上唯一的应用程序。

    类Unix系统

    主条目:类Unix
    所谓的类Unix家族指的是一族种类繁多的OS,此族包含了System VBSDLinux。由于Unix是The Open Group的注册商标,特指遵守此公司定义的行为的操作系统。而类Unix通常指的是比原先的Unix包含更多特征的OS。
    类Unix系统可在非常多的处理器架构下运行,在服务器系统上有很高的使用率,例如大专院校或工程应用的工作站
    1991年,芬兰学生林纳斯·托瓦兹根据类Unix系统Minix编写并发布了Linux操作系统内核,其后在理查德·斯托曼的建议下以GNU通用公共许可证发布,成为自由软件Unix变种. Linux近来越来越受欢迎,它们也在个人桌面计算机市场上大有斩获,例如Ubuntu系统。
    某些Unix变种,例如惠普HP-UX以及IBM的AIX仅设计用于自家的硬件产品上,而SUNSolaris可安装于自家的硬件或x86计算机上。苹果计算机的Mac OS X是一个从NeXTSTEPMach以及FreeBSD共同派生出来的微内核BSD系统,此OS取代了苹果计算机早期非Unix家族的Mac OS。
    经历数年的披荆斩棘,自由开源的Linux系统逐渐蚕食以往专利软件的专业领域,例如以往计算机动画运算巨擘──硅谷图形公司(SGI)的IRIX系统已被Linux家族及贝尔实验室研发小组设计的九号项目与Inferno系统取代,皆用于分散表达式环境。它们并不像其他Unix系统,而是选择内置图形用户界面。九号项目原先并不普及,因为它刚推出时并非自由软件。后来改在自由及开源软件许可证Lucent Public License发布后,便开始拥有广大的用户及社群。Inferno已被售予Vita Nuova并以GPL/MIT许可证发布。
    当前,计算机按照计算能力排名世界500强中472台使用Linux,6台使用Windows,其余为各类BSD等Unix。

    微软Windows

    主条目:Microsoft Windows
    Microsoft Windows系列操作系统是在微软给IBM机器设计的MS-DOS的基础上设计的图形操作系统。现在的Windows系统,如Windows 2000、Windows XP皆是创建于现代的Windows NT内核。NT内核是由OS/2OpenVMS等系统上借用来的。Windows可以在32位和64位的IntelAMD的处理器上运行,但是早期的版本也可以在DEC AlphaMIPSPowerPC架构上运行。
    虽然由于人们对于开放源代码操作系统兴趣的提升,Windows的市场占有率有所下降,但是到2004年为止,Windows操作系统在世界范围内占据了桌面操作系统90%的市场。
    Windows系统也被用在低级和中阶服务器上,并且支持网页服务的数据库服务等一些功能。最近微软花费了很大研究与开发的经费用于使Windows拥有能运行企业的大型程序的能力。
    Windows XP在2001年10月25日发布,2004年8月24日发布服务包2(Service Pack 2),2008年4月21日发布最新的服务包3(Service Pack 3)。
    微软上一款操作系统Windows Vista(开发代码为Longhorn)于2007年1月30日发售。Windows Vista增加了许多功能,尤其是系统的安全性和网上管理功能,并且其拥有接口华丽的Aero Glass。但是整体而言,其在全球市场上的口碑却并不是很好。其后继者Windows 7则是于2009年10月22日发售,Windows 7改善了Windows Vista为人诟病的性能问题,相较于Windows Vista,在同样的硬件环境下,Windows 7的表现较Windows Vista为好。而最新的Windows 10则是于2015年7月29日发售。

    Mac OS X

    主条目:Mac OSMac OS X
    macOS,前称“Mac OS X”或“OS X”,是一套运行于苹果Macintosh系列计算机上的操作系统。Mac OS是首个在商用领域成功的图形用户界面系统。Macintosh开发成员包括比尔·阿特金森(Bill Atkinson)、杰夫·拉斯金(Jef Raskin)和安迪·赫茨菲尔德(Andy Hertzfeld)。从OS X 10.8开始在名字中去掉Mac,仅保留OSX和版本号。2016年6月13日在WWDC2016上,苹果公司将OS X更名为macOS,现行的最新的系统版本是10.14,即macOS Mojave

    Chrome OS

    主条目:Google Chrome OS
    Google Chrome OS是一项Google的轻型的、基于网络的计算机操作系统计划,其基于Google的浏览器Google Chrome的Linux内核。

    其他

    大型主机以及嵌入式操作系统均与Unix或Windows家族关系不大,除了AndroidWindows CEWindows NTWindows XP Embedded是Windows的血亲产品,以及数种*BSD和嵌入式Linux包为例外。
    少数较旧的OS今日依然在一些需要稳定性的市场中活跃,例如IBM的OS/2BeOS以及XTS-400。
    在达康时代狂潮过后,如AmigaOS与RISC OS等少数人使用的OS依然持续建立,以满足狂热的爱好者社群与特殊专业用户。
     

    linux是脱袜子 将(shell 保留解释权!) 移植到minix上 结合产生的

    操作系统的作用:

    1.将复杂丑陋的硬件细节隐藏起来,提供了简单的调用接口

    2.将应用程序对于硬件的竞争变的有序

    操作系统发展史

    1.第一带计算机 真空管和穿孔卡片 没有进程 没有操作系统

    2.第二代计算机 7094 1401 晶体管 批处理系统

    输入输出 以及计算设备 不能互联 需要人参与 一批一批的处理 开发效率慢 并且串行执行

    3.第三代计算机 集成电路 与多道技术

    多终端联机 spooling 同一台机器既能进行科学计算 又能做字符处理 通用计算机

    多道技术 解决串行导致的效率低下问题

    多用户终端 可以同时为多个用户提供服务 每个用户以为自己独享一台计算机

    4.第四代 个人电脑

    大规模使用了集成电路,大多都提供了GUI界面

    转载于:https://www.cnblogs.com/tingguoguoyo/p/10957295.html

    展开全文
  • 深度学习是一个正在快速发展的领域,总是出现很多新的时髦的概念,笔者在这里对里面经常出现的一些概念进行解释,力求通俗易懂。如果能对各位读者带来帮助,我将深感欣慰! 梯度消失:神经网络相当于多层复合函数,...
  • 毫无疑问,概念设计与设计理论领域的发展趋势最为吻合。 但是,相关研究仍然很少。 本文解释概念设计的定义和时尚产品的概念设计特征。 此外,初步分析了进行时尚产品概念设计的一些原则和方法,以期进一步完善...
  • TEE之概念解释

    千次阅读 2017-08-21 09:48:18
    今天写一下TEE概念解释,有些不准或者偏薄,望提出和指正。 首先是由ARM的原话进行说明:  ARM说:“TEE设备可以提供用户更高的安全和更友好的用户体验,并可以使实现简单的便捷的链接到数字网络上。并能...
  • AI:人工智能概念之AI发展历史的重要历史时间节点、大牛们对AI相关概念的定义 目录 1950~ 大牛们对重要概念的定义 ML的定义 1950~ 1950,人工智能之父Alan Mzthison Turing,艾伦图灵在1950年发表...
  • 概念解释题 1什么是企业 答企业是指从事生产流通或服务等经济活动通过满足社会效益而获得利益实行自主经营自负盈亏自我发展自我约束制度的法人实体和市场竞争主体 2解释CIO机制 答CIO机制是组织信息化发展比较成熟...
  • 程序的基本概念

    千次阅读 2017-09-13 14:32:39
    程序的基本概念1.1. 程序和编程语言程序(Program)告诉计算机应如何完成一个计算任务,这里的计算可以是数学运算,比如解方程,也可以是符号运算,比如查找和替换文档中的某个单词。从根本上说,计算机是由数字电路...
  • 知识图谱,从2012年谷歌正式将这一概念应用到工业界之后,到现在已经逐步走过了将近7年的时间,在这七年的时间里,知识图谱逐步经历了从概念兴起、概念泛化、技术应用三个环节。 ...
  • PBR材质基础概念,限制及未来发展

    万次阅读 2019-09-08 10:34:12
    解释它的基本思路和概念也许并不是最难的,最难的是你知道它的限制和不足在哪里,这部分的理解往往会比它的基本概念要困难一些,你必须更深刻地理解这种知识才能洞悉它的缺点,然后你便清楚它的下一步发展应该是什么...
  • 基本概念与名词解释 计算机基础知识部分 1. 计算机系统发展历程:电子管计算机、晶体管计算机、集成电路计算机、大规模及超大规模集成电路计算机。 2. 电子计算机时代开始的标志:以美国1945年生产、1946年2月交付...
  • AI基本概念和应用

    万次阅读 2017-11-09 22:13:58
    AI 的发展势头 5.17日美国旧金山Google I/O 大会上,Google CEO 开场就再次强调了公司战略从“Mobile first to AI first”,称 Google 会因此重新思考自己的所有产品,还要把人工智能用到学术研究、医学的层面。...
  • 概念看似简单,但其实中间包含了几个重要元素: 第一个当然是装智的智能化,比如像智能电视里,仅管表面上还是电视的设备,但他本身可以多任务处理的范畴,已经不在是收看电视这样基本的功能了,还包括了搜索节目...
  • 结果表明,在运动发展隐喻的山峰中讨论的更多概念都适用于Gallahue的沙漏模型,不同之处在于,沙漏模型的表述,动作的绘制形状和发展概念化更加规则和现实。 总体而言,加拉休的沙漏模型与克拉克和梅特卡夫的概念...
  • 机器学习的概念、历史和未来

    千次阅读 2018-07-17 10:17:00
    相关概念 提起机器学习,我们不得不给机器学习下一个准确的定义。在直观的层面,如果说计算机科学是研究关于算法的科学,那么机器学习就是研究关于“学习算法”的科学,或者说,不同于一般的显式编程,机器学习就是...
  • 一文详解什么是可解释AI

    千次阅读 多人点赞 2021-03-03 11:43:08
    摘要:本文带来什么是可解释AI,如何使用可解释AI能力来更好理解图片分类模型的预测结果,获取作为分类预测依据的关键特征区域,从而判断得到分类结果的合理性和正确性,加速模型调优。 1. 为什么需要可解释AI? ...
  • 4.3 CISC和RISC的基本概念

    千次阅读 2019-09-04 22:21:47
    指令系统朝着两个截然不同的方向发展:一是增强原有指令的功能,设置更为复杂的新指令实现软件功能的硬化,这类机器称为复杂指令系统计算机(CISC),典型的有采用X86架构的计算机:二是减少指令种类和简化指令功能...
  • 《人工智能导论》第二章 概念表示

    千次阅读 2021-01-14 18:26:28
    知识由概念组成,概念是构成人类知识世界的基本单元。 人们借助概念才能正确地理解世界,与他人交流,传递各种信息。如果缺少对应的概念,将自己的想法表达出来是非常困难甚至是不可能的。能够准确地使用各种概念是...
  • 3.1 Java并发与多线程概念

    千次阅读 2021-01-22 00:11:39
    3.1 多线程cpu的概念        首先需要了解到为什么Java会支持多线程,这一切都是芯片技术的发展,多年前cpu还是单核运行模式,可以说是因为有了多核心处理器才有了并发,有了多...
  • [深度学习概念]·深度学习简介

    千次阅读 2019-01-19 14:13:22
    在这一文章中,将尽可能简单易懂地解释这些概念:深度学习,人工神经网络,卷积神经网络,梯度下降等。 什么是深度学习? 简单来说,它就是从例子中学习。 从非常基础的层面上说,深度学习是一种机器...
  • 文章目录一瞥知识图谱的概念与分类知识图谱的三大典型应用1、语义搜索2、智能问答3、可视化决策支持通用知识图谱与特定领域知识图谱1、通用知识图谱2、领域知识图谱应用知识工程的五个发展阶段1)1950-1970时期:...
  • 全书内容共分七部分,第一部分概要解释了操作系统是什么、做什么、是怎样设计与构造的,也解释了操作系统概念是如何发展起来的,操作系统的公共特性是什么。第二部分进程管理描述了作为现代操作系统核心的进程以及...
  • 金融发展理论回顾

    万次阅读 2015-12-28 21:04:26
    传统经济发展理论偏重资本、劳动、土地、技术和资源等因素的作用而忽视了金融对经济发展作用,而金融发展理论的出现则弥补了这一缺陷,并为客观认识金融在经济发展中的地位并研究金融对经济发展的影响提供了全新的...
  • 第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。 第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,...
  • 深度学习技术发展趋势浅析

    千次阅读 2019-04-09 08:37:11
    当前,人工智能发展借助深度学习技术突破得到了全面关注和助力推动,各国政府高度重视、资本热潮仍在加码,各界对其成为发展热点也达成了共识。本文旨在分析深度学习技术现状,研判深度学习发展趋势,并针对我国的...
  • 程序设计语言的基本概念

    千次阅读 2019-01-20 16:56:37
    程序设计语言的广泛使用始于1957年出现的FORTRAN,程序设计语言的发展是一个不断演化的过程,其根本推动力是更高的抽象机制以及对程序设计思想的更好支持。 低级语言与高级语言 计算机硬件只能识别由0、1组成的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 163,706
精华内容 65,482
关键字:

发展的概念解释