收藏 分享(赏)

第1章 软件工程学概述.ppt

上传人:gnk289057 文档编号:8306056 上传时间:2019-06-19 格式:PPT 页数:111 大小:7.45MB
下载 相关 举报
第1章 软件工程学概述.ppt_第1页
第1页 / 共111页
第1章 软件工程学概述.ppt_第2页
第2页 / 共111页
第1章 软件工程学概述.ppt_第3页
第3页 / 共111页
第1章 软件工程学概述.ppt_第4页
第4页 / 共111页
第1章 软件工程学概述.ppt_第5页
第5页 / 共111页
点击查看更多>>
资源描述

1、袁运浩 计算机科学与技术系 江南大学物联网工程学院E-mail: Phone: 15152267727,第一章 软件工程学概述,笃 学 尚 行 , 止 於 至 善 !,2019/6/19,第1章 软件工程概述,软件工程产生的背景(软件危机) 软件工程定义 软件工程方法学 软件过程模型 小结,背景材料 1765年,春天的苏格兰.,一位29岁的钟表匠没日没夜地在格拉斯哥大学的实验室中干着。他把他的管子和金属柱接起来,把水加热,测量其运动,然后将其拆开,一次又一次。在四年多的时间里,他不断地接上和拆开这些管子和金属柱 1769年1月5日,这位钟表匠获得了第一项专利 5年后这项发明的首个实用模型完成。

2、在此过程中,年轻的发明家几次面临破产,而且在他最终完成一个实用模型后,大多数人却忽视了它 又经历了20年的时间,世界才发现了它的潜力. 1785年,当选为英国皇家学会会员。,这就是被看作工业革命开始的,生产力提高了100倍 从繁重劳动解脱,最好是把真理比做燧石,它受到的敲打越厉害,发射出的光辉就越灿烂。瓦特,1978年,春天的Boston.,一名26岁正在哈佛读MBA的学生正在进行案例分析直到深夜。 其他学生用纸计算它们的财务数据时 这名拥有MIT计算机学位的学生已经在一台DEC小型机(全晶体管电脑)上进行计算以节省时间。 他同一个来自MIT的好朋友一起,花了好几个月在他们的“实验室”中寻求答

3、案,1978年,春天的波士顿.,这两位年轻的革新家就是Dan Bricklin (丹布里克林) & Bob Frankston (鲍伯法兰克斯顿)。他们的答案就是电子表格。他们将产品命名为VisiCalc,电子表格软件之父,1979年,VisiCalc引入到了Apple II型计算机。 需要20小时人工的预算编制被缩减到15分钟。 VisiCalc成了畅销货。6年里他卖出了70万套。它成了Apple II 型计算机的“应用王牌”。 许多顾客因为价值100美元的VisiCalc软件而购买2000美元的苹果电脑,Apple电脑销售成功的重要推进器就是VisiCalc电子表格软件。 VisiCalc

4、在1979年被评为最佳软件。 一直到1985年,VisiCalc始终被称为促进PC产业迅速发展的主要催化剂之一。 后来VisiCalc被卡普尔的Lotus 1-2-3电子表格所替代,(莲花公司,被IBM收购) 最后就是1985年微软开发的Excel了。,1996年,IEEE (美国电气和电子工程师协会)表彰Bricklin为“我们今日所知的个人计算机市场兴起的催化剂”,是获得IEEE计算机企业家奖章的第一个软件业领袖。在他之后才是Andy Grove(安迪格鲁夫)、Bill Gates、Steve Jobs 2004年PC Magazine将其评为“全球10大最具影响力软件”首位, 之后是Wo

5、rdStar, Apache(开发源代码服务器), Mosaic浏览器, Mac OS, Photoshop .,蒸汽机的工业革命,使人们从繁重的体力劳动中得到解脱VisiCalc使人们从繁重的脑力劳动中解放, 是一场技术革命的开始,软件:新的驱动力,80年代初期,Business Weekly 在头版给出了这样一个大标题:“软件:新的驱动力”,编辑们当时根本没有意识到他们的预见是多么的正确。大多数人对软件还一无所知 微软还不存在(1975); 计算机超市闻所未闻; 在电视上为操作系统作60秒的商业广告的想法是可笑的; 互联网仅为个别研究机构和高校所知.,20年后.,带翼的软件,Boeing

