采用OOAD開發的方法時的需求不穩定,可分析出這不穩定的東西是對象。世界都是由對象組成的,而對象都是持久的,例如動物、植物已經有相當長的時間。雖然對象也在變化,動物、植物也在不斷進化。但對象在一個相當長的時期內都存在,動植物的存在時間肯定比任何一家企業長久。面向對象開發方法的精髓是從企業的不穩定需求中分析出企業的穩定對象,以企業對象為基礎來組織需求、構架系統。這樣得出的系統會比傳統的系統要穩定得多,因為企業的模式一旦變化,只需將穩定的企業對象重新組織行了。
在敏捷XP中,采用的是TDD驅動軟件的設計和編程實踐,即,測試驅動開
發。筆者負責過很多項目的敏捷實踐中,更喜歡UDD(Use Case-Driven Development)比較適合目前的國情。它可根據用戶目標,編寫軟件需求,根據軟件需求,編寫系統(驗收)測試,即,用戶目標驅動。利用 UML 對軟件的設計進行建模,這部分建模當然是敏捷的(agile)。簡單的只需幾秒鐘可以迅速在人的大腦中完成,復雜的則可以畫在紙上、白板上,記錄在建模工具生成的電子文檔中,當需求穩定后可以迅速轉化成軟件應用代碼,在結合TDD會有很不錯的效果,這種理論體系有些像太極原理,需求的變化看似武術中的招式,采用UDD見招破招,無招勝有招,這種客戶的需求應變使得UDD更為敏捷。
3.實戰VSTS2010驅動開發
在Visual Studio 2010中,敏捷測試驅動開發功能非常強大,微軟把Scrum和XP敏捷思想融入到Agile過程框架之中。TFS2010中增強了團隊源碼版本管理、迭代開發和驅動測試開發模型等,從而給微軟.Net開發人員非常大的幫助。VSTS2010測試馬甲和單元測試過程,如圖3所示。
圖3 VSTS2010單元測試過程
IUT——在生產環境中終交付而開發的軟件。
Test Environment——測試環境。
測試驅動開發(TDD)基本過程:
(1)明確當前要完成的功能?梢杂涗洺梢粋初始化測試清單(TODO)列表。
(2)快速完成針對一個功能的測試用例編寫。
(3)測試代碼編譯通過,但測試用例通不過。
(4)編寫對應的功能代碼。
(5)測試通過。
(6)對代碼進行重構,并保證測試通過。
(7)循環完成所有功能的開發。
·圖書收藏實例
確定好backlog,進行sprint backlog,把story拆分成更小的故事,并在把故事拆分成任務,索引卡片參考圖4所示。
圖4 圖書收藏Story索引卡
將案例分成任務,我們需要在很大程度上實現讀者個人借閱圖書的收藏集合。其中之一backlog索引卡,如圖4所示。當讀者到圖書館進行圖書借閱中,會查詢圖書庫所有相關類圖書封面并選取其中自己需要的幾本書。這個過程叫做“書簽”,圖書系統將通過圖書管理來支持這個活動。為圖書借閱集合初始化測試清單,參考1所示。
表1 為圖書借閱夾初始化測試清單