Scrum敏捷方法在軟件工程的應用

時間:2022-06-03 11:13:32

導語:Scrum敏捷方法在軟件工程的應用一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

Scrum敏捷方法在軟件工程的應用

敏捷方法是一種以人為核心的軟件開發方法,這種方法不僅被應用在軟件開發領域,更在軟件工程教學之中得到了廣泛應用。基于此,本文闡述了將敏捷方法引入軟件工程項目的優勢和挑戰,分析了基于scrum敏捷方法軟件工程實驗框架設計方案,并對其具體實施路徑進行了論述,該設計方案的研究與實施能夠為相關軟件開發工作人員帶來一個更為便捷的軟件工程實驗框架設計思路。軟件工程課程的實踐性相對較強,只有基于有效實驗,才能保證理論與實際的有效聯系,進而讓教學質量得到提升。敏捷方法在軟件工程項目中的應用存在諸多優勢,但也同樣為軟件工程實驗項目帶來了挑戰。為了提高項目教學成效,相關教師必須幫助學生有效理解敏捷方法,保證理論教學與實驗內容同步,讓基于敏捷方法的軟件工程實驗取得良好效果。

1敏捷方法的應用優勢和挑戰

敏捷軟件開發方法是一種當前比較流行的用于應對快速變化需求的軟件開發能力,它的核心是人,是一種遵循迭代和循序漸進的軟件開發方法,應用時程序員與業務專家之間存在緊密協作關系和直接溝通渠道,還擁有緊湊而自我組織型的團隊。它更多的是強調軟件項目中組織團隊的合作,從而有效提高了軟件項目開發的效率,更能滿足當下快速發展的項目開發體量大、工期緊等現實需求。

1.1優勢

從軟件工程敏捷開發方法自身看,分為思想、原則、流程、方法、工具、實施等,是軟件即服務(SoftwareasaService)等軟件開發模式的一種良好的闡釋。比如,在SaaS開發模式下,產品一旦就能立刻部署到企業內部服務器上,用戶隨即就可以使用本軟件的服務。和原有包裝盒軟件產品相比,SaaS開發模式下的軟件迭代以及交付速度要快得多、并且軟件交付成本幾乎為零,大大降低了軟件迭代、缺陷修復的成本,使軟件產品持續交付成為現實。以往,軟件工程課程基于軟件開發過程的瀑布模型設置教學大綱。也就是說,在課程規劃方面,大多以概念、需求分析、定義、系統設計、詳細設計和編程測試為路線設置課程內容,實驗課程將會穿插在理論教學當中并與后者保持同步和自然銜接,因而實驗教學非常容易實施。但基于這種方法培養的人才,與業內流行的敏捷開發方法要求不符,所以將敏捷開發方法引入軟件工程教學十分必要。現階段,引入敏捷開發方法,有著如下優勢:第一,以小團隊方式開展實踐教學,可賦予學生充分參與實踐的機會;第二,趣味性、參與性強,容易激發學生的學習興趣和參與熱情;無團隊領導且強調自我管理,便于培養學生的集體榮譽感與責任感,有助于增強軟件專業學生的自我管理能力;第四,關注工作產品的自身價值,學生可從中獲得成就感與滿足感,更能增強個人的軟件開發與測試能力。

1.2挑戰

從上文中我們不難看出,將敏捷開發方法引入軟件工程教學,有助于提高教學質量。但在這一過程也為軟件工程的實驗教學帶來了挑戰。敏捷方法的重點在于快速迭代,迭代周期大多為2-4周/次,若僅讓學生完成單個迭代實驗不利于學生理解該模式,只有讓他們在學期內完成3-4個迭代并交付多個版本,才能較為完整地踐行開發的敏捷過程。不過,從實際情況來看,若要完成多個迭代,則難以保證實驗設計與理論教學的有效銜接,二者的不同步也將阻礙軟件工程的實驗成效。

2基于敏捷方法的軟件工程實驗設計與實施

傳統的實驗環境是基于瀑布模型建設的,它并不能滿足敏捷方法的實際要求。比如,基于敏捷方法,應通過UserStory(用戶故事)和Productbacklog(產品待辦事項集合)來描述Scrum需求;任務工作量則需要小組成員的敏捷估算撲克游戲來估算。而且,實踐中,還需要基于BurndownChart即依賴燃盡圖來控制實驗進度,讓任務帖子由“Todo”向“Inprogress”、“Testing”和“Done”等欄目轉移的過程保持可控。軟件工程敏捷方法的實驗框架設計采用Scrum過程框架,共分為3個階段,每一階段設定為1個月。第1階段為軟件開發的前期準備階段,包括信息收集、認知啟動、數據流分析等工作。而第2、3階段,對應敏捷開發的2個迭代周期,即Scrum過程模式中Sprint。在完成產品的開發過程中,還需要把軟件需求分析與需求定義、軟件設計方法、持續構建與集成、單元測試、功能測試和非功能測試等內容融入到軟件開發與迭代過程,體現軟件工程思想、項目管理、質量管理等內容。基于Scrum敏捷開發過程模型如圖1所示。

