软件工程课件之第1章软件工程学概述(张海潘编著).ppt

上传人(卖家):三亚风情 文档编号:2669901 上传时间:2022-05-17 格式:PPT 页数:65 大小:1.14MB
下载 相关 举报
软件工程课件之第1章软件工程学概述(张海潘编著).ppt_第1页
第1页 / 共65页
软件工程课件之第1章软件工程学概述(张海潘编著).ppt_第2页
第2页 / 共65页
软件工程课件之第1章软件工程学概述(张海潘编著).ppt_第3页
第3页 / 共65页
软件工程课件之第1章软件工程学概述(张海潘编著).ppt_第4页
第4页 / 共65页
软件工程课件之第1章软件工程学概述(张海潘编著).ppt_第5页
第5页 / 共65页
点击查看更多>>
资源描述

1、学习目的:学习目的:n软件工程是计算机专业一门重要的专业课。软件工程是计算机专业一门重要的专业课。n目的在于培养学生用工程化的原理及方法开发目的在于培养学生用工程化的原理及方法开发软件系统,把专业知识同实际项目结合起来,软件系统,把专业知识同实际项目结合起来,为将来从事计算机软件的开发及应用维护工作为将来从事计算机软件的开发及应用维护工作打下坚实的基础。打下坚实的基础。n对于培养学生的软件素质,提高学生的软件开对于培养学生的软件素质,提高学生的软件开发能力与软件项目管理能力具有重要的意义。发能力与软件项目管理能力具有重要的意义。参考书:参考书:n现代软件工程,张家浩,机械工业出版社现代软件工程

2、,张家浩,机械工业出版社n软件工程:实践者的研究方法,软件工程:实践者的研究方法,Roger S. pressman,郑人杰等译,机械工业出版社,郑人杰等译,机械工业出版社n软件工程导论学习辅导,张海藩,清华大学出软件工程导论学习辅导,张海藩,清华大学出版社版社总目录:总目录:第第1章章 软件工程学概述软件工程学概述第第2章章 可行性研究可行性研究第第3章章 需求分析需求分析第第4章章 形式化说明技术形式化说明技术第第5章章 总体设计总体设计第第6章章 详细设计详细设计第第7章章 实现实现第第8章章 维护维护第第9章章 面向对象方法学引论面向对象方法学引论第第10章章 面向对象分析面向对象分析

3、第第11章章 面向对象设计面向对象设计第第12章章 面向对象实现面向对象实现第第13章章 软件项目管理软件项目管理 1.1 软件危机软件危机 1.2 软件工程软件工程 1.3 软件生命周期软件生命周期 1.4 软件过程软件过程第第1章章 软件工程学概述软件工程学概述1.1 软件危机软件危机计算机系统:计算机系统:是指适当的组织在一起的一系列系统元素是指适当的组织在一起的一系列系统元素的集合,这些系统元素互相配合、相互协作,通过对的集合,这些系统元素互相配合、相互协作,通过对信息的处理而完成预先定义的目标。信息的处理而完成预先定义的目标。计算机系统计算机系统软件软件硬件硬件人员人员数据库数据库文

4、档文档过程过程程序程序数据结构数据结构相关文档相关文档电子计算设备电子计算设备电子机械设备电子机械设备用户和操作者用户和操作者大型、有组织的信息集合大型、有组织的信息集合手册、表格、图形等描述性信息手册、表格、图形等描述性信息一系列步骤一系列步骤对软件的认识:对软件的认识:n1950:程序:程序n1960:程序:程序+文档(不包括管理文档)文档(不包括管理文档)n1970:程序:程序+文档文档+数据数据n1984:软件管理是过程管理,:软件管理是过程管理,CMM1.0能力成能力成熟度模型熟度模型n1996:UML统一建模语言统一建模语言计算机系统计算机系统4个不同的发展阶段:个不同的发展阶段:

5、时期时期硬件硬件软件软件早期时代早期时代20世纪世纪60年年代中期以前代中期以前晶体管晶体管计算机计算机程序设计阶程序设计阶段段个体化生产个体化生产第二代第二代20世纪世纪60年年代中期到代中期到70年代中期年代中期集成电集成电路计算路计算机机程序系统阶程序系统阶段段作坊式生产作坊式生产软件危机出软件危机出现现软件工程诞软件工程诞生生第三代第三代20世纪世纪70年年代中期到代中期到80年代中期年代中期微处理微处理器器个人计个人计算机算机软件工程阶软件工程阶段段工程化思想工程化思想分布式系统分布式系统第四代第四代20世纪世纪80年年代中期至今代中期至今面向对象阶段面向对象阶段硬件与软件综合硬件与

