1、前言
本文有兩個目的:實現每晚構建平台和探討一個軟件從需求文檔到設計文檔的書寫規范。
每晚構建是軟件研發管理中極具價值的手段,對於加快發現和改正缺陷,降低集成風險,提高產品質量,加強成員溝通與協作,縮短產品上市時間,增加項目開發透明度,提高項目組成員信心和斗志有著非常重要的作用和意義。本文從軟件工程過程:需求定義,分析,設計出發描述了實戰每晚構建平台的大部分過程。
軟件工程中文檔有著極其重要的地位,良好的文檔風格和習慣是一個團隊成熟的重要標志。目前有些軟件研發人員特別是剛剛走上崗位的研發人員對文檔書寫沒有一個統一的概念,他們不知道需要寫那些文檔,他們不知道每個文檔需要寫到什麼地步,一提到寫文檔就抓耳擾腮。本文試圖在這個方面提供一個文檔樣例,我不認為我的文檔寫的很好,只希望能起到拋磚引玉之功效。
為了實現這兩個目的,本文首先解釋了每晚構建,讓讀者對這個術語有個比較清楚的認識;然後借助於《編寫有效用例》中的用例編寫技術編寫了每晚構建平台的用例並附加了其他相關需求形成了一個相對使用的需求定義文檔;接著用面向對象的系統分析方法對需求定義進行了問題空間分析,構造出分析模型;為了讀者更好更快地理解設計,後面是一整節的相關開源或第三方技術介紹,有類似於"Hello world"的入門介紹,也有精髓內容解析,還有注意點提醒;接著是平台兩大系統的設計。
整個每晚構建平台包括兩大子系統:構建系統和構建信息顯示系統。構建系統用ANT構建腳本實現;構建信息顯示系統是個典型的web應用。兩者都采用了面向對象的分析和設計技術。
需求定義的閱讀應該以用戶為主,文檔撰寫者為輔,需求定義完成的標志是兩者達成了一致;分析章節的閱讀應是文檔撰寫者幫助用戶閱讀,使用戶理解並相信分析模型是能解決用戶的問題的;設計章節的閱讀主要是系統實現者,除了要求可實現性外,設計模型還要和分析模型有很強的繼承性和一致性。
整個文檔分為上中下三篇,上篇主要講述需求定義和分析模型。
2、每晚構建的定義和作用
構建是從代碼庫中取出一個開發中的軟件項目的所有最新代碼,放在一個干淨的環境下面,編譯源代碼文件,連接,安裝和測試,並記錄整個過程中所有日志的動作系列。
構建平台是一個構建和構建信息展示的系統。
每晚構建主要是指在開發活動不太激烈的情況下,盡量不要干擾開發者的正常開發工作,保證每天執行構建一次。
在《cvs和nightlybuild技術》一書中提到了每晚構建的作用:
每個模塊有一部分成果集成一部分成果可以大大地降低集成風險,加強模塊間協作性錯誤的診斷,降低整個系統的不確定性,可以更好地定位錯誤從而加快開發速度,促使模塊間的接口規范而增強團隊合作,每天都有新系統新成績是對每位項目組成員的一個重要激勵。
除了這些作用之外,我們還可以從每晚構建中為項目管理提供額外的信息:
每晚構建的產品,每晚構建過程的記錄,每晚構造過程中的測試記錄,分析測試質量的測試覆蓋率分析,構建對象中項目組成員的貢獻和項目組成情況分析(本文稱為項目度量)。
3、需求定義
關於需求定義的文檔我們一般稱之為《需求規格說明書》,這個文檔的任務在於比較明確地確定項目的目的和范圍,提出功能需求和非功能需求,功能需求也叫行為需求,一般可以用用例來描述,如果所有需求的全集我們稱為問題域,則功能需求我們可以稱之為問題域的本質。軟件研發公司一般都有《需求規格說明書》的框架,規定了書寫需求定義文檔的"綱",下面就普遍格式對需求進行描述。
目的和范圍
每晚構建平台是提供一個自動化的信息系統,用來輔助構建者構建系統,盡量做到自動化,最大化地減輕構建者的工作負擔;記錄構建過程的詳細記錄,給項目經理、組織層次的軟件開發過程改進人員評估和管理軟件開發項目提供相關數據,為項目成員和組織領導增加軟件項目開發的透明度。