软件工程导论第一章_第1页
软件工程导论第一章_第2页
软件工程导论第一章_第3页
软件工程导论第一章_第4页
软件工程导论第一章_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程导论软件工程导论Introduction to Software EngineeringIntroduction to Software Engineering 主讲人:张佩云主讲人:张佩云 邮邮 箱:箱:手手 机:机件工程软件工程指导计算机指导计算机课程介绍和要求学习目标学习目标为什么要学习这门课程为什么要学习这门课程有助于正确理解和认识有助于正确理解和认识“软件软件”的概念及其特点的概念及其特点。理解软件开发面临的问题和挑战。理解软件开发面临的问题和挑战。掌握软件工程的原则、方法和思想来系统地开发掌握软件工程的原则、方法和思想来系统地开发软件,尤其是复杂、

2、庞大的软件的开发。软件,尤其是复杂、庞大的软件的开发。课程介绍和要求课程内容课程内容从技术与管理角度分: 第1第12章主要讲技术,第13章讲管理 其中,技术部分又可大致分成两部分: 第1第8章是传统的方法学 第9第12章是面向对象方法课程介绍和要求如何如何学学听理解知识点和思想读 阅读相关资料,培养抽象思维能力做在实践中体会软件工程的原则、方法和技术培养独立解决问题的能力培养合作精神课程介绍和要求7拟采用的考核方式拟采用的考核方式平时成绩平时成绩(60%)(60%):包括作业、讨论、课后实践、期中:包括作业、讨论、课后实践、期中考试等考试等期末考试期末考试(40%)(40%)教材及主要参考书教

3、材及主要参考书选用教材: 软件工程导论(第五版),张海藩著,2008年,清华大学出版社参考书目:1.面向对象方法,石峰,宋红,高等教育出版社2.软件工程实践者的研究方法,Roger S. Pressman,机械工业出版社第第1 1章章 软件工程概述软件工程概述软件工程产生的背景(软件危机) 软件工程定义软件工程方法学软件过程模型小结重点1.1 1.1 软件危机与软件工程产生的背景软件危机与软件工程产生的背景 软件的定义:Software)Program)Data)Document) Software = Program + Data + Document软件特征非常复杂非常复杂成本高成本高风险

4、大风险大维护困难维护困难121)1)非常复杂非常复杂逻辑复杂:复杂程度随着程序规模的增加成指数上升。远远高于硬件的逻辑复杂度开发复杂成本难以估算进度难以控制人员素质要求难以保证质量得不到保证96年Ariane 5火箭发射失败,浮点数转换时发生错误,导致电脑死机,火箭爆炸,火箭上载有价值5亿美元的通信卫星,6亿美元付之一炬。课程介绍和要求2)2)成本高成本高(1/2)(1/2)2)2)成本高成本高(2/2)(2/2)引入同一个变动需要付出的代价的变化趋势:课程介绍和要求3)3)风险大风险大1995年美国Standish咨询集团的统计分析(至90年代初的软件项目执行情况)成功:16.2%失败:31

5、受到挑战:53.8%近几年来的统计数据成功:26失败:28受到挑战:46%4)4)维护困难维护困难维护形式多样化改正性:修改故障完善性:增加功能适应性:移植维护成本越来越高费用占55%到70维护带来的问题1.1 1.1 软件危机软件危机 1.1.1 1.1.1 软件危机的表现软件危机的表现软件危机是指在计算机软件的开发、使用和维护过程软件危机是指在计算机软件的开发、使用和维护过程中遇到的一系列严重问题中遇到的一系列严重问题。 1 1)成本难以估计、成本高。)成本难以估计、成本高。2)软件开发进度估计不准确,项目延期比比皆是。)软件开发进度估计不准确,项目延期比比皆是。3)软件质量得不到保证(功

6、能和性能)。)软件质量得不到保证(功能和性能)。4)用户对)用户对“已完成的已完成的”软件系统不满意的现象经常软件系统不满意的现象经常发生。发生。5)维护非常困难)维护非常困难(多样性多样性 、复杂性、复杂性、 副作用副作用)。6)软件通常没有适当的文档。)软件通常没有适当的文档。7)软件产品供不应求,跟不上计算机普及速度。)软件产品供不应求,跟不上计算机普及速度。软件危机的例子:软件危机的例子:1 1、迪斯尼并不总是带来笑声、迪斯尼并不总是带来笑声1994年圣诞节前夕,迪斯尼公司发布了第一个面向儿童的多媒体光盘游戏“狮子王童话”。圣诞节后的第一天,迪斯尼客户支持部电话开始响个不停,不断有人咨

