iT邦幫忙

0

一文總覽敏捷軟體開發術語

1. 什麼是Agile?

Agile是一種軟件開發的理念,是對Software Development的價值觀。不是所有Project都應該使用Agile。Agile只是對現在商業模式急速變化,商機稍縱即逝,軟件開發相對應用於降低風險,快速體現價值的方法。

2. 什麼是敏捷開發?

敏捷開發(Agile Development)是一種以人為核心、迭代、循序漸進的開發方法。

它不是一門技術,它是一種軟件開發的流程,它會指導我們用規定的環節去一步一步完成項目的開發;而這種開發方式的主要驅動核心是人;它採用的是迭代式開發。敏捷開發之所以採用迭代的方式,實際上是利用蠶食方式逐步完成開發任務。將一個宏偉的目標切割為一個個小目標,會給予團隊成員更大的信心,並且能夠更加清晰地明確目標。而每次迭代後的回顧,則使得團隊成員可以更加清晰地明確我們在這個征途中,已經走到了哪裡,未來還有多遠的路程。

Agile就像一把大傘,Scrum、XP等都是其中的一員,Scrum是一種框架,更注重於一些過程,XP更注重於實踐。

agile umbrella visual paradigm的圖片搜尋結果
敏捷方法論有一個共同的特點,那就是都將矛頭指向了“文檔”,它們認為傳統的軟件工程方法文檔量太“重”了,稱為“重量級”方法,而相應的敏捷方法則是“輕量級”方法。

3. 敏捷開發方式

3.1、什麼是XP?

XP:極限編程(eXtreme Programming)
XP是一種輕量(敏捷)、高效、低風險、柔性、可預測、科學而且充滿樂趣的軟件開發方式。

extreme programming visual paradigm的圖片搜尋結果

與其他方法論相比,其特點有:

1.在更短的周期內,更早地提供具體、持續的反饋信息。

2.在迭代的進行計劃編制,首先在最開始迅速生成一個總體計劃,然後在整個3.項目開發過程中不斷的發展它。

3.依賴於自動測試程序來監控開發進度,並及早地捕獲缺陷。

4.依賴於口頭交流、測試和源程序進行溝通。

5.倡導持續的演化式設計。

6.依賴於開發團隊內部的緊密協作。

7.盡可能達到程序員短期利益和項目長期利益的平衡。

3.2、什麼是scrum?

Scrum (英式橄欖球爭球隊):軟件開發模型是敏捷開發的一種;

extreme programming visual paradigm的圖片搜尋結果

Sprints(衝刺/迭代)

(1)Scrum的項目過程由一系列的Sprint組成。

(2)Sprint就是一個迭代開發週期

(3)通常每個Sprint長度為1~4週

(4)通過固定的周期保持良好的節奏。

(5)產品的設計、開發、測試都在Sprint期間完成。

(6)Sprint結束時交付可以工作的軟件。

(7)在Sprint過程中Product Backlog及Sprint結束時間不允許發生變更;Sprint計劃前,Product Backlog可以調整。

3.2.1 Scrum的基本假設:

開發軟件就像開發新產品,無法一開始就能定義軟件產品最終的規程,過程中需要研發、創意、嘗試錯誤,所以沒有一種固定的流程可以保證專案成功。Scrum 將軟件開發團隊比擬成橄欖球隊,有明確的最高目標,熟悉開發流程中所需具備的最佳典範與技術,具有高度自主權,緊密地溝通合作,以高度彈性解決各種挑戰,確保每天、每個階段都朝向目標有明確的推進。

Scrum模型的一個顯著特點就是響應變化,它能夠盡快地響應變化。

3.2.2 有關Scrum的幾個名詞

backlog :可以預知的所有任務,包括功能性和非功能性的所有任務。
Sprint:“衝刺”的意思,把一次迭代的開發內容以最快的速度完成它,這個過程我們稱它為Sprint。
sprint backlog :一個sprint週期內所需要完成的任務。
scrum Master :負責整個Scrum進程,修訂計劃的一個團隊成員。
time-box :一個用於開會時間段。比如每個daily scrum meeting的time-box為15分鐘。
sprint planning meeting :在啟動每個sprint前召開的會議。

