2.9 各种模型之间的关系
1.瀑布模型与迭代模型之间的关系
瀑布模型与迭代模型,是两种最基本的开发模型。现在要问:它们两者之间是否有关联?回答是:有!而且关联十分紧密。
在宏观上,迭代模型是动态模型,瀑布模型是静态模型。一方面,迭代模型需要经过多次反复迭代,才能形成最终产品。另一方面,迭代模型的每一次迭代,实质上都是执行一次瀑布模型,都要经历初始、精化、构造、移交4个阶段,走完瀑布模型的全过程。
在微观上,迭代模型与瀑布模型都是动态模型。迭代模型与瀑布模型在每一个开发阶段(初始、精化、构造、移交)的内部,都有一个小小的迭代过程,只有经历这一迭代过程,该阶段的开发工作才能做细做好。
瀑布模型与迭代模型之间的这种微妙关系,如图2-7所示。

图2-7 瀑布模型与迭代模型之间的关系
由图2-7可见,在迭代和瀑布模型中,你中有我、我中有你。
瀑布模型与迭代模型之间的关系,反映了人们对客观事物的认识论:要认识与掌握某一客观事物,必须经历由宏观到微观的多次反复的过程。只有从宏观上反复迭代几次,才能看清全貌,掌握事物的宏观发展规律。只有从微观上反复迭代几次,才能吃透每个细节,掌握事物的微观发展规律。
2.瀑布模型与增量模型之间的关系
同理,瀑布模型与增量模型之间也存在一定的关系。增量模型首先开发核心模块,之后再开发其他模块,这样一个一个地开发下去,直至所有模块开发完毕。然而,在开发每一个模块时,开发者一般都采用瀑布模型,从需求、设计、编码、测试一个阶段接着一个阶段地实现。所以增量模型中有瀑布模型思想,即宏观上是增量模型,微观上是瀑布模型。另外,增量模型也体现了迭代思想,每增加一个模块,就进行一次迭代,执行一次瀑布模型,所以,增量模型本质上也是迭代的。
3.瀑布模型与原型模型之间的关系
瀑布模型与原型模型之间也存在一定的关系。原型模型开始有一个原型,在此基础上以后的每一次迭代,都可能是一次瀑布模型的开发方式。所以原型模型中不但包涵了迭代模型的思想,而且包涵了瀑布模型的思想。
4.瀑布模型与螺旋模型之间的关系
螺旋模型是瀑布模型和快速原型模型的结合,快速原型模型是原型模型的简化,原型模型又是迭代模型和瀑布模型的组合,这些模型之间是相互依存的、彼此相关的。螺旋模型每一次顺时针方向旋转,相当于顺时针方向迭代一次,都是走完一次瀑布模型,这就是它们之间的关系。事实上,喷泉模型与瀑布模型也有关系。
5.XP模型与迭代模型之间的关系
XP模型是一个自由式迭代模型,它比传统的迭代模型简单、自由,甚至毫无约束。船小好调头,这就是XP模型。
6.生命周期模型之间的关系总结
由此可见,软件工程虽然来源于机器制造工程、建筑工程、计算机硬件工程,但是又与这些工程不完全相同。因为在软件开发过程中,不可能百分之百地按照事先设计好的软件蓝图(即软件文档)进行,而是一边施工、一边修改软件蓝图、一边再按照修改的软件蓝图继续开发,即按照“软件蓝图—软件开发—软件蓝图—软件开发”顺序多次循环,循环中又包含各种生命周期及开发模型,最后才能到达胜利的彼岸。这就是软件工程中各种生命周期及开发模型之间的关系,这就是软件工程与其他工程的区别,这也是软件工程的特色。