7、询、抱怨为什么游戏总是安装不成功,或没法正常使用。其实这个游戏软件只能在少数系统中正常运行。2 2、火星探测飞船坠毁、火星探测飞船坠毁1999年12月3日,美航天局火星登陆事故:飞船在试图登陆火星表面时,由于设置了错误的数据位,而撞成碎片失踪。3 3、丹佛新机场启用推迟、丹佛新机场启用推迟1616个月个月 丹佛新国际机场希望被建成现代的机场。它将拥有计算机控制的、自动化的包裹处理系统,而且还有5300英里长的光纤网络。不幸的是,在这包裹处理系统中存在一个严重的程序缺陷,导致行李箱被绞,居然还开着自动包裹车往墙里钻。结果机场启用推迟16个月,使得预算超过32亿美元,并且废弃这个自动化的包裹处理系

8、统,使用手工处理包裹系统。4 4、安徽省高考成绩统计出现失误、安徽省高考成绩统计出现失误 2007年6月27日,一些考生和家长在安徽省教育招生考试院进行登记和咨询。安徽省2007年高考文科综合科目成绩因计算机漏统了第39题考分,致使文科考生成绩统计有误。事后,安徽省正采取紧急措施对这一失误进行纠正,文科考生成绩已重新统分合成,文科各批次录取最低控制分数线也已经重新划定。据悉,安徽省文科考生从6月27日7时起,即可查询到重新划定的分数线和自己的实际成绩。同时,为保证广大考生有充分的时间填报志愿,查分结束时间推迟至6月29日,志愿填报时间顺延至7月1日。5 5、更多的悲剧、更多的悲剧放射性治疗仪T

9、herac-25中的软件存在缺陷,导致几个癌症病人受到非常严重的过量放射性治疗,其中4个人因此死亡。当爱国者导弹防御系统的时钟累计运行超过14小时后,系统的跟踪系统就不准确。从而导致拦截伊拉克飞毛腿导弹的几次失败,其中一枚在沙特阿拉伯的多哈爆炸的飞毛腿导弹造成28名美国士兵死亡。美国总统信息技术顾问委员会美国总统信息技术顾问委员会(PITACPITAC)的战略)的战略软件是最迫切的需求,因为: 对软件的需求:对软件的需求:超出了我们现有的开发能力, 现有的软件:现有的软件:是脆弱的、不可靠的,且很难进行设计、维护和升级。 所以: 软件已成为当前社会的核心产品与核心问题,应绝对优先。许多国家将软

10、件列为国家发展的关键技术领域许多国家将软件列为国家发展的关键技术领域我国把信息产业放在优先发展的地位,看作是中国发展我国把信息产业放在优先发展的地位,看作是中国发展高新技术、赶超世界先进水平的一次千载难逢的机遇。高新技术、赶超世界先进水平的一次千载难逢的机遇。欧共体将欧共体将“将软件和信息处理将软件和信息处理”列为关键技术。列为关键技术。美国国家关键技术委员会将软件列为六大关键技术。美国国家关键技术委员会将软件列为六大关键技术。高投入,高产出,无污染,低能耗的绿色产业。关系国家经济和文化安全,体现了国家综合实力,是决定21世纪国家竞争地位的战略性产业。1.1.2 1.1.2 产生软件危机的原因

11、产生软件危机的原因(1 1)与软件本身的特点有关与软件本身的特点有关 ( (逻辑复杂,成本高,逻辑复杂,成本高,风险大风险大, ,难于维护难于维护) )。(2 2)与软件开发与维护的方法不正确有关:与软件开发与维护的方法不正确有关:-软件软件程序程序(软件是程序、数据及相关文档的完整集合)(软件是程序、数据及相关文档的完整集合)-急于求成急于求成= =拔苗助长拔苗助长(软件从定义、开发、使用和维护、软件从定义、开发、使用和维护、废弃要经历一个漫长的生命周期废弃要经历一个漫长的生命周期)-各自为阵无方法学各自为阵无方法学(应要组织良好、管理严密、各类人(应要组织良好、管理严密、各类人员协作共同完

12、成的工程项目)员协作共同完成的工程项目)1.1.31.1.3消除软件危机消除软件危机消除软件即程序消除软件即程序的错误观念和急于求成急于求成的心态。开发一个具有一定规模和复杂性的软件系统与编写一个简单的程序不一样(狗窝和高楼大厦)。消除各自为阵的理念消除各自为阵的理念:软件开发是一个组织良好、管理严密、各类人员协同配合、共同完成的工程项目。使用和推广在实践中总结出来的成功的经验,探索更有效的技术和方法技术和方法。开发和使用更好的软件工具软件工具。管理管理技术技术大型、复杂软件系统的开发是一项工程,大型、复杂软件系统的开发是一项工程,必须按照工程化的方法组织必须按照工程化的方法组织软件的开发软件