6、软件综合软件开发第四代技术软件开发第四代技术 面向批处理 有限的分布 自定义软件 初期 多用户 实时 数据库 软件产品 第二阶段 分布式系统 嵌入“智能” 低成本硬件 消费者的影响 第三阶段 强大的桌面系统 面向多项技术 专家系统 人工神经网络 并行计算 网络计算机 第四阶段 1950 年 1960 年 1970 年 1980 年 1990 年 2000 年 计算机软件发展的计算机软件发展的4个阶段个阶段 1.1.1 软件危机的介绍软件危机的介绍软件危机软件危机(软件萧条、软件困扰软件萧条、软件困扰):是指在计算机是指在计算机软件的开发和维护过程中所遇到的一系列严重软件的开发和维护过程中所遇到

7、的一系列严重问题。实际上,几乎所有软件都不同程度地存问题。实际上,几乎所有软件都不同程度地存在这些问题。在这些问题。软件危机包含下述两方面的问题:软件危机包含下述两方面的问题:n如何开发软件,满足对软件日益增长的需求;如何开发软件,满足对软件日益增长的需求;n如何维护数量不断膨胀的已有软件。如何维护数量不断膨胀的已有软件。软件危机的典型表现:软件危机的典型表现:(1)对软件开发成本和进度的估计常常很不准)对软件开发成本和进度的估计常常很不准确;确;(2)用户对)用户对“已完成的已完成的”软件系统不满意的现软件系统不满意的现象经常发生;象经常发生;(3)软件产品的质量往往靠不住;)软件产品的质量

8、往往靠不住;(4)软件常常是不可维护的;)软件常常是不可维护的;(5)软件通常没有适当的文档资料;)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比)软件成本在计算机系统总成本中所占的比例逐年上升;例逐年上升;(7)软件开发生产率提高的速度,远远跟不上)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势计算机应用迅速普及深入的趋势 。1.1.2 产生软件危机的原因产生软件危机的原因 (1)与软件本身的特点有关)与软件本身的特点有关n软件是逻辑部件。软件是逻辑部件。n软件不会被软件不会被“用坏用坏”,如果发现了错误,很,如果发现了错误,很可能是开发时期引入。可

9、能是开发时期引入。n软件规模庞大,而且程序复杂性将随着程序软件规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。规模的增加而呈指数上升。(2)与软件开发与维护的方法不正确有关)与软件开发与维护的方法不正确有关n忽视软件需求分析的重要性。对用户要求没忽视软件需求分析的重要性。对用户要求没有完整准确的认识就匆忙着手编写程序。越有完整准确的认识就匆忙着手编写程序。越早开始写程序,完成它所需要用的时间往往早开始写程序,完成它所需要用的时间往往越长。越长。n认为软件开发就是写程序并设法使之运行。认为软件开发就是写程序并设法使之运行。程序只是完整的软件产品的一个组成部分。程序只是完整的软件产品的一

10、个组成部分。一个软件产品必须由一个完整的配置组成,一个软件产品必须由一个完整的配置组成,软件配置主要包括程序、文档和数据等成分。软件配置主要包括程序、文档和数据等成分。在软件开发的不同阶段进行修改需要付出的在软件开发的不同阶段进行修改需要付出的代价是很不相同的,见图代价是很不相同的,见图1.1。图图1.1 引入同一变动付出的代价随时间变化的趋势引入同一变动付出的代价随时间变化的趋势n轻视软件维护。维护是极端艰巨复杂的工作,需要花轻视软件维护。维护是极端艰巨复杂的工作,需要花费很大代价。软件维护的费用占软件总费用的费很大代价。软件维护的费用占软件总费用的55%70%。软件工程学的一个重要目标就是

11、提高软。软件工程学的一个重要目标就是提高软件的可维护性,减少软件维护的代价。件的可维护性,减少软件维护的代价。1.1.3 消除软件危机的途径消除软件危机的途径 n对计算机软件有正确的认识。对计算机软件有正确的认识。n认识到软件开发是一种组织良好、管理严密、认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。各类人员协同配合、共同完成的工程项目。n应该推广使用在实践中总结出来的开发软件应该推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。的成功技术和方法,并继续研究探索。n应该开发和使用更好的软件工具。应该开发和使用更好的软件工具。n总之,为了解决软件

