瀑布方法学
瀑布方法学需要保证当前阶段被满意完成后,才会进入到下一个阶段。这是不切实际的,因为任何阶段都有可能出现不可预知的问题,最终整个项目可能延迟交付。
该方法存在如下问题:
①开发过程过于死板。开发时各阶段有着严格的顺序,并且整个过程是不可逆的
②重用性差。瀑布方法学总是集中于解决一个问题
③瀑布方法学试图一次性开发出完整的系统,而不是分部分地完成系统的开发
螺旋式方法学
在螺旋式方法学中,一旦完成了最初的编码,就可以对已有的部分系统进行测试。每一次循环完成后,开发人员都可以根据用户反馈对系统中的事务或功能进行调整。经过三四遍这样的开发过程后,就可以全面测试和部署系统。
螺旋式方法学的改进之处
①用户参与到了软件的开发周期
②通过重复软件开发阶段的方式,达到完善系统的目的
但螺旋式方法学仍存在以下问题
①开发阶段仍然需要按照有序的方式进行
②在下一次开发过程中才能对错误进行更正
螺旋式方法学可以理解为先构建出系统的框架或雏形,然后再对各个部分进行细化处理
迭代式方法学
迭代式方法学允许重复各个阶段,根据需要在当前阶段前后反复开发。如上图所示,迭代在螺旋式方法学中应用。但迭代同样可以应用于瀑布方法学中。
迭代方法学为了避免混乱,需要坚持这三个原则:
①开发人员应清楚在每个阶段做什么,软件开发朝什么方向移动
②先前开发中的生产制品(图、代码、文档等)不应抛弃,应在部署系统之前不断改进
③生成制品时选用的软件工具和表示法应尽量相同,确保迭代开发中制品的一致性
迭代式方法学存在的问题:
部署系统前仍需要保证它的完整性
递增式方法学
递增式方法学将根据功能的主次顺序对系统进行开发:
系统1.0版本:包含最基本、最重要的功能
系统1.1版本:添加附加的功能
系统2.0版本:对整体进行大的修改,延续系统的生命周期
递增式方法学可以满足不断变化的需求,适应变化的市场。
合并方法学
将四种方法学合并,能够吸取它们各自的优点,消除它们各自的缺点。
总体层次上,递增式方法学规划了一系列递增部分;
螺旋式方法学要求每个递增部分都至少进行两遍;
每一遍开发过程中,瀑布式方法学指定了各个阶段和它们的顺序;
迭代式方法学允许对各个阶段进行重复或合并