13、的开发和和管管理理,必须经过,必须经过分析、设计、实现、测试、维分析、设计、实现、测试、维护护等一系列软件过程和活动!等一系列软件过程和活动!软件工程(学)因软件危机而产生!软件工程(学)因软件危机而产生!1.2.1 1.2.1 软件工程定义软件工程定义 软件工程就是为了经济地获得可靠软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件的且能在实际机器上有效地运行的软件,而建立和使用一套合理的工程原理。,而建立和使用一套合理的工程原理。1968年,第一届年,第一届NATO(北大西洋公约组织)会议定义:(北大西洋公约组织)会议定义: 软件工程是软件工程是:(:(1 1)把系统的、规范

14、的、把系统的、规范的、 可度量的途径应用于软件开发、运行和维护可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;(过程,也就是把工程应用于软件;(2 2)研究)研究(1 1)中提到的途径。中提到的途径。 1993年年IEEE(电气和电子工程师协会电气和电子工程师协会)定义:定义:软件工程是应用计算机科学、数学、心理学及管理软件工程是应用计算机科学、数学、心理学及管理科学等原理开发软件的工程。它借鉴传统工程的原科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以则、方法,以提高质量、降低成本和提高效率提高质量、降低成本和提高效率为目为目的。的。软件工程包括软件工程包括技术和

15、管理技术和管理两方面的内容,是技术与两方面的内容,是技术与管理紧密结合所形成的工程学科。管理紧密结合所形成的工程学科。总结总结软件工程的基本目标软件工程的基本目标 付出较低的开发成本;付出较低的开发成本; 达到预期的软件功能;达到预期的软件功能; 取得较好的软件性能;取得较好的软件性能; 能按时完成开发工作,能按时完成开发工作, 需要较低的维护费用;需要较低的维护费用; 使软件易于移植。使软件易于移植。 互补关系: 互斥关系: 低开发成本 易于维护 高可靠性 高性能 按时交付 图 1.1 软件工程目标之间的关系 及时交付使用;及时交付使用;软件工程的特性软件工程的特性1. 1. 软件工程关注于

16、大型程序的构造软件工程关注于大型程序的构造(传统的程序设计技术和工具是支持小型程序设计的)(传统的程序设计技术和工具是支持小型程序设计的)2. 2. 软件工程的中心课题是控制复杂性软件工程的中心课题是控制复杂性(问题分解)(问题分解)3. 3. 软件经常变化软件经常变化(考虑将来要发生的变化)(考虑将来要发生的变化)4. 4. 开发软件的效率非常重要开发软件的效率非常重要(寻求更好、更有效的工具)(寻求更好、更有效的工具)5. 5. 和谐地合作是开发软件的关键和谐地合作是开发软件的关键(运用标准和规程)(运用标准和规程)6. 6. 软件必须有效地支持它的用户软件必须有效地支持它的用户(软件要服

17、务于用户)(软件要服务于用户)7. 7. 在软件工程领域中通常是由具有一种文化背景的人替具在软件工程领域中通常是由具有一种文化背景的人替具有另一种文化背景的人创造产品有另一种文化背景的人创造产品1.2.2 1.2.2 软件工程的软件工程的7 7条基本原理条基本原理1.1.用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理不成功的软件项目中有一半左右是由于计划不周造成的不成功的软件项目中有一半左右是由于计划不周造成的。2.2.坚持进行阶段评审坚持进行阶段评审大部分错误是编码之前造成的;错误发现与改正得越早大部分错误是编码之前造成的;错误发现与改正得越早,所付出的代价越低。,所付出的代价

18、越低。3.3.实行严格的产品控制实行严格的产品控制不应随意改需求,否则代价很高,若要改变,应采用科不应随意改需求,否则代价很高,若要改变,应采用科学的产品控制技术。学的产品控制技术。1.2.2 1.2.2 软件工程的软件工程的7 7条基本原理(续)条基本原理(续)这这7 7条原理是确保软件产品质量和开发效率的原理的最小集合条原理是确保软件产品质量和开发效率的原理的最小集合。循该。循该7 7条能够按照当代软件工程基本原理实现软件的工程化条能够按照当代软件工程基本原理实现软件的工程化生产了!生产了!4.4.采用现代程序设计技术采用现代程序设计技术提高软件开发和维护的效率,提高软件产品的质量。提高软

19、件开发和维护的效率,提高软件产品的质量。5.5.结果应能清楚地审查结果应能清楚地审查规定开发组织的责任和产品标准。规定开发组织的责任和产品标准。6.6.开发小组的人员应该少而精开发小组的人员应该少而精提高软件开发质量和降低通信开销。提高软件开发质量和降低通信开销。7.7.承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性注意不断总结经验,以评价新的软件技术的效果等。注意不断总结经验,以评价新的软件技术的效果等。通常把在软件生命周期全过程中使用的通常把在软件生命周期全过程中使用的一整套技术方法的一整套技术方法的集合集合称为方法学称为方法学(methodology)(methodol

20、ogy),也称为范型,也称为范型(paradigm)(paradigm)。目前使用得最广泛的软件工程方法学,分别是目前使用得最广泛的软件工程方法学,分别是传统方法学传统方法学和和面向对象方法学面向对象方法学。软件工程方法学包含软件工程方法学包含3 3个要素:个要素:方法、工具和过程。方法、工具和过程。1.2.3 1.2.3 软件工程方法学软件工程方法学质量关注点质量关注点过程过程方法方法工具工具 软件工程层次图软件工程层次图软件工程方法学三个要素软件工程方法学三个要素:工具、方法、过程工具、方法、过程为了获得高质量的为了获得高质量的软件所需要完成的软件所需要完成的一系列任务的一系列任务的框架框

21、架,它,它规定了完成各规定了完成各项任务的工作项任务的工作步骤步骤完成软件开发的各完成软件开发的各项任务的技术方法项任务的技术方法,为软件开发提供,为软件开发提供“如何做如何做”的技术的技术为软件开发提供自动或为软件开发提供自动或半自动的软件支撑环境半自动的软件支撑环境,建立计算机辅助软件,建立计算机辅助软件工程工程(CASE)的的软件开软件开发支撑系统发支撑系统支持软件工支持软件工程的根基就程的根基就在于对质量在于对质量的关注的关注1.3 1.3 软件生命周期软件生命周期 问题定义问题定义 软件定义软件定义 可行性研究可行性研究 需求分析需求分析 总体设计总体设计 详细设计详细设计软件生命周

22、期软件生命周期 软件开发软件开发 编码编码 单元测试单元测试 综合测试综合测试 运行维护运行维护 持久满足用户需求持久满足用户需求该阶段的工作是降低成本、该阶段的工作是降低成本、提高软件质量的关键!提高软件质量的关键!占占10%20%的工的工作量作量占占40%50%的工作量的工作量每阶段的基本任务每阶段的基本任务: :1. 1. 问题定义问题定义 “要解决的问题是什么要解决的问题是什么?”?”2. 2. 可行性研究可行性研究 “对于上一个阶段所确定的问题有对于上一个阶段所确定的问题有行得通的解决办法吗行得通的解决办法吗?”?”3. 3. 需求分析需求分析 “为了解决这个问题,目标系统必须为了解

23、决这个问题,目标系统必须做什么?做什么?” 这一阶段的重要任务是记录对目标系统这一阶段的重要任务是记录对目标系统的需求,这份文档通常称为规格说明书(的需求,这份文档通常称为规格说明书(SpecificationSpecification)。)。4. 4. 总体设计总体设计 “概括地说,应该怎样实现目标系统概括地说,应该怎样实现目标系统?”?”应该设计出几种可行的方案,至少设计出低成本应该设计出几种可行的方案,至少设计出低成本、中成本和高成本、中成本和高成本3 3种方案。制定最佳方案的详细种方案。制定最佳方案的详细计划。计划。每阶段的基本任务每阶段的基本任务: :5. 5. 详细设计详细设计“应

24、该怎样具体地实现这个系统呢应该怎样具体地实现这个系统呢?”?”设计出程序的详细规格说明,包括所需要的算法和数据结构。设计出程序的详细规格说明,包括所需要的算法和数据结构。6. 6. 编码和单元测试编码和单元测试写出正确的容易理解、容易维护的程序写出正确的容易理解、容易维护的程序模块。模块。 选择一种适当的高级语言,必要时用汇编语言。选择一种适当的高级语言,必要时用汇编语言。7. 7. 综合测试综合测试通过各种类型的测试通过各种类型的测试( (及相应的调试及相应的调试) )使软件达使软件达到预定的要求。到预定的要求。8. 8. 软件维护软件维护通过各种必要的维护活动使系统持久地满足用通过各种必要

25、的维护活动使系统持久地满足用户的需要。户的需要。1 1、我们拥有一套讲述如何开发软件的书籍,书中充满了标准、我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们解决软件开发中遇到的任何问题。与示例,可以帮助我们解决软件开发中遇到的任何问题。2 2、我们拥有最好的开发工具、最好的计算机,一定能做出优、我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。秀的软件。 3 3、如果我们落后于计划,可以增加更多的程序员来解决。、如果我们落后于计划,可以增加更多的程序员来解决。 4 4、既然需求分析很困难,不管三七二十一先把软件做了再说、既然需求分析很困难,不管三七二十一先把软件

26、做了再说,反正软件是灵活的,随时可以修改。,反正软件是灵活的,随时可以修改。5 5、有最好的软件工程方法,最好的编程语言吗?、有最好的软件工程方法,最好的编程语言吗?6 6、编程时是否应该多使用技巧?、编程时是否应该多使用技巧? 1.4 1.4 软件过程软件过程 软件过程是为了获得高质量软件所需要完成的一系列任务软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。的框架,它规定了完成各项任务的工作步骤。辅助活动辅助活动过程定义了:过程定义了:(1)运用方法的顺序)运用方法的顺序(2)应该交付的文档资料)应该交付的文档资料(3)为保证软件质量和协调变化所需要

