敏捷式軟件開發的特征
敏捷軟件開發以交付而不是構造為核心,敏捷軟件開發方法強調交付對客戶有價值的軟件,而不是用戶需求中所描述的軟件。
敏捷軟件開發是20世紀90年代逐漸引起廣泛關注的一些新型軟件開發方法的總稱。這些開發方法的具體名稱、理念、過程、術語都不盡相同,但是它們都強調程序員團隊與業務專家之間的緊密協作、面對面的溝通(認為比書面的文檔更有效)、迭代交付新的軟件版本、緊湊而自我組織型的團隊、能夠很好地適應需求變化的代碼編寫和團隊組織方法。
敏捷方法雖然在過程和手段上和一些傳統方法有很多相似之處,比如迭代的開發模式、注重軟件的質量等,但是它和傳統軟件開發方法在根本上有很大的不同:敏捷軟件開發以交付而不是構造為核心,敏捷軟件開發方法強調交付對客戶有價值的軟件,而不是用戶需求中所描述的軟件。
敏捷方法和傳統方法的最根本、最核心的不同就是軟件交付的方式,也就是敏捷軟件交付。
*傳統軟件工程的誤區
軟件工程產生最初產生于一個簡單的類比:人們發現研制一個軟件系統,同研制一臺機器或建造一座樓房一樣,有很多共同之處。從而希望參照借鑒機械工程、建筑工程中的一些管理技術來進行軟件開發,于是產生了軟件工程。
而軟件工程從機械工程和建筑工程中繼承的最核心的部分,就是確立一個用戶的最終目標,然后通過逐步求精的工程化方法達到到這個目標。
通過引入工程化的方式,我們可以在一定程度上,對每一個求精步驟進行評估、計劃和控制,進而實現對整個軟件開發過程的有計劃有組織的控制。
這一類比看起來因果明晰順理成章,軟件也應該按照機械工程的這個方法,也就是構造性方法?上У氖,這些完美的類比和推論有一個根本上的誤區,那就是軟件行業與建筑行業,軟件行業與機械制造行業是根本不同的行業,兩者是不能夠簡單類比的。
它們的根本差異主要體現在下面兩個方面:
工程的價值
軟件工程與傳統建筑、制造工程的價值體現不同。
在建筑行業中,一棟按質按量按時建設完成建筑其本身就具有價值。而軟件行業在這個信息化的社會中所處的地位略微有些特殊:一個按質按量完成但未交付上線的軟件其本身所具有的價值極其有限的;一個按質按量完成但卻根本不能滿足企業需要的軟件就沒有任何價值。
軟件的存在性和軟件的有用性并不具有傳統建筑、機械制造行業那種天然的內在關聯。在建筑行業中,一棟建筑只要質量過關總可以保證它是有用的。但是不幸的是,很多質量過關的軟件確是根本無用的。
因此,軟件工程的價值體現在實現軟件的有用性而不是把軟件完成。傳統行業由于天然的優勢可以不用特殊地考慮制品的有用性,而僅考慮如何更好地完成該制品就可以。這一點是軟件工程和傳統建筑、機械制造工程的根本不同,也是傳統軟件工程的一個根本誤區。
商業環境敏感度
由于軟件工程和傳統工程在價值取向上有很大的不同,這兩種工程在實施過程中對用戶所處的商業環境敏感度有很大的不同。
對于傳統行業而言,在項目的初期對與項目最終實現的用戶價值會有一個大致的估算,這個估算值在傳統行業中是一個相對穩定的值,也就意味著項目初期的用戶價值估算受到用戶所處商業環境影響較小。我們可以用一個常數函數來表示,如圖1中目標用戶價值曲線所示;隨著項目的發展以及一系列的逐步分解求精步驟,最終我們可以實現最初的既定用戶價值目標。
通過上述分析我們發現,在項目終期由于我們基本上可以實現了最初估算的客戶價值,縱然客戶的價值期望隨商業環境的變化產生了變化,大多數用戶最終也會接受并認可這個工程的價值。
通過上述分析我們發現,軟件工程比起傳統的工程學受到用戶所處的商業環境影響更為明顯,用戶商業環境的變化直接影響了軟件的價值。因此,用戶往往在經過長時間的等待之后,卻拿到一個低于預估價值的軟件。用戶對于軟件不滿意也就是理所應當的。
*從重視軟件價值開始
傳統軟件工程方法受到傳統方法的影響,錯誤地認識了軟件價值的所在,過于強調過程與軟件價值的必然因果性關系,忽略了客戶商業環境對軟件價值的影響。
由此我們可以斷言:忽略或錯誤定義軟件價值、漠視軟件價值隨客戶商業環境的變化的傳統軟件工程學方法,都不可能解決軟件行業所面對的問題。要解決這些問題,首先要解決的問題就是軟件價值與客戶商業環境變化的問題,其次才是工程性的問題。
*應用敏捷方法的優勢
相比傳統軟件過程,敏捷方法在如下幾個方法具有顯著的優勢:
短期交付
如前所述,軟件的實際價值體現在對于企業的有用性上。一個軟件越早交付上線就能夠越早地為企業提供價值,也就能越早地體現出軟件以及構造它的工程的價值。敏捷方法中一個廣為人知的最佳實踐稱作小版本發布,也就是將傳統項目周期分為更小的周期,在每一個周期結束的時候提供可以生產上線的應用系統。
可以看出敏捷方法強調縮短軟件的上線周期,使軟件可以更早地為用戶發揮實際價值。
文章來源于領測軟件測試網 http://www.kjueaiud.com/