6、777 1995年问世,耗资40亿美元 高度复杂:300万个部件 波音计算机服务部总裁John Warner:“设计飞机需要数千名专家,加上许多人工智能,在完成之前,美国和日本的1700个工作站已经运行了专门的CAD软件,一旦飞机飞在空中,有400万条完全没有错误的指令在驱动他。” 软件专家Edward Yourdon(尤顿)在1997年关于软件工程的书死亡征程中评述到“Boeing 777可以被看作是一串带翼的软件”,公路上的代码,软件同样在驾驶汽车 BMW在1998年开展了一次全球范围的广告宣传,广告中宣传,阿波罗11号飞船正在直冲云霄。 下面的文字为“当您启动BMW 7系列时,您激活了2

7、0兆字节的计算能力.这比阿波罗11号的登月之旅中所用的还要多。”,健康软件,20 世纪90年代初,美国国家卫生署的科学家 Craig Venter 着手解开人类的基因代码通过计算机化、由软件和硬件驱动的分析手段,而不是通过传统的研究方法。生物物理学博士William Haseltine 继承了这一思想,并建立了人类基因组织(HGS), 预计在20年内完成这个艰巨的任务。按照公布的信息,到1997年,10万个人类基因中超过90%已被解码,包括超过100万条部分基因序列。由这项软件工程所促进的基因医学,将对未来的医学有深远的影响。,计算机软件已经成为一种驱动力,进行商业活动的引擎 现代科学研究和工

8、程问题解决的基础 区分现代产品和服务的关键因素,应用于:交通、医药、通讯、军事、娱乐、办公,现代社会中不可缺少的,软件的发展,程序设计阶段,程序系统阶段,软件工程阶段,软件的发展,程序设计阶段,50-60年代,软件的发展,50-60年代,程序系统阶段,60-70年代,程序设计阶段,程序系统阶段,程序设计阶段,软件工程阶段,50-60年代,70年代以后,60-70年代,软件的发展,当前软件产业的发展趋势,网络化,服务化,全球化,1、 软件工程产生的背景(软件危机),1.1 什么是软件?a. 软件的定义 b. 软件的特征 c. 软件的发展 d. 软件危机,1. 软件工程产生的背景,a. 软件的定义

9、软件( Software)是计算机系统中与硬件相互依存的另一部分,它是包括程序(Program) ,数据(Data)及其相关文档( Document)的完整集合。Software = Program + Data + Document程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料,(1)软件是一种逻辑实体,而不是具体的物理实体,缺乏可见性、进度难以控制 (2)软件规模庞大,区别于一般程序,多人分工合作完成,b.软件的特征,按软件的规模进行划分,(3)在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题,但存在开发

10、和维护的困难,b.软件的特征,失效率,时间,硬件失效的“浴缸曲线”,软件失效率曲线,修改点,失效率,时间,修改导致 的副作用,(4)维护困难,维护形式多样化 改正性:修改故障 完善性:改进或增加功能 适应性:修改软件适应新环境 预防性:为将来的维护活动预先做准备 维护成本越来越高 维护费用占到软件总费用55%-70 维护带来问题,(5)软件的成本相当昂贵(成本高),b.软件的特征,硬、软件成本比例的变化,(6)风险大,1995年美国Standish咨询集团的统计分析(至90年代初的软件项目执行情况) 成功:16.2% 失败:31 受到挑战:53.8% 近几年来的统计数据 成功:26 失败:28