12、危机,既要有总之,为了解决软件危机,既要有技术技术措施措施(方法和工具方法和工具),又要有必要的组织,又要有必要的组织管理管理措施。措施。 1.2 软件工程软件工程 1.2.1 软件工程的介绍软件工程的介绍 软件工程:软件工程:是指导计算机软件开发和维护的一门是指导计算机软件开发和维护的一门工程工程学科。采用工程的概念、原理、技术和方学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件方法结合起来,以经济地开发出

13、高质量的软件并有效地维护它,这就是软件工程。并有效地维护它,这就是软件工程。 软件工程的代表性定义:软件工程的代表性定义:nFritz Bauer:软件工程是为了经济地获得可靠的和能软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工在实际机器上高效运行的软件而建立和使用的好的工程原则。程原则。nIEEE:软件工程是(软件工程是(1)将系统化的、规范的、可度)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中;(将工程化应用于软件中;(2)()(1)中所述方法的研)中所述方法的研究

14、。究。n计算机科学技术百科全书:计算机科学技术百科全书:软件工程是应用计算机科软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程。制作软件的工程。软件工程的划代(无公认的定义):软件工程的划代(无公认的定义):n1970年末之前,传统软件工程,瀑布模型。年末之前,传统软件工程,瀑布模型。n1980年后,面向对象软件工程,面向对象语年后,面向对象软件工程,面向对象语言以言以Smalltalk-80的出现为标志。的出现为标志。n1984年后,软件过程工程,掀起软件过程运年后,软件过程工程,掀起软件过程运动,动,1991年

15、出现的年出现的CMM是典型代表。是典型代表。n1990年后,构件工程,基于构件的软件开发年后,构件工程,基于构件的软件开发方法,可重用的构件组装成新系统。方法,可重用的构件组装成新系统。软件工程的本质特性:软件工程的本质特性:n软件工程关注于大型程序的构造软件工程关注于大型程序的构造n软件工程的中心课题是控制复杂性软件工程的中心课题是控制复杂性n软件经常变化软件经常变化n开发软件的效率非常重要开发软件的效率非常重要n和谐地合作是开发软件的关键和谐地合作是开发软件的关键n软件必须有效地支持它的用户软件必须有效地支持它的用户n在软件工程领域中是由在软件工程领域中是由具有一种文化背景的人具有一种文化

16、背景的人替具有另一种文化背景的人创造产品替具有另一种文化背景的人创造产品1.2.2 软件工程的基本原理软件工程的基本原理 n用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理n坚持进行阶段评审坚持进行阶段评审n实行严格的产品控制实行严格的产品控制n采用现代程序设计技术采用现代程序设计技术n结果应能清楚地审查结果应能清楚地审查n开发小组的人员应该少而精开发小组的人员应该少而精n承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性1.2.3 软件工程方法学软件工程方法学 n软件工程包括软件工程包括技术技术和和管理管理两方面的内容。两方面的内容。n管理:管理:通过计划、组织和控

17、制等一系列活动,合通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过理地配置和使用各种资源,以达到既定目标的过程。程。n技术技术(软件工程方法学软件工程方法学):通常把在软件生命周期通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法全过程中使用的一整套技术方法的集合称为方法学学(methodology),也称为范型,也称为范型(paradigm)。软件工程方法学软件工程方法学3要素:要素:n方法:是完成软件开发的各项任务的技术方法,回答方法:是完成软件开发的各项任务的技术方法,回答“怎样做怎样做”的问题;的问题;n工具:是为运用方法而提供的自动的或半自动

18、的软件工具:是为运用方法而提供的自动的或半自动的软件工程支撑环境;如,工程支撑环境;如,CASE(Computer-Aided Software Engineering )工具工具n过程:需要完成的一系列任务的框架,它规定了完成过程:需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。各项任务的工作步骤。1. 传统方法学传统方法学(生命周期方法学或结构化范型生命周期方法学或结构化范型)强调强调自顶向下自顶向下n采用结构化技术来完成软件;采用结构化技术来完成软件;n划分为若干个阶段,然后顺序地完成每个阶段的任务;划分为若干个阶段,然后顺序地完成每个阶段的任务;每个阶段的任务相对独立,而且

