2.9 各種模型之間的關系
1.瀑布模型與迭代模型之間的關系
瀑布模型與迭代模型,是兩種最基本的開發模型。現在要問:它們兩者之間是否有關聯?回答是:有!而且關聯十分緊密。
在宏觀上,迭代模型是動態模型,瀑布模型是靜態模型。一方面,迭代模型需要經過多次反復迭代,才能形成最終產品。另一方面,迭代模型的每一次迭代,實質上都是執行一次瀑布模型,都要經歷初始、精化、構造、移交4個階段,走完瀑布模型的全過程。
在微觀上,迭代模型與瀑布模型都是動態模型。迭代模型與瀑布模型在每一個開發階段(初始、精化、構造、移交)的內部,都有一個小小的迭代過程,只有經歷這一迭代過程,該階段的開發工作才能做細做好。
瀑布模型與迭代模型之間的這種微妙關系,如圖2-7所示。

圖2-7 瀑布模型與迭代模型之間的關系
由圖2-7可見,在迭代和瀑布模型中,你中有我、我中有你。
瀑布模型與迭代模型之間的關系,反映了人們對客觀事物的認識論:要認識與掌握某一客觀事物,必須經歷由宏觀到微觀的多次反復的過程。只有從宏觀上反復迭代幾次,才能看清全貌,掌握事物的宏觀發展規律。只有從微觀上反復迭代幾次,才能吃透每個細節,掌握事物的微觀發展規律。
2.瀑布模型與增量模型之間的關系
同理,瀑布模型與增量模型之間也存在一定的關系。增量模型首先開發核心模塊,之后再開發其他模塊,這樣一個一個地開發下去,直至所有模塊開發完畢。然而,在開發每一個模塊時,開發者一般都采用瀑布模型,從需求、設計、編碼、測試一個階段接著一個階段地實現。所以增量模型中有瀑布模型思想,即宏觀上是增量模型,微觀上是瀑布模型。另外,增量模型也體現了迭代思想,每增加一個模塊,就進行一次迭代,執行一次瀑布模型,所以,增量模型本質上也是迭代的。
3.瀑布模型與原型模型之間的關系
瀑布模型與原型模型之間也存在一定的關系。原型模型開始有一個原型,在此基礎上以后的每一次迭代,都可能是一次瀑布模型的開發方式。所以原型模型中不但包涵了迭代模型的思想,而且包涵了瀑布模型的思想。
4.瀑布模型與螺旋模型之間的關系
螺旋模型是瀑布模型和快速原型模型的結合,快速原型模型是原型模型的簡化,原型模型又是迭代模型和瀑布模型的組合,這些模型之間是相互依存的、彼此相關的。螺旋模型每一次順時針方向旋轉,相當于順時針方向迭代一次,都是走完一次瀑布模型,這就是它們之間的關系。事實上,噴泉模型與瀑布模型也有關系。
5.XP模型與迭代模型之間的關系
XP模型是一個自由式迭代模型,它比傳統的迭代模型簡單、自由,甚至毫無約束。船小好調頭,這就是XP模型。
6.生命周期模型之間的關系總結
由此可見,軟件工程雖然來源于機器制造工程、建筑工程、計算機硬件工程,但是又與這些工程不完全相同。因為在軟件開發過程中,不可能百分之百地按照事先設計好的軟件藍圖(即軟件文檔)進行,而是一邊施工、一邊修改軟件藍圖、一邊再按照修改的軟件藍圖繼續開發,即按照“軟件藍圖—軟件開發—軟件藍圖—軟件開發”順序多次循環,循環中又包含各種生命周期及開發模型,最后才能到達勝利的彼岸。這就是軟件工程中各種生命周期及開發模型之間的關系,這就是軟件工程與其他工程的區別,這也是軟件工程的特色。