Scrum敏捷方法在軟件工程的應用
時間:2022-06-03 11:13:32
導語:Scrum敏捷方法在軟件工程的應用一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
敏捷方法是一種以人為核心的軟件開發(fā)方法,這種方法不僅被應用在軟件開發(fā)領(lǐng)域,更在軟件工程教學之中得到了廣泛應用?;诖耍疚年U述了將敏捷方法引入軟件工程項目的優(yōu)勢和挑戰(zhàn),分析了基于scrum敏捷方法的軟件工程實驗框架設(shè)計方案,并對其具體實施路徑進行了論述,該設(shè)計方案的研究與實施能夠為相關(guān)軟件開發(fā)工作人員帶來一個更為便捷的軟件工程實驗框架設(shè)計思路。軟件工程課程的實踐性相對較強,只有基于有效實驗,才能保證理論與實際的有效聯(lián)系,進而讓教學質(zhì)量得到提升。敏捷方法在軟件工程項目中的應用存在諸多優(yōu)勢,但也同樣為軟件工程實驗項目帶來了挑戰(zhàn)。為了提高項目教學成效,相關(guān)教師必須幫助學生有效理解敏捷方法,保證理論教學與實驗內(nèi)容同步,讓基于敏捷方法的軟件工程實驗取得良好效果。
1敏捷方法的應用優(yōu)勢和挑戰(zhàn)
敏捷軟件開發(fā)方法是一種當前比較流行的用于應對快速變化需求的軟件開發(fā)能力,它的核心是人,是一種遵循迭代和循序漸進的軟件開發(fā)方法,應用時程序員與業(yè)務專家之間存在緊密協(xié)作關(guān)系和直接溝通渠道,還擁有緊湊而自我組織型的團隊。它更多的是強調(diào)軟件項目中組織團隊的合作,從而有效提高了軟件項目開發(fā)的效率,更能滿足當下快速發(fā)展的項目開發(fā)體量大、工期緊等現(xiàn)實需求。
1.1優(yōu)勢
從軟件工程敏捷開發(fā)方法自身看,分為思想、原則、流程、方法、工具、實施等,是軟件即服務(SoftwareasaService)等軟件開發(fā)模式的一種良好的闡釋。比如,在SaaS開發(fā)模式下,產(chǎn)品一旦就能立刻部署到企業(yè)內(nèi)部服務器上,用戶隨即就可以使用本軟件的服務。和原有包裝盒軟件產(chǎn)品相比,SaaS開發(fā)模式下的軟件迭代以及交付速度要快得多、并且軟件交付成本幾乎為零,大大降低了軟件迭代、缺陷修復的成本,使軟件產(chǎn)品持續(xù)交付成為現(xiàn)實。以往,軟件工程課程基于軟件開發(fā)過程的瀑布模型設(shè)置教學大綱。也就是說,在課程規(guī)劃方面,大多以概念、需求分析、定義、系統(tǒng)設(shè)計、詳細設(shè)計和編程測試為路線設(shè)置課程內(nèi)容,實驗課程將會穿插在理論教學當中并與后者保持同步和自然銜接,因而實驗教學非常容易實施。但基于這種方法培養(yǎng)的人才,與業(yè)內(nèi)流行的敏捷開發(fā)方法要求不符,所以將敏捷開發(fā)方法引入軟件工程教學十分必要?,F(xiàn)階段,引入敏捷開發(fā)方法,有著如下優(yōu)勢:第一,以小團隊方式開展實踐教學,可賦予學生充分參與實踐的機會;第二,趣味性、參與性強,容易激發(fā)學生的學習興趣和參與熱情;無團隊領(lǐng)導且強調(diào)自我管理,便于培養(yǎng)學生的集體榮譽感與責任感,有助于增強軟件專業(yè)學生的自我管理能力;第四,關(guān)注工作產(chǎn)品的自身價值,學生可從中獲得成就感與滿足感,更能增強個人的軟件開發(fā)與測試能力。
1.2挑戰(zhàn)
從上文中我們不難看出,將敏捷開發(fā)方法引入軟件工程教學,有助于提高教學質(zhì)量。但在這一過程也為軟件工程的實驗教學帶來了挑戰(zhàn)。敏捷方法的重點在于快速迭代,迭代周期大多為2-4周/次,若僅讓學生完成單個迭代實驗不利于學生理解該模式,只有讓他們在學期內(nèi)完成3-4個迭代并交付多個版本,才能較為完整地踐行開發(fā)的敏捷過程。不過,從實際情況來看,若要完成多個迭代,則難以保證實驗設(shè)計與理論教學的有效銜接,二者的不同步也將阻礙軟件工程的實驗成效。
2基于敏捷方法的軟件工程實驗設(shè)計與實施
傳統(tǒng)的實驗環(huán)境是基于瀑布模型建設(shè)的,它并不能滿足敏捷方法的實際要求。比如,基于敏捷方法,應通過UserStory(用戶故事)和Productbacklog(產(chǎn)品待辦事項集合)來描述Scrum需求;任務工作量則需要小組成員的敏捷估算撲克游戲來估算。而且,實踐中,還需要基于BurndownChart即依賴燃盡圖來控制實驗進度,讓任務帖子由“Todo”向“Inprogress”、“Testing”和“Done”等欄目轉(zhuǎn)移的過程保持可控。軟件工程敏捷方法的實驗框架設(shè)計采用Scrum過程框架,共分為3個階段,每一階段設(shè)定為1個月。第1階段為軟件開發(fā)的前期準備階段,包括信息收集、認知啟動、數(shù)據(jù)流分析等工作。而第2、3階段,對應敏捷開發(fā)的2個迭代周期,即Scrum過程模式中Sprint。在完成產(chǎn)品的開發(fā)過程中,還需要把軟件需求分析與需求定義、軟件設(shè)計方法、持續(xù)構(gòu)建與集成、單元測試、功能測試和非功能測試等內(nèi)容融入到軟件開發(fā)與迭代過程,體現(xiàn)軟件工程思想、項目管理、質(zhì)量管理等內(nèi)容?;赟crum敏捷開發(fā)過程模型如圖1所示。
2.1實驗框架設(shè)計
現(xiàn)階段,有關(guān)于測試驅(qū)動開發(fā)(TestDrivenDevelopment)即TDD、Scrum、結(jié)對編程、極限編程等敏捷方法的研究相對較多,為基于敏捷方法的實驗框架設(shè)計提供了參考。對于軟件工程而言,實踐性強、實驗多且難度大是其課程設(shè)置的主要特點,只有基于有效實驗才能保證理論知識與實踐訓練之間的有效融合,所以在教學過程中實驗內(nèi)容不可或缺。在進行基于敏捷方法的軟件工程實驗框架設(shè)計之前,相關(guān)工作人員需要對實踐內(nèi)容進行科學選定,從而保證課程的內(nèi)容與軟件工程課程具有同步性。比如,以Scrum過程框架作為軟件工程實驗教學的敏捷方法,用一學期的時間完成軟件工程理論內(nèi)容教學和相關(guān)實驗。那么,Scrum框架的整體設(shè)計時限為4個月,在設(shè)計時應根據(jù)前期準備、第一個迭代、第二個迭代和第三個迭代來劃分框架設(shè)計的全部周期,從而保證軟件開發(fā)的完整性。以每一個月為1階段周期,以第一階段為前期準備階段,后三個階段為學生實踐階段。2.1.1前期準備階段在這一階段,學生們需要完成軟件開發(fā)前的所有準備工作。比如,產(chǎn)品定義、需求分析、數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)流分析、系統(tǒng)框架設(shè)計以及產(chǎn)品計劃。此時,基于敏捷方法的軟件工程實驗教學內(nèi)容應該與軟件工程的基本概念、項目管理過程、軟件過程、系統(tǒng)框架和需求工程等理論課程相對應。主要實驗任務應該是建立團隊、分析需求、估算工作量、定義產(chǎn)品、規(guī)劃并設(shè)計系統(tǒng)架構(gòu)。當然,分析基本業(yè)務流程和數(shù)據(jù)流、數(shù)據(jù)結(jié)構(gòu)也可作為實驗任務。實驗后,應交付產(chǎn)品愿景、團隊分工和Productbacklog。2.1.2第一個迭代所謂第一個迭代,就是軟件開發(fā)過程中有關(guān)于產(chǎn)品功能特性開發(fā)的第一個迭代,這是Sprint的第一個階段。設(shè)計實驗框架時,相關(guān)工作人員應該基于先易后難的原則作業(yè)。因此,首個迭代較為簡單,只要保證每一個Scrum環(huán)節(jié)都過一遍即可。比如,以制定Sprint計劃、設(shè)計數(shù)據(jù)庫、編程、進行僅限于功能測試的驗收測試、開展產(chǎn)品Review和反思會議,完成Productbacklog維護等實驗任務。在實驗后,交付Springbacklog、燃盡圖、會議記錄和第一版產(chǎn)品,并提供修改后的Productbacklog。而且,實驗內(nèi)容應該與系統(tǒng)建模、計劃項目、測試基本方法等理論課程進行有效銜接。2.1.3第二個迭代與第一個迭代相比,第二個迭代在實驗內(nèi)容上增加了單元測試和UI設(shè)計;在可選任務中增加了結(jié)對編程、重構(gòu)代碼、每日構(gòu)建和搭建繼承環(huán)境等內(nèi)容;實驗后的交付內(nèi)容與第一個迭代相同;理論教學銜接以案例分析、代碼重構(gòu)、結(jié)構(gòu)化分析與設(shè)計和基礎(chǔ)設(shè)施與部署等內(nèi)容為主。2.1.4第三個迭代相比于前兩個迭代,第三個迭代的實驗應添加代碼評審內(nèi)容,其可選任務主要為自動化測試、缺陷分析、可測試性測試驅(qū)動開發(fā)等內(nèi)容;實驗后需提供最終版本的燃盡圖、產(chǎn)品和會議記錄。教學時,應與風險分析與控制、持續(xù)改進過程、團隊建設(shè)溝通、產(chǎn)品質(zhì)量分析等理論課程內(nèi)容銜接。
2.2實驗框架實施
為了保證基于敏捷方法的軟件工程框架設(shè)計的有效實施,教師應該以觀察員的身份參與學生實驗組的會議,但不宜參與討論;在必要時,可為學生提供指導和示范,但教師應合理安排實踐,從而保證所有學生都能獲得來自教師的輔導和支持。而且,教師還應充分尊重敏捷團隊的自我管理特點,以開放、包容、信任和鼓勵的態(tài)度面對學生,引導他們參與管理過程,提高管理能力。比如,鼓勵學生自主命題、組織學生參與實驗答辯評定、引導自主確定團隊分工等。綜上所述,基于敏捷方法的軟件工程實驗教學,能夠有效提升該專業(yè)學生的實驗能力、學習能力和應用能力,可為增強學生學科興趣和實踐創(chuàng)新能力奠定基礎(chǔ)。在實際作業(yè)環(huán)節(jié),相關(guān)教師需要基于實際教學需要,基于敏捷方法開展軟件工程實驗框架設(shè)計,并且通過教師引導和師生配合保證設(shè)計方案的順利實施。
作者:孫德剛 單位:山東華宇工學院