软件研发常见的几种模型
瀑布模型:
在20世纪70年代,瀑布模型一直是惟一被广泛采用的软件过程模型,现在它仍然是软件工程中应用得非常广泛的过程模型。
瀑布模型是一种线性的、顺序的软件开发模型。
瀑布模型的特点:
线性化模型结构
各阶段具有里程碑特征
基于文档的驱动
严格的阶段评审机制
优点:提供了软件开发的基本框架,比靠“个人技艺”开发好的多
–有利于大型软件开发过程的人员的组织和管理
–有利于 开发方法和工具的使用
–提高了软件的质量和效率
缺点:初始阶段指出全部需求,可能用户和项目负责人需要很长的时间才能拿到需求版本,如果需要修改,则会蒙受损失。
v模型
V模型— 瀑布模型的进阶
模型是软件开发过程中的一个重要模型,由于其模型构图形似字母V,所以又称软件开发的V模型。
它通过开发和测试同时进行的方式来缩短开发周期,提高开发效率。
单元测试所对应的是详细设计环节,也就是说,单元测试的测试用例是和详细设计一起出现的,在研发人员做详细设计的时候,相应的测试人员也就把测试用例写了出来;
集成测试对应概要设计,在做模块功能分析及模块接口,数据传输方法的时候,就把集成测试用例根据概要设计中模块功能及接口等实现方法编写出来,以备以后作集成测试的时候可以直接引用;
而系统测试,就是根据需求分析而来,在系统分析人员作系统分析,编写需求说明书的时候测试人员就根据客户需求说明书,把最后能实现系统功能的各种测试用例写出来,为做最后系统测试作准备。
验收测试与用户需求对应,是非设计流程。
v模型的缺陷及解决思路
V模型仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析,系统设计的验证,需求的满足情况一直到后期的验收测试才被验证。
解决的思路是,当一个软件开发的时候,研发人员和测试人员需要同时工作,测试在软件做需求分析的同时就会有测试用例的跟踪,这样,可以尽快找出程序错误和需求偏离,从而更高效的提高程序质量,最大可能的减少成本,同时满足用户的实际软件需求。
W模型
双V(W)模型——V模型的进阶
相对于V模型,W模型增加了软件开发各阶段中同步进行的验证和确认活动。
W模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等开发输出的文档同样要测试(这里针对设计文档,一般可以划分为需求设计文档、概要设计文档、详细设计文档和代码文档),也就是说,测试与开发是同步进行的。
W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。
W模型的优点:
测试的活动与软件开发同步进行,
测试的对象不仅仅是程序,还包括需求和设计,
尽早发现软件缺陷可降低软件开发的成本。
敏捷模型
敏捷开发是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本。能够很好地适应需求变化的代码编写和 团队组织方法,也更注重软件开发中人的作用。敏捷建模(Agile Modeling,AM)的价值观包括了XP的四个价值观:沟通、简单、反馈、勇气,此外,还扩展了第五个价值观:谦逊。
敏捷模型特点:
(1)人和交互 重于过程和工具。
(2)可以工作的软件 重于求全而完备的文档。
(3)客户协作重于合同谈判。
(4)随时应对变化重于循规蹈矩。
项目的敏捷开发,敏捷开发小组主要的工作方式可以归纳为:作为一个整体工作; 按短迭代周期工作; 每次迭代交付一些成果:关注业务优先级; 检查与调整。最重要的因素恐怕是项目的规模。规模增长,面对面的沟通就愈加困难,因此敏捷方法更适用于较小的队伍,40、30、20、10人或者更少。