19、比较简单,降低了整每个阶段的任务相对独立,而且比较简单,降低了整个软件开发工程的困难程度;个软件开发工程的困难程度;n前一个阶段是后一个阶段的前提和基础,而后一阶段前一个阶段是后一个阶段的前提和基础,而后一阶段提出的解法更具体,细节更多;提出的解法更具体,细节更多;n每个阶段结束前必须从每个阶段结束前必须从技术和管理技术和管理两方面对这个阶段两方面对这个阶段的开发成果进行严格的检查,通过之后这个阶段才算的开发成果进行严格的检查,通过之后这个阶段才算结束;保证质量,提高可维护性;结束;保证质量,提高可维护性;n当软件规模庞大,或者的需求模糊或随时间而变化时,当软件规模庞大,或者的需求模糊或随时间

20、而变化时,传统方法学往往不成功;维护起来仍然很困难。传统方法学往往不成功;维护起来仍然很困难。2. 面向对象方法学面向对象方法学强调主动地多次强调主动地多次反复迭代反复迭代面向对象方法:面向对象方法:把数据和行为看成同等重要,它把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。紧密地结合起来的方法。面向对象方法学面向对象方法学4个要点:个要点:n对象对象(object):融合了数据及在数据上的操作行:融合了数据及在数据上的操作行为。为。n类类(class):类是对具有相同数据和相同操作的一:类是对具有相同数据和相同

21、操作的一组相似对象的定义。组相似对象的定义。n继承:按照父类与子类的关系,把若干个相关继承:按照父类与子类的关系,把若干个相关类组成一个层次结构的系统。类组成一个层次结构的系统。n消息:对象彼此间仅能通过发送消息互相联系。消息:对象彼此间仅能通过发送消息互相联系。面向对象方法学的优点:面向对象方法学的优点:n面向对象方法学的尽量模拟人类习惯的思维方面向对象方法学的尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程。认识世界解决问题的方法与过程。n面向对象方法学开发软件的过程,是一个主动面向对象方法学开发软件的过程

22、,是一个主动地多次反复迭代的演化过程,保证了在各项开地多次反复迭代的演化过程,保证了在各项开发活动之间的平滑过渡。发活动之间的平滑过渡。n促进了软件重用。最终的软件产品由许多较小促进了软件重用。最终的软件产品由许多较小的、基本上独立的对象组成,每个对象相当于的、基本上独立的对象组成,每个对象相当于一个微型程序,而且大多数对象都与现实世界一个微型程序,而且大多数对象都与现实世界中的实体相对应,降低了复杂性,提高了可理中的实体相对应,降低了复杂性,提高了可理解性,简化了开发和维护工作。解性,简化了开发和维护工作。软件四化:软件四化:n构架平台化构架平台化n组建业务化组建业务化n编码自动化编码自动化

23、n管理工厂化管理工厂化n以面向对象技术为手段,以可重用软件构件化以面向对象技术为手段,以可重用软件构件化和体系架构为基础,以工业化生产方式和管理和体系架构为基础,以工业化生产方式和管理支撑体系为核心的软件新变革。支撑体系为核心的软件新变革。1.3 软件生命周期软件生命周期 三个时期八个阶段:三个时期八个阶段:软件生命周期由软件定义、软件开软件生命周期由软件定义、软件开发和运行维护发和运行维护(也称为软件维护也称为软件维护)三个时期组成,每个三个时期组成,每个时期又进一步划分成若干个阶段。时期又进一步划分成若干个阶段。 三个时期:三个时期:八个阶段:八个阶段:软件生命周期软件生命周期软件定义软件

24、定义软件开发软件开发软件维护软件维护问题定义问题定义可行性研究可行性研究需求分析需求分析概要设计概要设计详细设计详细设计编码和单元测试编码和单元测试综合测试综合测试运行维护运行维护系统设计系统设计系统实现系统实现1. 问题定义问题定义n任务:问题是什么任务:问题是什么q通过对客户的访问调查,系统分析员扼要地写出通过对客户的访问调查,系统分析员扼要地写出关于问题性质、工程目标和工程规模的书面报告。关于问题性质、工程目标和工程规模的书面报告。q经过讨论和必要的修改之后这份报告应该得到客经过讨论和必要的修改之后这份报告应该得到客户的确认。户的确认。n结果:结果:q关于系统规模和目标的报告书关于系统规