27、采用的)为保证软件质量和协调变化所需要采用的管理措施管理措施(4)标志软件开发各个阶段的任务完成的里程)标志软件开发各个阶段的任务完成的里程碑碑通常包括四种基本的过程活动:通常包括四种基本的过程活动:()软件规格说明:规定软件的功能、性能及其运行限()软件规格说明:规定软件的功能、性能及其运行限制。制。()软件开发:产生满足规格说明的软件,包括设计与()软件开发:产生满足规格说明的软件,包括设计与编码等工作。编码等工作。()软件确认:确认软件能够满足客户提出的要求。()软件确认:确认软件能够满足客户提出的要求。()软件演进:为满足客户的变更要求,软件必须在使()软件演进:为满足客户的变更要求,

28、软件必须在使用的过程中演进,以求尽量延长软件的生命周期。用的过程中演进,以求尽量延长软件的生命周期。软件过程模型软件过程模型软件开发过程模型是软件开发全部过程、活动和任软件开发过程模型是软件开发全部过程、活动和任务的务的结构框架结构框架。它能直观表达软件开发全过程,明。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。确规定要完成的主要活动、任务和开发策略。几种典型的模型:几种典型的模型:瀑布模型、快速原型模型、增量瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、模型、螺旋模型、喷泉模型、RUP等等。 软件过程模型的选择基于项目和应用的性质、采软件过程模型的选择基于项

