第一,大棒开发法。
它是源于能量爆发创造宇宙,万物都由能量和物质积聚而成的理论,但如果不是遵循某种正确的排列和组合,形成的将不是预先期望的事物;大棒模式与上述理论一样:一大堆能量(这里指开发软件所需的人力和物力)放在一起,巨大的能量进行释放,通常的结果可能是产生了优秀的软件产品或成为一堆“废品”(不成功的软件)。其优点为:思路简单,通常可能是开发者的“突发奇想”;其缺点为:开发过程是非工程化的,随意性大。对于该方法的测试,有时会非常的困难。
第二,边写边改法。
它采用边写边改法的软件开发通常只是有了比较粗略的想法就开始进行简单的设计,然后进行较长的反复编写、测试与修复这样一个循环的过程;在认为无法更精细地描述软件产品要求时,就发布产品;如下图所示:
其优点为:能够较为迅速地展现成果,适合需要快速制作而且用完就扔的小项目,如示范程序、演示程序等;其缺点为:编码和测试可能将是长期的循环往复的过程。
第三,瀑布法。
瀑布模式是将软件生命周期的各项活动,规定为按照固定顺序相连的若干个阶段性工作,形如瀑布流水,最终得到软件产品;如图下所示:
其优点为:易于理解,调研开发的阶段性,强调早期计划及需求调查,确定何时能够交付产品及何时进行评审与测试。其缺点为:需求调查分析只进行一次,不能适应需求变化;顺序的开发流程,使得开发中的经验教训不能反馈到该项目的开发中去;不能反映出软件开发过程的反复与迭代性;没有包含任何类型的风险评估;开发中出现的问题直到开发后期才能够显露,因此失去及早纠正的机会。
第四,快速原型法。
根据客户需求在较短的时间内解决用户最迫切解决的问题,完成可演示的产品;这个产品只实现最重要功能,在得到用户的更加明确的需求之后,原型将丢弃;如图下所示:
第五,螺旋模式法。
螺旋模式是瀑布模式与边写边改演化模式相结合,并加入风险评估所建立的软件开发模式。其主要思想是:在开始时不必详细定义所有细节,而是从小开始,定义重要功能,尽量实现,接受客户反馈,进入下一阶段,并重复上述过程,直到获得最终产品;如图下所示:
每一螺旋(开发阶段)包括5个步骤:1)确定目标,选择方案和限制条件;2)对方案风险进行评估,并能解决风险;3)进行本阶段的开发和测试;4)计划下一阶段;5)确定进入下阶段的方法。其优点为:严格的全过程风险管理,强调各开发阶段的质量,提供机会评估项目是否有价值继续下去。