25、模和目标的报告书 2. 可行性研究可行性研究n任务:有可行的解吗任务:有可行的解吗q系统分析员需要进行一次大大压缩和简化了的系系统分析员需要进行一次大大压缩和简化了的系统分析和设计过程。统分析和设计过程。q研究问题的范围,探索这个问题是否值得去解,研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。是否有可行的解决办法。n结果:结果:q系统的高层逻辑模型(数据流图、成本效益分析)系统的高层逻辑模型(数据流图、成本效益分析)q可行性论证报告(立即进行可行性论证报告(立即进行/推迟进行推迟进行/不能或不值不能或不值得进行)得进行)3. 需求分析需求分析n任务:必须做什么任务:必须做什么

26、q主要是确定目标系统必须具备哪些功能。主要是确定目标系统必须具备哪些功能。q系统分析员必须和用户密切配合,充分交流信息,系统分析员必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。以得出经过用户确认的系统逻辑模型。n结果:结果:q系统的逻辑模型(数据流图、数据字典、简要的系统的逻辑模型(数据流图、数据字典、简要的算法描述)算法描述)q用规格说明书准确地记录对目标系统的需求用规格说明书准确地记录对目标系统的需求4. 总体设计总体设计n任务:如何解决已提出的问题任务:如何解决已提出的问题q设计出实现目标系统的几种可能的方案(低、中、设计出实现目标系统的几种可能的方案(低、中、高成

27、本)。高成本)。q用适当的表达工具描述每种方案,分析优缺点,用适当的表达工具描述每种方案,分析优缺点,推荐一个最佳方案,制定出实现最佳方案的详细推荐一个最佳方案,制定出实现最佳方案的详细计划。设计程序的体系结构。计划。设计程序的体系结构。n结果:结果:q可能的解法(系统流程图、成本效益分析)可能的解法(系统流程图、成本效益分析)q推荐的系统体系结构(层次图或结构图)推荐的系统体系结构(层次图或结构图)5. 详细设计详细设计n任务:怎样具体实现该系统任务:怎样具体实现该系统q详细地设计每个模块,确定实现模块功能所需要详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。的算法和数据结构。n

28、结果:结果:q每个模块的算法和数据结构每个模块的算法和数据结构(程序流程图、程序流程图、PAD图、图、N-S图等图等)。6. 编码和单元测试编码和单元测试n任务:得到正确的程序模块任务:得到正确的程序模块q选取一种适当的高级程序设计语言选取一种适当的高级程序设计语言(必要时用汇编必要时用汇编语言语言),把详细设计的结果翻译成用选定的语言书,把详细设计的结果翻译成用选定的语言书写的程序;写的程序;q并且仔细测试编写出的每一个模块。并且仔细测试编写出的每一个模块。n结果:结果:q代码和测试报告代码和测试报告 7. 综合测试综合测试n任务:得到符合要求的软件任务:得到符合要求的软件q通过集成测试、验

29、收测试、现场测试、平行运行等通过集成测试、验收测试、现场测试、平行运行等方法对目标系统进一步测试检验。方法对目标系统进一步测试检验。q通过对软件测试结果的分析可以预测软件的可靠性;通过对软件测试结果的分析可以预测软件的可靠性;反之,根据对软件可靠性的要求,也可以决定测试反之,根据对软件可靠性的要求,也可以决定测试和调试过程什么时候可以结束。和调试过程什么时候可以结束。n结果:结果:q测试计划、详细测试方案以及实际测试结果测试计划、详细测试方案以及实际测试结果q完整一致的软件配置完整一致的软件配置 8. 软件维护软件维护n任务:使系统持久地满足用户的需要任务:使系统持久地满足用户的需要q改正性维

30、护,诊断和改正在使用过程中发现的软件改正性维护,诊断和改正在使用过程中发现的软件错误;错误;q适应性维护,修改软件以适应环境的变化;适应性维护,修改软件以适应环境的变化;q完善性维护,根据用户的要求改进或扩充软件;完善性维护,根据用户的要求改进或扩充软件;q预防性维护,修改软件为将来的维护活动做准备。预防性维护,修改软件为将来的维护活动做准备。q每一项维护活动实质上是经历了一次压缩和简化了每一项维护活动实质上是经历了一次压缩和简化了的软件定义和开发的全过程。的软件定义和开发的全过程。n结果:结果:q完整准确的维护记录完整准确的维护记录 各类维护工作量各类维护工作量所占比例所占比例维护工作量在软

