《软件工程基本原理.pptx》由会员分享,可在线阅读,更多相关《软件工程基本原理.pptx(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、会计学1软件工程基本原理软件工程基本原理第一页,编辑于星期二:九点 四十九分。目目的的要要求求:认认识识软软件件工工程程这这门门课课的的内内容容和和教教学学安安排排,了了解解计计算算机机系系统统的的发发展展历历程程,软软件件危危机机产产生生的原因及消除途径;的原因及消除途径;掌掌握握软软件件工工程程的的概概念念、基基本本原原理理。了了解解软软件件过过程程的的概概念念,掌掌握握瀑瀑布布模模型型以以及及软软件件生生命命周周期期方方法法学学的的阶阶段段划划分分,了了解解快快速速原原型型模模型型、增增量量模模型型、螺螺旋旋模模型型、喷喷泉泉模模型的基本思想。型的基本思想。教学目的、要求,重点、难点教学
2、目的、要求,重点、难点第1页/共49页第二页,编辑于星期二:九点 四十九分。教学重点:教学重点:讲述软件危机产生的原因;软件工程的概念;软件过程的概念,瀑布模型以及软件生命周期方法学的阶段划分;讲述软件危机产生的原因;软件工程的概念;软件过程的概念,瀑布模型以及软件生命周期方法学的阶段划分;教学难点:教学难点:螺旋模型、喷泉模型的基本思想;螺旋模型、喷泉模型的基本思想;讲授内容:讲授内容:计算机系统发展历程;软件危机;软件工程。软件过程的概念,瀑布模型以及软件生命周期方法学的阶段划分快速原型模型、增量模型、螺旋模型、喷泉模型。计算机系统发展历程;软件危机;软件工程。软件过程的概念,瀑布模型以及
3、软件生命周期方法学的阶段划分快速原型模型、增量模型、螺旋模型、喷泉模型。第2页/共49页第三页,编辑于星期二:九点 四十九分。计算机系统应用的日益普及和深化。硬件和软件计算机系统应用的日益普及和深化。硬件和软件的迅速发展。在计算机系统发展的早期时代所形成的的迅速发展。在计算机系统发展的早期时代所形成的一些错误概念和做法,已经严重地阻碍了计算机软件一些错误概念和做法,已经严重地阻碍了计算机软件的开发,为更有效地开发和维护软件,软件工作者在的开发,为更有效地开发和维护软件,软件工作者在2020世纪世纪6060年代后期开始认真研究消除软件危机的方法,年代后期开始认真研究消除软件危机的方法,从而形成了
4、计算机科学技术领域中的一们新兴学科:从而形成了计算机科学技术领域中的一们新兴学科:计算机软件工程学计算机软件工程学。第3页/共49页第四页,编辑于星期二:九点 四十九分。计算机系统已经经历了计算机系统已经经历了4个不同的发展阶段,计算机软件也经历了个不同的发展阶段,计算机软件也经历了4个阶段。个阶段。6060年代中期以前年代中期以前:为具体应用专门编写,认为无需预先计划,规模较小,编写者和使用者是同一人,无系统化方法,无管理,人们头脑中的一个隐含过程,除程序清单无文档资料。为具体应用专门编写,认为无需预先计划,规模较小,编写者和使用者是同一人,无系统化方法,无管理,人们头脑中的一个隐含过程,除
5、程序清单无文档资料。6060年代中期到年代中期到 7070年代中期年代中期:第二代,多道程序、多用户系统的引入,数据库系统的出现,重要特征:软件作坊,广泛使用产品软件,但仍使用个体化软件开发方法。程序运行时发现的错误必须设法改正,用户有了新的需求时必须相应的修改程序,硬件或操作系统更新时通常需要修改程序以适应新的环境。:第二代,多道程序、多用户系统的引入,数据库系统的出现,重要特征:软件作坊,广泛使用产品软件,但仍使用个体化软件开发方法。程序运行时发现的错误必须设法改正,用户有了新的需求时必须相应的修改程序,硬件或操作系统更新时通常需要修改程序以适应新的环境。第一节第一节 软件概述软件概述一、
6、软件的发展与特点一、软件的发展与特点第4页/共49页第五页,编辑于星期二:九点 四十九分。1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软件危机问题,正式提出年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软件危机问题,正式提出“软件工程软件工程”。从从2020世纪世纪7070年代中期开始的年代中期开始的 1010年年:分布式系统,局域网、广域网、宽带数字通信等对软件开发者提出了更高的要求,主要特点:出现了微处理器,及智能产品(个人计算机)。:分布式系统,局域网、广域网、宽带数字通信等对软件开发者提出了更高的要求,主要特点:出现了微处理器,及智能产品(个人计算
7、机)。计算机系统发展的第四代计算机系统发展的第四代:以硬件和软件的综合效果为主,复杂的操作系统控制的强大的桌面机及局域网、广域网,与先进的应用软件相配合,已经成为当前的主流。:以硬件和软件的综合效果为主,复杂的操作系统控制的强大的桌面机及局域网、广域网,与先进的应用软件相配合,已经成为当前的主流。第5页/共49页第六页,编辑于星期二:九点 四十九分。计算机软件发展的三个阶段及其特点计算机软件发展的三个阶段及其特点特点,阶段特点,阶段程序设计程序设计程序系统程序系统软件工程软件工程软件所指软件所指程序程序程序及说明书程序及说明书程序、文档、程序、文档、数据数据主要程序设计主要程序设计语言语言汇编
8、及机器语汇编及机器语言言高级语言高级语言软件语言软件语言*软件工作范围软件工作范围程序编写程序编写设计和测试设计和测试整个软件生命整个软件生命周期周期需求者需求者程序设计者程序设计者少数用户少数用户市场用户市场用户开发软件的组开发软件的组织织个人个人开发小组开发小组开发小组及大开发小组及大中型开发机构中型开发机构软件规模软件规模小型小型中、小型中、小型大、中、小型大、中、小型第6页/共49页第七页,编辑于星期二:九点 四十九分。特点,阶段特点,阶段程序设计程序设计程序系统程序系统软件工程软件工程决定质量的决定质量的因素因素个人技术个人技术小组技术水小组技术水平平技术与管理水平技术与管理水平开发
9、技术和开发技术和手段手段子程序、程子程序、程序库序库结构化程序结构化程序设计设计数据库数据库,开发工具开发工具,集成开发集成开发环境环境,工程化开发方法工程化开发方法,标准标准和规范和规范,网络及分布式开发网络及分布式开发,OOOO技术技术,CASECASE维护责任者维护责任者程序设计者程序设计者开发小组开发小组专职维护人员专职维护人员硬件的特征硬件的特征高价、存储高价、存储量小、可靠量小、可靠性差性差降价,速度、降价,速度、容量、可靠容量、可靠性明显提高性明显提高向超高速向超高速,大容量大容量,网网络化络化,微型化方向发展微型化方向发展软件的特征软件的特征完全不受重完全不受重视视软件的技术软
10、件的技术发展不能满发展不能满足需求足需求开发技术有进步,但开发技术有进步,但尚未完全摆脱软件危尚未完全摆脱软件危机机第7页/共49页第八页,编辑于星期二:九点 四十九分。指在计算机软件开发和维护的过程中所遇到的一系列严重问题。指在计算机软件开发和维护的过程中所遇到的一系列严重问题。概括的说:概括的说:如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件。如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件。具体的说:具体的说:主要有以下一些表现:主要有以下一些表现:1 1、对软件开发成本和进度的估计常常很不准确;、对软件开发成本和进度的估计常常很
11、不准确;2 2、用户对已完成的软件系统不满意的现象经常发生;、用户对已完成的软件系统不满意的现象经常发生;3 3、软件产品的质量经常靠不住;、软件产品的质量经常靠不住;4 4、软件常常是不可维护的;、软件常常是不可维护的;5 5、软件通常没有适当文档资料;、软件通常没有适当文档资料;6 6、软件成本在计算机系统总成本中中所占的比例逐年上升;、软件成本在计算机系统总成本中中所占的比例逐年上升;7 7、软件开发的生产率提高的速度,既跟不上硬件发展的速度,也远远跟不上计算机应用普及深入的趋势。、软件开发的生产率提高的速度,既跟不上硬件发展的速度,也远远跟不上计算机应用普及深入的趋势。二、软件危机二、
12、软件危机第8页/共49页第九页,编辑于星期二:九点 四十九分。IBM公司的公司的 OS/360OS/360,共约,共约100100万条指令,花费了万条指令,花费了50005000个人年;经费达数亿美圆,而结果却令人沮丧,错误多达个人年;经费达数亿美圆,而结果却令人沮丧,错误多达20002000个以上,系统根本无法正常运行。个以上,系统根本无法正常运行。OS/360OS/360系统的负责人系统的负责人BrooksBrooks这样描述开发过程的困难和混乱:这样描述开发过程的困难和混乱:“像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。像巨兽在泥潭中
13、作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。”19631963年美国飞往火星的火箭爆炸,造成年美国飞往火星的火箭爆炸,造成年美国飞往火星的火箭爆炸,造成年美国飞往火星的火箭爆炸,造成1000100010001000万美元的损失。原因是万美元的损失。原因是万美元的损失。原因是万美元的损失。原因是FORTRANFORTRAN程序:程序:程序:程序:DO 5 I=1DO 5 I=1,3 3 误写为:误写为:误写为:误写为:DO 5 I=1 DO 5 I=1.3 3 19671967年苏联年苏联年苏联年苏联“联盟一号联盟一号联盟一号联盟一号”载人宇宙飞船在返航时
14、,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁。载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁。载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁。载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁。第9页/共49页第十页,编辑于星期二:九点 四十九分。在软件开发和维护的过程中存在这么多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。在软件开发和维护的过程中存在这么多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。1 1
15、、软件不同于硬件、软件不同于硬件:它是计算机系统中的逻辑部件,在写出程序代码并在计算机上运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价,因此管理和控制软件开发过程相当困难。:它是计算机系统中的逻辑部件,在写出程序代码并在计算机上运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价,因此管理和控制软件开发过程相当困难。2 2、软件在运行过程中不会因使用时间过长而被用坏、软件在运行过程中不会因使用时间过长而被用坏,如果运行中发现错误,很可能是遇到了一个在开发时期引入杂在测试阶段没能检测出来的故障,因此软件维护通常意味着改正或修改原来的设计。,如果运行中发现错误,很
16、可能是遇到了一个在开发时期引入杂在测试阶段没能检测出来的故障,因此软件维护通常意味着改正或修改原来的设计。产生软件危机的原因产生软件危机的原因第10页/共49页第十一页,编辑于星期二:九点 四十九分。3 3、软件不同于一般程序、软件不同于一般程序:规模庞大,必须有严格而科学的管理。规模庞大,必须有严格而科学的管理。4 4、软件专业人员对软件开发和维护有不少的糊涂观念、软件专业人员对软件开发和维护有不少的糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,忽视软件需求分析的重要性,认为开发软件就是写程序并使之运行,轻视软件维护,这可能是软件危机的主要原因在实践过程中或多或少地采用了错误的方法
17、和技术,忽视软件需求分析的重要性,认为开发软件就是写程序并使之运行,轻视软件维护,这可能是软件危机的主要原因。硬件硬件/软件产品失效率曲线软件产品失效率曲线磨合调整磨损用坏时间失效率修改点实际曲线时间失效率理想曲线软件产品软件产品硬件产品硬件产品第11页/共49页第十二页,编辑于星期二:九点 四十九分。52002020001000需求分析结构设计详细设计编码集成测试系统测试现场改正一个问题的估算费用/美元改正一个问题的估算工作量/人日0.050.52.5改正一个问题改正一个问题需付出的代价需付出的代价代价早期 中期 晚期 时间高中低变更代价随时变更代价随时间变化的趋势间变化的趋势第12页/共4
18、9页第十三页,编辑于星期二:九点 四十九分。一一个个软软件件从从定定义义、开开发发、使使用用、维维护护,直直到到最最终终被被废废弃弃,要要经经历历一一个个漫漫长长的的时时期期,这这就就如如同同一一个个人人要要经经过过胎胎儿儿、儿儿童童、青青年年、中中年年、老老年年,直直到到最最终终死死亡亡的的漫漫长长时时期期一一样样,通通常常把把软软件件经历的这个漫长时期称为生存周期。经历的这个漫长时期称为生存周期。在在软软件件开开发发的的不不同同阶阶段段进进行行修修改改需需要要付付出的代价很不相同:出的代价很不相同:软软件件工工程程学学的的一一个个重重要要目目标标就就是是提提高高软软件件的可维护性,减少软件
19、维护的代价。的可维护性,减少软件维护的代价。生存周期:生存周期:第13页/共49页第十四页,编辑于星期二:九点 四十九分。1 1、软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。、软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。2 2、必须充分吸收和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,特别是要吸取几十年来从事计算机硬件研究和开发的经验教训。、必须充分吸收和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,特别是要吸取几十年来从事计算机硬件研究和开发的经验教训。3 3、应该推广使
20、用在实践中总结出来的开发软件的成功的、应该推广使用在实践中总结出来的开发软件的成功的 技术和方法。技术和方法。4 4、应该开发和使用更好的、应该开发和使用更好的 软件工具。软件工具。总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程.正是从管理和技术两方面研究如何更好的开发和维护计算机软件的一门新兴学科正是从管理和技术两方面研究如何更好的开发和维护计算机软件的一门新兴学科.解决软件危机的途径解决软件危机的途径第14页/共49页第十五页,编辑于星期二:九点 四十九分。软件
21、工程软件工程是指导计算机软件开发和维护的工程学科是指导计算机软件开发和维护的工程学科.采用工程的概念、原理、技术和方法来开发和维护软件采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程以经济地开发出高质量的软件并有效地维护它,这就是软件工程.19831983年年IEEEIEEE给软件工程的定义给软件工程的定义:“软件工程是开发、运行、维护和修复软件的系统方法。软件工程是开发、运行、维护和修复软件
22、的系统方法。”强调强调“系统方法系统方法”不是不是“个人技巧个人技巧”。FairlyFairly认为认为:“软件工程学是为了在成本限额以内按时完成开发和修复软件产品所需要的系统生产和维护技术及管理学科软件工程学是为了在成本限额以内按时完成开发和修复软件产品所需要的系统生产和维护技术及管理学科”。强调。强调“成本限额以内成本限额以内”及及“技术和管理两个方面技术和管理两个方面”。第二节第二节 软件工程软件工程一、软件工程与方法学一、软件工程与方法学第15页/共49页第十六页,编辑于星期二:九点 四十九分。Fritz Fritz BauerBauer认认为为:“软软件件工工程程是是为为了了经经济济
23、地地获获得得可可靠靠的的且且能能在在实实际际机机器器上上有有效效地地运运行行的的软软件件,而而建建立立和和使使用用的的完完善善的的工工程程化化原原则则”。强强调调“经经济济地地开开发发出出高高质质量量的的软软件,应建立和使用的完善的工程化原则件,应建立和使用的完善的工程化原则”。19931993年年IEEEIEEE进一步给出了一个更全面的定义进一步给出了一个更全面的定义:软件工程是:(软件工程是:(1 1)把系统化的、规范的、可)把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;(就是把工程化应用于软件中
24、;(2 2)研究()研究(1 1)中提到)中提到的途径。的途径。第16页/共49页第十七页,编辑于星期二:九点 四十九分。1 1、用分阶段的生命周期计划严格管理、用分阶段的生命周期计划严格管理2 2、坚持进行阶段评审、坚持进行阶段评审3 3、实行严格的产品控制、实行严格的产品控制4 4、采用现代程序设计技术、采用现代程序设计技术5 5、结果应能清楚的审查、结果应能清楚的审查6 6、开发小组的人员应该少而精、开发小组的人员应该少而精7 7、承认不断改进软件工程实践的必要性、承认不断改进软件工程实践的必要性 二、软件工程的基本原理二、软件工程的基本原理第17页/共49页第十八页,编辑于星期二:九点
25、 四十九分。三、软件三、软件三、软件三、软件 工程的内容工程的内容工程的内容工程的内容软件开发技术软件开发方法学瀑布模型的生命周期方法、动态需求的快速原型、面向对象的方法;软件工具用来开发软件的软件。软件工程环境 支持软件开发的环境、工具及其关系;软件工程管理质量管理人力管理、进度安排、质量保证、资源管理软件工程经济学以经济的观点研究开发过程中的经济效益:成本估算、效益分析。第18页/共49页第十九页,编辑于星期二:九点 四十九分。软软件件工工程程包包含含:技技术术和和管管理理。是是技技术术和和管管理理的的紧紧密密结结合合。通通过过计计划划、组组织织和和控控制制等等一一系系列列活活动动,合合理
26、理地地配配置置和和使使用用各各种种资资源源,以以达达到到既既定定目标的过程。目标的过程。软件工程方法学包括三个要素:软件工程方法学包括三个要素:方方法法:完完成成软软件件开开发发的的各各项项任任务务的的技技术术方方法法;回回答答“如何做如何做”的问题。的问题。工工具具:为为方方法法的的应应用用提提供供或或半半自自动动的的软软件件支支撑撑环环境;境;过过程程:为为了了获获得得高高质质量量的的软软件件所所需需要要完完成成的的一一系系列列任任务务的框架、规定了完成各项任务的工作步骤。的框架、规定了完成各项任务的工作步骤。四、软件工程方法学四、软件工程方法学第19页/共49页第二十页,编辑于星期二:九
27、点 四十九分。划分软件生存周期阶段的划分软件生存周期阶段的基本原则基本原则:使各阶段的任务彼此间尽可能相对独立使各阶段的任务彼此间尽可能相对独立,同一阶段各项任务的性质尽可能相同同一阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂程度从而降低每个阶段任务的复杂程度,简化不同阶段之间的联系简化不同阶段之间的联系,有利于软件开发工程的组织管理有利于软件开发工程的组织管理.面向对象方法的四个要点:对象;类;父类(基类)和子类(派生类);消息。面向对象方法的四个要点:对象;类;父类(基类)和子类(派生类);消息。面向对象方法学的出发点和基本原则面向对象方法学的出发点和基本原则,是尽可能模拟人类
28、习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识世界解决问题的方法和过程,从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。,是尽可能模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识世界解决问题的方法和过程,从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。传统方法学(生命周期方法学)或(结构化范型):采用结构化技术(结构化分析、结构化设计、结构程序设计和结构化测试)。传统方法学(生命周期方法学)或(结构化范型):采用结构化技术(结构化分析、结构化设计、结构程序设计和结构化测试)。第20页/共49页第二十一页,编辑于星期二:九点 四十九分。第三节
29、第三节 软件工程过程软件工程过程第21页/共49页第二十二页,编辑于星期二:九点 四十九分。软件工程软件工程过程过程是为了获得高质量的软件所需要完成的一系列任务的框架,包括软件工程活动和软件管理活动。这些活动的执行可以是有序的、循环的、嵌套的,也可以有条件引发的。是为了获得高质量的软件所需要完成的一系列任务的框架,包括软件工程活动和软件管理活动。这些活动的执行可以是有序的、循环的、嵌套的,也可以有条件引发的。在完成开发任务时必须进行一些活动,并使用适当的资源(人员、时间、计算机硬件、软件工具等),在过程结束时将把输入(软件需求)转化为输出(软件产品)。在完成开发任务时必须进行一些活动,并使用适
30、当的资源(人员、时间、计算机硬件、软件工具等),在过程结束时将把输入(软件需求)转化为输出(软件产品)。ISO9000ISO9000把过程定义为:把过程定义为:“把输入转化为输出的一组彼此相关的资源和活动把输入转化为输出的一组彼此相关的资源和活动”。过程定义了运用方法的顺序、应交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施以及标志软件开发各个阶段任务完成的里程碑。过程定义了运用方法的顺序、应交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施以及标志软件开发各个阶段任务完成的里程碑。软件工程过程包括:开发过程、运作过程、维护过程、管理过程、支持过程、获取过程、供应过程、剪
31、裁过程等软件工程过程包括:开发过程、运作过程、维护过程、管理过程、支持过程、获取过程、供应过程、剪裁过程等第22页/共49页第二十三页,编辑于星期二:九点 四十九分。在美国在美国SEI(软件工程研究所,设在美国卡耐基软件工程研究所,设在美国卡耐基-梅农大学,是致力于软件过程改进的权威机构梅农大学,是致力于软件过程改进的权威机构)提出的)提出的“能力成熟度模型能力成熟度模型”(CMMCMM,C Capability apability M Maturity aturity M Moduleodule)中,设定了中,设定了52个目标,个目标,18个关键活动域和个关键活动域和316个关键个关键活动,
32、能够用来评价软件开发组织的过程能力。活动,能够用来评价软件开发组织的过程能力。第23页/共49页第二十四页,编辑于星期二:九点 四十九分。工作任务工作任务里程碑、交付物里程碑、交付物软件质量保证点软件质量保证点任务集合任务集合框架活动框架活动公共过程框架公共过程框架保护性辅助活动保护性辅助活动软件工程过程软件工程过程通过定义适合于所有软件项目的框架活动而建立。每个集合由软件工程工作任务、软件项目里程碑、软件工作产品和交付物以及质量保证点组成。独立于任何一个框架第24页/共49页第二十五页,编辑于星期二:九点 四十九分。从宏观上来看,所有的软件开发过程从宏观上来看,所有的软件开发过程都可以看成一
33、个循环解决问题的过程。包括都可以看成一个循环解决问题的过程。包括4 4个不同的阶段:状态描述,问题定义,技术开个不同的阶段:状态描述,问题定义,技术开发和方案综述。发和方案综述。问题循环解决的各个阶段问题循环解决的各个阶段状态描述状态描述问题定义问题定义技术开发技术开发方案综述方案综述第25页/共49页第二十六页,编辑于星期二:九点 四十九分。状态描述状态描述问题定义问题定义技术开发技术开发方案综述方案综述状态描述状态描述问题定义问题定义技术开发技术开发方案综述方案综述状态描述状态描述问题定义问题定义技术开发技术开发方案综述方案综述问题循环解决问题循环解决阶段中的阶段中的阶段阶段状态描述状态描
34、述第26页/共49页第二十七页,编辑于星期二:九点 四十九分。软件生存周期软件生存周期划分为四个时期:划分为四个时期:软件分析时期、设计时期、编码与测试时期、运行与维护时期软件分析时期、设计时期、编码与测试时期、运行与维护时期。每个时期又划分为若干个阶段。每个时期又划分为若干个阶段。1、软件的分析时期任务、软件的分析时期任务:确定软件开发工程必须完成的总目标;可行性;采用的策略;必要的功能;所需的资源和成本;工程进度;分为三个阶段:问题定义、可行性研究、需求分析;:确定软件开发工程必须完成的总目标;可行性;采用的策略;必要的功能;所需的资源和成本;工程进度;分为三个阶段:问题定义、可行性研究、
35、需求分析;2、软件设计时期的任务、软件设计时期的任务:具体设计和实现在前一时期定义的软件。分为:具体设计和实现在前一时期定义的软件。分为2个阶段:总体设计;详细设计;个阶段:总体设计;详细设计;3、编码和测试时期、编码和测试时期;编码和单元测试、综合测试;编码和单元测试、综合测试;4、软件维护时期的任务、软件维护时期的任务:使软件持久地满足用户的需要。有四个方面的维护活动:改正性、完善性、适应性、预防性;:使软件持久地满足用户的需要。有四个方面的维护活动:改正性、完善性、适应性、预防性;第四节第四节 软件生存周期软件生存周期第27页/共49页第二十八页,编辑于星期二:九点 四十九分。阶段阶段关
36、键问题关键问题结束标准结束标准问题定问题定义义问题是什么问题是什么关于规模和目标的报告关于规模和目标的报告书书可行性可行性研究研究有可行的解有可行的解吗吗系统高层逻辑模型:数系统高层逻辑模型:数据流图,成本据流图,成本/效益分析效益分析需求分需求分析析系统必须做系统必须做什么什么系统的逻辑模型:数据系统的逻辑模型:数据流图,数据字典,算法流图,数据字典,算法描述描述总体设总体设计计概括的说,概括的说,系统应该如系统应该如何解决这个何解决这个问题问题可能的解法:系统流程可能的解法:系统流程图,成本图,成本/效益分析,推效益分析,推荐的系统结构:层次图荐的系统结构:层次图或结构图或结构图第28页/
37、共49页第二十九页,编辑于星期二:九点 四十九分。阶段阶段关键问题关键问题结束标准结束标准详细设计详细设计怎样具体地实怎样具体地实现这个系统现这个系统编写规格说明编写规格说明编码和单编码和单元测试元测试正确的程序模正确的程序模块块源程序清单,单元测源程序清单,单元测试方案和结果试方案和结果综合测试综合测试符合要求的软符合要求的软件件综综合合测测试试方方案案和和结结果果、完整一致的软件配置完整一致的软件配置维护维护持久地满足用持久地满足用户需要的软件户需要的软件完整准确的维护记录完整准确的维护记录第29页/共49页第三十页,编辑于星期二:九点 四十九分。第五节第五节 软件开发模型软件开发模型一、
38、软件生存周期模型的概念:一、软件生存周期模型的概念:软件生存周期模型是从软件项目需求定义直至软软件生存周期模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生存周期的系统开发、件经使用后废弃为止,跨越整个生存周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框运行和维护所实施的全部过程、活动和任务的结构框架。架。第30页/共49页第三十一页,编辑于星期二:九点 四十九分。瀑布模型瀑布模型 按照传统的瀑布模型来开发软件,有以下按照传统的瀑布模型来开发软件,有以下特点特点:1、阶段间有顺序性和依赖性;、阶段间有顺序性和依赖性;2、推迟实现的观点;、推迟实现的观点;3、质量保证的观
39、点;、质量保证的观点;需求分析验证规格说明验证设计验证编码测试综合测试维护优点:优点:可强迫开发人员采用规范的方法;严格规定可强迫开发人员采用规范的方法;严格规定了每个阶段必须提交的文档;要求每个阶段了每个阶段必须提交的文档;要求每个阶段交出的产品都必须经过质量保证小组的仔细交出的产品都必须经过质量保证小组的仔细验证验证。需求分析验证实线箭头表示开发过程;虚线箭头表示维护过程实线箭头表示开发过程;虚线箭头表示维护过程。反馈线开发过程维护过程第31页/共49页第三十二页,编辑于星期二:九点 四十九分。快速原型是快速建立起来的可以在快速原型是快速建立起来的可以在计算机上运行的程序,完成的功能计算机
40、上运行的程序,完成的功能是最终产品能完成功能的一个子集。是最终产品能完成功能的一个子集。快速原型模型不带反馈环,软快速原型模型不带反馈环,软件开发基本上是线形顺序进行的。件开发基本上是线形顺序进行的。1、原型系统已经通过与用户交互得到验证;、原型系统已经通过与用户交互得到验证;开发人员在建立原型中学到了许多东西;开发人员在建立原型中学到了许多东西;快速原型验证规格说明验证设计验证编码测试综合测试维护变化的需求验证实线箭头表示开发过程;虚线箭头表示维护过程实线箭头表示开发过程;虚线箭头表示维护过程。开发过程开发过程维护过程维护过程快速原型模型快速原型模型第32页/共49页第三十三页,编辑于星期二
41、:九点 四十九分。把把软软件件产产品品作作为为一一系系列列的的增增量量构构件件来来设设计计、编编码码、集集成成和和测测试试。每每个个构构件件由由多多个个相相互互作作用用的的模模块块构构成成,并并能能完完成成特特定定的的功功能能。每每个个增增量量构构件件实实现现软软件件的的基基本本需需求求,提提供供最最核核心心的的功功能能。应应该该使构件的规模适中。使构件的规模适中。分分解解的的约约束束条条件件:当当把把新新构构件件集集成成到到现现有有软软件件中时,所形成的产品必须是可测试的。中时,所形成的产品必须是可测试的。分分批批地地逐逐步步向向用用户户提提交交产产品品,每每次次提提交交一一个个满足用户需求
42、子集的可运行产品。满足用户需求子集的可运行产品。增量模型(渐增模型增量模型(渐增模型)第33页/共49页第三十四页,编辑于星期二:九点 四十九分。增量模型的优点:增量模型的优点:1、能在较短的时间内向用户提交可完成一些有用的工作的产品。、能在较短的时间内向用户提交可完成一些有用的工作的产品。2、逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品。、逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品。需求分析需求分析验证验证规格说明规格说明验证验证概要设计概要设计验证验证针对每个构件,完成详针对每个构件,完成详细设计、编码和集成,细设计、编码和集成,经测试后交付给用户经测试后交付给用
43、户维护维护增量模型增量模型第34页/共49页第三十五页,编辑于星期二:九点 四十九分。规格说规格说明明设计设计交付客户交付客户编码和集成编码和集成构件构件1:规格说明规格说明设计设计交付客户交付客户编码和集成编码和集成构件构件2:规格说明规格说明设计设计交付客户交付客户编码和集成编码和集成构件构件n:风险更大的风险更大的增量模型增量模型第35页/共49页第三十六页,编辑于星期二:九点 四十九分。软件开发的风险:软件开发的风险:1 1、产品交付用户之后用户可能不满意;产品交付用户之后用户可能不满意;2 2、到交付日期后软件可能还未开发出来;、到交付日期后软件可能还未开发出来;3 3、实际开发成本
44、可能超过预算;、实际开发成本可能超过预算;4 4、产品完成之前一些关键的开发人员可能、产品完成之前一些关键的开发人员可能“跳槽跳槽”了;了;5 5、聘请不到需要的专业人员;聘请不到需要的专业人员;基基本本思思想想:使使用用原原型型及及其其他他方方法法来来尽尽量量降降低低风风险险。可可看看作作在在每每个个阶阶段段之之前前都都增增加加了了风风险险分分析析过过程程的的快快速速原型模型。螺旋线每个周期对应一个开发阶段。原型模型。螺旋线每个周期对应一个开发阶段。螺旋模型螺旋模型第36页/共49页第三十七页,编辑于星期二:九点 四十九分。快速原型快速原型验证验证规格说明规格说明验证验证设计设计验证验证编码
45、编码测试测试综合测试综合测试维护维护变化的需求变化的需求验证验证风险风险分析分析风险风险分析分析风险风险分析分析风险风险分析分析风险风险分析分析风险分析风险分析简化的螺旋简化的螺旋模型模型 螺旋模型的基本思想:使用原型及其他方法来尽量降低风险。螺旋模型的基本思想:使用原型及其他方法来尽量降低风险。简化的螺旋模型可看作在每个阶段都增加了风险分析过程的快速原型模型。简化的螺旋模型可看作在每个阶段都增加了风险分析过程的快速原型模型。第37页/共49页第三十八页,编辑于星期二:九点 四十九分。完整的螺旋完整的螺旋模型模型计划下一阶段确定目标,选择方案,设定约束条件各步骤的进度风险分析可运行的原型风险风
46、险分析分析风险分析风险分析风险分析原型原型3原型2原型原型1评估方案,识别并排除风险操作操作概念概念详细设计设计验证设计验证与确认与确认软件产品软件产品设计设计需求确认软件需求实现集成与测试集成与测试计划计划编码单元测试集成测试验收测试开发计划需求计划与需求计划与生命周期计生命周期计划划模拟、模型、基准开发验证下一级产品当前累计的开发费用第38页/共49页第三十九页,编辑于星期二:九点 四十九分。每每个个阶阶段段开开始始时时(左左上上象象限限)的的任任务务是是:确确定定该该项项目目的的目目标标、为为完完成成这这些些目目标标选选择择方方案案及及设设定定这这些些方方案案的的约约束束条条件件。接接下
47、下来来的的任任务务是是:从从风风险险角角度度分分析析上上步步的的工工作作结结果果,努努力力排排除除各各种种潜潜在在的的风风险险,如如果果风风险险不不能能排排除除,则则停停止止开开发发工工作作或或大大幅幅度度削削减减项项目目规规模模。如如果果成成功功排排除除了了所所有有风风险险,则则启启动动下下一一个个开开发发步步骤骤(右右下下象象限限),这这个个步步骤骤相相当当于于纯纯粹粹的的瀑瀑布布模模型型。最最后后是是评评价价该该阶阶段段工工作作成成果果并并计计划划下下一一阶阶段段的工作。的工作。第39页/共49页第四十页,编辑于星期二:九点 四十九分。优点:优点:1、对可选方案和约束条件的强调有利于已、
48、对可选方案和约束条件的强调有利于已有软件的重用,也有利于把软件质量作为软件开发有软件的重用,也有利于把软件质量作为软件开发的一个重要目标;的一个重要目标;2、减少了过多的测试或测试不足所带、减少了过多的测试或测试不足所带来的风险;来的风险;3、维护只是模型的另一个周期,在维护和、维护只是模型的另一个周期,在维护和开发之间没有本质的区别。开发之间没有本质的区别。第40页/共49页第四十一页,编辑于星期二:九点 四十九分。“喷泉喷泉”体现了面向对象软件开发过程体现了面向对象软件开发过程迭代和无缝迭代和无缝的的特性。迭代是软件开发过程中普遍存在的一种内在特性。迭代是软件开发过程中普遍存在的一种内在属
49、性。软件过程各个阶段之间的迭代或一个阶段内属性。软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。因此,喷泉模型是典型的面结构化范型中更常见。因此,喷泉模型是典型的面向对象生命周期模型。向对象生命周期模型。喷泉模型喷泉模型第41页/共49页第四十二页,编辑于星期二:九点 四十九分。需求阶段需求阶段面向对象分析阶段面向对象分析阶段面向对象设计阶段面向对象设计阶段编码阶段编码阶段集成和测试阶段集成和测试阶段运行状态运行状态进一步开发进一步开发维护期维护期喷泉模型喷泉模型第42页/共49页第四十三页,编辑
50、于星期二:九点 四十九分。基于知识的模型基于知识的模型 基于知识的模型又称智能模型,它把瀑布模型和专家系基于知识的模型又称智能模型,它把瀑布模型和专家系统结合在一起。该模型在开发的各个阶段都利用相应的专统结合在一起。该模型在开发的各个阶段都利用相应的专家系统来帮助软件人员完成开发工作,使维护在系统需求家系统来帮助软件人员完成开发工作,使维护在系统需求说明一级上进行。为此,建立了各阶段所需要的知识库,说明一级上进行。为此,建立了各阶段所需要的知识库,将模型、相应领域知识和软件工程知识分别存人数据库,将模型、相应领域知识和软件工程知识分别存人数据库,以软件工程知识为基础的生成规则构成的专家系统与含