瀑布模型
项目计划—需求分析—概要设计—详细设计—编码—单元测试—测试—运行维护—评估
项目计划:
确定开发总目标;
给出软件功能、性能、可靠性、接口等方面的设想;
研究项目可行性,探讨问题解决方案;
对可供使用的资源、成本,可取得的效益和开发进度做出评估;
制定完成开发任务的实施计划;
需求分析:
设计:
设计是软件工程的核心,需要完成设计说明书;
概要设计,将需求转换为相应的体系结构,每一部分都是功能明确的模块;
详细设计,对每个模块要完成的工作进行详细的描述;
编码:
以某种设计语言写成源程序清单,并建立数据库;
测试:
运维:交付用户使用后,由于各种原因对其修改;
周期模型——V模型
它的重要意义在于,非常明确的表明了测试过程中存在的不同的级别,并且非常清晰的描述了这些测试阶段和开发阶段的对应关系。
相对于V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。
W模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。
周期模型——原型化模型
原型化模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,经过和用户针对原型的讨论和交流,弄清需求以便真正把握用户需要的软件产品是什么样子的。充分了解后,再在原型基础上开发出用户满意的产品。
原型化模型减少了瀑布原型中因为软件需求不明确而给开发工作带来的风险。
周期模型——螺旋模型
螺旋模型,尤其重视风险分析阶段,特别适用于庞大并且复杂,非常高风险的项目。通常螺旋模型由四个阶段组成:制定计划、风险分析、实施工程和客户评估。
螺旋模型兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。
螺旋模型基本做法是在“瀑布模型”的每一个开发阶段前引入一个非常严格的风险识别、风险分析和风险控制,它把软件项目分解成一个个小项目。每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定。
周期模型——迭代模型
迭代模型,摒弃了传统的需求分析,设计,编码,测试的流程,而是将整个生命周期变成若干个冲刺(Sprint)阶段,而每一个阶段都是由以上若干或者全部传统的流程组成,在每一个阶段中,都会包含下面四个阶段:初始阶段,细化阶段,构建阶段,交付阶段。
在初始阶段中,确认本次冲刺的范围,边界,系统选择的架构,计划,以及所需要的资源等信息。
在细化阶段中,对问题进行建域,创建开发案例,创建模板以及准备工具等。
在构建阶段的主要任务就是完成构建的开发并且进行测试,将完成的构建集成为产品,并且测试所有的功能(CI)。
在交付阶段,主要是完成本次冲刺,将软件产品交付给相关的干系人。
在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求分析、设计、实施和测试工作流程。实质上,它类似小型的瀑布式项目。