軟體過程模式
出自 MBA智库百科(https://wiki.mbalib.com/)
目錄 |
軟體過程模型是指軟體開發全部過程、活動和任務的結構框架。軟體開發包括需求、設計、程式設計和測試等階段,有時也包括維護階段。軟體過程模型能夠清晰、直觀地表達軟體開發的全過程,明確規定要完成的主要活動和任務,用來作為項目實施的基礎。對於不同的軟體項目,可以採用不同的過程模型來指導項目的實施。
20世紀70年代Winston Royce提出了軟體生命周期中著名的模型——“瀑布模型”,直到20世紀80年代初,它一直是唯一被廣泛採用的軟體開發模型。瀑布模型將軟體生命周期劃分為制訂計劃、需求分析、軟體體繫結構設計、構件設計、程式程式設計、軟體測試和運行維護等基本活動,並且規定了它們自上而下、相互銜接的固定次序。即在瀑布模型中,首先是對需求進行仔細的分析並制訂一份功能/結構說明,接著是體繫結構設計,構件設計,然後才著手程式設計。程式設計結束後進行測試,最後才是軟體的發佈。瀑布模型強調文檔的作用,要求每一個階段都有明確的文檔產出,並要求每個階段都要仔細驗證,當評審通過,且相關的產出物都已成為基線後才能夠進入到下一個階段。
任何項目都會涉及一定的風險,雖然不可能預知所有的風險,但是如果能在生命周期中儘早發現並避免儘量多的風險,那麼項目的計劃自然就更趨精確。迭代模型和瀑布模型的最大的差別就在於風險的暴露時間上。在瀑布模型中,文檔是主體,很多的問題要到最後才暴露出來,為瞭解決這些問題就會付出巨大的代價。因此,早在20世紀50年代末期,軟體領域中就出現了迭代模型。早期的迭代過程被描述為“分段模型(Stagewise model)”,其應用背景是Benington領導的美國空軍SAGE項目。
與迭代模型容易混淆的是增量模型。在增量模型中,軟體系統被看作是一系列的增量來進行設計、實現、測試和集成,每一個增量是由多個相互作用的具有特定功能的模塊構成。
增量模型在各個階段並不需要交付一個可運行的完整產品,而只要交付滿足客戶需求的一個子集的可運行產品。開發人員逐個對各個增量進行交付,這樣可以使軟體的開發較好地適應需求和環境的變化,客戶也能夠不斷地看到所開發的系統,從而降低開發的風險。
1988年,Barry Boehm正式提出了軟體生命周期的“螺旋模型”,它將瀑布模型和快速原型模型結合起來,強調了其他模型中所忽視的風險分析,特別適合於開發大型複雜的軟體系統。
螺旋模型採用一種周期性的方法來進行系統開發,基本做法是以進化的開發方式為中心,在每個項目階段使用瀑布模型法,在瀑布模型的每一個開發階段前引入一個非常嚴格的風險識別、風險分析和風險控制。
由於用戶對需求往往具有模糊性和變更性,為了能夠讓用戶確定真正的需求,在開發的初始階段,構造一個統一的軟體系統原型是有必要的。
原型法的基本思想是確定需求策略,對用戶需求進行抽取、描述和求精。它快速地、選代地建立最終系統工作模型,對問題定義採用啟發的方式,由用戶作出響應。具體做法是,在獲取一組基本的需求之後,利用一些比較高級的軟體工具可視化地開發環境,快速地建立一個目標系統的最初版本,並把它交給用戶進行試用,發現其中的不足,再進行補充和修改,產生新的版本。經過這樣一個反覆補充和修改過程,直到用戶滿意為止。
統一過程(Unified Process,UP)是一種現代的軟體開發過程模型,它的歷史最早可以回溯到1967的Ericsson方法。UP把複雜系統構造為一組相互聯繫的功能塊,小的功能塊相連形成更大的功能塊以構造出完整的系統。儘管對於只觸及到系統的部分的任何成員來說,整個系統可能是不可理解的,但是當系統被分成更小的組件時,人們可以理解每個組件提供的服務(即組件的介面)以及這些組件是如何協調工作的。或者可以說,系統被劃分為具有較大的功能的子系統,每個子系統又由具有更小的功能塊(組件)所實現。
UP方法是“分而治之”的思想和現在熟知的基於組件的開發(Component—Based Development,CBD)方法的有機結合。
統一過程模型是一種以“用例和風險驅動、以體繫結構為核心、迭代及增量”為特征的軟體過程框架,一般由UML方法和工具支持。用例是捕獲需求的方法,因此,也可以說UP是需求驅動的。
UP的另一個驅動就是風險,因為如果你不主動預測和防範風險,風險就會主動攻擊你。UP需要對軟體開發中的風險進行分析、預測並關註軟體的構造。
在基於組件的開發中,體繫結構描述了系統的整體框架:如何把系統劃分成組件以及這些組件如何進行交互和部署在硬體上。UP方法實際上就是開發和演進一個健壯的系統體繫結構。
此外,UP也是迭代和增量的。在UP的迭代構建中,每個迭代包括五個核心工作流:
需求R——捕捉系統應該做什麼。
分析A——精化和結構化需求。
設計D——基於系統體繫結構來實現需求。
實現I——構造軟體系統。
測試T——驗證實現是否達到預期效果。