王磊
摘 要 在過去十幾年時間,軟件工程已經總結出一些規范開發模型,進行軟件項目管理。在企業信息系統開發中,各個供應商或者企業內部團隊都有擅長或者偏好的軟件項目開發模型進行系統實施和構建。在實際開發中,因為開發模型的不同,會影響項目的成果。每個模型都有自身的特色和優劣勢、本文嘗試分析不同的應用場景需要選擇不同的開發模型。
關鍵詞 項目管理;軟件開發模型;敏捷開發
中圖分類號 TP3 文獻標識碼 A 文章編號 1674-6708(2017)199-0104-02
近年來,隨著企業內部自主軟件開發或采取外包模式的軟件開發增多,在項目管理中發現采用適當的軟件開發模型是項目成功因素之一。筆者作為企業內部軟件開發項目經理,總結針對不同的項目規模和對需求的把控程度要選擇不同的軟件開發模型。
1 傳統瀑布模型開發
瀑布模型采用的是線性生命周期方法,一般會對項目不同階段建立項目里程碑,分為可行性研究、需求分析、系統設計、系統開發實施、測試、系統維護等階段。當一個階段全部完成后,下個階段才能開始。當各個階段工作完成后,都會對項目里程碑進行回顧,確保項目處于正常項目進度和目標之內。從管理角度看,這是一種有效的管理方式,每項開發活動都是處于一個確保質量的環節。項目是通過文檔來驅動,通過項目文檔評審來對項目進行有效的指導。
但是傳統瀑布模型中所有的需求都要在需求分析階段從各方人員中完成收集,但是隨著項目開展,業務部門會更深入的反思或者重構需求,導致需求發生變化時。這個模型很難在項目過程中進行需求變更,會耗費大量人天在需求變更和對應系統設計、開發的調整上。這種模型適合較小的項目并且是在充分理解需求的情況下采用。對于大型、復雜的項目,筆者認為這是一種危險的開發模型,因為項目中通常包含許多變量,它們不同程度的對項目能否正常開展產生影響。
2 V形模型開發
V形模型是在軟件工程中不再按照線性方法,而是遵循V形格式步驟。這個模型強調軟件產品的每個階段都進行驗證和確認。具體是需求和用戶測試相互驗證;系統架構設計和集成測試項目驗證;詳細設計和單元測試項目驗證等。
V形模型和瀑布模型在各階段執行方面類似,擬定好了執行步驟。在某一階段開始之前,前置的階段內容需要完成。V形模型在開發階段不斷進行各個級別的測試,反饋到前期對應階段的內容里。所以項目執行效率會高。但是需求變更依然很困難,在項目周期中變更成本會很高。這個模型沒有迭代概念,更適用于前期可以理解所有需求而且變更范圍很小的場合。
3 螺旋模型
在投入大量時間和人力資源之前,可以開發軟件代碼的樣品或模型。通過迭代的方式進行開發,重點關注風險分析。模型分成四個階段:計劃、風險分析、開發和測試。反復進行迭代。通過和業務用戶溝通,解決特定的需求問題。
如果一個團隊使用螺旋模型開展工作,可以盡快和用戶確認需求,盡快調整變更。在項目管理上,螺旋原型可以讓開發團隊快速設計樣品,進而驗證當前對項目理解的正確性。團隊快速開發模型和業務用戶討論是否可行。螺旋模型開發的目標是漸進式的改進,不像快速模型那樣開發完原型后將其拋棄掉,原型方法中的原型將會被持續改進直到它達到最后的成品。每個開發階段得到的反饋,都用來改進原型,從而滿足用戶需求。開發一個快速模型,是為了迅速理解提議的解決方案,演化型原型在實驗環境中是不斷的改進和創新,它適合于在需求不明確的項目中控制關鍵業務點。
它優勢是在項目各個階段都可以進行需求變更,可以分階段構建大型系統,使流程變得簡單容易,推薦用戶參與到開發,保證項目方向不偏離。劣勢在于用戶不能確信這種方法的結果是可控的,而且開發周期長,螺旋模型適用于復雜項目。
4 快速應用開發
采用快速應用開發模型是不需要大量的前期規劃或者調研、大面積的需求分析,而是依賴于快速原型的使用。在這種模型中,快速開發軟件的過程與改進軟件計劃相互作用在一起。快速應用開發模型集成了選代開發方法和原型化方法。為了明確軟件產品最終的實現結果,開發流程從創建業務流程模型和數據模型開始。通過應用原型設計,改進過程和數據模型。需求的明確化、清晰化會促進原型改進,原型測試和評價也可以提高數據和過程模型的質量。這些步驟的目標是集成業務需求和技術設計,其中技術設計可以提供軟件開發項目的指導。
一般選用快速應用開發模型的主要原因是,如果依據其他模型,那么在開發軟件時,需求往往會發生變化,開發人員必須回到繪圖板上重新開始。快速應用開發模型允許客戶參與開發階段,目的是最終結果能以更現實的方式滿足他們的需求,減少由于軟件需求不確定帶來的風險,能夠快速吸引用戶。但是這類方法適合互聯網類的軟件產品更新頻繁的項目,進行迭代開發。跌勢是這個開發模型項目過程文檔不夠完善,不能很好的支持后期運維工作。
5 敏捷模型
在行業內采用敏捷模型之前,一般開發團隊都會嚴格采用面向過程的模型。就像瀑布模型那樣,更強調遵循過程和步驟,而不是以更敏捷有效的方式工作。傳統的項目管理是根據整體的問題和難度,按照計劃一次解決完整問題,一次交付完整價值。敏捷模型是先把整體的問題分解和降低難度,快速開始行動,逐次解決問題,盡快得到業務用戶的反饋,盡早交付更高的價值。敏捷模型是一個軟件開發能力,是針對迅速變化的要求。敏捷模型具體的名稱、概念、過程和條件不相同,相對于“非敏捷”而言,強調程序員和業務專家面對面交流和密切合作,對新的軟件版本的頻繁交付,緊湊和自我組織類型的團隊,可以很好的適應需求改變的代碼,但也更注重軟件開發中人的作用。
敏捷模型關注的不是嚴格的、線性的、階梯式的流程,而是側重于增量和迭代開發方法,目的是適應不斷變化的業務需求,業務部門可以對需求的增加、變化或取消進行更多的分析和判斷。同時促進跨部門團隊協作和持續反饋機制。相對于傳統的重量級方法,該模型被認為是輕量級的,這意味著該模型不限于狹窄的視野和過于結構化的方法,足以滿足每一個項目的需求。根據業界實踐,即使是一個定義良好的過程庫,也不能處理開發項目中的每一種情況。因此,時間和資源不再用于早期的大規模設計分析,資源更傾向于業務所需功能的增量式代碼創建。此模型側重于個人交互,而不是過程和工具。它側重于彈性而不是嚴格執行計劃。這種模型適用于小系統,不適用于大系統。項目管理的關鍵步驟是控制變化,使一切有序,而敏捷模型基于另一個想法,它允許從一開始就進行大量的需求更改。
本文只是基于筆者企業內部的項目管理經驗,介紹了最常用的軟件開發模型的優勢、劣勢和使用場景。如果一個項目選錯了開發模型,會影響項目的成敗。所以在項目開始之前要和項目團隊確定好恰當的軟件開發模型。
參考文獻
[1]郭連明.談瀑布模型及其局限性[J].科技展望,2016(6):143.
[2]蔣懌.基于Web標準和快速原型模型的網站開發方法研究[J].黑龍江科技信息,2011(33):33-34.
[3]白魚秀,鄭歡歡.敏捷開發在軟件工程實踐課程中的應用[J].計算機學報,2017(1):27-28.endprint