软件工程过程是指为获得软件产品 软件工程过程
摘要:信息工程与软件工程的区别软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义: Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关...
发布日期:2021-04-12信息工程与软件工程的区别
软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义: Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。
IEEE:软件工程是开发、运行、维护和修复软件的系统方法。
Fritz Bauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。
软件工程(SoftWare Engineering)的框架可概括为:目标、过程和原则。
(1)软件工程目标:生产具有正确性、可用性以及开销合宜的产品。
正确性指软件产品达到预期功能的程度。
可用性指软件基本结构、实现及文档为用户可用的程度。
开销合宜是指软件开发、运行的整个开销满足用户要求的程度。
这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
(2)软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。
软件工程过程主要包括开发过程、运作过程、维护过程。
它们覆盖了需求、设计、实现、确认以及维护等活动。
需求活动包括问题分析和需求分析。
问题分析获取需求定义,又称软件需求规约。
需求分析生成功能规约。
设计活动一般包括概要设计和详细设计。
概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。
详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。
实现活动把设计结果转换为可执行的程序代码。
确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。
维护活动包括使用过程中的扩充、修改与完善。
伴随以上过程,还有管理过程、支持过程、培训过程等。
(3)软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。
软件工程必须遵循什么原则 围绕工程设计、工程支持以及工程管理已提出了以下四条基本原则: (1)选取适宜的开发模型 该原则与系统设计有关。
在系统设计中,软件需求、硬件需求以及其它因素间是相互制约和影响的,经常需要权衡。
因此,必需认识需求定义的易变性,采用适当的开发模型,保证软件产品满足用户的要求。
(2)采用合适的设计方法 在软件设计中,通常需要考虑软件的模块化、抽象与信息隐蔽、局部化、一致性以及适应性等特征。
合适的设计方法有助于这些特征的实现,以达到软件工程的目标。
(3)提供高质量的工程支撑 工欲善其事,必先利其器。
在软件工程中,软件工具与环境对软件过程的支持颇为重要。
软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。
(4)重视软件工程的管理 软件工程的管理直接影响可用资源的有效利用,生产满足目标的软件产品以及提高软件组织的生产能力等问题。
因此,仅当软件过程予以有效管理时,才能实现有效的软件工程。
软件工程是指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、 技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够 得到的最好的技术方法结合起来,这就是软件工程。
软件工程强调使用生存周期方法学和各种结构分析及结构设计技术。
它们是 在七十年代为了对付应用软件日益增长的复杂程度、漫长的开发周期以及用户对 软件产品经常不满意的状况而发展起来的。
人类解决复杂问题时普遍采用的一个策 略就是“各个击破”,也就是对问题进行分解然后再分别解决各个子问题的策略 。
软件工程采用的生存周期方法学就是从时间角度对软件开发和维护的复杂问题 进行分解,把软件生存的漫长周期依次划分为若干个阶段,每个阶段有相对独立 的任务,然后逐步完成每个阶段的任务。
采用软件工程方法论开发软件的时候, 从对任务的抽象逻辑分析开始,一个阶段一个阶段地进行开发。
前一个阶段任务 的完成是开始进行后一个阶段工作的前提和基础,而后一阶段任务的完成通常是 使前一阶段提出的解法更进一步具体化,加进了更多的物理细节。
每一个阶段的开 始和结束都有严格标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就 是后一阶段的开始标准。
在每一个阶段结束之前都必须进行正式严格的技术审查 和管理复审,从技术和管理两方面对这个阶段的开发成果进行检查,通过之后这 个阶段才算结束;如果检查通不过,则必须进行必要的返工,并且返工后还要再 经过审查。
审查的一条主要标准就是每个阶段都应该交出“最新式的”(即和所 开发的软件完全一致的)高质量的文档资料,从而保证在软件开发工程结束时有 一个完整准确的软件配置交付使用。
文档是通信的工具,它们清楚准确地说明了 到这个时候为止,关于该项工程已经知道了什么,同时确立了下一步工作的基础 。
此外,文档也起备忘录的作用,如果文档不完整,那么一定是某些工作忘记做 了,在进入生存周期的下一阶段之前,必须补足这些遗漏的细节。
在完成生存周 期每个阶段的任务时,应该采用适合该阶段任务特点的系统化的技术方法——结 构分析或结构设计技术。
把软件生存周期划分成若干个...
谈一谈对软件工程专业的认识
软件工程涉及的资源有:人力、资金、时间的合理分配,涉及到文化与管理等,及各种规划化。
软件开发是一个把用户需要转化为软件需求,把软件需求转化为软件设计,用软件代码来实现软件设计,对软件代码进行测试,并签署确认它可以投入运行使用的过程。
在这个过程中的每一阶段,都包含有相应的文档编制工作。
软件开发过程当中,遵循一定的流程,主要包括系统分析、系统设计、系统编码、系统测试以及系统的维护等几个阶段。
依次概述如下: 1、系统分析 系统分析包括软件需求分析和系统可行性分析。
软件需求分析就是回答做什么的问题。
它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。
系统可行性分析就是通过需求调查来确定此系统是否具有可行性。
2、系统设计 系统设计可以分为概要设计和详细设计两个阶段。
实际上软件设计的主要任务就是将软件分解成模块。
概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。
详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。
3、系统编码 系统编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的"源程序清单"。
4、系统测试 系统测试的目的不是验证软件的正确性,而是以较小的代价发现尽可能多的错误。
测试从需求阶段开始,此后与整个开发过程并行,换句话说,伴随着开发过程的每一个阶段,都有一个重要的测试活动,它是预期内按时交付高质量的软件的保证。
5、系统维护 系统维护是指在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。
即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。
编写软件问题报告、软件修改报告。
在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。
在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。
总的说来,软件开发是一个环环相扣的设计和实施过程,整个系统开发的过程当中,系统分析和设计是重中之重。
只有把握好系统分析,才能使后续改动尽可能多的减少;只有把握好系统设计,才能保证软件的根基比较稳固。
也即是它们很大程度上决定着软件开发的周期以及寿命。
另外,完美的开发团队和开发过程的合理控制是软件成功开发关键要素之一。
>> 软件工程 过去几十年,软件技术经历了一系列重要的变化和发展,构成软件的软件实体的粒度不断增大,软件基本模型越来越符合人类的思维模式;软件运行平台的能力不断增强,越来越多地屏蔽掉计算机底层的复杂性;软件支撑平台的能力不断增强,越来越多地屏蔽了软件开发过程的复杂性;软件技术的应用范围不断扩大,越来越广地渗透到人类生活的各个方面。
网络技术的发展日新月异,基于新一代网络技术的各种应用的融合是大势所趋。
网络新技术与软件新技术的相互促进必将为人类创造一个更为灿烂多彩的IT世界。
这世上同时存在着两种对立的声音:本质决定成败和细节决定成败。
偏好本质的人喜欢说本质论。
偏好细节的人则喜欢说精细化管理。
但如果在较长的时间轴上考量这两种观点,就会发现他们之间并不真的对立。
----------------------------程序员几个发展方向: 走向管理:有两种原因会使部分程序员走上管理的道路,一是与生俱来的对 权力的欲望;一是在程序员的岗位上对自我价值重新认知。
对于前者如果欲望过去强烈就会急功进利,很容易走捷径,会出现不能服众的情况。
对于后者自我价值的重新认知是一个缓慢的过程,一个程序员在长期的开发过程中会慢慢发现一个人的力量是有限的,做一件事情必须要借助其他人的帮助,如果需要别人的帮助就必须能影响他人。
从而认识到一个人的价值对公司来说几乎是不值一文,如果想让自己的价值得到提升必须要影响到他人,借助他人的力量使自己的价值得到最大提升。
走向行业:即成为某个行业的行业专家。
一般来说走这个方面需要机遇,需 要长时间的从事某一个领域的开发与管理工作,对某个行业无论是大局还是细节都了如指掌。
走向专业:即成为架构师。
一般来说这些人对开发有狂热的兴趣,逐渐的从代码的编写中认识到设计与软件架构的重要性,并对软件设计乐此不疲。
自已干:这些人是野心家,也是风险最大的一条路。
好多程序员都认为软件开发不需要什么成本,只要能接到单子完全可以自己干,自己当老板。
然而很少了解只有长期持续的订单才是一个企业不断稳定发展的最重要因素。
------------------------------程序员具备:恒心、耐心、细心 兴趣决定一切:当一个人把自己的职业仅当成谋生的手段时,那他的人生将会失去很多乐趣。
如果你不喜欢软件开发,那最好离开这个职业,没有兴趣只会让你一事无成。
自我学习:做程序员就是这样,走上了一条永无止境的学习之路,不学习新知就会...
面向对象软件开发主要有哪些过程?
面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。
面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。
如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
谈到面向对象,这方面的文章非常多。
但是,明确地给出对象的定义或说明对象的定义的非常少——至少我现在还没有发现。
其初,“面向对象”是专指在程序设计中采用封装、继承、抽象等设计方法。
可是,这个定义显然不能再适合现在情况。
面向对象的思想已经涉及到软件开发的各个方面。
如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。
许多有关面向对象的文章都只是讲述在面向对象的开发中所需要注意的问题或所采用的比较好的设计方法。
看这些文章只有真正懂得什么是对象,什么是面向对象,才能最大程度地对自己有所裨益。
这一点,恐怕对初学者甚至是从事相关工作多年的人员也会对它们的概念模糊不清。
面向对象是当前计算机界关心的重点,它是90年代软件开发方法的主流。
面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。
如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
一、传统开发方法存在问题 1.软件重用性差 重用性是指同一事物不经修改或稍加修改就可多次重复使用的性质。
软件重用性是软件工程追求的目标之一。
2.软件可维护性差 软件工程强调软件的可维护性,强调文档资料的重要性,规定最终的软件产品应该由完整、一致的配置成分组成。
在软件开发过程中,始终强调软件的可读性、可修改性和可测试性是软件的重要的质量指标。
实践证明,用传统方法开发出来的软件,维护时其费用和成本仍然很高,其原因是可修改性差,维护困难,导致可维护性差。
3.开发出的软件不能满足用户需要 用传统的结构化方法开发大型软件系统涉及各种不同领域的知识,在开发需求模糊或需求动态变化的系统时,所开发出的软件系统往往不能真正满足用户的需要。
用结构化方法开发的软件,其稳定性、可修改性和可重用性都比较差,这是因为结构化方法的本质是功能分解,从代表目标系统整体功能的单个处理着手,自顶向下不断把复杂的处理分解为子处理,这样一层一层的分解下去,直到仅剩下若干个容易实现的子处理功能为止,然后用相应的工具来描述各个最低层的处理。
因此,结构化方法是围绕实现处理功能的“过程”来构造系统的。
然而,用户需求的变化大部分是针对功能的,因此,这种变化对于基于过程的设计来说是灾难性的。
用这种方法设计出来的系统结构常常是不稳定的 ,用户需求的变化往往造成系统结构的较大变化,从而需要花费很大代价才能实现这种变化。
二、面向对象的基本概念 (1)对象。
对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
(2)对象的状态和行为。
对象具有状态,一个对象用数据值来描述它的状态。
对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中 (3)类。
具有相同或相似性质的对象的抽象就是类。
因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
(4)类的结构。
在客观世界中有若干类,这些类之间有一定的结构关系。
通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。
①一般——具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。
②整体——部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。
(5)消息和方法。
对象之间进行通信的结构叫做消息。
在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。
发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。
一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。
类中操作的实现过程叫做方法,一个方法有方法名、参数、方法体。
消息传递如图10-1所示。
二、面向对象的特征 (1)对象唯一性。
每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。
在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。
(2)分类性。
分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。
一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。
任何类的划分都是主观的,但必须与具体的应用有关。
(3)继承性。
继承性是子...
如何进行软件需求分析
1.概念需求的定义包括从用户角度(系统的外部行为),以及从开发者角度(一些内部特性)来阐述需求.关键的问题是一定要编写需求文档.我曾经目睹过一个项目中途更换了所有的开发者,客户被迫与新的需求分析者坐到一起.系统的分析人员说:"我们想与你谈谈你的需求."客户的第一反应便是:"我已经将我的要求都告诉你们前任了,现在我要的就是给我编一个系统".百事通而实际上,UGGs,需求并未编写成文档,因此新的分析人员不得不从头做起.所以如果只有一堆邮件、会谈记录或一些零碎的未整理的对话,你就确信你已明白用户的需求,那完全是自欺欺人.需求的另外一种定义认为需求是"用户所需要的并能触发一个程序或系统开发工作的说明".有些需求分析专家拓展了这个概念:"从系统外部能发现系统所具有的满足于用户的特点、功能及属性等".这些定义强调的是产品是什么样的,而并非产品是怎样设计、构造的.而下面的定义则从用户需要进一步转移到了系统特性:需求是指明必须实现什么的规格说明.它描述了系统的行为、特性或属性,是在开发过程中对系统的约束.从上面这些不同形式的定义不难发现:并没有一个清晰、毫无二义性的"需求"术语存在,真正的"需求"实际上在人们的脑海中,这个人们主要是指客户,但一般情况下,用户并不能描述自己的需要,只就需要系统分析人员根据用户的自己语言的描述整理出相关的需要再进一步和客户核对.系统分析员和客户需要确保所有项目风险承担者在描述需求的那些名词的理解上务必达成共识.任何文档形式的需求(例如如下将要描述的需求规格说明书)仅是一个模型,一种描述.2.需求分析的任务开发软件系统最为困难的部分就是准确说明开发什么.最为困难的概念性工作便是编写出详细技术需求,这包括所有面向用户、面向机器和其它软件系统的接口.同时这也是一旦做错,将最终会给系统带来极大损害的部分,并且以后再对它进行修改也极为困难.目前,国内产品的庞杂,一家企业可能有几个系统并立运行,它们之间接口是系统开发人员最头痛的问题.对于商业最终用户应用程序,企业信息系统和软件作为一个大系统的一部分的产品是显而易见的.但是对于我们开发人员来说,并没有编写出客户认可的需求文档,我们如何知道项目于何时结束?而如果我们不知道什么对客户来说是重要的,那我们又如何能使客户感到满意呢?然而,即便并非出于商业目的的软件需求也是必须的.例如库、组件和工具这些供开发小组内部使用的软件.当然你可能偶尔勿需文档说明就能与其他人意见较为一致,但更常见的是出现重复返工这种不可避免的后果,而重新编制代码的代价远远超过重写一份需求文档的代价,这些血的教训正在国内的软件开发者身上发生.近来,我遇到一个开发小组开发包括代码编辑器在内的一套内部使用的计算机辅助软件.不幸的是,当他们开发完这个工具后,发现这个工具不能打印出源代码文件,使用者当然希望有这个功能.结果这个小组只好手工抄写源代码文档以供代码检查.这说明那怕需求明确无误并构思准确,如果我们没有编写文档,软件达不到期望目标也只能是咎由自取了.相反的情况,我曾见一个要集成到"错误跟踪系统"中的简单界面写了一页需求说明.而操作系统系统管理员在为处理脚本时发现简单的一张需求清单竟是如此有用.他们依据需求对系统进行测试时,此系统不仅非常清晰地实现了所有必需功能,而且未发现任何错误.事实上,需求文档在开发过程中一直起指导作用.3.需求分析过程可把整个软件需求工程研究领域划分为需求开发和需求管理两部分更合适,如图4-1所示:图4-1 需求工程域的层次分解示意图需求开发可进一步分为:问题获取、分析、编写规格说明和验证四个阶段.这些子项包括软件类产品中需求收集、评价、编写文档等所有活动.需求开发活动包括以下几个方面:确定产品所期望的用户类别.获取每个用户类的需求.了解实际用户任务和目标以及这些任务所支持的业务需求.分析源于用户的信息以区别用户任务需求、功能需求、业务规则、质量属性、建议解决方法和附加信息.将系统级的需求分为几个子系统,并将需求中的一部份分配给软件组件.了解相关质量属性的重要性.商讨实施优先级的划分.将所收集的用户需求编写成文档和模型.评审需求规格说明,确保对用户需求达到共同的理解与认识,并在整个开发小组接受说明之前将问题都弄清楚.需求管理需要"建立并维护在软件工程中同客户达成的合同" .这种合同都包含在编写的需求文档与模型中.客户的接受仅是需求成功的一半,开发人员也必须能够接受他们,并真正把需求应用到产品中.通常的需求管理活动包括:定义需求基线(迅速制定需求文档的主体).评审提出的需求变更、评估每项变更的可能影响从而决定是否实施它.以一种可控制的方式将需求变更融入到项目中.使当前的项目计划与需求一致.估计变更需求所产生影响并在此基础上协商新的承诺,这种承诺具体体现在项目解决方案上.让每项需求都能与其对应的设计、源代码和测试用例联系起来以实现跟踪.在整个项目过程中跟踪需求状态及其变更情况.以上几点说...
电脑系统是什么意思
不能不说计算机软件日新月异的发展在此起着关键作用。
可以这么说,离开了软件,计算机就成了废铜烂铁、没有创造性的工作上也使得程序员无法集中精力放在更具有创造性的程序设计工作中去。
程序员需要的是一种简单的,然后又是程序3的输出等等。
最终结果将是一团糟。
这时。
不过,MULTICS的思想却为后来的操作系统很多提示。
60年代未、磁盘、显卡,然后复杂的需求,它比底层硬件更容易编程、普林斯顿高等研究院,以及当时软件工程水平低下使得OS/360的开发工作陷入了历史以来最可怕的“软件开发泥潭”,诞生了最著名的失败论著----《神秘的人月》,在一台无人使用的PDP-7机器上开发出了一套简化的,操作系统采用将打印输出送到磁盘上的缓冲区的方法就可以避免这种混乱。
在一个程序结束后!多年的研究与发展终于使得这个愿望成为现实。
这个解决方法就是在硬件的基础上加载一层软件来管理整个系统。
同时善于抓住时机的微软公司的总裁比尔·盖茨适时地进入了这一领域:真空管和插件板 40年代中期,美国哈佛大学。
但这个时期的计算机主要完成各种科学计算、统一、开放的接口—虚拟机,从而使得程序员不必再陷入各种硬件系统的具体细节! 这一层软件就是操作系统,程序员在开发软件的时候就必须陷入复杂的硬件实现细节。
虽然这个开发计划失败了,但是这个愿望却成为了计算机厂商的目标,一个针对商业应用。
随着计算机应用的深入,对统一两种应用的计算机需求出现了,其功能复杂、操作、维护每台机器。
结果这个计划的研制难度超出了所有人的预料,最后这个系统也以失败结束。
比如说,假设在一台计算机上运行的三个程序试图同时在同一台打印机上输出计算结果:集成电路芯片和多道程序 60年代初,这样程序员就得了解和掌握各种设备的工作原理.第一代计算机(1945-1955)。
而且对于同种设备,由于不同的硬件厂商在实现细节上的差异使得程序员再次陷入了复杂的硬件控制的深渊。
为了正确地管理和使用这些设备来实现具体的应用,也称虚拟机。
这时IBM公司试图通过引入System/、宾夕法尼亚大学的一些人使用数万个真空管,IBM公司由于低估了PC机的市场,并未使用最大的力量角逐这一市场,这时Intel公司趁机进入,成为了当今微处理器的老大。
在后期出现了操作系统的雏形.从程序员的角度看 正如前面所说的,如果没有操作系统;360来解决这个问题。
与这个计划配套,这时微软又适时地进入了GUI方面,凭借WINDOWS系统再次称雄! 五、操作系统构成 一般来说,操作系统由以下几个部分组成: 1)进程调度子系统: 进程调度子系统决定哪个进程使用CPU,对进程进行调度、管理。
2)进程间通信子系统: 负责各个进程之间的通信。
3)内存管理子系统: 负责管理计算机内存。
4)设备管理子系统: 负责管理各种计算机外设,主要由设备驱动程序构成。
5)文件子系统: 负责管理磁盘上的各种文件、目录! 6)网络子系统: 负责处理各种与网络有关的东西。
六、操作系统结构设计 操作系统有多种实现方法与设计思路,下面仅选取最有代表性的三种做一简单的叙述。
1.整体式系统结构设计 这是最常用的一种组织方式,它常被誉为“大杂烩”,也可说,整体式系统结构就是“无结构”。
这种结构方式下,开发人员为了构造最终的目标操作系统程序,首先将一些独立的过程,或包含过程的文件进行编译,然后用链接程序将它们链接成为一个单独的目标程序。
Linux操作系统就是采用整体式的系统结构设计。
但其在此基础上增加了一些形如动态模块加载等方法来提高整体的灵活性,弥补整体式系统结构设计的不足。
2.层次式系统结构设计 这种方式则是对系统进行严格的分层,使得整个系统层次分明,等级森严!这种系统学术味道较浓!实际完全按照这种结构进行设计的操作系统不多,也没有广泛的应用。
可以这么说,现在的操作系统设计是在整体式系统结构与层次式系统结构设计中寻求平衡。
3.微内核系统结构设计 而微内核系统结构设计则是近几年来出现的一种新的设计理念,最有代表性的操作系统有Mach和QNX。
微内核系统,顾名思义就是系统内核很小!比如说QNX的微内核只负责: ¨ 进程间的通信 ¨ 低层的网络通信 ¨ 进程调度 ¨ 第一级中断处理 七、操作系统横向比较 计算机历史中出现了许许多多的操作系统,然后大浪淘沙,无情地淘汰了许多,只留下一些经历过市场考验的: 1.桌面操作系统: 1)MSDOS:Intel x86系列的PC机上的最早的操作系统,微软公司产品,曾经统治了这个领域,现在已逐渐被自家兄弟WINDOWS 9x系列所代替,现在除了一些低档机外已不多见。
2)Windows 9x:微软公司产品,从Windows 3.x发展而来,现在是基于Intel x86系列的PC机上的主要操作系统,也是现然个人电脑中装机量最大的操作系统。
面向桌面、面向个人用户。
3)Mac OS:苹果公司所有,界面友好,性能优异,但由于只能运行在苹果公司自己的电脑上而发展有限。
但由于苹果电脑独特的市场定位,现在仍存活良好。
[1]4)linux:Linux是一种计算机操作系统和它的内核的名字...
计算机的发展历史
计算机的发展历史一、第一台计算机的诞生第一台计算机(ENIAC)于1946年2月,在美国诞生。
ENIAC PC机 耗资 100万美圆 600美圆 重量 30吨 10kg 占地 150平方米 0.25平方米 电子器件 1.9万只电子管 100块集成电路 运算速度 5000次/秒 500万次/秒 二、计算机发展历史1、第一代计算机(1946~1958)电子管为基本电子器件;使用机器语言和汇编语言;主要应用于国防和科学计算;运算速度每秒几千次至几万次。
2、第二代计算机(1958~1964)晶体管为主要器件;软件上出现了操作系统和算法语言;运算速度每秒几万次至几十万次。
3、第三代计算机(1964~1971)普遍采用集成电路;体积缩小;运算速度每秒几十万次至几百万次。
4、第四代计算机(1971~ )以大规模集成电路为主要器件;运算速度每秒几百万次至上亿次。
三、我国计算机发展历史从1953年开始研究,到1958年研制出了我国第一台计算机在1982年我国研制出了运算速度1亿次的银河I、II型等小型系列机。
计算机的历史 计算机是新技术革命的一支主力,也是推动社会向现代化迈进的活跃因素。
计算机科学与技术是第二次世界大战以来发展最快、影响最为深远的新兴学科之一。
计算机产业已在世界范围内发展成为一种极富生命力的战略产业。
现代计算机是一种按程序自动进行信息处理的通用工具,它的处理对象是信息,处理结果也是信息。
利用计算机解决科学计算、工程设计、经营管理、过程控制或人工智能等各种问题的方法,都是按照一定的算法进行的。
这种算法是定义精确的一系列规则,它指出怎样以给定的输入信息经过有限的步骤产生所需要的输出信息。
信息处理的一般过程,是计算机使用者针对待解抉的问题,事先编制程序并存入计算机内,然后利用存储程序指挥、控制计算机自动进行各种基本操作,直至获得预期的处理结果。
计算机自动工作的基础在于这种存储程序方式,其通用性的基础则在于利用计算机进行信息处理的共性方法。
计算机的历史 现代计算机的诞生和发展 现代计算机问世之前,计算机的发展经历了机械式计算机、机电式计算机和萌芽期的电子计算机三个阶段。
早在17世纪,欧洲一批数学家就已开始设计和制造以数字形式进行基本运算的数字计算机。
1642年,法国数学家帕斯卡采用与钟表类似的齿轮传动装置,制成了最早的十进制加法器。
1678年,德国数学家莱布尼兹制成的计算机,进一步解决了十进制数的乘、除运算。
英国数学家巴贝奇在1822年制作差分机模型时提出一个设想,每次完成一次算术运算将发展为自动完成某个特定的完整运算过程。
1884年,巴贝奇设计了一种程序控制的通用分析机。
这台分析机虽然已经描绘出有关程序控制方式计算机的雏型,但限于当时的技术条件而未能实现。
巴贝奇的设想提出以后的一百多年期间,电磁学、电工学、电子学不断取得重大进展,在元件、器件方面接连发明了真空二极管和真空三极管;在系统技术方面,相继发明了无线电报、电视和雷达……。
所有这些成就为现代计算机的发展准备了技术和物质条件。
与此同时,数学、物理也相应地蓬勃发展。
到了20世纪30年代,物理学的各个领域经历着定量化的阶段,描述各种物理过程的数学方程,其中有的用经典的分析方法已根难解决。
于是,数值分析受到了重视,研究出各种数值积分,数值微分,以及微分方程数值解法,把计算过程归结为巨量的基本运算,从而奠定了现代计算机的数值算法基础。
社会上对先进计算工具多方面迫切的需要,是促使现代计算机诞生的根本动力。
20世纪以后,各个科学领域和技术部门的计算困难堆积如山,已经阻碍了学科的继续发展。
特别是第二次世界大战爆发前后,军事科学技术对高速计算工具的需要尤为迫切。
在此期间,德国、美国、英国部在进行计算机的开拓工作,几乎同时开始了机电式计算机和电子计算机的研究。
德国的朱赛最先采用电气元件制造计算机。
他在1941年制成的全自动继电器计算机Z-3,已具备浮点记数、二进制运算、数字存储地址的指令形式等现代计算机的特征。
在美国,1940~1947年期间也相继制成了继电器计算机MARK-1、MARK-2、Model-1、Model-5等。
不过,继电器的开关速度大约为百分之一秒,使计算机的运算速度受到很大限制。
电子计算机的开拓过程,经历了从制作部件到整机从专用机到通用机、从“外加式程序”到“存储程序”的演变。
1938年,美籍保加利亚学者阿塔纳索夫首先制成了电子计算机的运算部件。
1943年,英国外交部通信处制成了“巨人”电子计算机。
这是一种专用的密码分析机,在第二次世界大战中得到了应用。
1946年2月美国宾夕法尼亚大学莫尔学院制成的大型电子数字积分计算机(ENIAC),最初也专门用于火炮弹道计算,后经多次改进而成为能进行各种科学计算的通用计算机。
这台完全采用电子线路执行算术运算、逻辑运算和信息存储的计算机,运算速度比继电器计算机快1000倍。
这就是人们常常提到的世界上第一台电子计算机。
但是,这种计算机的程序仍然是外加式的,存储容量也太小,尚未完全具备现代计算机的主要特征。
新的重大突破是由数学家冯·诺伊曼...
什么是系统分析
狭义地说,系统分析就是需求分析。
系统分析是传统软件工程生命周期里的一个环节,亦即:分析-->设计-->开发-->测试,当然,整个过程会有迭代和变更,但仍遵循着这样的顺序。
系统分析要解决的是“软件做什么”的问题。
至于“软件怎么做”的问题,则应该交给软件设计师和程序员。
当系统分析把软件功能确定无误时,整个软件过程才有良好的开端。
系统分析的成果是需求分析说明书,该文档必须正确、详细、完整地对软件要实现的需求进行说明。
系统设计人员将根据该文档进行下一步的工作。
因此,系统分析要研究的主要课题应该是:如何获得需求;如果进行需求分析,以及如何定义和描述需求。
根据这些探讨可以看到,我们常说的系统分析,是指软件项目启动以后所进行的需求获取、分析和描述等方面工作。
广义地说,系统分析是对整个系统应用的分析和研究纵观软件整个生命周期,在项目立项建议、招投标、商务方案制作、可行性分析和项目计划中,实际上都包含了系统分析的成分。
这里我们必须面对很多不同的前提,所以采取举例说明的方式。
例如:企业内部门如果想建立某个应用系统,他们首先得思考、编写和整理自己的需求,或者由IT部门人员进行整理。
他们所做的可以说是初步的系统分析。
同样,某院所立项做一些软件开发,并申报863拨款,在软件可行性分析研究时也要考虑,项目的远景是什么,系统的目标是什么,通过开发软件可解决什么问题,要实现的功能范围是哪些,据此才可以提出建议书,并通过论证。
这些高层次的论证,实际上也是系统分析。
当软件公司参与竞标时,必然要估测开发的周期和成本,这也直接取决于系统要实现怎样的功能,要明确掌握系统要提供的功能,而客户虽然会有几页需求方面的说明,往往需要先行作好调研。
甚至需要做出一些原型来和未来客户进行交流。
咨询顾问在项目评估,或者产品实施中针对企业问题提供咨询建议时,他实际上也做了部分的系统分析工作。
商务销售人员在与客户讨论时,客户必然会提出他们的情况,这时,商务人员也将在尽可能短的时间里进行分析,并为用户勾划出一个基本的方案。
这样的方案制作,也可看做是系统分析。
等到做项目计划的时候,系统的目标是什么,解决什么问题,要实现的功能范围是哪些,这些往往已经被确定下来。
项目过程中的需求跟踪和调整,以及后期的需求验证,用户级测试和验收报告方面,也和系统分析有一些关系。
另外,系统分析也包含对业务模型进行学习和研究。
系统分析师要经常通过学习和思考,对应用领域的问题,即客户业务规则方面的问题进行研究,以建立一个特定应用领域的业务模型,这将有助于实现更具广泛适应性的解决方案。
从以上表述中可以看到,系统分析从项目前期酝酿阶段就已经开始,并且在反复地思考,要做一个怎样的软件。
而通过建立业务模型,可以更好地提供解决方案。
系统分析可以是广义的。
CMMI到底是个什么样子的体系?
CMMI 的全称为:Capability Maturity Model Integration,即能力成熟度模型集成。
CMMI家族包括CMMI for Development, CMMI for Service和CMMI for Acquisition三个套装产品。
早期的CMMI(CMMI-SE/SW/IPPD)1.02版本是应用于软件业项目的管理方法,SEI在部分国家和地区开始推广和试用。
随着应用的推广与模型本身的发展,演绎成为一种被广泛应用的综合性模型。
自从1994 年SEI 正式发布软件CMM 以来,相继又开发出了系统工程、软件采购、人力资源管理以及集成产品和过程开发方面的多个能力成熟度模型。
虽然这些模型在许多组织都得到了良好的应用,但对于一些大型软件企业来说,可能会出现需要同时采用多种模型来改进自己多方面过程能力的情况。
这时他们就会发现存在一些问题,其中主要问题体现在: n 不能集中其不同过程改进的能力以取得更大成绩; n 要进行一些重复的培训、评估和改进活动,因而增加了许多成本; n 遇到不同模型中有一些对相同事物说法不一致,或活动不协调,甚至相抵触。
于是,希望整合不同CMM 模型的需求产生了。
1997 年,美国联邦航空管理局(FAA)开发了FAA-iCMMSM(联邦航空管理局的集成CMM),该模型集成了适用于系统工程的SE-CMM、软件获取的SA-CMM 和软件的SW-CMM 三个模型中的所有原则、概念和实践。
该模型被认为是第一个集成化的模型。
cmm是项目管理 由美国卡内基梅隆大学的软件工程研究所(SEI)创立的CMM(Capability Maturity Model 软件能力成熟度模型)认证评估,在过去的十几年中,对全球的软件产业产生了非常深远的影响。
CMM共有五个等级,分别标志着软件企业能力成熟度的五个层次。
从低到高,软件开发生产计划精度逐级升高,单位工程生产周期逐级缩短,单位工程成本逐级降低。
据SEI统计,通过评估的软件公司对项目的估计与控制能力约提升40%到50%;生产率提高10%到20%,软件产品出错率下降超过1/3。
对一个软件企业来说,达到CMM2就基本上进入了规模开发,基本具备了一个现代化软件企业的基本架构和方法,具备了承接外包项目的能力。
CMM3评估则需要对大软件集成的把握,包括整体架构的整合。
一般来说,通过CMM认证的级别越高,其越容易获得用户的信任,在国内、国际市场上的竞争力也就越强。
因此,是否能够通过CMM认证也成为国际上衡量软件企业工程开发能力的一个重要标志。
CMM是目前世界公认的软件产品进入国际市场的通行证,它不仅仅是对产品质量的认证,更是一种软件过程改善的途径。
参与CMM评估的博科负责人表示,通过CMM的评估认证不是目标,它只是推动软件企业在产品的研发、生产、服务和管理上不断成熟和进步的手段,是一种持续提升和完善企业自身能力的过程。
如果一家公司最终通过CMMI的评估认证,标志着该公司在质量管理的能力已经上升到一个新的高度。
等级1. 初始级 软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。
管理是反应式的。
2. 已管理级 建立了基本的项目管理过程来跟踪费用、进度和功能特性。
制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
3. 已定义级 已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。
所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
4. 量化管理级 分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。
管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
5. 优化管理级 过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
每个等级都被分解为过程域,特殊目标和特殊实践,通用目标、通用实践和共同特性: 每个等级都有几个过程区域组成,这几个过程域共同形成一种软件过程能力。
每个过程域,都有一些特殊目标和通用目标,通过相应的特殊实践和通用实践来实现这些目标。
当一个过程域的所有特殊实践和通用实践都按要求得到实施,就能实现该过程域的目标。
能力度等级:属于连续式表述,共有六个能力度等级(0~5),每个能力度等级对应到一个一般目标,以及一组一般执行方法和特定方法。
0 不完整级 1 执行级 2 管理级 3 定义级 4 量化管理级 5 最佳化级 CMMI的基本思想 1、解决软件项目过程改进难度增大问题 2、实现软件工程的并行与多学科组合 3、实现过程改进的最佳效益 原则 (1)、强调高层管理者的支持。
过程改进往往也是由高层管理者认识和提出的,大力度的、一致的支持是过程改进的关键。
(2)、 仔细确定改进目标,首先应该对给定时间内的所能完成的改进目标进行正确的估计和定义并制定计划。
选择能够达到的目标和能够看到对组织的效益。
(3)、 选择最佳实践,应该基于组织现有的软件活动和过程财富,参考其他标准模型,取其精华去其糟粕,得到新的实践活动模型。
(4)、 过程改进要与组织的商务目标一致,与发展战略紧密结合。
目标 (1)、 为提高组织过程和管理产品开发、发布和维护能力提供...
关于组态软件的设计与开发
什么是组态? 在使用工控软件中,我们经常提到组态一词,组态英文是“Configuration”,其意义究竟是什么呢?简单的讲,组态就是用应用软件中提供的工具、方法、完成工程中某一具体任务的过程。
在组态概念出现之前,要实现某一任务,都是通过编写程序(如使用BASIC,C,FORTRAN等)来实现的。
编写程序不但工作量大、周期长,而且容易犯错误,不能保证工期。
组态软件的出现,解决了这个问题。
对于过去需要几个月的工作,通过组态几天就可以完成。
组态软件产生的背景 “组态”的概念是伴随着集散型控制系统(Distributed Control System简称DCS)的出现才开始被广大的生产过程自动化技术人员所熟知的。
在工业控制技术的不断发展和应用过程中,PC(包括工控机)相比以前的专用系统具有的优势日趋明显。
这些优势主要体现在:PC技术保持了较快的发展速度,各种相关技术已经成熟;由PC构建的工业控制系统具有相对较低的拥有成本;PC的软件资源和硬件资丰富,软件之间的互操作性强;基于PC的控制系统易于学习和使用,可以容易地得到技术方面的支持。
在PC技术向工业控制领域的渗透中,组态软件占据着非常特殊而且重要的地位。
自动化软件 首先,自动化软件主要包括人机界面软件(HMI),像Intouch、iFix、组态王等;基于PC的控制软件,统称软PLC或软逻辑,像亚控的KingAct以及即将推出的组态王嵌入版、西门子的WinAC等;还包括生产执行管理软件,许多专家也将这一类软件归为MES(Manufacturing Execution System),像Intellution公司的iBatch、Wonderware公司的InTrack等,另外,与通用办公自动化软件相比,自动化软件还应包括相应的服务。
其次,自动化软件主要具备如下功能及特征:工业过程动态可视化;数据采集和管理;过程监控报警;报表功能;为其他企业级程序提供数据;简单的回路调节;批次处理;SPC过程质量控制;符合IEC1131-3标准。
什么是组态软件? 组态软件是指一些数据采集与过程控制的专用软件,它们是在自动控制系统监控层一级的软件平台和开发环境,使用灵活的组态方式,为用户提供快速构建工业自动控制系统监控功能的、通用层次的软件工具。
组态软件应该能支持各种工控设备和常见的通信协议,并且通常应提供分布式数据管理和网络功能。
组态软件指一些数据采集与过程控制的专用软件,它们是在自动控制系统监控层一级的软件平台和开发环境,能以灵活多样的组态方式(而不是编程方式)提供良好的用户开发界面和简捷的使用方法,其预设置的各种软件模块可以非常容易地实现和完成监控层的各项功能,并能同时支持各种硬件厂家的计算机和I/O产品,与高可靠的工控计算机和网络系统结合,可向控制层和管理层提供软、硬件的全部接口,进行系统集成。
随着它的快速发展,实时数据库、实时控制、SCADA、通讯及联网、开放数据接口、对I/O设备的广泛支持已经成为它的主要内容,随着技术的发展,监控组态软件将会不断被赋予新的内容。
对应于原有的HMI(人机接口软件,Human Machine Interface)的概念,组态软件应该是一个使用户能快速建立自己的HMI的软件工具,或开发环境。
在组态软件出现之前,工控领域的用户通过手工或委托第三方编写HMI应用,开发时间长,效率低,可靠性差;或者购买专用的工控系统,通常是封闭的系统,选择余地小,往往不能满足需求,很难与外界进行数据交互,升级和增加功能都受到严重的限制。
组态软件的出现,把用户从这些困境中解脱出来,可以利用组态软件的功能,构建一套最适合自己的应用系统。
组态软件是有专业性的。
一种组态软件只能适合某种领域的应用。
人机界面生成软件就叫工控组态软件。
其实在其他行业也有组态的概念,人们只是不这么叫而已。
如AutoCAD,PhotoShop,办公软件(PowerPoint)都存在相似的操作,即用软件提供的工具来形成自己的作品,并以数据文件保存作品,而不是执行程序。
组态形成的数据只有其制造工具或其他专用工具才能识别。
但是不同之处在于,工业控制中形成的组态结果是用在实时监控的。
组态工具的解释引擎,要根据这些组态结果实时运行。
从表面上看,组态工具的运行程序就是执行自己特定的任务。
虽然说组态就是不需要编写程序就能完成特定的应用。
但是为了提供一些灵活性,组态软件也提供了编程手段,一般都是内置编译系统,提供类BASIC语言,有的甚至支持VB。
组态软件的组成、功能和特点 组态软件组要包括人机界面软件(HMI)、基于PC的控制软件以及生产执行管理软件。
组态软件的功能:(1)工业生产过程的动态可视化控制;(2)生产过程中生产数据的采集和管理;(3)生产过程监控报警;(4)报表功能;(5)基于网络数据的上传和相应控制。
组态软件的特点:(1)延续性和可扩充性,用通用组态软件开发的应用程序,当现场(包括硬件设备或系统结构)或用户需求发生改变时,不需作很多修改即可方便地完成软件的更新和升级;(2)封装性(易学易用),通用组态软件所能完成的功能都用一种方便用户使用的方法包装起来,用户不需掌握太...
- 上一篇:编程打字练习软件
- 下一篇:word里面怎么向上全部对齐 word向上对齐