29、目和应用的性质、采用的方法工具以及需要的控制和交付的产品。用的方法工具以及需要的控制和交付的产品。最不好的模型最不好的模型边做边改模型边做边改模型遗憾的是,许多产品都是使用“边做边改”模型来开发的。在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改.这是一种类似作坊的开发方式,对编写几百行的小程序来说还不错,但这种方法对任何规模的开发来说都是不能令人满意的,其主要问题在于:缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改;忽略需求环节,给软件开发带来很大的风险;没有考虑测试和程序的可维护性,也没有任何文档,软件的维护十分困难。1.4.1

30、1.4.1瀑布模型瀑布模型( (Waterfall Model Waterfall Model ) 传统瀑布模型:规定了各项软件工程活动,包括:制定开发计划、需求分析传统瀑布模型:规定了各项软件工程活动,包括:制定开发计划、需求分析和说明、软件设计、程序编码、测试、运行维护。并且规定了它们自上而下、和说明、软件设计、程序编码、测试、运行维护。并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。相互衔接的固定次序,如同瀑布流水,逐级下落。特点:特点:1 1、阶段间具有顺序性和依赖、阶段间具有顺序性和依赖性。性。2 2、推迟实现。、推迟实现。3 3、质量保证。、质量保证。需求分析需

31、求分析验证验证规格说明规格说明验证验证设计设计验证验证维护维护编码编码验证验证综合测试综合测试验证验证(1)顺序性顺序性:强调了每一阶段活强调了每一阶段活动的严格顺序。动的严格顺序。必须等前一阶段必须等前一阶段的工作完成之后,才开始后一的工作完成之后,才开始后一阶段的工作;阶段的工作;(2)依赖性依赖性:只有前一阶段有:只有前一阶段有正确的输出时,后一阶段才可正确的输出时,后一阶段才可能有正确结果。能有正确结果。过早地编码,常导致大量返过早地编码,常导致大量返工,甚至带来灾难性后果。工,甚至带来灾难性后果。将逻辑模型与物理实现分开,将逻辑模型与物理实现分开,在编码前增加了分析和设计在编码前增加

32、了分析和设计阶段。阶段。(1)每个阶段要完成规定的文)每个阶段要完成规定的文档,没有完成文档,就认为没有档,没有完成文档,就认为没有完成该阶段的任务。完成该阶段的任务。(2)在每个阶段结束前都要对)在每个阶段结束前都要对完成的文档进行审查完成的文档进行审查,以及早发以及早发现问题,消除隐患。现问题,消除隐患。(1)在设计阶段可能发生规格说明文档中的错误在设计阶段可能发生规格说明文档中的错误!(2)在设计上的缺陷或错误可能在实现过程中显现在设计上的缺陷或错误可能在实现过程中显现出来出来!(3)在综合测试阶段将发现需求分析、设计或编码在综合测试阶段将发现需求分析、设计或编码阶段的许多错误阶段的许多

33、错误!传统瀑布模型存在什么问题?传统瀑布模型存在什么问题?实际的瀑布模型(带有反馈环)实际的瀑布模型(带有反馈环)发现前期错误,进行反馈修正维护过程瀑布模型瀑布模型优点优点质量保证:文档质量保证:文档+ +阶段评审。阶段评审。瀑布模型适合于用户需求明确、完整、无重大瀑布模型适合于用户需求明确、完整、无重大变化的软件项目开发变化的软件项目开发! !提供了一个模板提供了一个模板。瀑布模型所带来的问题:瀑布模型所带来的问题:、不适应需求经常发生变更的环境不适应需求经常发生变更的环境2、用户在最后才能看到自己的产品。、用户在最后才能看到自己的产品。3、最终产品可能、最终产品可能不能真正满足用户的需要不

