網頁

搜尋此網誌

2015年8月7日 星期五

Agile, Lean, Kanban 敏捷, 精實, 看板

這篇記錄軟體開發方法的一些原則

敏捷軟體開發 (Agile Software Development)

敏捷軟體開發的 4 大價值觀 (values)
  • 個人與互動 重於 流程與工具
    Individuals and interactions over processes and tools
  • 可用的軟體 重於 詳盡的文件
    Working software over comprehensive documentation
  • 與客戶合作 重於 合約協商
    Customer collaboration over contract negotiation
  • 回應變化 重於 遵循計劃
    Responding to change over following a plan
敏捷軟體的 12 個原則 (principles)
  1. 我們最優先的任務,是透過及早並持績地交付有價值的軟體來滿足客戶需求。
    Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2. 竭誠歡迎改變需求,甚至已處開發後期亦然。敏捷流程掌控變更,以維護客戶的競爭優勢。
    Welcome changing requirements, even late in development. Agile processes harness change for  the customer's competitive advantage.
  3. 經常交付可用的軟體,頻率可以從數週到數個月,以較短時間間隔為佳。
    Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  4. 業務人員與開發者必須在專案全程中天天一起工作。
    Business people and developers must work together daily throughout the project.
  5. 以積極的個人來建構專案,給予他們所需的環境與支援,並信任他們可以完成工作。
    Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  6. 面對面的溝通是傳遞資訊給開發團隊及團隊成員之間效率最高且效果最佳的方法。
    The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7. 可用的軟體是最主要的進度量測方法。
    Working software is the primary measure of progress.
  8. 敏捷程序提倡可持續的開發。贊助者、開發者及使用者應當能不斷地維持穩定的步調。
    Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  9. 持續追求優越的技術與優良的設計,以強化敏捷性。
    Continuous attention to technical excellence and good design enhances agility.
  10. 精簡──或最大化未完成工作量之技藝──是不可或缺的。
    Simplicity--the art of maximizing the amount of work not done--is essential.
  11. 最佳的架構、需求與設計皆來自於能自我組織的團隊。
    The best architectures, requirements, and designs emerge from self-organizing teams.
  12. 團隊定期自省如何更有效率,並據之適當地調整與修正自己的行為。
    At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

精實軟體開發 (Lean Software Development)

精實軟體開發的 7 大原則,源自於 Mary Poppendieck & Tom Poppendieck 在 2003 年出版的著作:Lean Software Development: An Agile Toolkit
  1. 消除浪費 (Eliminate waste)
  2. 增強學習 (Amplify learning)
  3. 盡量延遲決策 (Decide as late as possible)
  4. 盡快交付 (Deliver as fast as possible)
  5. 授權團隊 (Empower the team)
  6. 嵌入完整性 (Build integrity in)
  7. 著眼整體 (See the whole)

看板方法 (Kanban Method)

看板方法是由 David J. Anderson 在 2005 年所創造的流程控制方法。

看板方法的 4 個基本原則 (foundational principles)
  1. 從既有的流程開始
    Start with existing process
  2. 同意持續增量、漸進的變化
    Agree to pursue incremental evolutionary change
  3. 尊重當前的流程、角色、職責和頭銜
    Respect the current process, roles, responsibilities and titles
  4. 鼓勵各層級的領導行為
    Leadership at all levels
看板方法的 6 個實務 (core practices)
  1. 步驟1:視覺化
    Visualize
  2. 步驟2:限制半成品 (WIP) 數量
    Limit Work-In-Progress
  3. 步驟3:管理工作流程
    Manage flow
  4. 策略4:讓規則明確
    Make policies explicit
  5. 策略5:落實回饋循環
    Implement feedback loops
  6. 策略6:由協作改善,經實驗演進
    Improve collaboratively, evolve experimentally using models and the scientific method

參考資料
###

熱門文章