31、件生维护工作量在软件生命周期所占比例命周期所占比例1.4 软件过程软件过程软件过程:软件过程:是为了获得高质量软件所需要完成的是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的一系列任务的框架,它规定了完成各项任务的工作步骤。工作步骤。n过程定义了运用方法的顺序、应该交付的文档过程定义了运用方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取资料、为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务的管理措施,以及标志软件开发各个阶段任务完成的里程碑。为获得高质量的软件产品,软完成的里程碑。为获得高质量的软件产品,软件过程必须科学、有效

32、。件过程必须科学、有效。传统的瀑布模型传统的瀑布模型实际的瀑布模型实际的瀑布模型1.4.1 瀑布模型瀑布模型瀑布模型的特点:瀑布模型的特点:1. 阶段间具有顺序性和依赖性阶段间具有顺序性和依赖性n前一阶段的工作完成之后,才能开始后一阶段的工作;前一阶段的工作完成之后,才能开始后一阶段的工作; n前一阶段的输出文档就是后一阶段的输入文档。前一阶段的输出文档就是后一阶段的输入文档。2. 推迟实现的观点推迟实现的观点n对于规模较大的软件项目来说,往往编码开始得越早对于规模较大的软件项目来说,往往编码开始得越早最终完成开发工作所需要的时间反而越长。最终完成开发工作所需要的时间反而越长。3. 质量保证的

33、观点质量保证的观点n每个阶段都必须完成规定的文档,是每个阶段都必须完成规定的文档,是“文档驱动文档驱动”的的模型;模型;n每个阶段结束前都要对所完成的文档进行评审,尽早每个阶段结束前都要对所完成的文档进行评审,尽早发现问题,改正错误。发现问题,改正错误。瀑布模型的优点:瀑布模型的优点:n可强迫开发人员采用规范的方法;可强迫开发人员采用规范的方法;n严格地规定了每个阶段必须提交的文档;严格地规定了每个阶段必须提交的文档;n要求每个阶段交出的所有产品都必须经过质量保证小要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。组的仔细验证。瀑布模型的缺点:瀑布模型的缺点:n只能通过文档了解产品,

34、不经过实践的需求是不切实只能通过文档了解产品,不经过实践的需求是不切实际的。际的。瀑布模型适用于:瀑布模型适用于: n需求是预知的;需求是预知的; n软件实现方法是成熟的;软件实现方法是成熟的; n项目周期较短。项目周期较短。 快速原型模型快速原型模型1.4.2 快速原型模型快速原型模型 快速原型:快速原型:是快速建立起是快速建立起来的可以在计算机上运来的可以在计算机上运行的程序,它所能完成行的程序,它所能完成的功能往往是最终产品的功能往往是最终产品能完成的功能的一个子能完成的功能的一个子集。集。 快速原型模型的特点:快速原型模型的特点:n快速原型模型不带反馈环,软件产品的开发基快速原型模型不

35、带反馈环,软件产品的开发基本上是线性顺序进行的。本上是线性顺序进行的。n快速原型的本质是快速原型的本质是“快速快速”。应该尽可能快地。应该尽可能快地建造出原型系统,以加速软件开发过程,节约建造出原型系统,以加速软件开发过程,节约成本。成本。根据原型的不同作用,有三类原型模型:根据原型的不同作用,有三类原型模型:n探索型原型探索型原型用于开发的需求分析阶段用于开发的需求分析阶段n实验型原型实验型原型主要用于设计阶段主要用于设计阶段n演化型原型演化型原型用于及早向用户提交一个原型用于及早向用户提交一个原型系统系统快速原型模型的运用方式:快速原型模型的运用方式: n抛弃策略抛弃策略探索型和实验型采用

36、此策略探索型和实验型采用此策略 n附加策略附加策略演化型快速原型采用此策略演化型快速原型采用此策略 1.4.3 增量模型增量模型 n增量模型把软件产品作为一系列的增量构件来增量模型把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。互作用的模块构成,并且能够完成特定的功能。 增量模型增量模型项目日历时间项目日历时间软软件件功功能能性性和和特特征征1 12 23 34 45 5第第2 2次增量发布次增量发布增量增量2 21 12 23 34 45 5第第n n次增量发布次增量发布增量增量n n1

