2009年5月28日 星期四

V21 敏捷開發原則與CMMI精神的共存

閒暇時偶而會與同事或管理階層的人談起開發時程與彈性設計的問題,也會上網搜尋一下目前其他人對於設計的看法(中文網頁裡的)。得到的大致說法都是敏捷開發的原則是以快速滿足需求與變化為目標,而CMMI的精神會以檢驗各個步驟的產出來確認軟體製程的各個階段;前者認為軟體設計是多變的心智活動,後者則相信軟體可以像產品一樣由工廠來開發組裝。

某天與其他部門主管聊起時,談到OOAD設計與這兩者的關係,我強調說設計的物件能否完整地一對一對應到真實的物件才是最重要的關鍵。今天一個有三層結構關係的物件在設計的時候被縮減為一層,無論用什麼樣的方法論作出來的程式都會在需要切割時出問題的一天;反過來說只要物件結構能正確對應,無論用什麼樣的方式開發都不會出現切割的問題。

乍看起來敏捷開發與CMMI是沒有交集的,快速開發可能造成佈置的雜亂(所以需要重構來調整),設計的完整會耗費許多時間製作文件,因此幾乎所有人都不認為它們可以相輔相成。經過這兩年的思索,我認為唯有使用"固定且具有彈性的統一軟體結構"才能滿足快速與完整的並存,同時再夾帶讓全部開發人員(不限同一個開發團隊)能快速明白設計概念的好處。

將軟體切割為靜態結構佈置與動態方法設計,作好完整的靜態結構佈置後以敏捷開發的原則進行動態方法設計,通過各個階段測試之後再運用工具程式解析以產生CMMI需要的文件。這些想法的關鍵都已經在這兩年陸續在實際工作裡加以驗證,有絕對的把握可以實現。

雖然要事先開發好所有的工具的確需要不少時間,不過在下一章會先說明專案開發時大致的流程、作法與需要的工具,並且構築出一個完整的開發roadmap。

沒有留言:

張貼留言