由來
企業一直在實踐中探尋更好的軟體開發方法,近些年來,敏捷開發模式在業界風生水起,SCRUM、XP、測試驅動開發等等,演化出很多方法論。關於軟體開發流程和模式的探討一直未曾停止,由方法論及實踐引發的開發過程適應性及處理複雜問題能力的矛盾也日益浮上水面,從而使得軟體開發方法的相互借鑑、融合之道成為大勢所趨。SpecDD是TechExcel公司CEO周鐵人博士於2005年創立並完善的一種混合的研發開發方法論。他擁有超過20多年的研究和產品開發經驗,是ALM領域的專家。
SpecDD概念
理論思想
規範點驅動開發(Specification Driven Development, 簡稱SpecDD)是一種全新的軟體開發概念性框架,它貫穿於套用生命周期管理(Application Lifecycle Management,簡稱ALM)的各個階段,支持各種成熟開發模型,旨在幫助開發團隊提高項目質量,促進軟體項目成功。SpecDD概念性框架用規範點(Specification,以下簡稱Spec)來表述/定義產品或版本功能,並通過中央知識庫與整個團隊有效共享,使 Spec成為貫穿ALM各階段的要素,從需求分析到項目規劃,從編碼到QA測試,驅動整個開發流程。
Spec是SpecDD概念性框架中的最小單元。通常情況下,由來自各種渠道的客戶和產品需求,結合以往積累的知識文檔,提煉出多個 Spec。它們可以是正規表達的新功能、功能增強或缺陷修復,並與對應的需求和知識相關聯。Spec是高度結構化的,其樹形結構準確地對應產品/版本功能 樹,以保證開發人員不丟失任何需求。圖2以Browser產品為例,要完成6.0版本,開發團隊需要開發“OS Support”、“Tabbed Browsing”等幾類新功能,實現“User Interface”、“AJAX”、“Application” 三類基於之前版本的功能提升,修復客戶或內部發現的一些缺陷,所有這些Spec都體現為分支上的樹葉。
SpecDD的關鍵思想有如下體現:將來自於客戶或產品經理的需求文檔分解為結構化的“需求樹”,需求的進一步添加和修改,可以直接 體現在需求樹上;依照需求樹,由經驗豐富的技術人員將需求轉變為可量化的Spec單元,通過“Spec樹”直觀正規地表達需求和設計;在做項目規劃時,依 據Spec樹、團隊安排和開發階段,進行巨觀層面的子項目分解,並將Spec樹中的Spec直接分配到相應子項目下,具體落實每個Spec的開發計畫。有 了這棵“項目樹”,Spec就能驅動產品的開發和測試了。
以知識為核心
“以知識為核心”的SpecDD:首先,知識不僅包括項目的各種文檔,也涵蓋了注釋、web連結和email等內容,使用戶對知識的使用和積累變 得更加方便快捷。通過算法對知識項目排序,也提高了知識使用的效率。另外,知識管理細化了需求管理的顆粒度,通過外掛程式從MS Office格式的需求文檔中直接check-in需求片斷,就能在需求描述頁面中查看相關的那部份內容,而不需要打開附屬檔案中的整個需求文檔。SpecDD&敏捷開發
雖然敏捷開發在中國還處於剛剛起步階段,但近幾年來發展迅速,敏捷已經逐漸從“軟體開發”層面滲透到整個套用生命周期。概括地說, 敏捷開發具有以下基本特徵:客戶提出需求列表並確定需求優先權;開發團隊按照客戶的詳細需求提交產品所需增加的模組;客戶可以在任何時間增加、刪除或修改 需求。正是由於開發過程上的敏捷,使得產品或服務能更好更快地反應客戶的需求,從“開發敏捷”最終實現“業務敏捷”。然而,敏捷開發也存在一系列問題。例如,往往只有小型的、人員集中的團隊更願意採用敏捷方法;項目進展常常過度依賴於頻繁的面對面 溝通;溝通過程缺乏必要的知識記錄等。SpecDD很大程度上彌補了這些不足。
SpecDD優勢
- 理解和掌握大型開發項目的有效管理策略和多團隊協作模型;
- 提供敏捷與其它方法整合的最佳化框架;
- 提供有效實現敏捷開發與需求&質量、需求&backlog、項目&資源、項目組合管理、QA&測試團隊的整合框架;
- 闡述開發團隊如何能用相同的辦法來管理敏捷和非敏捷項目;
- 開發工作被分解到開發空間,里程碑,和各個衝刺疊代中,同時Product backlog和需求管理是相互整合的;
- 提供明確的指導方針,以及如何實踐的做法,實現QA測試用例在疊代周期內被定義;
- QA團隊既能夠獨立工作,同時又能與回歸測試相整合;