生命周期模型及选择指南文档格式.docx
《生命周期模型及选择指南文档格式.docx》由会员分享,可在线阅读,更多相关《生命周期模型及选择指南文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
2015-1-9
1.1
制度化发布
4.
5.
6.
7.
8.
9.
软件生命周期模型及选择指南
1目的和范围
本文用以描述中地公司推荐的软件项目生命周期(以下简称LC)模型,并说明如何根据项目特性选择合适的LC模型。
2生命周期可选模型简介
软件生命周期指软件开发全部过程、活动和任务的结构框架。
软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。
2.1瀑布模型
2.1.1标准瀑布模型
.1特点
1、阶段间具有顺序性和依赖性:
必须等前一阶段的工作完成之后,才能开始后一阶段的输入。
对本阶段工作进行评审,若得到确认,则继续下阶段工作,否则返回前一阶段,甚至更前阶段。
只有前一阶段输出正确,后一阶段才能正确;
2、推迟实现的观点:
在编码之前,设置了需求分析与设计的各个阶段,分析与设计阶段的根本任务规定在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现;
3、质量保证的观点是每个阶段都坚持两个做法:
规定文档,没有文档就没有完成该段任务;
每个阶段结束前都要对完成的文档进行评审,以便尽早发现问题,改正错误。
.2缺点
1、无法解决软件需求不明确或不准确的问题;
2、依赖于早期进行的唯一的一次需求调查,不能适应需求的变化;
3、由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程;
4、风险往往迟至后期的开发阶段才显露,因而失去及早纠正的机会。
.3适用项目
1、充分理解用户需求,且需求是确定不变的;
2、用户有一定的能力,对需求的表述是确切的;
3、充分理解该解决方案的技术和体系;
4、需要一个可维护性和可支持性较高的解决方案;
5、所有过程工作产品的控制基线,需要有可见度和可靠性;
6、适用于新的有较多用户的产品、平台/中间件开发项目,或者是用户对开发过程有严格要求的工程定制项目;
7、项目经理有一定的项目管理经验;
8、需求清晰明了且时间要求宽松的软件开发项目;
9、规模小、需求简单、功能单一的项目。
.4阶段划分
1、需求阶段
2、设计阶段
3、编码阶段
4、测试阶段
5、发布阶段
6、实施阶段
7、运行维护阶段
2.1.2V模型
V模型其实就是瀑布模型,它是一种线型顺序模型,是项目自始至终按照一定顺序的步骤从需求分析进展到系统测试直到提交用户使用,它提供了一种结构化的、自顶向下的软件开发方法,每阶段主要工作成果从一个阶段传递到下一个阶段,必须经过严格的评审或测试,以判定是否可以开始下一阶段工作,各阶段相互独立、不重叠。
V字模型是所有生命周期模型的基础。
流程图如下所示:
1、强调开发的阶段性;
2、强调早期的计划及需求调查与分析;
3、强调产品测试的完备性;
4、过程文档齐全,便于追溯和重用;
5、过程的可见性强,便于过程质量控制;
6、只要需求是稳定的,则进度也是稳定的。
2、灵活性差,依赖于早期进行的需求调查,不能适应需求的变化;
3、由于是单一流程,开发中的经验教训不能及时反馈并应用于本产品的过程改进。
1、充分理解用户需求,需求是确定不变的;
8、要求开发周期时间较充分。
1、需求开发
2、项目计划
3、概要设计
4、详细设计
5、编码和单元测试
6、集成测试
7、系统测试
8、验收测试
9、验收
10、发布
2.1.3中等简化V字模型(V4模型)
针对项目的实际情况,对V字(瀑布)模型进行演化是必要的。
中等简化V字模型是在标准瀑布模型基础上根据组织中一些小项目等的实际需要演化来的。
1、可以适应中等和较小项目的较灵活的管理需要;
2、提供中度的进度控制,相对标准V字模型,可以减少部分项目管理工作量和开支;
3、在产品交付方面进行合理的控制。
因项目开发流程相对简化,项目的风险增大,质量隐患增大。
1、项目的复杂度、团队的规模、工作量和周转时间都是中等程度的;
2、需求和技术都已被充分理解;
3、项目经理有较高的项目管理和控制的经验。
2、设计
3、编码和单元测试
4、系统测试
5、验收测试
6、验收
7、发布
2.1.4最简化V字模型(V3模型)
最简化V字模型在标准瀑布模型基础上根据组织中的小项目和维护项目等的实际需要演化而来。
1、可以适应小项目的灵活性;
2、减少过程复杂带来的产品提交时间延长;
3、过程相对简单,项目管理控制的工作量相对较少;
4、提供中度的进度控制;
5、减少开支。
1、对阶段性的控制较弱,问题不能及时发现;
2、项目前期控制较弱,使得项目产品质量留有隐患。
1、项目的规模和工作量都比较小;
2、项目具有较小的开发团队;
3、需求和技术都是被充分确定和理解的;
4、系统具有低复杂度,不需要独立的设计阶段;
5、产品的体系结构是稳定的;
6、项目经理经验丰富,对项目有较好的管理控制能力;
7、项目开发周期较短。
1、集成设计阶段
2、编码和单元测试
3、系统测试
4、验收
5、发布
2.2原型模型
原型模型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。
一般来说,根据客户的需要在很短的时间内解决用户最迫切需要,完成一个可以演示的产品,这个产品只实现部分功能。
原型最重要的是为了确定用户的真正需求。
原型模型在克服瀑布模型缺点、减少由于软件需求不明确给开发工作带来风险方面,确有显著效果。
2.2.1原型模型的形式
.1抛弃型
开发原型为了获取需求,在原型开发之后,已获取了更为清晰的需求信息,原型无需保留而废弃。
.2渐进型
原型作为软件最终产品的一部分,可满足用户的部分需求,如进一步在此基础上开发,则可在实现其他需求后交付使用。
2.2.2特点
1、用户需求不完全或不确定;
2、针对总体的轮廓先建立一个用户需求原型,然后进行评价和反馈;
3、对原型进行扩充、改进和求精;
4、完成最终系统。
2.2.3缺点
1、没有考虑软件的整体质量和长期的可维护性;
2、大部分情况是不合适的操作算法被采用,目的是为了演示功能,不合适的开发工具被采用,仅仅为了它的方便,还有不合适的操作系统被选择等等;
3、由于达不到质量要求产品可能被抛弃,而采用新的模型重新设计。
2.2.4适用项目
1、客户能提出一般性的目标,但不能标出详细的输入、处理及输出需求;
或开发者不能确定算法的有效性、操作系统的适应性、及人机交互的形式;
2、用户定义了一组一般性目标,但不能标识出详细的输入、处理及输出需求;
3、开发者可能不能确定算法的有效性、操作系统的适应性或人机交互的形式。
2.2.5阶段划分
.1抛弃型原型模型的阶段划分
1、需求分析阶段——获取业务需求
2、原型开发阶段——主要是界面实现,业务流程用图形方式表示
3、原型评价阶段——和客户确认,完善业务需求
4、系统设计
5、系统实现
.2渐进型原型模型的阶段划分
1、需求分析阶段(需求分析、原型实现、客户评价)
2.3螺旋模型
螺旋模型是将瀑布模型与演化模型结合起来,并且加入两种模型均忽略了的风险分析。
集
成
与
测
试
原型1
原型2
原型3
可运行
原型
需求计划
生存期计划
开
发
计
划
软件
需求
需求确认
设计确认
与验证
产品
设计
详细设计
风
险
分
析
验收
测试
实现
集成
单元
编码
提交
评审
累计
成本
实施工程
开发、验证
下一产品
风险分析
评价方案,识别
风险、消除风险
制订计划
决定目标
方案和限制
客户评价
2.3.1特点
风险驱动的,关注风险,风险分析后决策是否继续进行项目。
.1优点
1、对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;
2、减少了过多测试或测试不足;
3、维护和开发之间并没有本质区别。
1、执行风险分析的费用较高,会大大降低项目的利润。
一般只有大型项目才有必要采用此模型,并且要有足够的经费支持;
2、使用该模型要求开发人员具备相当丰富的风险分析经验,如果项目实际上正走向灾难,而分析人员还认为一切良好,那么项目就会失败;
3、螺旋模型过于复杂,不及瀑布模型那么容易理解和使用。
2.3.2适用项目
主要是用于大规模软件项目,需求不明朗,风险比较高的项目。
2.3.3阶段划分
螺旋模型沿着螺线旋转,由内向外每旋转一圈便开发出更完善的一个新版本。
一个螺旋式周期可分为:
1、制定计划:
确定软件目标,选定实施方案,弄清项目开发的限制条件;
2、风险分析:
分析所选方案,考虑如何识别和消除风险;
3、实施工程:
实施软件开发(需求、设计、编码、测试等按螺旋周期推进);
4、客户评估:
评价本轮的开发结果,提出修正建议,计划下一轮的工作。
2.4增量模型
增量模型融合了瀑布模型的基本成分和原型的迭代特征。
采用随着日程时间的进展而交错的线性序列。
把软件产品作为一系列的增量构件来分析、设计、编码、测试和发布。
2.4.1特点
1、第一阶段增量往往是核心产品;
2、每一阶段增量均为可发布一个版本,早期的增量是最终产品的“可拆卸”版本。
1、人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个阶段增量。
同时人员可以并行工作;
2、需求明确部分可以分阶段实现,逐步优化系统需求,逐步集成系统元素;
3、阶段交付,当配备的人员不能在设定的期限内完成产品时或者客户/市场要求进度急迫时,提供了一种先推出核心产品的途径,这样阶段交付部分功能给客户,对客户起到镇静剂的作用。
新开发的“增量”在合并进原有软件系统时,可能破坏原来构造好了的内容。
2.4.2适用项目
适用于需求逐渐清晰的软件项目。
2.4.3阶段划分
1、计划阶段
2、第一阶段(需求、设计、编码、测试、发布)
3、第二阶段(需求、设计、编码、测