一、软件生命周期简介
对于软件生命周期的定义引用百度百科:软件生命周期(SDLC,Systems Development Life Cycle,SDLC)是软件的产生直到报废或停止使用的生命周期。这种周期内包括产品问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到停止使用等阶段。且在每个阶段都必须形成文档以供验收、审查,才能进入下一个阶段,即按部就班、逐步推进。
但这种定义方式随着设计方法和技术的成熟,以及项目性质不一会适当的调整,已达到更高的效率和保证项目质量。其中与软件生命周期的模型使用息息相关。
二、软件生命周期模型
软件生命周期模型有瀑布模型、迭代模型、增量模型、原型模型、螺旋模型。
1. 瀑布模型/改进的瀑布模型(传统模型)
1.1 瀑布模型概念
瀑布模型与百科百科的定义是相符合的,因此也可以称作为是传统模型。严格按照需求->分析->设计->开发->测试的阶段进行,每个阶段执行时都会进行必要的约束保证质量,并有明确的文档产出。验收完成后才可进入到下一个阶段。
瀑布模型1.2 改进的瀑布模型概念
对于项目需求繁杂或者实现方案比较复杂时,可以将需求进行拆分,按模块/功能并行开发,全部完成后再集成处理,每个模块仍然遵循瀑布模型的思路,即为改进的瀑布模型。
改进的瀑布模型1.3 瀑布模型的优缺点
优点:
1)软件产品质量较高;
2)前置发现产品缺陷;
3)项目把控能力强;
4)项目扩展性和可维护性强;
5)责任划分明确。
项目流程按照流水线作业一样执行,且每个阶段责任人、任务、标准明确,同时也有明确的文档输出,使整个项目周期得到把控,也便于后期的扩展和维护。
缺点:
1)若需求复杂,人员能力要求较高;
2)投入人力集中,造成过多的闲置;
3)用户在系统稳定后介入,可能会出现与预想不符的情况;
4)每个阶段相对独立,信息不能及时同步;
5)项目风险延到后期开发阶段才能发现。
由于瀑布模型阶段分明、人员投入大,很多项目为了赶进度在前期需求不明确就开始开发,过于简化需求和设计阶段。如果是大型项目,很可能会出现大量的返工反而会影响进度。
2. 迭代模型
2.1 迭代模型概念
迭代模型同瀑布模型一样,项目也会遵循需求->分析->设计->开发->测试->发布的流程,但不同的是,在前期需求分析阶段,会将所有的需求按照核心功能点-模块-关联模块进行拆分并分期实现,然后以迭代的形式逐步完善功能,在每一次迭代完成后系统都是可以交付的原型,往往第一次迭代都是产品最核心的功能。
迭代模型2.2 迭代模型的优缺点
优点:
1)在需求分析阶段就给出了相对完成的架构设计方案,便于后面迭代的扩展和完善;
2)第一阶段核心功能交互用户后,可以及早获取反馈结果,对后期的迭代起到指导作用;
3)人员分配灵活,前期不用投入很多人力;
4)在前期能够很好的控制风险,并且解决难度系数较低,影响范围也较小。
缺点:
1)对项目需求明晰度要求很高;
2)对整个项目周期要求较宽裕,政治任务需排除。
3. 增量模型
3.1 增量模型概念
增量迭代是统一软件开发过程(RUP)经常使用的一种软件开发模型,因此增量模型和迭代模型经常放在一起使用,其基本流程都一样,唯一不同的是在对需求进行拆分的时候划分标准不一样。拆分时将需求按照模块进行分类,以模块递增的方式逐步完善。
增量模型3.3 增量模型的优缺点
优点:
1)同迭代模型一样,对风险预测能力和解决能力很强;
2)人员分配灵活,刚开始不用投入大量;
缺点:
1)要对拆分后模块之间的关联性很熟悉,避免后续增量中不兼容,扩展性受影响,要求最初的架构设计必须考虑很周到。
4. 原型模型
4.1 原型模型概念
原型模型一般在需求提出初期,用户迫切需要体验产品,开发人员根据核心功能需求快速实现的一款可以用来演示的产品,形成demo,可快速挖掘是否是用户真正想要的产品。但这种模型在整个软件项目周期内只可能存在于这期间,当用户了解了demo后决定是抛弃还是继续采用,抛弃相当于需求双方没有达成一致,可以再次采用原型模型输出给用户确认,若选择不抛弃继续采用,原型模型就会被抛弃,选择其他模型继续开发。
原型模型4.2 原型模型的优缺点
优点:
1)快速了解用户真正想要实现的样子,整个项目可行性强。
缺点:
1)没有考虑软件的整体质量和长期的扩展和维护;
2)快速输出demo的方法不一定会真正采用;
3)只在用户需求目标模糊,急需看到效果的情况下使用。
5. 螺旋模型
5.1 螺旋模型概念
螺旋模型的显著特点就是强调风险,以风险驱动的方式完善项目。将瀑布模型和原型模型结合起来,在每一个阶段加入风险评估,以减少项目的风险。螺旋模型将项目划分为四个阶段:
1)制定计划:在需求分析阶段指定项目目标、整体架构,包括备选方案和相关约束条件。
2)风险分析:对于复杂的大型软件,需要输出多个原型模型,在针对每个原型模型进行风险分析,预估风险并规避风险。
3)实施工程:对最终确定的原型模型按照瀑布模型的流程进行。
4)用户评价。对最终输出的系统交由客户进行评价,并获取反馈结果。
5.2 螺旋模型的优缺点
优点:
1)每个阶段都有用户参加,确保最终实现不偏离用户真正需求;
2)设计上具有灵活性,当不满足用户需求或风险大可以即使变更;
3)减少了整个开发测试的成本。
缺点:
1)对风险评估的经验和知识要求很高,需要有专业人员作出决断;
2)只适用于规模大、风险高的项目。
三、模型对比
通过第一章对五中软件生命周期的模型进行了详细的说明,下面将五中模型通过一张表格对比说明其优缺点。
模型对比通过表格可以看出,每种模型都有优缺点,具体采用哪种模型或者多种模型的组合,要根据项目实际情况进行选择。借鉴别人的总结经验如下:
1.在前期需求明确的情况下尽量采用瀑布模型或改进型的瀑布模型。
2.在用户无信息系统使用经验,需求分析人员技能不足情况下一定要借助原型。
3.在不确定性因素很多,很多东西前面无法计划情况下尽量采用增量迭代和螺旋模型。
4.在需求不稳定情况下尽量采用增量迭代模型。
5.在资金和成本无法一次到位情况下可以采用增量模型,软件产品分多个版本进行发布。
6.对于完全多个独立功能开发可以在需求阶段就分功能并行,但每个功能内都应该遵循瀑布模型。
7.对于全新系统的开发必须在总体设计完成后再开始增量或并行。
8.对于编码人员经验较少情况下建议不要采用敏捷或迭代等生命周期模型。
9.增量、迭代和原型可以综合使用,但每一次增量或迭代都必须有明确的交付和出口准则。
四、测试工作梳理
不管项目选择什么样的软件生命周期模型,测试在其中的工作任务都一样,
那在每个阶段,测试需要做什么,怎么做,从哪些方面可以提升效率,如下图。
参考相关文章:http://blog.csdn.net/tracymm19891990/article/details/7984134
网友评论