2.1實驗框架設計

現階段,有關于測試驅動開發(TestDrivenDevelopment)即TDD、Scrum、結對編程、極限編程等敏捷方法的研究相對較多,為基于敏捷方法的實驗框架設計提供了參考。對于軟件工程而言,實踐性強、實驗多且難度大是其課程設置的主要特點,只有基于有效實驗才能保證理論知識與實踐訓練之間的有效融合,所以在教學過程中實驗內容不可或缺。在進行基于敏捷方法的軟件工程實驗框架設計之前,相關工作人員需要對實踐內容進行科學選定,從而保證課程的內容與軟件工程課程具有同步性。比如,以Scrum過程框架作為軟件工程實驗教學的敏捷方法,用一學期的時間完成軟件工程理論內容教學和相關實驗。那么,Scrum框架的整體設計時限為4個月,在設計時應根據前期準備、第一個迭代、第二個迭代和第三個迭代來劃分框架設計的全部周期,從而保證軟件開發的完整性。以每一個月為1階段周期,以第一階段為前期準備階段,后三個階段為學生實踐階段。2.1.1前期準備階段在這一階段,學生們需要完成軟件開發前的所有準備工作。比如,產品定義、需求分析、數據結構和數據流分析、系統框架設計以及產品計劃。此時,基于敏捷方法的軟件工程實驗教學內容應該與軟件工程的基本概念、項目管理過程、軟件過程、系統框架和需求工程等理論課程相對應。主要實驗任務應該是建立團隊、分析需求、估算工作量、定義產品、規劃并設計系統架構。當然,分析基本業務流程和數據流、數據結構也可作為實驗任務。實驗后,應交付產品愿景、團隊分工和Productbacklog。2.1.2第一個迭代所謂第一個迭代,就是軟件開發過程中有關于產品功能特性開發的第一個迭代,這是Sprint的第一個階段。設計實驗框架時,相關工作人員應該基于先易后難的原則作業。因此,首個迭代較為簡單,只要保證每一個Scrum環節都過一遍即可。比如,以制定Sprint計劃、設計數據庫、編程、進行僅限于功能測試的驗收測試、開展產品Review和反思會議,完成Productbacklog維護等實驗任務。在實驗后,交付Springbacklog、燃盡圖、會議記錄和第一版產品,并提供修改后的Productbacklog。而且,實驗內容應該與系統建模、計劃項目、測試基本方法等理論課程進行有效銜接。2.1.3第二個迭代與第一個迭代相比,第二個迭代在實驗內容上增加了單元測試和UI設計;在可選任務中增加了結對編程、重構代碼、每日構建和搭建繼承環境等內容;實驗后的交付內容與第一個迭代相同;理論教學銜接以案例分析、代碼重構、結構化分析與設計和基礎設施與部署等內容為主。2.1.4第三個迭代相比于前兩個迭代,第三個迭代的實驗應添加代碼評審內容,其可選任務主要為自動化測試、缺陷分析、可測試性測試驅動開發等內容;實驗后需提供最終版本的燃盡圖、產品和會議記錄。教學時,應與風險分析與控制、持續改進過程、團隊建設溝通、產品質量分析等理論課程內容銜接。

2.2實驗框架實施

為了保證基于敏捷方法的軟件工程框架設計的有效實施,教師應該以觀察員的身份參與學生實驗組的會議,但不宜參與討論;在必要時,可為學生提供指導和示范,但教師應合理安排實踐,從而保證所有學生都能獲得來自教師的輔導和支持。而且,教師還應充分尊重敏捷團隊的自我管理特點,以開放、包容、信任和鼓勵的態度面對學生,引導他們參與管理過程,提高管理能力。比如,鼓勵學生自主命題、組織學生參與實驗答辯評定、引導自主確定團隊分工等。綜上所述,基于敏捷方法的軟件工程實驗教學,能夠有效提升該專業學生的實驗能力、學習能力和應用能力,可為增強學生學科興趣和實踐創新能力奠定基礎。在實際作業環節,相關教師需要基于實際教學需要,基于敏捷方法開展軟件工程實驗框架設計,并且通過教師引導和師生配合保證設計方案的順利實施。

作者:孫德剛 單位:山東華宇工學院