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