也許你已經習慣了 “Agile” 這個詞匯不斷地在你耳邊狂轟濫炸,諸如敏捷團隊、敏捷UX、敏捷建模、敏捷需求管理、敏捷架構等等。而且,人們還在不斷的將 “Agile” 和更多的詞匯進行組合,比如,也曾有人開始質疑是否存在 “Can Project Management be Agile?” 這回事。
同時,伴隨着各種敏捷軟件開發技術的涌現,將各種概念和方法進行對比也成為了時常出現的行為。例如:XP 和 CMMI,XP 和 Scrum,Scrum 和 CMMI,Scrum 和 Lean,Scrum 和 Kanban 等等。
那么,理清這些概念的基礎就是需要理解,Agile 是什么?
先看字面義,在韋氏詞典上查了 “Agile” 的釋義:
ag·ile
adjective \ˈa-jəl, -ˌjī(-ə)l\
: able to move quickly and easily
: quick, smart, and clever
從釋義來看,“Agile” 可以應用於各種廣泛的領域,表示有能力通過適當的技能和控制來快速靈活的前進。
具體到軟件開發領域,“Agile” 是什么?
“Agile” 指的就是敏捷軟件開發宣言(Manifesto for Agile Software Development),“Be Agile” 指的就是要滿足敏捷宣言的定義和所遵循的原則。
敏捷軟件開發宣言(Agile Manifesto)
我們一直在實踐中探尋更好的軟件開發方法,身體力行的同時也幫助他人。由此我們建立了如下價值觀:
- 個體和互動 高於 流程和工具
- 工作的軟件 高於 詳盡的文檔
- 客戶合作 高於 合同談判
- 響應變化 高於 遵循計划
也就是說,盡管右項有其價值,我們更重視左項的價值。
敏捷宣言遵循的 12 條原則
- 我們最重要的目標,是通過持續不斷地及早交付有價值的軟件使客戶滿意。
- 欣然面對需求變化,即使在開發后期也一樣。為了客戶的競爭優勢,敏捷過程掌控變化。
- 經常地交付可工作的軟件,相隔幾星期或一兩個月,傾向於采取較短的周期。
- 業務人員和開發人員必須相互合作,項目中的每一天都不例外。
- 激發個體的斗志,以他們為核心搭建項目。提供所需的環境和支援,輔以信任,從而達成目標。
- 不論團隊內外,傳遞信息效果最好效率也最高的方式是面對面的交談。
- 可工作的軟件是進度的首要度量標准。
- 敏捷過程倡導可持續開發。責任人、開發人員和用戶要能夠共同維持其步調穩定延續。
- 堅持不懈地追求技術卓越和良好設計,敏捷能力由此增強。
- 以簡潔為本,它是極力減少不必要工作量的藝術。
- 最好的架構、需求和設計出自自組織團隊。
- 團隊定期地反思如何能提高成效,並依此調整自身的舉止表現。
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.
Principles behind the Agile Manifesto
- 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.
參考資料