11、 受到挑战:46%,b. 软件的特征,数据1:根据美国国家标准和技术学会 (National Institute of Standards and Technology) 2002年的研究: 软件错误每年造成美国$595亿的损失 2/3的项目明显延迟或超出预算,甚至无疾而终,30,逻辑复杂 远远高于硬件的逻辑复杂度 开发复杂 成本难以估算 进度难以控制 人员素质要求 质量得不到保证 成本高 维护困难 风险大1996年Ariane-5火箭发射失败,浮点数转换时发生错误(1973年7月由法国提议并联合西欧11个国家成立的欧洲空间局着手实施)发射三十七秒后坠毁 1996年2月15日,长征三号乙运载火

12、箭(下称“长三乙”)点火起飞后约两秒,火箭飞行姿态出现异常,火箭低头并偏离发射方向向右倾斜。飞行约22秒,火箭头部坠地,撞到离发射架不到2公里的山坡上,随即发生剧烈爆炸,星箭俱毁,并造成人员伤亡,b.软件的特征(小结),c. 软件的发展,早期 面向批处理 有限的分布 自定义软件,第二阶段 多用户 实时 数据库 软件产品,第三阶段 分布式系统 嵌入“智能” 低成本硬件 消费者的影响,第四阶段 强大的桌面系统 面向对象技术 专家系统 人工神经网络 并行计算 网络计算机,1950,1960,1970,1980,1990,2000,软件的应用,实时系统:空中交通控制系统 嵌入式系统:数码相机,GPS

13、数据处理系统:电话帐单,退休金 信息系统:网站,数字图书 传感系统:气象数据 系统软件:操作系统,DBMS 通信软件:路由器,移动电话 办公系统:文字处理,视频会议 科学计算软件:仿真模拟,天气预报 图形软件:电影制作,CAD 设计 手机操作系统: iOS 、Android、Windows Phone 8 等,c. 软件的发展,早期 面向批处理 有限的分布 自定义软件,第二阶段 多用户 实时 数据库 软件产品,第三阶段 分布式系统 嵌入“智能” 低成本硬件 消费者的影响,第四阶段 强大的桌面系统 面向对象技术 专家系统 人工神经网络 并行计算 网络计算机,1950,1960,1970,1980

14、,1990,2000,1968年10月,北大西洋公约组织(NATO)的科学家在德国召开的学术会议上正式提出了软件危机问题。,软件危机 Software Crisis 在软件开发和维护过程中遇到的一系列严重的问题,软件危机产生,d. 软件危机,案例:IBM公司在1963年至1966年开发IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序.据统计,这个操作系统每次发行的新版本. 都是从前一版本中找出1000个程序错误而修正的结果.,软件质量无保障、软件可维护性差,案例:在印度,编程人员的流动率高达30%!可以想象他们的文档水平如何

15、。他们的产品不依赖任何一个人,谁都可以立即辞职,产品的开发还是会正常进行,文档资料是 软件质量的重要保证,软件危机(1):表现,具体表现有: 成本和进度估计不准 用户与开发人员交流不充分,产品不合用户要求 软件质量无保障,Bug一大堆,Patch一个接一个。 软件可维护性差,软件开发和维护的方法不正确 软件通常没有适当的文档资料 软件成本占计算机系统比例上升(90%) 软件开发生产效率低,供不应求,软件成本占计算机系统比例上升比如:常见软件的零售价如下,软件开发生产效率低,供不应求 例:美国软件生产率的提高图,项目负责人Brooks事后总结了他的沉痛教训时说:“.正像一只逃亡的野兽落到泥潭中做

16、垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难.程序设计工作正像这样一个泥潭,.一批批程序员被迫在泥潭中拼命挣扎.谁也没有料到问题竟会陷入这样的困境.”,背景材料,Frederick Brooks 哈佛博士 1959年进入IBM 1961年和Bob Evans合作开发IBM/360计算机,任项目负责人 美国计算机协会(ACM)称赞他“对计算机体系结构、操作系统和软件工程作出了里程碑式的贡献”。 1999年获图灵奖 著作:The Mythical Man-Month人月神话等 Brooks博士目前的教学和研究方向是计算机体系结构、分子模型绘图和虚拟环境设计。,软件危机(2):错误观念,软

