項目管理85:關於軟體開發的各個環節
針對軟體開發,無論是瀑布模型還是敏捷模型,還是任何開發模式,永遠都是軟體工程所說的步驟,即在開發計劃的指引下,按照需求、設計、開發、測試四個環節,完成應用系統的交付。只是各個環節所用的技術不同、框架不同、以及粒度不同。
n1、需求獲取、需求分析和需求管理
n
需求獲取是問客戶想要什麼?需求的分析是知道客戶的需求是什麼,並且解決做什麼,最後形成需求規格說明書,需求的管理就是保證需求到被實現的過程的完整性,變更是規範的,保證項目範圍不偏離。
n例如在傳統的軟體開發過程中,實際的軟體項目需求規格說明書的編寫過程中,是存在兩種需求規格說明書的,一種是用戶需求說明書,一種是軟體需求規格說明書,軟體需求規格說明書是基於用戶需求說明書編寫的,其格式取決於所採用的開發和管理方式,例如按流程開發的方式、面對對象的開發方式和敏捷項目所採用的需求規格說明書是不同的。在需求規格書說明書的編寫中,是和業務需求分析緊密結合在一起的,最簡單的包括需求的分類,滿足業務域或業務類別,還有一些業務改進和過程改進的內容,還有一些內容是行為分析的內容。雖然需求不是設計,但需求多多少少還有一些系統最終實現後的影子,為此有一些功能性需求的編寫過程中已經對功能結構進行了初步的組織。需求不一定一定要用用例圖來描述,採用靈活清晰的規格化的文檔描述來編寫具體的需求,但避免過於複雜,例如出現很多分支。如果在需求規格說明書中放入系統原型,則是對系統界面的實現進行約束。
n
在敏捷的軟體開發過程中,需求就是經過分析後的用戶故事。無論哪一種方式,需求都是要經過評審、需要確認的。
n2、設計
n在開展軟體設計前,最重要的事情是是應用系統是基於什麼平台進行設計和開發,或者利用什麼框架進行開發,甚至是利用過去的那一個項目框架進行開發,這直接影響後續的工作,選擇不同類型的開發框架,工作量,人員投入是完全不同的。在當前技術環境下,幾乎很少的軟體會從零開發,都是利用已有的框架進行的。
n在傳統的軟體開發過程中,是根據需求規格說明書的要求,利用概要設計、詳細設計和資料庫設計三種設計來完成軟體應用的設計的,概要設計關注流程和功能,詳細設計關注於類的代碼的實現,資料庫設計關注於資料庫和表。將設計任務分配下去,不同的人完成不同的模塊的設計方案,方案由流程圖、類圖等組成。利用敏捷開發方法,則省去很多步驟,不再形成規模巨大的文檔,而是圍繞著用戶故事進行設計、開發和測試的,目標是快速交付成果。無論什麼形式的設計,也都需要通過不停的優化和評審,最後形成正確有效的開發方案。
n3、開發代碼
n
開發代碼是一個非常具體的工作,通過一個個鍵盤上的字母完成整個系統的交付,就和作家爬格子完成長篇小說一樣。每個人的開發效率不同,能力不同,根據自己的能力做好估算,否則不能完成任務。開發代碼前,也是需要有一些設計的,因為具體的代碼實現和設計還是存在差異的。存在無數開發技巧和方法,例如開發的時候注意使用已有的類庫進行代碼重用,少用全局變數等等,總之,代碼要清晰,增加註釋。作為程序員,注釋就是一切文檔。
n開發代碼時,要利用配置管理系統進行版本控制,此外,不懂就問、互聯網搜索是加快開發速度的關鍵。此外,代碼也是需要進行評審的,通過評審還能夠優化代碼。
n
4、測試
n測試的目的是發現軟體的缺陷,保證交付的應用系統滿足需求,測試是非常關鍵的,甚至測試的時間比開發的時間還要長,並且越是在開發末期發現的缺陷,修復缺陷所付出的成本是越多的。敏捷開發是測試驅動的,開發時就是包括測試工作的,這樣才能迅速交付能用的系統。相比之下,傳統模式就複雜得多,首先編寫測試用例,然後開始單元測試、功能測試、集成測試、驗收測試等,按部就班,發現測試問題再周期性去完善開發,周期比較長,某環節問題較多的情況下,容易讓項目延期。測試還包括介面測試、性能測試、壓力測試、界面測試、安全測試、安裝測試等,這些都是根據不同的項目類型進行選擇,如果合同中提到或者需求中提到,就需要去完成這個測試。
n測試需要工具,自動化工具讓測試事半功倍,測試出的缺陷,需要跟紀錄、審查、跟蹤、修改、驗證、關閉、整理、分析、匯總等很多狀態管理,無論過程有多麼複雜,測試工作都需要去完成,畢竟,交付一個少缺陷的高質量的軟體是每一個IT人的夢想。
推薦閱讀:
※開發需要寫單元測試嗎?
※失控的 App 容量大小
※軟體開發過程中,除代碼之外,必不可少的文檔你認為有哪些?
※追求技術之上的進階閱讀學習索引
※三年經驗的軟體工程師和十年經驗的軟體工程師有什麼本質的差別?