Scrum敏捷方法在軟件工程的應(yīng)用

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

導(dǎo)語:Scrum敏捷方法在軟件工程的應(yīng)用一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

Scrum敏捷方法在軟件工程的應(yīng)用

敏捷方法是一種以人為核心的軟件開發(fā)方法,這種方法不僅被應(yīng)用在軟件開發(fā)領(lǐng)域,更在軟件工程教學(xué)之中得到了廣泛應(yīng)用?;诖?,本文闡述了將敏捷方法引入軟件工程項(xiàng)目的優(yōu)勢和挑戰(zhàn),分析了基于scrum敏捷方法軟件工程實(shí)驗(yàn)框架設(shè)計(jì)方案,并對其具體實(shí)施路徑進(jìn)行了論述,該設(shè)計(jì)方案的研究與實(shí)施能夠?yàn)橄嚓P(guān)軟件開發(fā)工作人員帶來一個更為便捷的軟件工程實(shí)驗(yàn)框架設(shè)計(jì)思路。軟件工程課程的實(shí)踐性相對較強(qiáng),只有基于有效實(shí)驗(yàn),才能保證理論與實(shí)際的有效聯(lián)系,進(jìn)而讓教學(xué)質(zhì)量得到提升。敏捷方法在軟件工程項(xiàng)目中的應(yīng)用存在諸多優(yōu)勢,但也同樣為軟件工程實(shí)驗(yàn)項(xiàng)目帶來了挑戰(zhàn)。為了提高項(xiàng)目教學(xué)成效,相關(guān)教師必須幫助學(xué)生有效理解敏捷方法,保證理論教學(xué)與實(shí)驗(yàn)內(nèi)容同步,讓基于敏捷方法的軟件工程實(shí)驗(yàn)取得良好效果。

1敏捷方法的應(yīng)用優(yōu)勢和挑戰(zhàn)

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

1.1優(yōu)勢

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

1.2挑戰(zhàn)

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

2基于敏捷方法的軟件工程實(shí)驗(yàn)設(shè)計(jì)與實(shí)施

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

2.1實(shí)驗(yàn)框架設(shè)計(jì)

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

2.2實(shí)驗(yàn)框架實(shí)施

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

作者:孫德剛 單位:山東華宇工學(xué)院