敏捷開發系列之旅 第一站(掀起你的蓋頭來)
乍一聽,“敏捷開發”這個詞很新鮮,其實不然。早在2001年2月,就作為一種相對新穎的產品開發模式,提出了“敏捷開發”這一概念。到底什麼是“敏捷開發”呢?
誕生
也就是2001年的2月(沒有考據),有17名之多的軟體工程師在美國猶他州的Snowbird舉行會議,討論輕量級軟體開發方法,併發布了《敏捷軟體開發宣言》。這標誌著敏捷開發的誕生。這一模式隨後被矽谷創業公司大量應用,並於近幾年被引入國內,讓中國的工程師們有機會接觸這一新奇的開發模式。
敏捷宣言
- 個體和互動重於過程和工具
敏捷方法認為,人是軟體開發中最重要的因素,開發團隊要能做到團結協作,人與人面對面的交流、溝通,是最快速、最有效的途徑。
- 可以工作的軟體重於面面俱到的文件
文件的意義在於為程式服務,過多的文件需要開發人員花費大量的時間去維護,而且還要確保文件與程式碼的實時性,否則就失去了文件的意義。而問題也就在於,開發人員沒有把時間、精力放到最重要的任務上,能力、資源沒有最大化的發揮效能。敏捷方法認為,文件應當短小精悍、易於維護,而且主題突出。
- 客戶協作重於合同談判
做過軟體開發的人都知道,客戶對產品的需求是不斷變化的,試圖一開始就規定專案的細節和進度,顯然是不現實的,只有開發團隊和客戶彼此精誠合作,常與溝通,頻繁的客戶反饋,才能促使專案的成功。
- 隨時響應變化重於循規蹈矩
客戶的需求在產品的開發階段是不斷變化的,即使談判時確定的需求,也可能會根據某些因素而發生巨大的改變。因此,敏捷方法認為,在制定計劃時應儘可能的簡潔、靈活,以適應技術和需求方面的變動。當然,所有的未知的因素是不可能考慮周全的,這就要求我們在制定計劃時,留出一定的緩衝期,來應對這些未知情況。
核心思想
說了這麼多,到底什麼是“敏捷開發”呢?其實,簡單的說,敏捷開發是一種以人為核心、迭代、循序漸進的開發方法。在敏捷開發中,軟體專案經常被拆分為多個子專案或多個步驟來完成,而一個步驟又稱為一次迭代,在每一次迭代完成之後,都會產生一個可交付的產品。這樣做有效的分解了整個專案的複雜度,便於實現產品交付目標,同時在專案的早起,就能拿出初具雛形的產品。
敏捷開發方法的核心思想概括起來,就是“以人為本”和“適應變化”。
- 以人為本
敏捷方法認為,人是軟體開發中最重要的因素。對於人來說,軟體開發應該是一種愉快而又輕鬆的事情,它們注重調動自我的能動性,以積極、愉悅、樂觀的心態完成開發,並培養人的自豪感。敏捷開發的理念是充分的信任開發團隊能夠很好的完成任務,這是管理的中心主題。
- 適應變化
傳統的軟體開發強調的是,足夠清晰的需求,制定詳細的文件,按照預定的計劃逐一進行開發、測試。這樣的方式在制定好計劃之後拒絕變化,無法應對客戶對需求的實時更改,後續的維護必將會付出巨大的代價。
而敏捷方法則是以最簡的方式來迎接變化,客戶在整個開發過程中都是參與者,開發團隊能夠在最短的時間內得到客戶的反饋,不斷適應需求的變更,從而使得最終的產品能夠充分的符合客戶的要求。
管理工具
俗話說,工欲善其事,必先利其器。沒有一個好的工具,事倍功半是必然的。目前,已經有一些專案管理工具用於敏捷開發,可以用他們來幫助規劃、跟蹤,分析和整合工作。
這些工具在敏捷開發中扮演著重要的角色,也是知識管理的一種方法。通常包括:版本控制整合,進度跟蹤,工作分配,整合釋出,迭代規劃,論壇和軟體缺陷的報告和跟蹤。
我們專案中用到的兩款專案管理工具,其一是國內的公司出品的Web版的開源軟體——禪道(ZenTao),它集產品管理、專案管理、質量管理、文件管理、組織管理和事務管理於一體,是一款專業的研發專案管理軟體,完整地覆蓋了專案管理的核心流程。還有一款是國外的Atlassian公司出品的專案與事務跟蹤工具——JIRA,被廣泛應用於缺陷跟蹤、客戶服務、需求收集、流程審批、任務跟蹤、專案跟蹤和敏捷管理等工作領域。
方法
- XP
- SCRUM
- Crystal Method
- FDD
- ASD
- DSDM
- RUP
- LD
結束語
由於我也是第一次接觸敏捷開發,我將與大家一同學習敏捷的真諦,在專案中運用敏捷的思想,真正做到開發敏捷、思維敏捷。在這個關於敏捷開發的系列之旅中,第一站主要是簡單的介紹了一下敏捷開發,讓大家對他有一個整體的瞭解。
後續的文章,我會結合各個不同的敏捷方法,同時在專案中吸收的經驗、教訓,都會與大家一起分享,一同來探討有關敏捷的真諦。
相關文章
- 掀起你的蓋頭來——談VC++物件模型C++物件模型
- 掀起C++0x的蓋頭來:C++之父Bjarne Stroustrup訪談C++JAR
- 敏捷開發系列之旅 第二站(走近XP極限程式設計)敏捷程式設計
- 開啟iOS/Mac開發之旅,過來人告訴你16件事iOSMac
- iOS開發系列–讓你的應用“動”起來iOS
- 網際網路都在講的敏捷開發,這些敏捷開發流程你都知道嗎?敏捷
- 三分鐘讓你理解什麼是敏捷開發,這才是敏捷開發......敏捷
- 如何讓開發變得敏捷起來?敏捷
- Sql Server之旅——第一站 那些給我們帶來福利的系統檢視SQLServer
- KPN iTV的敏捷轉型之旅敏捷
- 敏捷開發敏捷
- CSS之旅——第一站 為什麼要用CSSCSS
- Firefox 你的風頭能蓋過IE嗎?(轉)Firefox
- 敏捷開發大家談(五)--敏捷開發的設計原則敏捷
- [敏捷開發實踐](1) 認識敏捷開發敏捷
- 敏捷開發的那些事敏捷
- Web 開發的安全之旅Web
- 敏捷開發框架敏捷框架
- 敏捷開發理解敏捷
- scrum敏捷開發Scrum敏捷
- 敏捷開發--Scrum開發模型敏捷Scrum模型
- 你們是如何敏捷開發 Laravel 私有擴充套件包的?敏捷Laravel套件
- asp.net mvc 之旅—— 第一站 從簡單的razor入手ASP.NETMVC
- 為什麼說敏捷開發是應用程式的未來?敏捷
- 敏捷開發和傳統開發的區別?以及敏捷開發管理工具的推薦敏捷
- 基於Github的敏捷開發Github敏捷
- 敏捷開發框架的優勢敏捷框架
- 敏捷開發中的測試敏捷
- 瀑布式開發和敏捷開發的區別敏捷
- 開始Go開發之旅Go
- 【DevCloud · 敏捷智庫】暴走在釋出前夜的開發,你怕不怕?devCloud敏捷
- 敏捷規劃,讓你做一個有計劃的開發人敏捷
- 敏捷開發入門敏捷
- 敏捷開發簡介敏捷
- 敏捷開發相關敏捷
- 敏捷式開發管理敏捷
- 初識敏捷開發敏捷
- 【筆記】敏捷開發筆記敏捷