使用反覆式開發的專案,其生命週期會包含數次反覆作業。反覆式作業會視反覆作業
所在的開發週期階段,在多個時間點時,在商業模型、需求、分析與設計、實作、測試以及部署中,納入一組粗略循序的作業。在初始階段及詳述階段的反覆作業會專注於管理、需求及設計活動;在建構階段的反覆作業會專注於設計、實作及測試;而在轉換階段的反覆作業會專注於測試和部署。反覆作業應該以固定時間形式管理,亦即,反覆作業的排程應該視為固定的,並且反覆作業內容活動的範圍要能符合該排程。
初步的設計一定會在其關鍵需求方面有一些瑕疵。愈晚發現設計方面的問題時,會導致極昂貴的超額運作,或甚至於要取消專案。
所有專案都會有一些風險存在。在生命週期的愈早期驗證您可以避開風險,就可以定出更準確的計劃。許多風險甚至於要等到開始整合系統時,才會發現。不論開發團隊多麼有經驗,都無法事先預估所有風險。
在直瀉式生命週期中,要等到生命週期的晚期,才有辦法驗證是否已遠離風險。
在反覆式生命週期中,您可以依據一份關鍵風險清單,決定要在反覆階段中累加開發什麼。由於反覆式開發會產生經過測試的可執行檔,因此您可以驗證是否已經減緩目標風險。
反覆式方法在許多方面,通常要比線性或直瀉式方法好許多。
-
風險會提早減緩,因為元素會不斷地做整合。
-
可以接納需求和策略變更。
-
促進改進及修正產品,因此可以產生更強韌的產品。
-
組織可以從這種方式學習經驗,並改進自己的流程。
-
提高重複使用的可能。
有位客戶曾經指出:「使用直瀉式方法時,所有東西在專案結束之前看起來都很好,這種情況有時甚至於持續到整合中途。然後所有東西就開始四分五裂。若使用反覆式方法,事實很難長時間隱藏。
專案管理人員們通常將反覆式方法視為畏途,認為這是一種無止境的做法。在 Rational Unified Process
中,互動式方法會做很好的控制;反覆式作業會在其數目、持續時間和目標方面做規劃。參與者的作業和職責都有劃分。並且會取得客觀的進度測量。在從一個反覆跨到下一個反覆作業時,也許會需要進行一些重做,但這也都有做審慎的管制。
反覆式方法可讓您提早減緩風險,因為許多風險只能在整合期間處理和發現。當您開始進行早期的反覆作業時,您就會執行所有規範、練習專案的許多層面:工具、現成軟體、人員技術等等。有時認為會遇到的風險並不存在,並且可能會出現新的非預期的風險。
整合並不只是最後的一個「大噪音」,而是會積極地納入所有元素。事實上,反覆式方法是最連續的整合。以前極為冗長、不確定並且困難的時間(佔專案結束時的 40% 工作量),並且很難準確規劃的工作,現在都可以劃分為 6 到 9
個小型整合單元,並且一開始時需要整合的元素極少。
反覆式方法可以讓您將會隨開發過程變更的變更需求納入考慮。
需求變更以及需求蠢動總是專案的最主要問題來源,這會導致延遲交付、錯失排程、客戶不滿意以及開發人員受到挫折。二十五年前,費特布魯克斯寫出:「計劃要丟掉一樣東西,不扔也不行」。使用者會隨著時間改變初衷。這是基本的人性。迫使使用者接受他們原先構想的系統是錯誤的做法。使用者之所以改變主意,是因為環境定義不斷變更,因此他們會對環境和技術有進一步的瞭解,並且他們會看到產品開發過渡過程中的示範版本。
反覆式生命週期為管理者提供有效進行產品變更的方式。例如,若要和現有的產品競爭,您可能會決定提早發行減少功能的產品版本,以反制競爭者的行動,或是採用其他供應商的特定技術。
反覆式也容許隨著過程改變技術。如果某些技術變更了,或因為有新的技術出現而成為標準時,專案就可以利用其優點。這在平台變更和低階基礎架構變更時,更明顯。
反覆式方法會產生更強韌的架構,因為在幾次反覆作業後,就會更正錯誤。當產品在早期的反覆作業期間不斷成熟時,就會偵測出早期的瑕疵。同時可以發現效能瓶頸並加以縮減,而不會等到交付前夕才發現。
以反覆式進行開發作業和在專案末期測試一次的方式相比,可以提供更徹底測試的產品。重要功能會在數次反覆作業中做過許多次測試,並且測試作業本身和任何測試軟體也有足夠時間成長。
開發人員可以在過程中學習,並且在整個生命週期中,也可以更完整運用能力和專長。
測試者並不需要長時間等候,只能做規劃和摩拳擦掌自己的技術,他們可以很早就開始進行測試,因此技術文件也可以提早開始撰寫。在早期的反覆評量審查中,也可以發現是否需要額外的訓練或外部協助。
流程本身可以在開發過程中改進和修正。反覆作業結束時的評量並不只是從產品排程的角度來看產品的狀態而已,同時也會分析組織和流程中是否有需要改變的地方,以便在下一次反覆時可以做得更好。
反覆式生命週期可以促進重複使用。和事先找出所有共同點比起來,這種方式會比較容易找出共同的部分,因為所有部分都只是暫時局部設計或實作。
找出和開發可重複使用的部分是很困難的事情。早期的反覆作業審查設計時,可讓軟體架構師找出確定無疑、可以重複使用的項目,並且後續的反覆作業 可讓這些項目進一步發展以及精進此共用程式碼。
使用反覆式方法比較能利用現成商用產品的優點。因為您會有多個反覆作業可以選擇這些產品、進行整合,並驗證這些產品是否適合在架構中使用。
|