軟件開發(fā)流程
作者:濟南雷鳴科技 文章來源:本站原創(chuàng) 更新時間:2023-11-07
1. 傳統(tǒng)開發(fā)流程的問題
傳統(tǒng)的軟件開發(fā)流程是一個文檔驅(qū)動的流程,它將整個軟件開發(fā)過程劃分為順序相接的幾個階段,每個階段都必需完成全部規(guī)定的任務(文檔)后才能夠進入下一個階段。如必須完成全部的系統(tǒng)需求規(guī)格說明書之后才能夠進入概要設計階段,編碼必需在系統(tǒng)設計完成之后才能夠進行。這就意味著只有當所有的系統(tǒng)模塊全部開發(fā)完成之后,我們才進行系統(tǒng)集成,對于一個由上百個模塊組的復雜系統(tǒng)來說,這是一個非常艱巨而漫長的工作。
隨著我們所開發(fā)的軟件項目越來越復雜,傳統(tǒng)的瀑布型開發(fā)流程不斷地暴露出以下問題:
?。?)需求或設計中的錯誤往往只有到了項目后期才能夠被發(fā)現(xiàn)例如:系統(tǒng)交付客戶之后才發(fā)現(xiàn)原先對于需求的理解是錯誤的,系統(tǒng)設計中的問題要到測試階段才能被發(fā)現(xiàn)。
?。?)對于項目風險的控制能力較弱項目風險在項目開發(fā)較晚的時候才能夠真正降低,往往是經(jīng)過系統(tǒng)測試之后,才能確定該設計是否能夠真正滿足系統(tǒng)需求。
?。?)軟件項目常常延期完成或開發(fā)費用超出預算項目開發(fā)進度往往會被意外發(fā)生的問題所打亂,需要進行返工或其他一些額外的開發(fā)周期,造成項目延期或費用超支。
(4)項目管理人員專注于文檔的完成和審核來估計項目的進展情況所以項目經(jīng)理對于項目狀態(tài)的估計往往是不準確的,當他回答系統(tǒng)已完成了80%的開發(fā)任務時,剩下20%的開發(fā)任務實際上消耗的是整個項目80%的開發(fā)資源。
在傳統(tǒng)的瀑布模型中,需求和設計中的問題是無法在項目開發(fā)的前期被檢測出來的,只有當?shù)谝淮蜗到y(tǒng)集成時,這些設計缺陷才會在測試中暴露出來,從而導致一系列的返工:重新設計、編碼、測試,進而導致項目的延期和開發(fā)成本的上升。
2. 采用迭代化開發(fā)控制項目風險
為了解決傳統(tǒng)軟件開發(fā)流程中的問題,我們建議采用迭代化的開發(fā)方法來取代瀑布模型。在瀑布模型中,我們要完成的是整個軟件系統(tǒng)開發(fā)這個大目標。在迭代化的方法中,我們將整個項目的開發(fā)目標劃分成為一些更易于完成和達到的階段性小目標,這些小目標都有一個定義明確的階段性評估標準。迭代就是為了完成一定的階段性目標而所從事的一系列開發(fā)活動,在每個迭代開始前都要根據(jù)項目當前的狀態(tài)和所要達到的階段性目標制定迭代計劃,整個迭代過程包含了需求、設計、實施(編碼)、部署、測試等各種類型的開發(fā)活動,迭代完成之后需要對迭代完成的結(jié)果進行評估,并以此為依據(jù)來制定下一次迭代的目標。
與傳統(tǒng)的瀑布式開發(fā)模型相比較,迭代化開發(fā)具有以下特點:
(1)允許變更需求
需求總是會變化,這是事實。給項目帶來麻煩的常常主要是需求變化和需求"蠕變",它們會導致延期交付、工期延誤、客戶不滿意、開發(fā)人員受挫。通過向用戶演示迭代所產(chǎn)生的部分系統(tǒng)功能,我們可以盡早地收集用戶對于系統(tǒng)的反饋,及時改正對于用戶需求的理解偏差,從而保證開發(fā)出來的系統(tǒng)真正地解決客戶的問題。
(2)逐步集成元素
在傳統(tǒng)的項目開發(fā)中,由于要求一下子集成系統(tǒng)中所有的模塊,集成階段往往要占到整個項目很大比例的工作量(最高可達40%),這一階段的工作經(jīng)常是不確定并且非常棘手。在迭代式方法中,集成可以說是連續(xù)不斷的,每一次迭代都會增量式集成一些新的系統(tǒng)功能,要集成的元素都比過去少得多,所以工作量和難度都是比較低的。
(3)盡早降低風險
迭代化開發(fā)的主要指導原則就是以架構(gòu)為中心,在早期的迭代中所要解決的主要問題就是盡快確定系統(tǒng)架構(gòu),通過幾次迭代來盡快地設計出能夠滿足核心需求的系統(tǒng)架構(gòu),這樣可以迅速降低整個項目的風險。等到系統(tǒng)架構(gòu)穩(wěn)定之后,項目的風險就比較低了,這個時候再去實現(xiàn)系統(tǒng)中尚未完成的功能,進而完成整個項目。