34、能真正满足用户的需要。4、顺序性和依赖性导致发生开发、顺序性和依赖性导致发生开发“阻塞阻塞”。 课堂思考题:软件文档在软件开发中的作用有课堂思考题:软件文档在软件开发中的作用有哪些?哪些?(1 1)便于用户了解软件功能)便于用户了解软件功能(2 2)提高软件开发的能见度)提高软件开发的能见度(3 3)提高开发效率)提高开发效率(4 4)作为开发人员阶段成果和结束标志)作为开发人员阶段成果和结束标志(5 5)记录开发过程有关信息,便于后期维护)记录开发过程有关信息,便于后期维护(6 6)提供软件运行、培训方面的有关资料)提供软件运行、培训方面的有关资料1.4.21.4.2原型模型原型模型快速原型

35、模型(快速原型模型(Rapid Prototype Rapid Prototype ModelModel)快速原型模型包括两大步骤:第一步进行试验开发,得出快速原型模型包括两大步骤:第一步进行试验开发,得出产品的产品的“原型原型”,其目的在于弄清软件需求并探索可行性,其目的在于弄清软件需求并探索可行性;第二步在原型的基础上开发出较为满意的软件产品。;第二步在原型的基础上开发出较为满意的软件产品。该模型克服了瀑布模型的部分缺陷,该模型克服了瀑布模型的部分缺陷,减少了软件需求不明减少了软件需求不明确给开发工作带来的风险。确给开发工作带来的风险。建造建造/ /修改修改原型原型 听取用听取用 户意见户

36、意见用户用户测试测试运行运行原型原型原型实现范型原型实现范型快速原型快速原型验证验证规格说明规格说明验证验证设计设计验证验证编码编码测试测试综合测试综合测试维护维护变化的需求变化的需求验证验证维护过程维护过程开发过程开发过程快速原型模型快速原型模型替换瀑布模型中的“需求分析”模块使用原型模型必须有两个前提使用原型模型必须有两个前提: :(1)(1)是用户必须积极参与原型的建造,建造原型仅仅是为了是用户必须积极参与原型的建造,建造原型仅仅是为了定义需求,之后就必须被全部抛弃定义需求,之后就必须被全部抛弃( (至少是部分抛弃至少是部分抛弃) ),实际,实际的软件必须在充分考虑到软件质量和可维护性之

37、后才被开发。的软件必须在充分考虑到软件质量和可维护性之后才被开发。从这个意义上说,原型模型又往往被称为从这个意义上说,原型模型又往往被称为“抛弃原型模型抛弃原型模型”。(2)(2)是必须有快速开发工具可供使用。是必须有快速开发工具可供使用。 问题背景问题背景:由于传统的瀑布模型本身存在的不足,在开发过程中不论怎样严格,终究难以接近理想目标,考虑能否将整个软件一部分一部分地开发?解决方案解决方案:在需求难以完全明确的情况下,快速分析并构造一个小的原型系统,满足用户的某些要求后,使用户在使用过程中受其启发,逐步确定各种需求。即所谓的增量模型。增量模型增量模型:融合了瀑布模型的基本成分(重复的应用这

38、些成分)和原型模型的特征。增量模型实际上是一个随着日程/时间的进展的线性序列集合。每一个线性序列产生一个软件的可发布的“增量”,所有的增量都能够结合到原型模型中去。1.4.3 1.4.3 增量模型增量模型 ( (Incremental ModelIncremental Model) )1.4.3 1.4.3 增量模型增量模型 ( (Incremental ModelIncremental Model) )是一种渐进地开发逐步完善的是一种渐进地开发逐步完善的软件版本软件版本的模型,该模型一般首先开发的模型,该模型一般首先开发产品的基本部分,然后再逐步开发产品的附加部分。如产品的基本部分,然后再逐

39、步开发产品的附加部分。如字处理软件的开发字处理软件的开发。需求分析需求分析验证验证规格说明规格说明验证验证设计设计验证验证维护维护针对每个构件完成针对每个构件完成详细设计、编码和详细设计、编码和集成,经测试后交集成,经测试后交付给用户付给用户 整个软件产品被分解成许多个整个软件产品被分解成许多个增量构件。每个构件由多个相互增量构件。每个构件由多个相互作用的功能模块构成,并能够完作用的功能模块构成,并能够完成特定的功能。成特定的功能。 该增量模型表明:必须该增量模型表明:必须在开始实现各个构件之在开始实现各个构件之前就全部完成需求分析前就全部完成需求分析、规格说明和概要设计、规格说明和概要设计,

40、因此风险较小。,因此风险较小。优点:是十分有用的一种模型。在克服瀑布模型缺点、减少由于软件需求不明确而给开发工作带来风险方面,确有显著的效果;缩短产品提交时间都能够起到良好的作用。提醒:用户在开发软件的过程中,往往有“一步到位”的思想,因而增量式的工程开发必须取得用户的全面理解与支持,否则是难以成功的。增量模型的优点增量模型的优点增量模型的困难增量模型的困难1. 在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软软件体系结构必须是开放的。件体系结构必须是

41、开放的。2. 开发人员既要把软件系统看作整体。又要看成可独立的构件,因此相互矛盾。除非开发人员有足够的技术能力协调好。3. 多个构件并行开发,具有无法集成的风险。分析分析分析分析设计设计设计设计编码编码编码编码测试测试测试测试增量1增量2 增量3增量4 交付交付交付交付图图1.6 风险更大的增量模型风险更大的增量模型 不同的构件并行构建,因此可能加快工程进度,但是可能存在构件无不同的构件并行构建,因此可能加快工程进度,但是可能存在构件无法集成到一起的风险,除非密切地监控整个开发过程,否则整个工程可法集成到一起的风险,除非密切地监控整个开发过程,否则整个工程可能毁于一旦。能毁于一旦。1.4.4

42、1.4.4 螺旋模型螺旋模型 ( (Spiral ModelSpiral Model) ) 软件风险是任何软件开发项目中都普遍存在的实际问题,软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。项目越大,软件越复杂,承担该项目所冒的风险也越大。 对于复杂的大型软件,开发一个原型往往达不到要求对于复杂的大型软件,开发一个原型往往达不到要求(快速原型法是一种能使的产品不能满足用户需求的风险降至最低的方法,但是不能解决其他类型的风险:聘请不到需要的专业人员或技术人员跳槽) 。螺旋模型将瀑布模型与原型的迭代特征结合起来,并加入螺旋模型将瀑布模型与原型的迭

43、代特征结合起来,并加入两种模型均忽略了的风险分析,弥补了两者的不足。两种模型均忽略了的风险分析,弥补了两者的不足。快速原型快速原型验证验证规格说明规格说明验证验证设计设计验证验证编码编码测试测试综合测试综合测试维护维护变化的需求变化的需求验证验证风险分析风险分析风险分析风险分析风险分析风险分析风险分析风险分析风险分析风险分析风险分析风险分析可看作在每可看作在每个阶段之前个阶段之前都增加了风都增加了风险分析过程险分析过程的快速原型的快速原型模型。模型。简化的螺旋模型简化的螺旋模型完整的螺旋模型完整的螺旋模型带箭头的点划线表带箭头的点划线表示累计费用示累计费用螺旋线的角度值代螺旋线的角度值代表开发

44、进度表开发进度沿螺线沿螺线自内向外每旋自内向外每旋转一圈转一圈便开发出更为便开发出更为完善的一个完善的一个新的软件版本。新的软件版本。在笛卡尔坐标的四个象限在笛卡尔坐标的四个象限上分别表达了四个方面的活上分别表达了四个方面的活动。动。 和增量模型不同和增量模型不同,它并不要求每一它并不要求每一个增量都是可以个增量都是可以运行的程序。运行的程序。一个螺旋式周期:1、确定目标,选择方案,选定完成目标的策略 3、启动一个开发阶段 4、评价前一步的结果,计划下一轮的工作 瀑布模型瀑布模型+快速原型快速原型+风险分析风险分析的迭代过程的迭代过程!2、风险角度分析该策略螺旋模型的特点螺旋模型的特点它有两个

45、显著的特点:瀑布模型+快速原型+风险分析的迭代过程! 确定一系列里程碑,确保共利益者都支持可行的和令人满意的系统解决方案。螺旋模型优点螺旋模型优点对于高风险的大型软件,螺旋模型是一个理想的开发方法。由于软件随着过程的推进而变化,在每一个演进层次上,开发者和客户都可以更好地理解和应对风险。螺旋模型缺点螺旋模型缺点 风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大。 螺旋模型的适合场合:螺旋模型的适合场合:主要适用于内部开发的大规模软件项目,随着过程的进展演化,开发者和用户能够更好地识别和对待每一个演化级别上的风险。只有内部开发的项目,才能在风险过大时方便地中止项目。如果进行风险分析的

46、费用接近整个项目的经费预算,则风险分析是不可行的。1.4.5 1.4.5 喷泉模型喷泉模型( (Fountain ModelFountain Model) )分析分析设计设计实现实现测试测试集成集成演化演化特点特点:喷泉模型的各阶段均采用了“对象对象”这一统一范式,整个过程看起来像喷泉从喷出到落下再喷出的周而复始过程产生的光滑水柱,体现了软件创建所固有的迭代和无间隙的特征。喷泉模型主要用于面向对象的软件项目,软件的某个部分通常被重复多次,相关对象在每次迭代中随之加入渐进的软件成分。不同阶段的圈不同阶段的圈重叠,表示两重叠,表示两个活动间存在个活动间存在重叠重叠圈内向下的圈内向下的箭头表示该箭头

47、表示该阶段内的迭阶段内的迭代代一般为面一般为面向对象方向对象方法学的工法学的工作重心作重心1.4.6 Rational1.4.6 Rational统一软件开发过程统一软件开发过程 RUP是由Rational公司的Booch、Jacobson、 Rumbaugh提出的软件过程模型,也称RUP(Rational Unified Process)。 RUP软件开发生命周期是一个二维的软件开发模型。横轴代表时间,体现生命周期特征;纵轴代表工作流,体现了开发过程的静态结构。 RUP中的软件生命周期在时间上被分解为四个顺序的阶段:初始、细化、构造和移交。每个阶段围绕着9个核心工作流分别迭代。 模型见下图:

48、图图1.10 RUP1.10 RUP软件开发生命周期软件开发生命周期RUPRUP工作阶段:工作阶段: 初始阶段初始阶段:进行问题定义,确定目标,评估其可行性,降低关键风险。 细化阶段细化阶段:制定项目计划、配置各类资源、建立系统架构(包括各类视图)。 构造阶段构造阶段:开发整个产品,并确保产品可移交给用户。 移交阶段移交阶段:产品发布、安装、用户培训。每个阶段结束的里程碑处,管理层做出是否继续、进度、预算、是否给下一阶段提供资助等决定。确定阶段间演进要以风险控制为原则,决定每个阶段要那些工作流,每个工作流执行到什么程度,制品有哪些,每个制品完成到什么程度。 不同阶段工作流的侧重点不同,前两阶段

49、大部分工作集中在需求、分析和架构设计上;在构造阶段,重点转移到详细设计、实现和测试上。RUPRUP核心工作流:核心工作流:RUP中有9个核心工作流,分为6个核心过程工作流(Core Process Workflows)和3个核心支持工作流(Core Supporting Workflows)。RUP的9个核心工作流并不总是需要的,可以取舍。 尽管6个核心过程工作流可能使人想起传统瀑布模型中的几个阶段,但应注意迭代过程中的阶段是完全不同的,这些工作流在整个生命周期中一次又一次被访问。9个核心工作流在项目中轮流被使用,在每一次迭代中以不同的重点和强度重复。 RUPRUP迭代式渐增开发:迭代式渐增开

50、发: 采用线性顺序的开发方法不可能开发出当今客户需要的大型复杂软件系统,事实上,在整个软件开发过程中客户的需求会经常改变,因此需要一种能够一系列细化、若干渐近的反复过程而得出有效解决方案的迭代方法。 RUP强调采用迭代和渐增的方式来开发软件,整个项目开发过程由多个迭代过程组成。在每次迭代中只考虑一部分需要,针对这部分需求进行分析、设计、实现、测试和部署等工作,每次迭代都是在系统已完成部分的基础进行的,每次给系统增加一些新的功能,如此循环,直到完成最终项目。 迭代法渐增法开发举例:迭代法渐增法开发举例: 假如开发一个软件产品要求假如开发一个软件产品要求6 6个月交货,个月交货, (1 1)在第一

51、个月就拿出一个产品来,当然,这个产品会)在第一个月就拿出一个产品来,当然,这个产品会很不完善,会有很多功能还没有添加进去,很不完善,会有很多功能还没有添加进去,bugbug很多,还很多,还不稳定,但客户看了以后,会提出更详细的修改意见,这不稳定,但客户看了以后,会提出更详细的修改意见,这样,你就知道自己距离客户的需求有多远。样,你就知道自己距离客户的需求有多远。 (2 2)之后,再花一个月,在上个月所作的需求分析、框架)之后,再花一个月,在上个月所作的需求分析、框架设计、代码、测试等等的基础上,进一步改进,又拿出一设计、代码、测试等等的基础上,进一步改进,又拿出一个更完善的产品来,给客户看,让

