初探 Agile 開發 Manifesto, Principles & Practices
2022-04-14
筆記敏捷開發的宣言、原則與實踐 (Manifesto, Principles & Practices),試圖藉由筆記的過程整理敏捷開發是什麼?Agile 是什麼?使用敏捷開發系統的優缺點以及與瀑布式開發 (Watefall) 的差異。
宣言
敏捷軟體開發宣言
Manifesto for Agile Software Development
藉著親自並協助他人進行軟體開發,
我們正致力於發掘更優良的軟體開發方法。
透過這樣的努力,我們已建立以下價值觀:
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
個人與互動 重於 流程與工具
可用的軟體 重於 詳盡的文件
與客戶合作 重於 合約協商
回應變化 重於 遵循計劃
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
也就是說,雖然右側項目有其價值,
但我們更重視左側項目。
That is, while there is value in the items on the right,
we value the items on the left more.
Kent Beck, Mike Beedle, Arie van Bennekum
Alistair Cockburn, Ward Cunningham, Martin Fowler
James Grenning, Jim Highsmith, Andrew Hunt
Ron Jeffries, Jon Kern, Brian Marick
Robert C. Martin, Steve Mellor, Ken Schwaber
Jeff Sutherland, Dave Thomas
以上宣言來自 https://agilemanifesto.org/iso/zhcht/principles.html
原則
敏捷宣言背後的原則
Principles behind the Agile Manifesto
我們遵守這些原則:
我們最優先的任務,是透過及早並持續地交付有價值的軟體來滿足客戶需求。
We follow these principles:
Our highest priority is to satisfy the customer
through early and continuous delivery
of valuable software.
竭誠歡迎改變需求,甚至已處開發後期亦然。
敏捷流程掌控變更,以維護客戶的競爭優勢。
Welcome changing requirements, even late in
development. Agile processes harness change for
the customer's competitive advantage.
經常交付可用的軟體,頻率可以從數週到數個月,以較短時間間隔為佳。
Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.
業務人員與開發者必須在專案全程中天天一起工作。
Business people and developers must work
together daily throughout the project.
以積極的個人來建構專案,給予他們所需的環境與支援,並信任他們可以完成工作。
Build projects around motivated individuals.
Give them the environment and support they need,
and trust them to get the job done.
面對面的溝通是傳遞資訊給開發團隊及團隊成員之間效率最高且效果最佳的方法。
The most efficient and effective method of
conveying information to and within a development
team is face-to-face conversation.
可用的軟體是最主要的進度量測方法。
Working software is the primary measure of progress.
敏捷程序提倡可持續的開發。
贊助者、開發者及使用者應當能不斷地維持穩定的步調。
Agile processes promote sustainable development.
The sponsors, developers, and users should be able
to maintain a constant pace indefinitely.
持續追求優越的技術與優良的設計,以強化敏捷性。
Continuous attention to technical excellence
and good design enhances agility.
精簡──或最大化未完成工作量之技藝──是不可或缺的。
Simplicity--the art of maximizing the amount
of work not done--is essential.
最佳的架構、需求與設計皆來自於能自我組織的團隊。
The best architectures, requirements, and designs
emerge from self-organizing teams.
團隊定期自省如何更有效率,並據之適當地調整與修正自己的行為。
At regular intervals, the team reflects on how
to become more effective, then tunes and adjusts
its behavior accordingly.
以上宣言來自 https://agilemanifesto.org/iso/zhcht/principles.html
實踐
- stand-up
- 立會;用站姿的方式進行會議,討論技術、任務分配以及進行專案的時間安排
- retrospective
- 回顧;從完成的專案擷取成功與失敗所能提供的經驗
- user story
- 使用者故事;具體化以及情境化使用者需求的方式
- task board
- 任務板;Kanban Method 用以將任務視覺化的呈現方式,以掌握專案的情況
- burndown chart
- 燃燒圖;表示剩餘工作的視覺化呈現方式
- refactoring
- 重構;極限開發用以處理技術債的方式