软件工程推进方法讲稿李超成都信息工程学院2005.6第五章软件开发模型与开发方法软件开发模型是软件开发的全部过程、活动、任务和管理的结构框架。软件开发模型可以直观地描述一个组织在开发某项软件过程中的全部活动,以及在开发过程中的人员组织管理,工作顺序和任务管理,软件质量保证等全部内容。对软件开发模型的选用直接影响软件开发周期和人员使用,直接影响到软件开发的生产性和软件的质量。第五章软件开发模型与开发方法软件开发模型与软件工程软件开发模型是将软件开发中的主要活动细分为:系统需求分析程序设计程序编码测试运行维护系统设计人员管理项目管理第五章软件开发模型与开发方法软件开发模型与软件工程根据不同的应用系统合理地组织软件开发阶段,由不同的软件开发阶段的组织关系确定了软件的开发模型。软件开发模型就是用一定的流程将软件开发的各个主要环节连接起来,并可用规范的方式操作全过程,如同工厂的生产线。第五章软件开发模型与开发方法软件开发模型与软件工程常见的软件开发模型有:瀑布(线性)模型,演化模型(原型开发模型),螺旋模型,XP开发模型、PSP开发模型,快速原型模型,形式化描述模型等。由于现在还没有任何一种方法能够解决软件危机中的所有问题,所以在软件开发的各个阶段采用综合治理的方法,软件开发模型直接影响软件开发的周期和软件质量,是软件开发的组织管理形式,是软件工程的最重要内容。第五章软件开发模型与开发方法瀑布式模型瀑布模型概念需求分析系统设计合同需求规格说明程序设计编程测试运行及维护隐含要求及需求确认导出要求?当事人验证追踪:前向……后向……需求管理:修改需求瀑布模型概要图第五章软件开发模型与开发方法瀑布式模型瀑布模型特点瀑布模型是早期出现的软件工程模型(又称为线性模型),它在出现后一直在大量使用,很多软件组织为了有效地使用瀑布开发模型实施开发,制定了软件开发规范和一些标准。其中明确了各个阶段应交付的产品,下一阶段如何使用上一阶段的成果物,为严格控制软件开发进度,保证软件质量,成功地开发软件创造了有力条件。瀑布模型在支持结构化开发,控制软件开发的复杂性,促进软件工程化等方面起到了显著的作用。但是,它太理想化,太单纯。第五章软件开发模型与开发方法瀑布式模型瀑布模型特点瀑布模型中软件开发的各阶段之间具有如下特性:从上一阶段承接的成果物作为本阶段的工作对象;对上一阶段成果物实施本阶段的活动;给出本阶段的成果物,作为下一阶段的输入;对本阶段的工作进行评审,若本阶段的工作得到确认,则继续下阶段的工作,否则返回前一阶段或更前一阶段。第五章软件开发模型与开发方法瀑布式模型瀑布模型特点该模型最重要的缺点是缺乏灵活性,无法通过开发活动完善本来就不太确定的软件需求,开发客户真正需要的软件。使用瀑布式开发需要客户和开发人员对软件需求进行充分地交流、沟通、充分地发掘需求,使软件需求尽可能满足客户的需求,否则会造成需求不确定的开发,会给以后的开发带来大量的返工。经验表明,早期的需求分析中的错误,要改正它所需要的开销等于实现该错误所需开销的100倍到1000倍。系统需求错误对软件开发影响最大,带来的损失最大。随着软件开发项目规模的增大,该模型对于需求不能完全确定的软件开发项目将产生很大的风险。第五章软件开发模型与开发方法演化模型在项目开发的初始阶段,如果人们对软件的需求认识往往不够清楚,开发人员和客户都应当随着开发不断的深入,不断提高对系统的认识,很难做到软件开发一次成功,重复开发在所难免。演化模型就是为减少对软件认识的差异,先建立试验核心系统,交给客户使用,探索可行性,对其进行评估,再进一步提出精化系统,增强软件能力需求,或用此核心系统作为系统原型与客户共同探讨目标软件的需求,充分发掘客户对软件系统的全部需求,然后再进行深入开发。第五章软件开发模型与开发方法演化模型用户评价原型生产产品演化开发模型系统需求分析系统设计程序设计程序编码测试修改系统需求系统设计程序设计程序编码测试运行维护第五章软件开发模型与开发方法演化模型演化开发又称为原型开发。主要有三种形式:一种是客户界面原型,主要描述系统输入、输出界面,是客户了解系统操作或与系统的对话方式。另一种是可以运行的原型,它实现开发软件所要求功能的一些重要子集。再一种是可用程序原型,它基本实现重要部分或全部功能集合,但是还需要进行改进才能完全适应客户工作。第五章软件开发模型与开发方法螺旋模型螺旋模型是综合了瀑布模型和演化模型的优点,加入两者所忽视的风险分析而建立的一种软件开发模型。软件风险主要有技术风险,人力风险,资源风险,开发时间或进度风险,投资风险和市场风险等。任何软件开发项目中都包含各种风险,不同的项目其风险有大有小。在进行一项软件开发时,需要先进行风险评估,而一般风险评估都是系统分析人员和项目经理根据已往的工作经验初步作出的,其准确性很难保证。对于开发项目规模越大,软件开发中各种风险因素和不确定性就越大,项目评估准确性越小,所冒的风险越大。为减少项目开发中的风险,或将项目风险控制在可以操作的范围内,可以减少因为项目风险评估不准确带来的损坏,最有效的方式是采用螺旋模型,多次开发,在每次开发前评估风险,及时识别风险,分析风险,最终控制损失。第五章软件开发模型与开发方法螺旋模型螺旋式开发的一个完整阶段由制定计划、风险分析、实施工程、客户评估四个主要活动组成。沿螺旋线自内向外每旋转一圈,开发就完成四个主要活动,产生一个新版本。螺旋模型螺旋模型第五章软件开发模型与开发方法XP开发模型XP极端编程(eXtremeProgramming)是一种要求首先开发出最重要的特性,迅速向客户提供所需的功能,它通过非常短的迭代周期来应对需求的变化,随着代码的演进通过重构来满足新的需求,从而使整个项目失败的风险减到最小的开发方法。XP的生命周期包括4个基本活动:编码、测试、聆听和设计。第五章软件开发模型与开发方法XP开发模型客户经历新客户功能计划更新客户认可XP项目的状态变迁图第五章软件开发模型与开发方法XP开发模型XP的特点是:XP是一种开发纪律,以简单性、交流、反馈和勇气为基本宗旨;XP适合规模小、进度紧、需求变化大、质量要求严的项目。XP以最高的效率和质量来解决客户目前的问题,以最大的灵活性和最小的代价来满足客户未来的需求,XP在平衡短期和长期利益之间做了巧妙的选择。