37、 12 23 34 45 5第第1 1次增量发布次增量发布增量增量1 15 5部署(发布,反馈)部署(发布,反馈)4 4构造(编码,测试)构造(编码,测试)3 3建模(分析,设计)建模(分析,设计)2 2计划计划1 1交流交流增量模型的优点:增量模型的优点:n人员分配灵活,刚开始不用投入大量人力资源。人员分配灵活,刚开始不用投入大量人力资源。 n当配备的人员不能在设定的期限内完成产品时,当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。它提供了一种先推出核心产品的途径。 n逐步增加产品功能可以使用户有较充裕的时间逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品

38、。学习和适应新产品。增量模型的难点:增量模型的难点:n软件体系结构必须是开放的。软件体系结构必须是开放的。n模型本身是自相矛盾的。整体模型本身是自相矛盾的。整体独立构件。独立构件。n不同的构件并行地构建有可能加快工程进度,不同的构件并行地构建有可能加快工程进度,但是冒无法集成到一起的风险。但是冒无法集成到一起的风险。增量模型适用于:增量模型适用于:n适用于需求经常改变的软件开发过程。适用于需求经常改变的软件开发过程。n如果在项目既定的商业要求期限之前不可能找如果在项目既定的商业要求期限之前不可能找到足够的开发人员,在这种情况下,增量模型到足够的开发人员,在这种情况下,增量模型显得特别有用。显得

39、特别有用。1.4.4 螺旋模型螺旋模型 螺旋模型的基本思想:螺旋模型的基本思想:使用原型及其他方法使用原型及其他方法来尽量降低风险。把来尽量降低风险。把它看作在每个阶段之它看作在每个阶段之前都增加了风险分析前都增加了风险分析过程的快速原型模型。过程的快速原型模型。 简化的螺旋模型简化的螺旋模型完整的螺旋模型完整的螺旋模型螺旋模型的优点:螺旋模型的优点:n主要优势在于它是风险驱动的。主要优势在于它是风险驱动的。n对可选方案和约束条件的强调有利于已有软件对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的的重用,也有助于把软件质量作为软件开发的一个重要目标;一个重要目标

40、;n减少了过多测试或测试不足所带来的风险;减少了过多测试或测试不足所带来的风险;n维护只是模型的另一个周期,维护和开发之间维护只是模型的另一个周期,维护和开发之间没有本质区别。没有本质区别。螺旋模型的缺点:螺旋模型的缺点:n采用螺旋模型需要具有相当丰富的风险评估经采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。果未能够及时标识风险,势必造成重大损失。 n过多的迭代次数会增加开发成本,延迟提交时过多的迭代次数会增加开发成本,延迟提交时间。间。 螺旋模型适用于:螺旋模型适用于:n特别适用

41、于庞大、复杂并具有高风险的系统。特别适用于庞大、复杂并具有高风险的系统。n适用于内部开发的大规模软件项目。适用于内部开发的大规模软件项目。1.4.5 喷泉模型喷泉模型 喷泉模型:喷泉模型:是典型的面向是典型的面向对象生命周期模型。对象生命周期模型。 “喷泉喷泉”这个词体现了这个词体现了面向对象软件开发过程面向对象软件开发过程迭代和无缝的特性。为迭代和无缝的特性。为避免使用喷泉模型开发避免使用喷泉模型开发软件时开发过程过分无软件时开发过程过分无序,应该把一个线性过序,应该把一个线性过程程(例如,快速原型模型例如,快速原型模型或图中的中心垂线或图中的中心垂线)作为作为总目标。总目标。 喷泉模型的优

42、点:喷泉模型的优点:n该模型的各个阶段没有明显的界限,开发人员可以同该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。步进行开发。n多次反复地增加或明确目标系统,而不是本质性的改多次反复地增加或明确目标系统,而不是本质性的改动,降低错误的可能性。动,降低错误的可能性。喷泉模型的缺点:喷泉模型的缺点:n由于喷泉模型在各个开发阶段是重叠的,因此在开发由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,不利于项目的管理。过程中需要大量的开发人员,不利于项目的管理。n要求严格管理文档,使得审核的难度加大,尤其是面要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各