Daily Scrum meeting:每日站會。每個成員簡短匯報,通過該會議,團隊成員可以相互了解項目進度。

Sprint review meeting:每個Sprint結束後的評審會議,演示成果。

Sprint retrospective meeting:對剛結束的Sprint進行總結。

3.2.3 實施Scrum的過程簡單介紹

1、首先需要確定一個Product Backlog(按優先順序排列的一個產品需求列表),這個是由Product Owner 負責的;

2、Scrum Team根據Product Backlog列表,做工作量預估和安排;

3、有了Product Backlog列表,需要通過Sprint Planning Meeting(Sprint計劃會議) 從中挑選出一個Story作為本次迭代完成的目標,這個目標的時間週期是1~4個星期,然後把這個Story進行細化,形成一個Sprint Backlog;

4、Sprint Backlog是由Scrum Team去完成的,每個成員根據Sprint Backlog再細化成更小的任務(細到每個任務的工作量在2天內能完​​成);

5、在Scrum Team完成Sprint Backlog過程中,需要進行Daily Scrum Meeting(每日站會),每次會議控制在15分鐘左右,每個人都必鬚髮言,並且要向所有成員當面匯報你昨天完成了什麼,並且向所有成員承諾你今天要完成什麼,同時遇到不能解決的問題也可以提出,每個人回答完成後,更新自己的kanban;

6、做到每日集成,也就是每天都要有一個可以成功編譯、並且可以演示的版本;;

7、當一個Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,這時,我們要進行Srpint Review Meeting(演示會議),也稱為評審會議,產品負責人和客戶都要參加(最好本公司老闆也參加),每一個Scrum Team的成員都要向他們演示自己完成的軟件產品(這個會議非常重要,一定不能取消);

8、最後就是Sprint Retrospective Meeting(回顧會議),也稱為總結會議,以輪流發言方式進行,每個人都要發言,總結並討論改進的地方,放入下一輪Sprint的產品需求中;

9、這樣周而復始,按照同樣的步驟進行下一次Sprint。

3.2.4 scrum中“3355”是指:

3355 visual paradigm的圖片搜尋結果

3個工件: Product Backlog, Sprint Backlog, increment(可交付軟件增量)

3個角色: Product Owner, Scrum Master, Scrum Team

5個會議:Product Backlog Refinement(產品任務細化)

Sprint Planning Meeting

Daily Scrum Meeting

Sprint Review Meeting

Sprint Retrospective Meeting

**5個價值觀:**公開,專注,勇氣,承諾,尊重

3.2.5 Scrum的四個儀式:

scrum events visual paradigm的圖片搜尋結果

(1)、Scrum儀式之Sprint計劃

在啟動一個正式Sprint之前,需要組織一些項目要做事宜(例如需求收集,成本評估,架構審核,發布計劃等)

在Scrum框架下,沒有“個人”的概念,Scrum依靠的是團隊的力量。儘管Scrum Master在這個框架下的作用很重要,但這個人不是獨裁者。做Sprint計劃時,一定要讓整個團隊參加。

(2)、Scrum儀式之Scrum站會

站立會議是敏捷軟件開發方法論Scrum的相關技術之一,亦可稱之為Scrum的最佳實踐。

具體形式為:每天同一時間,一個敏捷開發團隊的所有成員面對面站在一起,進行一個為期15~20分鐘的短會。

站立會議的意義和作用是:

站立會議不僅能要讓所有人了解其他人在做什麼,當前項目計劃進展如何,還可以幫助大家解決那些阻礙做事情的問題,以及共享承諾。

(3)、Scrum儀式之Sprint評審

Sprint評審會用來演示在這個Sprint中開發的產品功能給Product Owner, Produc Owner會組織這階段的會議並且邀請相關的干係人參加。

