源自《软件测试》Ron Pattob著
以下是4种最常用的模式,其他模式只是这些的形式变化而已:
- 大爆炸模式
- 编写边改模式
- 瀑布模式
- 螺旋模式
1.大爆炸模式
一大堆东西(人力物力)汇聚在一起,巨大的能量释放——通常很野蛮——产生了优秀的软件作品,或一堆废品。
优点:简单。没有计划进度安排,没有正规的软件开发过程,所有精力花在软件和代码的编写上。
缺点:都是缺点。但显然有些人喜欢这种模式
2.编写边改模式
与大爆炸模式比,考虑了产品需求。“没有时间做好,但总有时间完成。”
采用这种方式的小组通常最初只有粗略的想法,接着能够进行一些简单的设计,然后开始漫长地来回编写、测试、修改缺陷;等到觉得足够了,就发布产品。
适用:意在快速制作且用完就扔的小项目,如原型范例和演示程序。
这种模式是软件开发的入门,有助于理解更加正规的方法,呵呵:)
3.瀑布模式
简捷、精致、很有意义,在合适的项目中效果显著。
采用瀑布模式的项目从最初构思到最终产品要经过一系列步骤,每个步骤结束时,项目小组组织审查,并决定是否进入下一步。
如果未准备好,就继续准备,直至就绪。
需要强调三点:
- 产品的定义。开发或代码编制节点只是其中的单独一块;
- 各步骤分立、不交叉;
- 无法回溯。一旦进入某个步骤,就要完成该步骤的任务,才能继续下去。
特点:限制较多,但是对于拥有明确产品定义和训练有素的开发人员的项目而言,效果较好。
目标是在编写代码前解决所有未知问题,明确所有细节。
缺点:1.目前开发迭代明显比几年前迅速多了,很有可能想细致的时候产品本身跟不上时代了。
2.对于测试小组而言,瀑布模式是有优势的,因为一切都有完整细致的说明。但是这个步骤被放在了最后,那么一些早期出现的根本性问题得等到产品准备发布时才发现,导致软件缺陷维护成本大大增加。
4.螺旋模式
由1986年Barry Boehm在ACM的论文中提到的。目前使用相当广泛。
总体思想是一开始不必详细定义所有细节,从小开始,定义重要功能,努力实现这些功能,接受客户反馈,然后进入下一阶段。
重复这一过程,直至得到最终产品。
每一次循环包括6个步骤:
- 明确目标、可选方案和限制条件;
- 明确并化解风险;
- 评估可选方案;
- 当前阶段的开发和测试;
- 计划下一阶段;
- 确定进入下一阶段的办法。
该模式发现问题早、成本低,软件测试员喜欢该模式。通过参与最初的设计阶段,软件测试员可以尽早影响到该产品,可以把产品的来龙去脉弄得很清楚;并且在项目默契,不至于最后一分钟还在匆匆忙忙进行全面测试。
敏捷软件开发
敏捷开发Agile Software Development
详见www.agilemanifesto.org上的敏捷宣言所述,或者参考《Agile Modeling, Teach Yourself Extreme Programming in24 Hours》
以及《Extreme Progamming Practices in Action》