什么是敏捷開發?
敏捷開發大多被定義為一種與軟件開發項目管理相關的方法論,同時也描述了作為一個團隊工作的方式,通過降低風險和提供早期的好處來達到軟件產品所要求的質量水平。
與傳統的軟件開發瀑布模型不同,敏捷軟件開發是迭代式的。這意味著在敏捷的軟件開發環境中,我們期待著快速的變化。
為什么傳統軟件開發技術有時會失敗,敏捷開發變得越來越流行?
傳統的軟件開發方法由于業務流程和客戶需求的變化而失敗。如果要求永遠不變,傳統的開發方法就起作用 但問題是業務需求正在不斷變化。
靈活的方法使軟件開發團隊能夠專注于軟件本身,而不是花時間在軟件設計和文檔上。當我們考慮系統需求在開發過程中通常會快速變化的情況時,這種方法更為有效。
在敏捷開發環境中我們可以找到的另一個關鍵點是使用快速和更短的文檔,我們可以快速完成任務。
但是,當考慮敏捷軟件開發在軟件產品中取得成功時,我們需要有誠實的合作開發者和聰明的客戶。
有一些敏捷的軟件開發方法需要討論。但是像Scrum這樣的敏捷軟件開發方法在當今被廣泛使用。
其他敏捷方法包括
? 極限編程
? 水晶
? 自適應軟件開發
? 功能驅動開發
以下是與每個敏捷軟件開發方法相關的一套原則
客戶參與
客戶參與敏捷軟件開發環境是獲得軟件項目成功的主要原則
客戶應該通過提供新的需求和想法,始終密切參與開發過程。開發人員可以使用客戶評論來評估迭代。
增量交貨
該軟件將逐步開發并交付給客戶。客戶應指定每個增量中應包含的要求。
人們不處理
在敏捷軟件開發方法中,開發人員可以以自己的方式工作,而不用考慮軟件過程。這主要側重于使用開發人員的技能,同時提高他們的技能,而不是遵循一個規則的過程。
迎接改變
要求更改是可以接受的。另外,軟件的開發方式應能適應開發過程中和軟件交付后的需求變化
保持簡單
整個開發團隊和客戶應該重點關注正在開發的軟件的簡單性以及開發該軟件所遵循的過程。這意味著參與開發過程的每個人都應該支持去除復雜性。
什么是Scrum?
Scrum是管理產品開發的敏捷框架之一。在被廣泛使用的同時,它也成為傳統軟件開發過程的替代方案
在scrum中有三個關鍵角色需要討論。
產品擁有者
產品所有者主要是利益相關者,或者我們可以定義為對將要開發的軟件具有原始愿景的客戶。他通過確定哪些功能應包含在產品中并對其進行優先級定義了產品積壓的內容(基本上稱為用戶故事)。
Scrum大師
與傳統的團隊領導或項目經理不同,他是團隊的領導者之一。他負責保護團隊,順利開展工作,消除障礙。并負責召開會議,確保一切順利。
Scrum團隊
團隊可能由開發人員,測試人員和其他人員參與到軟件開發過程中,作為一個團隊工作,而沒有遵循我們在傳統軟件開發流程中可以找到的規則。Scrum團隊還負責在每個沖刺階段交付每個增量來成功完成項目
有三種類型的文件在Scrum框架中使用
產品積壓
產品負責人負責創建產品返回日志,其中包括被稱為用戶故事的重要功能列表。這就像是傳統需求規格的替代品
用戶故事
描述一組特征的方式應該包含在正在開發的軟件中。用戶故事以這樣的方式呈現,使得Scrum團隊可以清楚地了解需求。
Sprint積壓
沖刺回日志由產品待辦事項中用戶故事的最高優先級組成,在沖刺會議期間,Scrum團隊確定在特定沖刺中要完成的主要要求。
燒毀圖表
燒毀圖表顯示每個沖刺的進度,并以圖形方式表示在剩余時間內完成的平衡工作。
在scrum中有三種類型的會議
沖刺計劃
沖刺計劃是基本上開始沖刺的會議。產品所有者,Scrum主人和團隊會面討論用戶故事。同時還確定了沖刺計劃會議期間每個用戶故事的重要性。
每日頭條
每日頭條是一個簡短的會議,討論上次會議以來我們已經完成的事情,發展的現狀,發展進程放緩的障礙是什么。早上開這個會議比較合適,然后Scrum團隊可以確定一天的工作時間表。
短跑審查
在每次沖刺之后,本次沖刺檢查將由團隊成員和產品負責人共同參與,共同討論已完成的工作以及如何改進工作流程。而且在最后一個沖刺階段完成的產品功能的演示是由Scrum團隊完成的
Sprint回顧展
sprint回顧的目的是回顧團隊如何完成最后的沖刺,以及他們可以做些什么來改進下一個沖刺的過程。
Scrum工作流程
? Scrum工作流程始于產品所有者提供的產品積壓
? 之后,進行沖刺計劃會議
? 在沖刺計劃期間,產品所有者,Scrum大師和Scrum團隊將遍歷用戶故事,并確定下一個沖刺中用戶故事的優先級。
? Sprint Backlog是sprint規劃的輸出
? 按照sprint backlog開發,測試和審查應用程序。整個過程被稱為沖刺
? 在沖刺,scrum會議期間。每天舉行
? 在沖刺結束時,我們有潛在的可發運產品
? 在Scrum團隊和產品所有者的參與下對產品進行沖刺評估
? 產品和過程的回顧
? 從而沖刺回顧完成沖刺
? 下一個沖刺的開始
有關更詳細的參考資料,請閱讀Sommerville的“ Software Engineering Seventh Edition ” 一書