Sprint演示:在一個Sprint結束以後,進行Sprint評審,團隊在此期間展示他們所完成的工作、可運行的軟件。出席此會議的有Product Owner、開發團隊、ScrumMaster、客戶、等任何對此感興趣的人。

(4)、Scrum儀式之Sprint回顧

Sprint回顧會議與項目總結會議不同:它不是要對項目進行蓋棺定論,而是通過及時回顧,總結上一次Sprint中的得與失,找到改善與提高的辦法,從而讓下一個Sprint走得更好。

4. Agile的12原則
agile principles visual paradigm的圖片搜尋結果

1、我們最重要的目標,是通過持續不斷地及早交付有價值的軟件使客戶滿意。

Scrum:產品需求列表中的優先級及每次迭代後持續提交工作軟件

2、欣然面對需求變化,即使在開發後期也一樣。為了客戶的競爭優勢,敏捷過程掌控變化。

Scrum:產品需求列表可以隨時更新

3、經常地交付可工作的軟件,相隔幾星期或一兩個月,傾向於採取較短的周期。

Scrum:1-4週的的迭代周期

4、業務人員和開發人員必須相互合作,項目中的每一天都不例外。

Scrum:跨職能團隊及每日15分鐘的站立會議

5、激發個體的鬥志,以他們為核心搭建項目。提供所需的環境和支援,輔以信任,從而達成目標。

Scrum:團隊自我管理原則

6、不論團隊內外,傳遞信息效果最好和效率最高的方式是面對面的交談。

Scrum:5~9人的小團隊,kanban的使用以及開放環境的面對面溝​​通

7、可工作的軟件是進度的首要度量標準。

Scrum:對工作的軟件的關注,演示會要求提供可以被驗收和演示的內容

8、敏捷過程倡導可持續開發。責任人、開發人員和用戶要能夠共同維持其步調穩定延續。

Scrum:時間盒概念,迭代速率的使用

9、堅持不懈地追求技術卓越和良好設計,敏捷能力由此增強。

Scrum:要求對產品需求列表中每個用戶故事都定義一個完成標準;

10、以簡潔為本,它是極力減少不必要工作量的藝術。

Scrum:盡量製作正好夠的東西已經在恰當時間做決策

11、最好的架構、需求和設計出自組織團隊。

Scrum:如何做完全放在團隊手中;

12、團隊定期地反思如何能提高成效,並依此調整自身的舉止表現。

Scrum:回顧會的作用

5. TDD、BDD、ATDD、DDD開發

(1)、TDD:測試驅動開發(Test-Driven Development)

測試驅動開發是敏捷開發中的一項核心實踐和技術,也是一種設計方法論,TDD首先考慮使用需求(對象、功能、過程、接口等)

主要是編寫測試用例框架對功能的過程和接口進行設計,而測試框架可以持續進行驗證。

(2)、BDD:行為驅動開發(Behavior Driven Development)

實際上BDD可以看作是對TDD的一種補充,讓開發、測試、BA以及客戶都能在這個基礎上達成一致,JBehave之類的BDD框架

(3)、ATDD:驗收測試驅動開發(Acceptance Test Driven Development)

通過單元測試用例來驅動功能代碼的實現,團隊需要定義出期望的質量標準和驗收細則,以明確而且達成共識的驗收測試計劃(包含一系列測試場景)來驅動開發人員的TDD實踐和測試人員的測試腳本開發。面向開發人員,強調如何實現系統以及如何檢驗

(4)、DDD:領域驅動開發(Domain Drive Design)

DDD指的是Domain Drive Design,也就是領域驅動開發,DDD實際上也是建立在這個基礎之上,因為它關注的是Service層的設計,著重於業務的實現,將分析和設計結合起來,不再使他們處於分裂的狀態,這對於我們正確完整的實現客戶的需求,以及建立一個具有業務伸縮性的模型


尚未有邦友留言

立即登入留言