本文綜述了嵌入式系統靈活開發(Agile Development),靈活宣言,靈活的原則,很多的靈活開發的實踐習慣,靈活開發與瀑布開發流程的差別,靈活的任務stories劃分,并行開發、靈活的時間安排,靈活的通信交流方式等等。靈活開發的其他别名包括極限程式設計(Extreme Programming),特性驅動的開發(Feature Driven Development (FDD)), 疊代式增量軟體開發Scrum,完全清楚(Crystal
Clear)以及DSDM動态系統開發方法(Dynamic Systems Development Method)。
為什麼嵌入式系統軟體開發要采用靈活開發呢?并不因為靈活開發是現在的流行詞,更重要的是因為靈活開發能提高你的效率,基于計劃驅動的實作方式會掩蓋很多的問題,當你發現時也許就晚了。計劃的開發并不能提供足夠的自信來掌控産品的釋出時間。軟體開發項目往往受制于較長的開發周期、推遲的釋出、無法預測的時間安排、較差的品質、不合客戶預期等。這些所有的問題會構成一個正的惡性循環,如下圖1所示。
模糊的需求
上面的惡性循環中有一些正回報,如計劃安排、修改缺陷、以及需求更改的惡性循環。這正是疊代實作的靈活開發可以有效解決的問題。基于瀑布的軟體開發流程定義需求-系統設計-測試-實作-測試-釋出的實作聽起來很誘人,但通過時間的考驗證明往往不能滿足需求。疊代開發,很多年以前就作為靈活開發的重要的實踐方式,從1987年Fred Brooks作為國防部軍事軟體開發上建議從瀑布流程轉換成疊代開發開始就意味着瀑布模型在大型的DoD軟體項目上的失敗。在過去的十餘年間,靈活開發更多的是和軟體開發聯系在一起而不是和嵌入式,雖然嵌入式有其特殊性,但采用靈活開發同樣有增益,因為嵌入式開發也有同樣的問題。
什麼是靈活開發?
靈活宣言包括:
- 個體和互動勝過工具和過程
- 可以運作的軟體勝過面面俱到的文檔
- 客戶合作勝過合同談判
- 響應變化勝過遵循計劃
個體和互動勝過工具和過程
靈活強調個人互動和團隊合作的重要性,很多開發流程總是把人的因素從軟體開發中排除,但是靈活宣言的首要表述就是強調人和互動,工具是需要的,但是在團隊中的人創造了成功的軟體産品。
可以運作的軟體勝過面面俱到的文檔
第二點是對開發流程的度量,文檔也許有價值,但可以工作的軟體更有意義。但靈活也并不意味着不寫文檔。隻是說文檔需要時間來寫和維護,很多時候文檔隻是因為我們的流程需要文檔而已,而靈活開發者則能度量寫文檔的意義,而創造客戶需要的文檔。外需要記住的是文檔并不能表明項目進度的,靈活開發則是當50%的項目特性實作時才算項目50%完成了。雖然嵌入式軟體隻和硬體一起傳遞一次,但并不表明不能用特性來跟蹤進度。
客戶合作勝過合同談判
這點是強調和客戶的緊密合作。客戶的互動很重要是因為軟體很難在初始時就能确定具體的特性和features。需求和市場往往瞬息萬變,客戶早些介入很更好的表明他們的需求。
響應變化勝過遵循計劃
最後一條是對現實中的複雜情況的應對。計劃很重要,但是情況變化很快也需要經常的變換,但這并不意味着靈活開發沒有釋出的日期,而日期和承諾在靈活開發中看的很重。靈活開發者會在短的時間周期内來度量和計劃的一緻性。
靈活開發的基本原則:
- 優先級最高的,通過早期和持續傳遞有價值的軟體來滿足客戶;
- 歡迎變更需求,即使在開發的後期提出。靈活過程為客戶的競争優勢而控制變更;
- 以兩周到兩月為周期,頻繁地傳遞可運作的軟體,首推較短的時間定量;
- 在整個項目過程中,每一天開發人員都要和業務人員合作;
- 由個體推動項目的建設,為個體提供所需的環境,支援和信任;
- 在開發團隊中或開發團隊間傳遞資訊的最為有效和高效的方法是面對面的交談;
- 衡量進展的重要尺度是可運作的軟體;
- 靈活過程提倡可持續的開發;
- 發起人,開發者和使用者應該步調一緻;
- 不斷地關注技術上優越的設計會提高靈活性;
- 簡潔是最重要的,簡潔就是盡量減少工作量的藝術;
- 最佳的架構,需求和設計來自于自組織的團隊;
- 團隊要定期檢討如何使工作更有效,然後相應地調整行為。
疊代開發
靈活開發是一種疊代和增量開發(iterative and incremental development (IID)),IID通過把項目分割成一各個的2周到4周的疊代周期來擷取回報資訊,每次疊代輸出的都是可以工作的軟體開發結果。每次疊代相當于一個單獨的項目,能釋出一個可以應用的産品。當然在初始的疊代中,也許隻能看到軟體在測試環境中的情況或者原型。靈活開發中的成員角色分為客戶和開發者,客戶定義和測試産品,開發者建立産品。入式軟體工程師需要了解回報,設計的控制系統通常都有回報機制來讓系統可控。基于疊代的靈活項目能提供對項目至關重要的參數,如進度安排、需求和設計。把靈活當做軟體開發的控制系統好了。項目預測、計劃群組織工程為若幹個疊代。釋出的節奏有利于建立一個可以測量的速度,進而校正開發計劃,監控進度。如每次疊代完成20個點,而擠壓的工作有200個點,那麼可以說10次疊代完成工作。如果要求在8次疊代完成,那麼就需要增加人手,消減功能或者加班了。