43、种信息、需求与资料的情况。对可能随时加入各种信息、需求与资料的情况。喷泉模型适用于:喷泉模型适用于:n适用于面向对象的软件开发过程。适用于面向对象的软件开发过程。基于构件的开发模型:基于构件的开发模型:n支持软件复用。利用预先包装好的软件构件来构造应支持软件复用。利用预先包装好的软件构件来构造应用系统。用系统。领域分析领域分析构件可变性构件可变性分析分析构建构建可复用构件可复用构件领域模型领域模型领域基准领域基准体系结构图体系结构图可复用可复用构件库构件库分析分析体系结构设体系结构设计计获取构件获取构件构件特化构件特化和修改和修改评价评价构件组装构件组装和测试和测试开发未找到开发未找到构件的部

44、分构件的部分应用系统工程应用系统工程应用系统应用系统领域工程领域工程形式化方法模型:形式化方法模型:n形式化方法是建立在严格数学基础上的一种软形式化方法是建立在严格数学基础上的一种软件开发方法。软件开发的全过程中,从需求分件开发方法。软件开发的全过程中,从需求分析、规约、设计、编程、系统集成、测试、文析、规约、设计、编程、系统集成、测试、文档生成、直至维护各个阶段,凡是采用严格的档生成、直至维护各个阶段,凡是采用严格的数学语言,具有精确的数学语义的方法,都称数学语言,具有精确的数学语义的方法,都称为形式化方法。为形式化方法。1.4.6 Rational统一过程统一过程nRational统一过程

45、统一过程(Rational Unified Process, RUP)是是由由Rational软件公司推出的一种完整而完美的软件过软件公司推出的一种完整而完美的软件过程。程。nRUP是一种迭代的,以架构为中心的,用例驱动的是一种迭代的,以架构为中心的,用例驱动的软软件开发方法件开发方法。nRUP是一种具有明确定义和结构的是一种具有明确定义和结构的软件工程过程软件工程过程。nRUP还是一个过程产品,提供了可定制的软件工程的还是一个过程产品,提供了可定制的软件工程的过程框架过程框架。nRUP被广泛应用在不同工业领域中的不同企业中。被广泛应用在不同工业领域中的不同企业中。RUP总结了总结了6条软件开

46、发经验条软件开发经验最佳实践:最佳实践:n迭代式开发迭代式开发n管理需求管理需求n使用基于构件的体系结构使用基于构件的体系结构n可视化建模可视化建模n验证软件质量验证软件质量n控制软件变更控制软件变更UML的用例图的用例图RUP软件开发生命周期软件开发生命周期(二维二维):1.4.7 敏捷过程与极限编程敏捷过程与极限编程敏捷软件开发宣言敏捷软件开发宣言(价值观声明价值观声明):n个体和交互胜过过程和工具个体和交互胜过过程和工具n可以工作的软件胜过面面俱到的文档可以工作的软件胜过面面俱到的文档n客户合作胜过合同谈判客户合作胜过合同谈判n响应变化胜过遵循计划响应变化胜过遵循计划根据上述价值观声明提

47、出的软件过程统称为敏捷根据上述价值观声明提出的软件过程统称为敏捷过程。过程。极限编程极限编程(eXtreme Programming, XP):n敏捷过程中最富盛名的一个敏捷过程中最富盛名的一个n广泛适用于需求模糊且经常改变的场合广泛适用于需求模糊且经常改变的场合n使得敏捷过程能够较好地适应商业竞争环境下使得敏捷过程能够较好地适应商业竞争环境下对小型项目提出的有限资源和有限开发时间的对小型项目提出的有限资源和有限开发时间的约束约束XP项目的整体开发过程项目的整体开发过程 XP迭代开发过程迭代开发过程 1.4.8 微软过程微软过程n微软过程准则微软过程准则n微软软件生命周期微软软件生命周期 n微软过程模型微软过程模型q每一个生命周期发布一个递进的版本,各生命周期每一个生命周期发布一个递进的版本,各生命周期持续快速地迭代循环持续快速地迭代循环q优点:优点: 综合了综合了Rational统一过程和敏捷过程的优点统一过程和敏捷过程的优点q缺点:对方法、工具和产品等方面不够全面缺点:对方法、工具和产品等方面不够全面

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(软件工程课件之第1章软件工程学概述(张海潘编著).ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|