1、软件工程软件工程主讲:主讲:xxx信息科学技术学院信息科学技术学院25 九月 20232答疑时间:周三周三14:0016:00(扬帆楼(扬帆楼403)*email:我的联系方式我的联系方式25 九月 20233l19951995年年,Standish Standish GroupGroup针针对对软软件件系系统统开开发发成成功功的的研研究究表表明明,所所有有的的开开发发项项目目中中有有32%32%的的项项目目在在它它们们结束之前被中止结束之前被中止。l多多于于一一半半的的软软件件项项目目花花费费的的成成本本相相当当于于原原来来预预算算的的2 2倍倍。l只只有有42%42%的的软软件件项项目目完
2、完成成时时达达到到了了预预期期的的功功能能,事实上,许多系统只完成了部分预期的需求。事实上,许多系统只完成了部分预期的需求。软件工程软件工程25 九月 20234l软软件件工工程程就就是是在在这这样样的的背背景景下下,由由许许多多计计算算机机科学家经过科学家经过多方面的探索和总结多方面的探索和总结而形成的。而形成的。l19681968年年首首次次提提出出“软软件件工工程程”,目目前前已已经经成成为为计算机软件的一个重要分支和研究方向。计算机软件的一个重要分支和研究方向。l软件的开发软件的开发是一个很是一个很困难困难的活动,要求很仔细的活动,要求很仔细的计划和执行。的计划和执行。软件工程软件工程
3、25 九月 20235通过本课程的学习,掌握软件工程的通过本课程的学习,掌握软件工程的概念概念和和技术方法技术方法,提高软件开发机构的软件开,提高软件开发机构的软件开发能力和软件过程能力,提高发能力和软件过程能力,提高软件生产率软件生产率、提高提高软件质量软件质量、降低、降低软件成本软件成本。课程对象:课程对象:软件技术人员软件技术人员、管理人员管理人员等。等。课程目的对于培养学生的软件素质,提高学生的软件开发能力与软件项目管理能力具有重要的意义。25 九月 20236课程内容&软件工程软件工程概念概念与软件工程的与软件工程的基本要素基本要素;&软件开发活动及其常用的系统软件开发活动及其常用的
4、系统定义技术定义技术,软,软件件设计技术设计技术和软件和软件测试技术测试技术;&软件开发中典型的软件开发中典型的软件开发模型软件开发模型;&软件工程标准化与软件工程标准化与软件文档软件文档;&软件工程管理软件工程管理和和软件质量保证软件质量保证。教学日历教学日历掌握开发高质掌握开发高质量软件的方法量软件的方法有效地策划和管有效地策划和管理软件开发活动理软件开发活动25 九月 20237参考教材1.软件工程与软件文档写作软件工程与软件文档写作 清华大学清华大学/北京交通大学出版社北京交通大学出版社 文斌文斌 刘长青刘长青 田原田原 编著编著2.软件工程导论(第软件工程导论(第4版)版)清华大学出
5、版社,清华大学出版社,张海藩张海藩3.实用软件工程(第实用软件工程(第2版)版)清华大学出版社,郑人杰清华大学出版社,郑人杰4.软件工程软件工程 机械工业出版社机械工业出版社/中信工业出版社,中信工业出版社,Ian Sommerville 程一剑等译程一剑等译25 九月 20238课程要求 要要求求刻刻苦苦学学习习,持持之之以以恒恒的的精精神神。本本课课程程与与其其说说是是一一门门技技术术性性很很强强的的课课程程,不不如如说说更更像像一一门门管管理理学学科科的的课课程程,很很多多规规定定都都是是国国内内外外大大师师的的经经验验总总结结,不不能能误误认认为为无无用用或或现现在在用用不不上上而而放
6、放弃学习弃学习。要求学以致用,善于将要求学以致用,善于将理论与实际结合理论与实际结合,才能巩,才能巩固课内学到的知识,并能融会贯通。固课内学到的知识,并能融会贯通。25 九月 20239第一章第一章 软件工程概念软件工程概念1.11.1 软件的定义与分类软件的定义与分类1.2 1.2 软件的发展和软件危机软件的发展和软件危机1.3 1.3 软件工程软件工程1.4 1.4 软件生存周期、过程模型软件生存周期、过程模型25 九月 202310历史的回顾1946年年,第一台计算机诞生,信息技术拉开了序幕;,第一台计算机诞生,信息技术拉开了序幕;硬件芯片的集成度硬件芯片的集成度按照摩尔定律每十八个月翻
7、番;按照摩尔定律每十八个月翻番;20世纪世纪80年代,年代,微软为首的新兴软件企业微软为首的新兴软件企业开辟了独立软件开辟了独立软件产业,成为信息产业中最重要的力量;产业,成为信息产业中最重要的力量;很多传统型企业逐渐很多传统型企业逐渐“软化软化”,信息产业,信息产业“软盛软盛硬衰硬衰”;2002年,美国从业年,美国从业硬件工程师约为硬件工程师约为74000,软件工程师约为软件工程师约为675000;硬件设计过程本身出现硬件设计过程本身出现“软化软化”趋势,离不开软件的支持;趋势,离不开软件的支持;2004年年3月,盖茨的演讲月,盖茨的演讲“十年后十年后”通用化标准化专业化多样化25 九月 2
8、023111.1 1.1 软件的定义与分类软件的定义与分类n n软件由计算机软件由计算机程序程序、数据数据及及文档文档组成。组成。按事先设计的功按事先设计的功能和性能要求执能和性能要求执行的行的指令序列指令序列。使程序能够使程序能够正常操纵信正常操纵信息的息的数据结数据结构构。与程序开发、维与程序开发、维护和使用有关的护和使用有关的图文材料图文材料。25 九月 202312软件的特点软件的特点抽象性:逻辑实体抽象性:逻辑实体抽象性:逻辑实体抽象性:逻辑实体软件生产无明显的制造过程软件生产无明显的制造过程软件生产无明显的制造过程软件生产无明显的制造过程无磨损性无磨损性无磨损性无磨损性退化25 九
9、月 202313抽象性抽象性抽象性抽象性软件生产无明显的制造过程软件生产无明显的制造过程软件生产无明显的制造过程软件生产无明显的制造过程无磨损性无磨损性无磨损性无磨损性对硬件的依赖性对硬件的依赖性对硬件的依赖性对硬件的依赖性手工开发方式手工开发方式手工开发方式手工开发方式软件本身复杂性软件本身复杂性软件本身复杂性软件本身复杂性软件的特点软件的特点所反映的实际问题的复杂性所反映的实际问题的复杂性程序自身逻辑结构的复杂性程序自身逻辑结构的复杂性25 九月 202314抽象性抽象性抽象性抽象性软件生产无明显的制造过程软件生产无明显的制造过程软件生产无明显的制造过程软件生产无明显的制造过程无磨损性无磨
10、损性无磨损性无磨损性对硬件的依赖性对硬件的依赖性对硬件的依赖性对硬件的依赖性手工开发方式手工开发方式手工开发方式手工开发方式软件本身复杂性软件本身复杂性软件本身复杂性软件本身复杂性软件高成本软件高成本软件高成本软件高成本软件的特点软件的特点25 九月 202315例:美国一家公司在例:美国一家公司在1982年计划用年计划用FORTRAN语言开发一个在语言开发一个在VAX750计算机上运行的应用程序,估计这个程序的长度为计算机上运行的应用程序,估计这个程序的长度为10,000条指令条指令。如果平均。如果平均每人每天每人每天可以开发出可以开发出10条指令条指令,请问:,请问:()()开发这个程序将
11、用多少开发这个程序将用多少人日人日?()()假设程序员月平均假设程序员月平均工资为工资为4000美元美元,每月按,每月按20个工作日个工作日计算,这个计算,这个软件的成本软件的成本是多少美元?是多少美元?()()1982年年VAX750计算机计算机硬件硬件价格约为价格约为125,000美元美元,在那,在那一年这个一年这个软件的成本软件的成本在总成本中占多大在总成本中占多大比例比例?()()20年后,一台性能远远优于年后,一台性能远远优于VAX750的微型的微型计算机的价格计算机的价格约为约为2000美元美元,这时软件开发生产率已提高到平均每人每天可以,这时软件开发生产率已提高到平均每人每天可以
12、开发出开发出40条指令条指令,程序员的月平均,程序员的月平均工资也涨到工资也涨到8000美元美元。如果在。如果在2002年开发上述年开发上述FORTRAN应用程序,则该应用程序,则该软件的成本软件的成本在总成本在总成本中占多大中占多大比例比例?10,000/10=1000(人日)(人日)每月工作每月工作20天,故开发这个软件用天,故开发这个软件用:1000/20=50(人月)(人月)每人工资每人工资4000元,故软件成本约为:元,故软件成本约为:4000*50=200,000(元)(元)200,000/(200,000+125,000)=61.5%2002年开发该软件的工作量为:年开发该软件的
13、工作量为:10,000/(40*20)=12.5(人月)(人月)软件成本:软件成本:8000*12.5=100,000(元)(元)软件成本所占比例:软件成本所占比例:100,000/(100,000+2,000)=98%25 九月 202316抽象性抽象性软件生产无明显的制造过程软件生产无明显的制造过程无磨损性无磨损性对计算机硬件依赖性对计算机硬件依赖性软件的软件的手工开发方式手工开发方式软件本身软件本身复杂性复杂性软件的软件的高成本性高成本性相当多的软件工作涉及相当多的软件工作涉及社会因素社会因素软件的特点软件的特点从以上分析可以看出,出现软件危机是必然的。60年代以来人们所担心的软件危机到
14、目前为止并没有真正被排除。机构体制机构体制管理方式管理方式思想观点思想观点25 九月 202317n软件软件与与硬件硬件、数据库数据库、人人、过程过程等共同构成计等共同构成计算机系统。算机系统。n软件的种类可以从几个方面进行划分软件的种类可以从几个方面进行划分:1.1.按功能分类按功能分类系统软件系统软件协调计算机系统协调计算机系统支撑软件支撑软件协助用户开发软件的工具性软件协助用户开发软件的工具性软件应用软件应用软件为特定领域开发的软件为特定领域开发的软件软件的分类软件的分类类别类别 参加人员数参加人员数 研制期限研制期限 源源程序行数程序行数 微型微型 1 14周 0.5k 小型小型 1
15、16月 1k2k中型中型 25 12年 5k50k大型大型 520 23年 50k100k甚大型甚大型 1001000 45年 1M(=1000k)极大型极大型 20005000 510年 1M10M2.按规模分类按规模分类 微型、小型、中型、大型、甚大型、极大型微型、小型、中型、大型、甚大型、极大型按工作方式分类按工作方式分类 批处理软件批处理软件批处理软件批处理软件 实时软件实时软件实时软件实时软件 分时软件分时软件分时软件分时软件 交互式软件交互式软件交互式软件交互式软件按服务对象分类按服务对象分类 项目软件项目软件项目软件项目软件 产品软件产品软件产品软件产品软件按使用频度分类按使用频
16、度分类 一次性使用软件一次性使用软件一次性使用软件一次性使用软件 频繁使用软件频繁使用软件频繁使用软件频繁使用软件也称也称定制软件定制软件,是受某,是受某特定客户特定客户的委托,由软件承包商在的委托,由软件承包商在合同的合同的约束约束下开发出来的软件。下开发出来的软件。由软件开发机构开发出来由软件开发机构开发出来直接提直接提供给市场供给市场,可以,可以公开销售公开销售。区别:区别:项目项目软件软件的的软件描述由软件描述由客户给出客户给出,开发者必须按客户,开发者必须按客户要求进行开发;而要求进行开发;而产品软件产品软件的的软件描述由开发者自己完成软件描述由开发者自己完成。25 九月 20232
17、0第一章第一章 软件工程概念软件工程概念1.1 1.1 软件的定义与分类软件的定义与分类1.2 1.2 软件的发展和软件危机软件的发展和软件危机1.3 1.3 软件工程软件工程1.4 1.4 软件生存周期、过程模型软件生存周期、过程模型25 九月 2023211.21.2 软件的发展和软件危机软件的发展和软件危机 早期早期 第二阶段第二阶段 第三阶段第三阶段 第四阶段第四阶段 面向批处理面向批处理 多用户多用户 分布式系统分布式系统 强大的桌面系统强大的桌面系统 有限的分布有限的分布 实时实时 嵌入嵌入“智能智能”面向对象技术面向对象技术 自定义软件自定义软件 数据库数据库 低成本硬件低成本硬
18、件 专家系统专家系统 软件产品软件产品 消费者的影响消费者的影响 人工智能人工智能 并行计算并行计算 网络计算机网络计算机195019601970198019902000软件的发展经历了四个阶段25 九月 202322由由于于缺缺乏乏软软件件开开发发经经验验和和相相关关数数据据的的积积累累,使使开开发发计计划划很很难难制制定定,在在进进度度、费费用用上上估估计计不不准准确确,引起用户不满;引起用户不满;软件需求很难确定软件需求很难确定或不确定,这一点非常关键;或不确定,这一点非常关键;开开发发过过程程缺缺乏乏统统一一、公公认认的的方方方方法法法法论论论论和和规规规规范范范范指指指指导导导导,缺
19、乏缺乏文档规范文档规范文档规范文档规范,使软件很难维护;,使软件很难维护;测试工作测试工作测试工作测试工作不充分,导致错误多,可靠性降低。不充分,导致错误多,可靠性降低。软件危机软件危机25 九月 202323软件危机的主要特征软件危机的主要特征软件软件开发周期开发周期大大超过规定日期大大超过规定日期软件软件开发成本开发成本严重超标严重超标软件软件质量质量难于保证难于保证软件难于软件难于维护维护原因原因32%32%的项目在结的项目在结束之前中止束之前中止多于一半多于一半的软件项目花费的软件项目花费的成本相当于原来的成本相当于原来预算的预算的2 2倍倍,按期、按预算完成的,按期、按预算完成的项目
20、不足项目不足20%20%。软件本身的软件本身的复杂性复杂性 软件产品的软件产品的特殊性特殊性 人们认识的人们认识的局限性局限性25 九月 202324例例1:1963年美国的火箭控制系统程序。年美国的火箭控制系统程序。把把FORTRAN语句语句 DO 5 I=1,3 写成了写成了 DO 5 I=1.3,使发往火星的火箭爆炸,造成使发往火星的火箭爆炸,造成1000多万美元的损失。多万美元的损失。例例2:IBM公司公司1966年开发的年开发的IBM360机的操作系统。机的操作系统。花花费费5000人人年年的的工工作作量量,写写出出近近100万万行行源源程程序序,却却得得到到一一个个很很不不成成功功
21、的的软软件件。每每更更新新一一次次版版本本,都都能能找找到到1000多个错误,成为多个错误,成为用之不灵、弃之可惜用之不灵、弃之可惜用之不灵、弃之可惜用之不灵、弃之可惜的系统。的系统。软件危机软件危机25 九月 202325解决软件危机的方法:按解决软件危机的方法:按工程化工程化的的原则原则和和方方法法组织软件开发工作,并制定相应的组织软件开发工作,并制定相应的标准标准。成功软件的标准成功软件的标准用户在用用户在用用户的使用是最关键的因素用户的使用是最关键的因素用户可以很容易做完要做的事用户可以很容易做完要做的事软件危机软件危机25 九月 202326第一章第一章 软件工程概念软件工程概念1.
22、1 1.1 软件的定义与分类软件的定义与分类1.2 1.2 软件的发展和软件危机软件的发展和软件危机1.3 1.3 软件工程软件工程1.4 1.4 软件生存周期、过程模型软件生存周期、过程模型25 九月 202327l软件工程就是软件工程就是采用采用工程工程的的概念、原理、技术和方概念、原理、技术和方法法来来开发和维护软件开发和维护软件,将,将工程管理技术的成功经工程管理技术的成功经验和思想与软件的开发过程验和思想与软件的开发过程、研究技术相结合,、研究技术相结合,形成一套适合于软件开发的形成一套适合于软件开发的方法、规范和技术方法、规范和技术。l软件工程的目标在于:软件工程的目标在于:提高软
23、件生产率提高软件生产率,提高软提高软件质量件质量,降低软件成本降低软件成本。1.3 1.3 软件工程软件工程25 九月 202328软件工程软件工程&软件工程是应用软件工程是应用计算机科学计算机科学、数学数学及及管理科学管理科学等原理等原理开发软件的工程开发软件的工程。它。它借鉴传统工程的原则、方法,以提高借鉴传统工程的原则、方法,以提高质量,降低成本为目的。质量,降低成本为目的。工程学科工程学科软件生产的各个方面软件生产的各个方面软件工程的内容不是软件工程的内容不是一成不变的,随着人一成不变的,随着人们对软件系统研制开们对软件系统研制开发的理解而发展。发的理解而发展。25 九月 202329
24、l计算机科学研究的是构成计算机科学研究的是构成计算机和软件系计算机和软件系统基础统基础的有关的有关理论和方法理论和方法;l软件工程研究软件工程研究软件制作中的实际问题软件制作中的实际问题;l软件工程既要软件工程既要以计算机科学理论作为坚实以计算机科学理论作为坚实的基础,又要的基础,又要有特定的软件开发方法。有特定的软件开发方法。软件工程和计算机科学软件工程和计算机科学25 九月 202330l系统工程研究复杂系统的开发、进化的各个系统工程研究复杂系统的开发、进化的各个方面,包括方面,包括硬件开发硬件开发、系统决策系统决策、过程设计过程设计、系统实施系统实施和和软件工程软件工程等等。l系统工程人
25、员要描述整个系统系统工程人员要描述整个系统,定义总的体,定义总的体系结构,集成各组件以完成整个系统,较少系结构,集成各组件以完成整个系统,较少关注各组件的工程实际问题。关注各组件的工程实际问题。软件工程和系统工程软件工程和系统工程25 九月 202331 20012001年年年年5 5月月月月ISOISO发布了发布了发布了发布了 SWEBOK SWEBOK指南指南指南指南V0.95V0.95(试用试用试用试用版)版)版)版),即,即,即,即 GGuide to the uide to the S Software oftware E Engineering ngineering B Body
26、ody o of f KKnowledgenowledge。将软件工程学科的主体知识分为将软件工程学科的主体知识分为将软件工程学科的主体知识分为将软件工程学科的主体知识分为1010个知识领域:个知识领域:个知识领域:个知识领域:软件需求软件需求软件需求软件需求 软件设计软件设计软件设计软件设计 软件构造软件构造软件构造软件构造 软件测试软件测试软件测试软件测试 软件维护软件维护软件维护软件维护 软件配置管理软件配置管理软件配置管理软件配置管理 软件工程管理软件工程管理软件工程管理软件工程管理 软件工程过程软件工程过程软件工程过程软件工程过程 软件工程工具和方法软件工程工具和方法软件工程工具和方
27、法软件工程工具和方法 软件质量软件质量软件质量软件质量软件工程的知识结构软件工程的知识结构25 九月 202332每个软件项目都是每个软件项目都是新的新的新的新的,体现在新的,体现在新的需求需求和和功功能能、新的、新的技术技术实现手段和实现手段和部署部署方式上;方式上;每个项目都是每个项目都是不断变化不断变化不断变化不断变化的;的;软件项目的软件项目的胜算不大胜算不大,或者超预算开支,或者,或者超预算开支,或者延期,或者干脆一刀砍掉;延期,或者干脆一刀砍掉;软件项目是软件项目是团队合作团队合作,但,但人多力量不一定大人多力量不一定大,生产力和人数并不成正比。生产力和人数并不成正比。软件工程的特
28、点软件工程的特点软件软件软件软件软件产业软件产业软件产业软件产业够用少而精25 九月 202333工具工具工具工具方法方法方法方法过程过程过程过程质量焦点质量焦点质量焦点质量焦点软件工程必须软件工程必须以有组织的以有组织的质质量保证量保证为基础为基础全面全面质量管理质量管理和和过程改进过程改进使得更使得更加成熟的软件工加成熟的软件工程方法不断出现程方法不断出现软件工程的层次软件工程的层次25 九月 202334软件工程的三要素软件工程的三要素软件工程包括三个基本要素:方法、工具和过程。软件工程包括三个基本要素:方法、工具和过程。uu方法方法方法方法:主要研究:主要研究“如何做如何做”的问题;的
29、问题;uu工具工具工具工具:为了软件开发提供一个:为了软件开发提供一个支撑环境支撑环境;uu过程过程过程过程:将软件工程的方法和工具结合起来,以达:将软件工程的方法和工具结合起来,以达到合理、及时地进行计算机到合理、及时地进行计算机软件开发软件开发软件开发软件开发的目的。主的目的。主要从要从进度进度、成本成本、质量质量三个方面加以控制。三个方面加以控制。一个一个软件开发机构软件开发机构针对针对某某一类软件产品一类软件产品为自己规定为自己规定的的工作步骤工作步骤。25 九月 2023351.P2.D3.C4.A软件工程过程包含四种基本的软件工程过程包含四种基本的过程活动过程活动:软件工程过程软件
30、工程过程方法及使用方法及使用顺序顺序为保证质量所需的为保证质量所需的管理管理要求交付的要求交付的文档资料文档资料1.Plan:软件规格说明软件规格说明(软件描述)软件描述)2.Do:软件开发软件开发3.Check:软件确认软件确认(有效性验证)(有效性验证)4.Action:软件演进软件演进(进化)进化)25 九月 202336&传统的软件工程方法:传统的软件工程方法:结构化分析方法结构化分析方法SASA面向面向数据流数据流的设计方法(的设计方法(DeMarcoDeMarco,19781978)nJSDJSD方法方法面向面向数据结构数据结构的设计方法(的设计方法(JacksonJackson,
31、19831983)软件工程方法软件工程方法这些方法旨在识别系这些方法旨在识别系统中基本的功能模块,统中基本的功能模块,现仍广泛应用。现仍广泛应用。&面向对象的软件工程方法:面向对象的软件工程方法:1997年推出了年推出了UMLUML,通过统一的语义和符号将建模过通过统一的语义和符号将建模过程和表示统一起来,成为程和表示统一起来,成为面向对象建模的工业标准。面向对象建模的工业标准。Unified Modeling Language25 九月 202337软件工程方法软件工程方法&没有放之四海而皆准的方法,每种方法都有其适用的特定领域。&各种方法基于的思路开发出能够用图形表示的系统模型,并用这些模
32、型来描述或设计系统。25 九月 202338CASE(Computer-Aided Software Engineering)即为计算机辅助软件工程。即为计算机辅助软件工程。CASE包包括括多多种种程程序序工工具具,覆覆盖盖面面很很广广,支支持持软软件过程活动件过程活动。CASE工工具具集集还还包包括括代代码码生生成成器器,可可从从系系统统模模型型和过程指南自动生成源代码。和过程指南自动生成源代码。计算机辅助软件工程计算机辅助软件工程CASE25 九月 202339计算机辅助软件工程计算机辅助软件工程CASE高端高端CASE工具工具支支持持分分析析和和设设计计的的CASE工工具具,支支持持软软
33、件件过程中的早期阶段。过程中的早期阶段。低端低端CASE工具工具支支持持实实现现和和测测试试的的工工具具,如如调调试试器器、程程序序分析系统、测试用例生成器和程序编辑器等。分析系统、测试用例生成器和程序编辑器等。25 九月 202340遗留系统的挑战遗留系统的挑战多样性的挑战多样性的挑战交付上的挑战交付上的挑战软件工程在软件工程在2121世纪面临以下三大挑战:世纪面临以下三大挑战:为了应对这些挑战,需为了应对这些挑战,需要有要有新的工具和技术新的工具和技术以以及融合使用现有及融合使用现有软件工软件工程方法程方法的创新举措。的创新举措。软件工程面临的主要问题软件工程面临的主要问题25 九月 20
34、2341第一章第一章 软件工程概念软件工程概念1.1 1.1 软件的定义与分类软件的定义与分类1.2 1.2 软件的发展和软件危机软件的发展和软件危机1.3 1.3 软件工程软件工程1.4 1.4 软件生存周期软件生存周期、过程模型过程模型25 九月 202342n软件有一个从软件有一个从孕育、诞生、成长、成熟孕育、诞生、成长、成熟到到衰亡衰亡的的生存过程生存过程,这个过程即为软件的生这个过程即为软件的生存周期。存周期。n生存周期包含三个阶段:生存周期包含三个阶段:软件定义软件定义、软件软件开发开发及及软件运行维护软件运行维护。1.4 软件生存周期软件生存周期问题定义问题定义可行性研究可行性研
35、究需求分析需求分析概要设计概要设计详细设计详细设计编码编码测试测试持久地满足持久地满足用户的需要用户的需要25 九月 202343也称也称软件开发模型软件开发模型软件开发模型软件开发模型、软件过程模型软件过程模型软件过程模型软件过程模型或或软件工程软件工程软件工程软件工程范型范型范型范型,它能,它能直观表达软件开发全过程直观表达软件开发全过程,明确规,明确规定要完成的主要活动、任务和开发策略。定要完成的主要活动、任务和开发策略。是软件工程思想的具体化,是跨越软件生存周是软件工程思想的具体化,是跨越软件生存周期的系统开发、运行、维护所实施的期的系统开发、运行、维护所实施的全部活动全部活动和和任务
36、任务的的过程框架过程框架过程框架过程框架。软件生存周期模型软件生存周期模型25 九月 202344瀑布模型瀑布模型原型模型原型模型增量模型增量模型螺旋模型螺旋模型喷泉模型喷泉模型软件生存周期模型软件生存周期模型常用的软件生存期模型有:常用的软件生存期模型有:25 九月 2023451.1.瀑布模型瀑布模型各各阶段阶段自上而下自上而下相互衔接,如瀑相互衔接,如瀑布逐级下落。布逐级下落。各阶段的任务完成后,产生相应的文档,经过评审确认后,进入下一阶段25 九月 202346瀑布模型瀑布模型确定要开发软件系统的确定要开发软件系统的总目标总目标;完成该软件任务的完成该软件任务的可行性研究可行性研究;估
37、计估计资源、成本、开发进度资源、成本、开发进度;制定制定开发任务的开发任务的实施计划实施计划实施计划实施计划,连同,连同可行性研究可行性研究可行性研究可行性研究报告报告报告报告,提交管理部门审查。,提交管理部门审查。25 九月 202347瀑布模型瀑布模型对提出的对提出的需求进行分析需求进行分析给出详细给出详细的定义的定义(功能、性能功能、性能);编写编写软件需求说明书软件需求说明书软件需求说明书软件需求说明书或或系统功能系统功能说明书及说明书及初步的初步的用户手册用户手册用户手册用户手册;提交管理机构评审。提交管理机构评审。25 九月 202348瀑布模型瀑布模型概要设计概要设计:把需求转换
38、成软件的:把需求转换成软件的体系结构体系结构,确定各功能模块;,确定各功能模块;详细设计详细设计:具体:具体描述各模块描述各模块完成完成的工作,为源程序编写打基础;的工作,为源程序编写打基础;编写编写设计说明书设计说明书设计说明书设计说明书,提交评审。,提交评审。25 九月 202349将设计转换成以某种特定将设计转换成以某种特定语言表示的语言表示的源程序源程序;编码应编码应结构良好、清晰易结构良好、清晰易读读,与设计一致。,与设计一致。瀑布模型瀑布模型25 九月 202350按规定的需求进行有效性测试,按规定的需求进行有效性测试,确定软件是否合格、能否交付确定软件是否合格、能否交付;单元测试
39、单元测试:查找各模块在功能和:查找各模块在功能和结构上存在的问题;结构上存在的问题;组装测试组装测试:已测试过的模块按一:已测试过的模块按一定顺序组装起来。定顺序组装起来。瀑布模型瀑布模型25 九月 202351改正性维护改正性维护:运行中:运行中发现发现了软件中的了软件中的错误错误适应性维护适应性维护:为了:为了适应适应变化的软件变化的软件环境环境完善性维护完善性维护:为:为增强增强软件的软件的功能功能瀑布模型瀑布模型25 九月 202352瀑布模型的特点瀑布模型的特点阶段间具有阶段间具有顺序性顺序性和和依赖性依赖性;以软件以软件需求完全确定需求完全确定为前提为前提,推迟实现;,推迟实现;每
40、个阶段必须完成规定的每个阶段必须完成规定的文档文档文档文档,每个阶段结束每个阶段结束前完成文档审查;前完成文档审查;每个阶段以上一阶段的文档作为开发的基础每个阶段以上一阶段的文档作为开发的基础,若某文档出现问题,则返回重新工作。若某文档出现问题,则返回重新工作。文档驱动的模型25 九月 202353瀑布模型的瀑布模型的优点优点在在消消除除软软件件非非结结构构化化、促促进进软软件件开开发发工工程程化化方方面起了很大作用,提供软件开发的基本框架。面起了很大作用,提供软件开发的基本框架。适适合合功功能能需需求求明明确确、完完整整、无无重重大大变变化化的的软软件件产品的开发产品的开发。是是一一种种整整
41、整整体体体体开开开开发发发发模模模模型型型型,当当开开发发完完成成时时,向向用用户户提交的是一个完整的系统。提交的是一个完整的系统。25 九月 202354瀑布模型的瀑布模型的局限性局限性将软件开发生硬地分成若干确切的阶段,一种理将软件开发生硬地分成若干确切的阶段,一种理想的想的线性开发模式线性开发模式线性开发模式线性开发模式,缺乏灵活性缺乏灵活性。简洁的美活用它?无法解决软件需求不明确或不准确的问题无法解决软件需求不明确或不准确的问题,导致导致开发出的软件不是用户真正需要的软件。开发出的软件不是用户真正需要的软件。相当长的时间相当长的时间才能得到软件的才能得到软件的最初版本最初版本,发现错,
42、发现错误为时已晚,大量修改必须付出巨大的代价。误为时已晚,大量修改必须付出巨大的代价。生成和确认生成和确认大量文档大量文档大量文档大量文档,极大地增加了工作量。,极大地增加了工作量。25 九月 202355瀑布模型瀑布模型原型模型原型模型增量模型增量模型螺旋模型螺旋模型喷泉模型喷泉模型软件生存周期模型软件生存周期模型常用的软件生存期模型有:常用的软件生存期模型有:25 九月 2023562.原型模型原型模型(快速成型模型快速成型模型)u业务和需求在不断变化业务和需求在不断变化,采用线性开发方,采用线性开发方式不实际。式不实际。u根据用户的需求,快速开发一个根据用户的需求,快速开发一个“原型原型
43、”,完成部分主要功能完成部分主要功能,展示给用户。展示给用户。u在在征求用户意见的征求用户意见的过程中,过程中,逐步修改、完逐步修改、完善善,最终获得满意的软件产品。,最终获得满意的软件产品。25 九月 202357开发快速开发快速原型原型的途径的途径找来一个或几个找来一个或几个正在运行的正在运行的类似软件类似软件,利用这些,利用这些软件向客户展示软件需求中的部分功能;软件向客户展示软件需求中的部分功能;利用个人计算机利用个人计算机模拟模拟软件系统的软件系统的人机界面和人机人机界面和人机交互方式交互方式;开发一个开发一个工作模型工作模型工作模型工作模型,实现软件系统的,实现软件系统的部分功能部
44、分功能,这部分功能是重要的或易产生误解的。这部分功能是重要的或易产生误解的。25 九月 202358建造/修改 原型用户测试运行原型 听取用 户意见原型模型原型模型(快速成型模型快速成型模型)回炉改造大行不顾大行不顾细谨细谨百闻不如百闻不如一见一见25 九月 202359原型模型原型模型的优点的优点统一用户和开发人员的理解,统一用户和开发人员的理解,有助于需求有助于需求的定义和确认的定义和确认;可以可以快速实现和提交一个有限的版本快速实现和提交一个有限的版本,应应付市场竞争的压力付市场竞争的压力;评估关键技术评估关键技术和性能瓶颈;和性能瓶颈;及早发现存在的风险和不确定性。展示新概念和方法展示
45、新概念和方法的可行性。的可行性。分析定义分析定义系统需求系统需求生成生成生成生成原型原型原型原型系统系统设计设计程序程序设计设计编码编码测试测试 运行运行和维护和维护原型化原型化含原型化的含原型化的软件生存期软件生存期采用采用原型原型模型的模型的软件生存软件生存周期周期走走 向向产产 品品25 九月 202361瀑布模型瀑布模型原型模型原型模型增量模型增量模型螺旋模型螺旋模型喷泉模型喷泉模型软件生存周期模型软件生存周期模型常用的软件生存期模型有:常用的软件生存期模型有:25 九月 202362.增量模型增量模型u增量模型是增量模型是迭代迭代和和演进演进的过程。的过程。u增量模型把增量模型把软件
46、产品软件产品分解分解分解分解成一系列的成一系列的增量构件增量构件增量构件增量构件,在增量开发迭代在增量开发迭代中中分批分批、逐步加入逐步加入。u每个构件每个构件由多个相互作用的模块构成,并且能由多个相互作用的模块构成,并且能够够完成特定的功能完成特定的功能。u早先完成的增量早先完成的增量可以为可以为后期的增量后期的增量提供服务。提供服务。定义软定义软件件需求需求将需求将需求将需求将需求对应到对应到对应到对应到各增量各增量各增量各增量设计系设计系设计系设计系统架构统架构统架构统架构开发其开发其开发其开发其中一个中一个中一个中一个增量增量增量增量检验和检验和确认该确认该增量增量将增量将增量将增量将
47、增量集成到集成到集成到集成到系统中系统中系统中系统中确认集确认集成后的成后的系统系统先完成一个系统先完成一个系统“子集子集子集子集”的开发,再按同样的开发的开发,再按同样的开发步骤增加功能,如此步骤增加功能,如此递增递增递增递增下去直至满足全部需求。下去直至满足全部需求。总体架构在初始阶段就应设计好,要求软件必须具备开放式的开放式的体系结构体系结构。日历时间日历时间分析分析 增量增量1 增量增量1交付客户交付客户设计设计 编码编码 测试测试 分析分析 增量增量2 增量增量2交付客户交付客户设计设计 编码编码 测试测试 分析分析 增量增量3 增量增量3交付客户交付客户设计设计 编码编码 测试测试
48、 分析分析 增量增量4 增量增量4交付客户交付客户设计设计 编码编码 测试测试 实现基本基本需求、最核心核心功能分解的约束条件:新构件集成到现有软件时,形成的产品必须是可测试的。25 九月 202365增量模型的优点增量模型的优点客户无需等到整个系统的实现,客户无需等到整个系统的实现,第一个增量会第一个增量会满足最关键的要求满足最关键的要求,软件很快就能使用软件很快就能使用;客户可以将客户可以将早期的增量作为原型早期的增量作为原型,从中获得对从中获得对后续增量的需求;后续增量的需求;具有最高优先权的服务首先交付,接受了最多具有最高优先权的服务首先交付,接受了最多测试,意味着测试,意味着最重要的
49、部分不太可能失败最重要的部分不太可能失败。因。因此,此,项目总体性失败的风险比较低项目总体性失败的风险比较低项目总体性失败的风险比较低项目总体性失败的风险比较低。25 九月 202366增量应相对较小增量应相对较小(不超过不超过20,00020,000行代码行代码),每个,每个增量应该包含一定的系统功能,因此,有时增量应该包含一定的系统功能,因此,有时很很难把客户的需求映射到适当规模的增量上难把客户的需求映射到适当规模的增量上。增量模型存在问题增量模型存在问题此外,多数系统需要一组在各个部分都会用到此外,多数系统需要一组在各个部分都会用到的的基本服务基本服务,但由于增量实现前,需求不能被,但由
50、于增量实现前,需求不能被详细定义,所以详细定义,所以明确所有增量都会用到的基本明确所有增量都会用到的基本服务比较困难服务比较困难。增量开发方法的一个新演进版本“极限程序设计极限程序设计”建立在开发和交付非常小的功能增量上。25 九月 202367瀑布模型瀑布模型原型模型原型模型增量模型增量模型螺旋模型螺旋模型喷泉模型喷泉模型软件生存周期模型软件生存周期模型常用的软件生存期模型有:常用的软件生存期模型有:25 九月 202368.螺旋模型螺旋模型u在软件开发过程中,有在软件开发过程中,有各种各样的风险各种各样的风险各种各样的风险各种各样的风险。项目越项目越大越复杂大越复杂,设计方案、资源、成本和
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922