52、他们提意见。个更完善的产品来,给客户看,让他们提意见。 (3 3)就这样,产品在功能上、质量上都能够逐渐逼近客)就这样,产品在功能上、质量上都能够逐渐逼近客户的要求,不会出现花了大量心血后,直到最后发布之时户的要求,不会出现花了大量心血后,直到最后发布之时才发现根本不是客户要的东西。才发现根本不是客户要的东西。 RUPRUP适合应用适合应用 目前,全球已有上千家软件公司在使用RUP,可开发或大或小、分布在各个领域的项目,表明了RUP的多功能性和广泛适应性。适合于需求不稳定、不全面的软件项目开发。 1.4.81.4.8微软过程微软过程图1.13微软软件生命周期阶段划分和主要里程碑图1.14微软过

53、程的生命周期模型【例例】假设你被任命为一家软件公司的项目负责人,你的工作是管假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。由于市场竞争理该公司已被广泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?为什么?种软件生命周期模型?为什么?解:解: 对这个项目的一个重要要求是,严格按照已对外公布了的日期对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时、应该着重考虑哪完成产品开发工作,因此,选择生命周期模型时、应该着重考虑哪种模型有助于加快产品开发的进度。使用增量模型开发软件时可以种模型有助于加快产品开发的进度。使用增量模型开发软件时可以并行完成开发工作,因此能够加快开发进度。并行完成开发工作,因此能够加快

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论