17、件神话 一直以来,人们对软件和软件开发有着很多误解,把它们看得太美好,像“神话”一样,而事实未必如此,错误观念1:人手越多越好,软件开发 软件开发需要协作。“给落后于的项目增添人手,只会更加延误项目”(Brooks): 软件项目总是各不相同 新手更容易犯错误,帮倒忙 老手向新手解释工作以及交流思想都要花费时间,耽误其工作 人多,通信、交流都更加困难,事实:自己都管理不好,外包商又能管好么?另外,核心竞争力靠外包是得不到的,神话:我们可以把开发工作外包出去 We can outsource it!,错误观念2:外包,错误观念3:忽视软件需求分析,用户的神话 神话:有了对目标的一般描述就足以开始写

18、程序了 我们可以以后再补充细节 事实:不完善的系统定义是软件项目失败的主要原因。关于项目的应用领域、功能、性能、接口、设计约束及确认标准的形式化的、详细的描述是必须的。这些内容只有通过用户和开发者之间的沟通交流才能确定,我想做一件西装,好的. 不过我还没量尺寸呢,你自己看着办吧,回头再说,再巧的裁缝也难为 无尺寸之衣啊!,神话:项目需求总是在不断变化,但这些变化能够很容易地满足,因为软件是灵活的,事实:越晚修改,代价越大(就像治病) 通常测试工作量(40%50%),编程只占(10%20%),底,中,高,错误观念4:轻视测试,工作量40% 50%,工作量 10% 20%,错误观念5:轻视维护,神

19、话:咱们赶紧开始写代码吧,这样可以早点儿交货 事实:越是着急写程序,最终可能要花更长的时间才能完成软件开发大部分工作都是在第一次交付以后进行的(即维护),费用55%70%,错误观念6:忽视程序以外的软件配置,事实:可执行程序仅是软件配置的一部分,软件配置包括:程序、文档和数据。文档是成功开发的基础,更重要的是,文档为软件维护提供了指导,开发者的神话 神话:一个成功项目唯一应该提交的就是程序,错误观念7:轻视技术复审,事实:从项目一开始就可以应用的最有效的软件质量保证机制之一是正式的技术复审(FRT)。软件复审是“质量的过滤器”,比起通过测试找到某类软件错误要有效得多,神话:在程序真正运行之前,

20、没有办法评估其质量,软件危机(3)-原因,与软件本身的特点有关 (难于维护, 逻辑复杂) 与软件开发与维护的方法不正确有关: 软件程序 急于求成=拔苗助长 各自为阵无方法/学缓解软件危机 对计算机软件有一个正确的认识 (软件程序) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。 推广使用在实践中总结出来的开发软件的成功技术和方法。 开发和使用更好的软件工具。,开发一个具有一定规模和复杂性的软件系统与编写一个简单的程序不一样正如建设狗窝和高楼大厦大型、复杂软件系统的开发是一项工程,必须按照工程化的方法组织软件的生产和管理,

21、必须经过分析、设计、实现、测试、维护等一系列软件过程和活动,e.软件工程(学)-因危机而产生,e.软件工程(学):克服软件危机的努力,(1)从管理的角度软件开发过程的研究、文档的标准化以及人们方式等 (2)软件开发方法的研究结构化软件开发方法,面向对象的开发,2 软件工程,2.1 软件工程定义 2.2 基本原理 2.3 软件工程方法学 2.4 软件生命周期 2.5 软件过程,2.1 软件工程定义(1)-早期定义,The establishment and use of sound engineering principles (methods) in order to obtain econo

22、mically software that is reliable and works on real machines. (1968- Fritz Bauer),1968年NATO会议早期定义: 软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件。,1968,North Atlantic Treaty Organization conference: NATO,2.1 软件工程定义(2)-IEEE定义,Software engineering. (1) The application of a systematic, disciplined, qu

