Categories
不学无术

软件开发生命周期模式

源自《软件测试》Ron Pattob著


以下是4种最常用的模式,其他模式只是这些的形式变化而已:

  • 大爆炸模式
  • 编写边改模式
  • 瀑布模式
  • 螺旋模式

1.大爆炸模式

2010072622114558
一大堆东西(人力物力)汇聚在一起,巨大的能量释放——通常很野蛮——产生了优秀的软件作品,或一堆废品。
优点:简单。没有计划进度安排,没有正规的软件开发过程,所有精力花在软件和代码的编写上。
缺点:都是缺点。但显然有些人喜欢这种模式
 

2.编写边改模式

与大爆炸模式比,考虑了产品需求。“没有时间做好,但总有时间完成。”
采用这种方式的小组通常最初只有粗略的想法,接着能够进行一些简单的设计,然后开始漫长地来回编写、测试、修改缺陷;等到觉得足够了,就发布产品。
适用:意在快速制作且用完就扔的小项目,如原型范例和演示程序。
这种模式是软件开发的入门,有助于理解更加正规的方法,呵呵:)
边写边改模式

3.瀑布模式

简捷、精致、很有意义,在合适的项目中效果显著。
采用瀑布模式的项目从最初构思到最终产品要经过一系列步骤,每个步骤结束时,项目小组组织审查,并决定是否进入下一步。

瀑布模式
瀑布模式

如果未准备好,就继续准备,直至就绪。
需要强调三点:

  • 产品的定义。开发或代码编制节点只是其中的单独一块;
  • 各步骤分立、不交叉;
  • 无法回溯。一旦进入某个步骤,就要完成该步骤的任务,才能继续下去。

特点:限制较多,但是对于拥有明确产品定义和训练有素的开发人员的项目而言,效果较好。
目标是在编写代码前解决所有未知问题,明确所有细节。
缺点:1.目前开发迭代明显比几年前迅速多了,很有可能想细致的时候产品本身跟不上时代了。
2.对于测试小组而言,瀑布模式是有优势的,因为一切都有完整细致的说明。但是这个步骤被放在了最后,那么一些早期出现的根本性问题得等到产品准备发布时才发现,导致软件缺陷维护成本大大增加。

4.螺旋模式

 

螺旋模式
螺旋模式

由1986年Barry Boehm在ACM的论文中提到的。目前使用相当广泛。
总体思想是一开始不必详细定义所有细节,从小开始,定义重要功能,努力实现这些功能,接受客户反馈,然后进入下一阶段。
重复这一过程,直至得到最终产品。
每一次循环包括6个步骤:

  1. 明确目标、可选方案和限制条件;
  2. 明确并化解风险;
  3. 评估可选方案;
  4. 当前阶段的开发和测试;
  5. 计划下一阶段;
  6. 确定进入下一阶段的办法。

该模式发现问题早、成本低,软件测试员喜欢该模式。通过参与最初的设计阶段,软件测试员可以尽早影响到该产品,可以把产品的来龙去脉弄得很清楚;并且在项目默契,不至于最后一分钟还在匆匆忙忙进行全面测试。

敏捷软件开发

敏捷开发Agile Software Development
详见www.agilemanifesto.org上的敏捷宣言所述,或者参考《Agile Modeling, Teach Yourself Extreme Programming in24 Hours》
以及《Extreme Progamming Practices in Action》