敏捷開發框架下的軟體工程/完整流程/原型設計
| 系統隱喻 |
|
|
在傳統的瀑布模型中,直到實施階段(專案進行很長時間後)才進行很少的編碼。這種結構化的開發在以下情況下最有效:
- 存在一套高質量、穩定的使用者需求
- 開發人員以前構建過類似的系統
- 專案不很複雜
這些特點很少見,特別是在學生專案中。
另一方面,在快速應用程式開發中,編碼幾乎從第一天就開始,開發的系統本身就被用來描述其自身的需求。當系統不是很複雜,增量構建是可行的時,這種方法效果很好,也就是說,每個功能元件都可以新增到系統中而不會造成干擾。
我們已經確定敏捷開發框架是結構化方法和敏捷方法之間的折衷方案,在這裡我們再次這樣做,並將 ADF 描述為一種革命性的原型方法。
三個組成部分:原型設計;方法和革命性(好吧,順序略有不同)。
讓我們從原型設計不是什麼開始:它不是我們用來稱呼第一次嘗試失敗的名稱:原型設計是我們有意為之,目的是為了回答一個具體的問題。
原型設計由 Sallis 等人(1995)定義為“工作模型”。這表明了抽象級別:“工作”意味著系統可以執行 - “模型”意味著它不能完全執行。兩者合起來意味著原型設計是一個簡化的版本,我們需要的部分在那裡,我們不需要的部分則被刪掉了。確定我們需要什麼取決於我們要回答的問題。
這是一種方法,它不是駭客行為。駭客方法是,在遇到問題時,你坐下來開始程式設計。這對小型專案或愛好開發來說可能有效,因為在開發過程中確定規範並調整程式碼是可以的。它不適用於更復雜的系統,因為在後期重新修改會產生高昂的成本。
原型設計模型有幾個優點:
- 能夠快速將一個功能性和有用的系統放到使用者手中
- 在工作開始之前,不需要完成資訊需求
- 能夠在低風險或低成本的情況下嘗試想法
- 提高使用者對過程的興趣和理解
- 提高使用者對最終系統的興趣和滿意度。
原型設計最重要的方面是它增加了你的知識。應該以這種思路來開發它。這就是原型設計的嚴謹性所在。有幾種完整的原型設計方法,如動態系統開發方法 (DSDM),但我們使用一種更成熟的方法:科學方法。
問題:有時會以假設的形式提出
方法:一個經過精心設計的測試,以給出該問題的答案(並且僅此而已,“勉強足夠”的概念在這裡適用)
評估答案
我們還主張對原型設計採用一種革命性的方法。這意味著,雖然我們從每個原型中學習,但幾乎沒有,如果有的話,它們的設計會被繼續使用。這有時被稱為“一次性原型”。
布魯克斯在他的著名著作《人月神話》(1975)中將一次性原型應用於計算機領域,他在書中尋找一種神奇的銀彈,他認為“計劃扔掉一個,你會的”。雖然這本書(及其建議)仍然受到高度重視,但現在這句話(包括布魯克斯自己)都被認為有點過於簡單。他的論點假設了一個標準的瀑布模型,但你只有兩次機會來做對。
一次性原型避免了原型的一些潛在缺點:
- 避免了使用者不願意放棄原型設計的危險。由於原型設計明確地用於回答具體的問題,使用者從一開始就知道這不是“最終的”系統。這意味著你不會處於這樣一種境地:“你知道我們幾個月前交付的系統嗎?嗯,事實證明它有很多錯誤,所以這裡有一個新的。”
- 由於原型設計明確地用於分析和設計,因此避免了原型設計成為分析的替代品的危險。
- 由於想法和技術被推動向前,而不是實際程式碼,因此避免了變通方法和快速修復固化在生產程式碼中的危險。我們確實需要小心地識別原型設計和生產之間的區別。生產系統將擁有高質量程式碼、驗證、備份、恢復等,而原型設計可能沒有這些東西。
下圖顯示了整個開發過程中構建和原型設計的角色。
力感測器