23、antifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1). (IEEE,The Institute for Electrical and Electronic engineers.),IEEE 1993,软件工程:是(1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;(2)研

24、究(1)中提到的途径。,2.1 软件工程定义(3)-卡耐基梅隆大学定义,Software engineering is that form of engineering that applies the principles of computer science and mathematics to achieving cost-effective solutions to software problems.,SEI software engineering definition from 1990 SEI Report on Undergraduate Software Engineer

25、ing Education (CMU/SEI-90-TR-003): 卡耐基梅隆大学在本科生软件工程教育的报告中,软件工程: 就是应用计算机科学和数学的原理来经济有效的解决软件问题的一种工程。,课本定义,课本:“采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来” 总结 工程化应用于软件开发、维护 管理和技术相结合,软件工程定义几个小问题:(1)软件工程和其它工程的区别 每个软件项目都是新的 新的需求、新的技术、新的部署方式等 每个项目都是在不断变化的 软件项目风险很大 据统计真正按期、按预算完成的不到20% 软件项目通常

26、是团队活动 人多不一定力量更大,(2)软件工程:不仅仅是编程,复杂的问题不是光靠编程就能解决的 编程之前需要设计 设计之前需要分析用户的需求 编写好的程序需要集成为完整的系统 产品发布前需要测试 软件为保持生命力应当不断升级、维护 软件开发是团队活动,团队需要管理 ,(3)软件工程:关注建模,模型 对现实世界的抽象表示 结构化方法 基于功能分解,将复杂的系统分解为更容易解决的小单元 面向对象方法 把系统分解为属于一定组件/包的类,类对象之间存在一定关联,(4)软件工程的特性,1. 软件工程关注于大型程序的构造 2. 软件工程的中心课题是控制复杂性 3. 软件经常变化 4. 开发软件的效率非常重

27、要 5. 和谐地合作是开发软件的关键 6. 软件必须有效地支持它的用户 7. 在软件工程领域中是由具有一种文化背景的人创造产品,2.2 软件工程的基本原理(Boehm,玻姆),用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组的人员应该少而精 承认不断改进软件工程实践的必要性,1983年在总结TRW公司开发经验基础上,提出7条定理,确保软件产品开发质量 和效率的最小集合。,背景材料,Barry Boehm UCLA(美国加利福尼亚大学)博士 19591973:蓝德公司信息科学部部长 19731989:TRW公司国防系统集团首

28、席科学家 19891992:美国国防部DARPA项目信息科技部主任 COCOMO模型、螺旋模型的发明者 美国南加州大学(USC)计算机科学系的软件工程教授,同时也是南加州大学系统与软件工程中心的主任。 软件成本估算技术 .,软件工程的定义: Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料,软件工程:目标,理想化来看: 生产出的软件产品完全正确 以最短的时间 以最小的开发成本 软件维护的成本最小,质量 时间 成本,实际上:“快、好、省 任选其二” 没有一个软件能同时做到以上几点 软件工程的目标就是尽量做到这些 软件工程的艺术就在于在实际项目

29、中尽量平衡这些目标,软件工程:包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。 管理:通过计划、组织和控制等活动,合理配置和使用各种资源,以达到既定目标的过程。(第13章)方法学:软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。 软件工程方法学包含3个要素:方法、工具和过程。,2.3 软件工程方法学,2.3 软件工程方法学,软件工程: 一种层次化技术,软件工程三个要素:工具、方法、过程,基础层,综合方法及工具,定义方法使用的顺序,所需要的管理,为软件开发提供“如何做”的技术,为软件开发提供自动或半自动的软件支

30、撑环境,建立计算机辅助软件工程(CASE)的软件开发支撑系统,什么叫软件过程? 举一个例子:吃饭去餐馆 吃:点餐、付账、用餐自己做饭:买菜、洗菜、做饭、吃饭、刷锅洗碗,方法 假设采用的是“自己做饭”这种过程模型 “做饭”这个阶段可以用的方法有: 煎、炒、烹、炸、煮、蒸、涮.工具 某种方法可能会用到一些工具: 炒菜要炒锅,煎要平底锅,蒸要蒸笼.,工具 程序= 算法+数据结构,组织 管理/ 计划,过程 RUP/ XP,工程 需求管理/ 配置管理.,方法 OOP/ MDA,实现 团队 经营,问题定义,软件定义,可行性研究,需求分析,软件生命周期,软件开发,-持久满足用户需求,运行维护,综合测试,单元

31、测试,详细设计,总体设计,编码,系统设计,系统实现,2.4 软件生命周期,软件工程三个阶段:定义、开发和维护。,what,How,Change,2.5 软件过程,软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。,工作任务,里程碑、交付物,SQA点,A process defines Who is doing What, When, and How, in order to reach a certain goal.,公共过程框架,辅助活动,框架活动,任务集合,(1)软件过程,(2) 软件过程模型,软件生命周期的每一阶段都有明确的任务,把规模大、结构复杂

32、、管理复杂的软件开发变得容易控制和管理。各个阶段的活动如何衔接,开发过程中采用什么样的策略,应遵守什么样的规定和制约,将这些活动框架用一种模型表示出来,称为软件过程模型(或软件开发模型或软件生命周期模型)。也就是说, 软件过程模型是软件开发全部过程、活动和任务的结构框架。,比较:,什么是过程? “A Process defines Who is doing What, When and How, in order to reach a certain goal” 用一定的流程将各个环节连接起来,并用规范的方式操作全过程,是跨越软件整个生存期的全部过程、活动和任务的框架 过程模型 过程的抽象表示

33、 定义了: 角色分工 活动定义 提交结果 工作流和沟通,我的学生S,案例,T,软件过程模型,这位同学回去后想了一下,列出了一个工作清单:,工作清单 一、功能1.读取、显示、另存四种格式的图片2.放大、缩小、漫游3.列出当前目录下所有四种格式图片文件名4.PAGEUP(PAGEDOWN)翻页 二、其它说明:1.界面尽量简洁,容易操作2.不需要图片预览和打印,软件过程模型,三、开发工具:VC 6.0 四、开发环境:普通PC机、Window2000/XP 五、工作量:1.研究一下四种图片的格式2.设计一个解析器类,解析这四种格式3.设计一个文档类,实现读取、另存和目录浏览功能4.设计一个视图类,实现

34、显示、缩放、漫游功能,软件过程模型(1):瀑布模型(Waterfall Model ),实际情况1一切顺利,学生S按期交付了软件,经过一两周的试用、修改、完善后,三方都比较满意,该软件在老师的朋友那里成为一个得心应手的工具,瀑布模型 (传统的生命周期模型、线性模型),需求分析,可行性研究,总体设计,详细设计,编程,测试,交付,维护,软件过程模型(1):瀑布模型,软件过程模型(1):瀑布模型,可行性研究,需求分析,分 析,开 发,编码和单元测试(实现),集成测试,维 护,维护,(1)瀑布模型-传统瀑布模型,1. 需求分析 弄清楚要做些什么 记录用户要求的特性 注:有时用户自己也不知道想要什么 目

35、的 保证做出来的东西是用户想要的,2. 需求规格说明书 需求分析结果的正式的、完整的、书面的记录,3. 设计确定体系结构 划分模块 确定模块间的接口开始考虑如何做,软件过程模型各个环节任务,4. 实现编程 测试5. 集成 把各个模块组装成一个系统 并测试6. 发布 交付用户使用 同时开始维护,传统瀑布模型的特点提供了软件过程模型的基本框架(模板)。强调了每一阶段活动的严格顺序。质量保证观点:以经过评审确认了的阶段工作产品(文档)驱动下一阶段的工作,便于管理。是一种整体开发模型,程序的物理实现集中在开发阶段的后期,用户在最后才能看到自己的产品。传统瀑布模型存在什么问题?,(1)瀑布模型-实际的瀑

36、布模型,反馈环,瀑布模型适合于用户需求明确、完整、无重大变化的软件项目开发。瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型。(文档-便于维护)“瀑布模型是由文档驱动的”这个事实也是它的一个主要缺点。用户常常难以清楚地给出所有需求;用户必须有耐心,等到系统开发完成(才能使用)。,瀑布模型的优缺点,瀑布模型 也称为生命周期模型、线性模型 采用结构化分析、设计、编程技术 特点 顺序性和依赖性 推迟实现 保证质量,软件过程模型:瀑布模型,瀑布模型假定: 用户需求基本不变 设计人员运筹帷幄决胜千里 每个子模块到集成时可以自然的合在一起 缺陷: 真正的系统很少完全遵从线性模式 用户最初可能很

37、难说清楚需求 直到后期才能得出一个可用的系统 这些假定显然受建筑工程的影响,软件过程模型:瀑布模型,软件工程和建筑工程 都和规模相关:狗窝还是摩天大楼 需要大规模团队合作 很难修改设计 软件中的很多术语来自建筑工程:体系结构architecture、构建build、组件component,软件过程模型:瀑布模型,软件工程和建筑工程有很多不同 软件除了静态结构外,更注重动态行为 建筑施工是对建筑蓝图的原样实现,少偏差 建筑工程的成本主要在施工环节,而软件成本主要在测试和维护,我的学生S,实际情况2,T,T,事情就这样定下来了,S 愤怒的撕掉了自己的工作清单,回去后 S 花一天时间用 Delphi

38、 做了个样子,只能读 BMP 和 JPG 文件,做了些菜单和工具栏,用Access建了一个图片库。就这个“假”的程序,S 和 C 讨论了一天,S 又修改了几次,又讨论了几次,一周后,这个“假”的程序表面看起来和真的一模一样。于是 S 打算用 VC 重写这个程序,但是他很快发现继续用 Delphi 写更方便,因为至少界面不用重做了,于是两个月后,这个事情终于结束了。S 顺利的完成了他的毕业设计JPG压缩优化算法设计,C 一直使用这个软件管理他的图片,并庆幸花了这么少的钱得到了这么有用的东西,而 T,则正在考虑如何为他下一批学生分派任务。,快速原型法,(2)原型模型快速原型模型(Rapid Pro

39、totype Model),用户不能给出完整、准确的需求说明 或者开发者不能确定算法的有效性,操作系统的适应性或人机交互的形式等许多情况下, 可以根据用户的一组基本需求,快速建造一个原型(可运行的软件),然后进行评估,进一步精化、调整原型,使其满足用户的要求,也使开发者对将要做的事情有更好的理解。,建造/修改原型,听取用户意见,用户测试运行原型,原型实现范型,(2)快速原型法,适合用户需求不明或易变的系统 称为用户驱动,建立/修改原型,用户测试原型,听取用户需求,快速原型,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,变化的需求,验证,维护过程,开发过程,原型模型存在的问题 为

40、了使原型尽快的工作,没有考虑软件的总体质量和长期的可维护性。 为了演示,可能采用不合适的操作系统、编程语言、效率低的算法,这些不理想的选择成了系统的组成部分。 开发过程不便于管理。有效的使用原型模式建造原型仅是为了定义需求,之后就被抛弃(或被部分抛弃),实际的软件在充分考虑了质量和可维护性之后才被开发。,原型: 系统的一个早期可运行的版本 它反映最终系统的部分重要特性 比如:大致界面、基本功能. 就像概念车,新颖 独特 超前的构思,(2)快速原型法,建立原型的目的 分析用户需求 评论员比作家更容易当 “百闻不如一见”,用户亲眼看见产品的原型更容易说出他心中的需求 评估关键技术 展示新概念和方法

41、 软件中的概念车 Google就是靠一个简单的概念模型赢得了第一笔10万美元的种子资金开始了创业之路,发展到今天的最大搜索引擎。,(2)快速原型法,如何建造原型 分清主次 原型只是为了展示基本功能、大致界面等 因此不需要注重性能、质量 兵贵神速 选用快速开发工具 比如界面原型,可以使用VB、Python等,甚至使用Visio等绘图软件 而且修改次数不要太多,(2)快速原型法,从原型走向产品 抛弃策略 建立原型的目的一旦达到,就抛弃之 因为: 原型的质量不好 建立原型的工具和建造产品的工具可能不同 演化策略 原型作为产品的内核和起点在此内核的基础上不断修改、滚动开发 前提:建立原型的工具和开发工

42、具相容,(3)增量模型 (Incremental Model),是一种渐进地开发逐步完善的软件版本的模型。,需求分析,验证,规格说明,验证,设计,验证,维护,针对每个构件完成详细设计、编码和集成,经测试后交付给用户,分析,分析,分析,分析,设计,设计,设计,设计,编码,编码,编码,编码,测试,测试,测试,测试,增量1,增量2,增量3,增量4,交付,交付,交付,交付, 反复的应用瀑布模型的基本成分和原型模型的迭代特征,每一个线型过程产生一个“增量”的发布或提交,该增量均是一个可运行的产品。 早期的版本实现用户的基本需求,并提供给用户评估的平台。,增量模型,在较短时间内向用户提交可完成部分工作的产

43、品,并分批、逐步地向用户提交产品。从第一个构件交付之日起,用户就能做一些有用的工作。 整个软件产品被分解成许多个增量构件,开发人员可以一个构件一个构件地逐步开发。 逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。 采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得回报。,增量模型的优点,增量模型的困难,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,

44、软件体系结构必须是开放的。 开发人员既要把软件系统看作整体。又要看成可独立的构件,相互矛盾。 多个构件并行开发,具有无法集成的风险。,(3)增量模型,增量(渐增)模型 多个迭代同时展开 每次迭代其实就是一个瀑布模型 每次迭代实现一个功能子集 类似流水线 充分利用人力资源 有利于规避风险,核心产品: 最基本的功能,更多的功能,(4)螺旋模型 (Spiral Model),软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型和增量模型结合起来,加入了风险分析。在该模型中,软件开发是一系

45、列的增量发布,早期的迭代中,发布的增量可能是一个纸上的模型或原型,在以后的迭代中,逐步产生系统更加完善的版本。螺旋模型的基本思想是降低风险。,快速原型,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,变化的需求,验证,风险分析,风险分析,风险分析,风险分析,风险分析,风险分析,可看作在每个阶段之前都增加了风险分析过程的快速原型模型。,简化的螺旋模型,提交线 评审,风险分析,原型1,模拟、建模、评测,需求计划、 生存期计划,操作概念,原型2,风险分析,软件需求,需求确认,开发计划,风险分析,原型3,软件产品设计,设计确认与验证,组装与测试,风险分析,可运行原型,详细设计,单元测试,

46、编码,组装与测试,验收测试,实现,累计成本,顺时针,实施工程:开发、验证下一产品,客户评估,制定计划:决定目标方案和限制,风险分析:评价方案识别风险消除风险,(4)螺旋模型,框架活动,也称任务区域 通常36个 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件 风险分析:分析所选方案,考虑如何识别和消除风险 实施工程:实施软件开发 客户评估:评价开发工作,提出修正建议 从核心开始按顺时针方向沿螺旋移动,(4)螺旋模型,每一圈都要经过这些任务区域 每一圈分别完成: 需求分析 总体设计 详细设计、编码等 项目管理者可以调整所需的迭代次数,螺旋模型的优点 对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标 减少了过多测试或测试不足 维护和开发之间并没有本质区别螺旋模型的特点 风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大 主要适用于内部开发的大规模软件项目,随着过程的进展演化,开发者和用户能够更好的识别和对待每一个演化级别上的风险 随着迭代次数的增加,工作量加大,软件开发成本增加,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报