agile - cccnqu/se107a GitHub Wiki

Agile 敏捷軟體開發

Agile Development ~= 以 TDD 為核心 (Test Driven Development)

觀察 1

Bug 越晚發現代價愈高,分析錯誤代價最高 (幾何成長)。

設計修改 change 代價愈前期愈高,分析錯誤的代價比測試錯誤更高。

結論:提早測試,提早發現錯誤,小循環交付,避免做出錯誤決定的代價因時間而攀高!

觀察 2

技術演變有利於改變 change,因素如下:

  1. 打孔卡 => 雲端
  2. 機器龜速 => 火箭速度
  3. 中央大機房 => 個人電腦
  4. 工具原始 => 工具高級且眾多

價值觀

  1. 個人與互動:重於 流程與工具
  2. 可用的軟體:重於 詳盡的文件
  3. 與客戶合作:重於 合約協商
  4. 回應變化:重於 遵循計劃

原則

  1. 我們最優先的任務,是透過及早並持續地交付有價值的軟體來滿足客戶需求。
  2. 竭誠歡迎改變需求,甚至已處開發後期亦然。敏捷流程掌控變更,以維護客戶的競爭優勢。
  3. 經常交付可用的軟體,頻率可以從數週到數個月,以較短時間間隔為佳。
  4. 業務人員與開發者必須在專案全程中天天一起工作。
  5. 以積極的個人來建構專案,給予他們所需的環境與支援,並信任他們可以完成工作。
  6. 面對面的溝通是傳遞資訊給開發團隊及團隊成員之間效率最高且效果最佳的方法。
  7. 可用的軟體是最主要的進度量測方法。
  8. 敏捷程序提倡可持續的開發。贊助者、開發者及使用者應當能不斷地維持穩定的步調。
  9. 持續追求優越的技術與優良的設計,以強化敏捷性。
  10. 精簡──或最大化未完成工作量之技藝──是不可或缺的。
  11. 最佳的架構、需求與設計皆來自於能自我組織的團隊。
  12. 團隊定期自省如何更有效率,並據之適當地調整與修正自己的行為。

參考文獻