劉偉 黃辛迪
[摘 要]學科競賽是促進人才培養(yǎng)的重要手段之一,為了更好地指導和參加應(yīng)用軟件開發(fā)類學科競賽,在指導和備賽過程中引入了Scrum敏捷開發(fā)方法,即在參賽項目的啟動階段、實施階段和結(jié)束階段融合Scrum方法進行角色劃分、系統(tǒng)分解、任務(wù)估算、進度管理、過程跟蹤和控制等,取得了良好的效果。實踐應(yīng)用效果表明,Scrum的應(yīng)用有助于提高項目開發(fā)效率和項目質(zhì)量,全面提升了參賽學生的實踐開發(fā)能力和工程素養(yǎng)。
[關(guān)鍵詞]學科競賽;Scrum;敏捷開發(fā)方法;工程素質(zhì)
[中圖分類號] G64 [文獻標識碼] A [文章編號] 2095-3437(2019)05-0079-04
學科競賽是培養(yǎng)大學生創(chuàng)新能力和工程素質(zhì)的重要手段,也是用人單位選拔人才的重要依據(jù)之一[1],特別是對于計算機等工科專業(yè)的大學生而言,參加各項學科競賽可以提升學生的工程實踐能力、工程創(chuàng)新能力和綜合素質(zhì),促進專業(yè)建設(shè)和教育教學改革。
2017年12月14日,中國高等教育學會“高校競賽評估與管理體系研究”專家工作組在杭州預發(fā)布《中國高校創(chuàng)新人才培養(yǎng)暨學科競賽評估結(jié)果》,指出學科競賽的參賽水平和參賽成績已成為檢驗和評估高校綜合實力和創(chuàng)新人才培養(yǎng)效果的一項重要指標,在后續(xù)的競賽評估中,還將考慮學科競賽拓展、延伸的內(nèi)容,包括高校學科競賽類教學成果獎、學科競賽類教學改革論文等[2]。各高校均在積極借助各項學科競賽活動來提升人才培養(yǎng)質(zhì)量,對現(xiàn)有的人才培養(yǎng)模式進行改革和創(chuàng)新,促進學科和專業(yè)的建設(shè)與發(fā)展。
目前,為了提高學生的創(chuàng)新能力和實踐能力,針對計算機相關(guān)專業(yè)學生,教育部及相關(guān)部委聯(lián)合國內(nèi)外知名IT企業(yè)主辦了一系列應(yīng)用軟件開發(fā)類學科競賽。為了更好地指導和準備這些學科競賽,我們引入了當前在軟件項目開發(fā)中廣泛使用的Scrum敏捷軟件開發(fā)過程,以便構(gòu)建更加科學、規(guī)范的指導和備賽體系,在提高軟件開發(fā)效率的同時提升軟件作品的質(zhì)量。
一、Scrum概述
Scrum是管理軟件項目的一個輕量級的敏捷軟件方法[3],它簡單、易用、靈活,但是又具有高度的紀律性,非常適用于周期不長、規(guī)模不大、團隊成員不太多的項目的開發(fā),而很多應(yīng)用軟件開發(fā)類學科競賽所要求的參賽作品均屬于此類型項目。
在Scrum中,將軟件項目開發(fā)過程劃分成多個迭代周期,每個周期稱為一個沖刺(Sprint),通常一個周期為2~4周,即10~20個工作日,不允許隨意修改一個沖刺的起始時間和工作范圍。在每個沖刺階段,開發(fā)團隊通過完成一系列開發(fā)任務(wù)產(chǎn)生一個可以交付的軟件版本,每一個開發(fā)任務(wù)稱之為一個訂單項,一個沖刺階段中包含的所有訂單項構(gòu)成了一個沖刺訂單(Sprint Backlog),沖刺訂單是一個沖刺階段所完成任務(wù)清單。所有的沖刺訂單構(gòu)成了整個項目的產(chǎn)品訂單(Product Backlog),產(chǎn)品訂單是整個項目的概要文檔,它包含將要開發(fā)的系統(tǒng)或者產(chǎn)品的需求清單,這些需求已確定優(yōu)先級,包括功能需求、非功能需求和其他約束條件,產(chǎn)品訂單又稱為用戶故事。沖刺訂單是產(chǎn)品訂單的子集,包含每一個沖刺所包含的需求信息,又稱為迭代任務(wù)清單。
在Scrum中包含Scrum團隊、客戶、管理層等角色,其中Scrum團隊是整個Scrum的核心,包含產(chǎn)品負責人(Product Owner)、Scrum教練(Scrum Master)、開發(fā)團隊(Scrum Team)。產(chǎn)品負責人代表客戶意愿,他們負責收集與產(chǎn)品相關(guān)的所有信息,并且編寫用戶故事,列出優(yōu)先級,并放入產(chǎn)品訂單中;Scrum教練是整個團隊的導師和組織者,負責提高團隊的開發(fā)效率,找出有問題的訂單項,并且去除那些影響團隊交付沖刺目標的障礙;開發(fā)團隊負責產(chǎn)品的研發(fā)工作,通常是一個由10名以下開發(fā)人員組成的小團隊,組員選擇自己的任務(wù),而非別人強制加以分配,團隊中的角色不分等級,分工協(xié)作,共同實現(xiàn)項目目標。
在具體實施時,Scrum包含了一系列活動,包括沖刺計劃會議、每日站立會議、評審會議和回顧會議。沖刺計劃會議在每個沖刺開始時召開,主要是細化需求、分解任務(wù)和估算工作。每日站立會議是一個團隊日常溝通的會議,每天早上召開,時間控制在15分鐘以內(nèi),主要回答三個問題:昨天完成了哪些工作?今天將要做什么?遇到了哪些障礙?在召開站立會議后要更新燃盡圖(Burndown Chart)。評審會議是在每個沖刺結(jié)束前演示所完成的工作并接受評價的會議?;仡檿h是在沖刺結(jié)束后召開的周期性自我持續(xù)改進的會議,主要用于總結(jié)工作中的經(jīng)驗和教訓,以便更好地開展下一個沖刺階段的工作。這些活動構(gòu)成了一個完整的沖刺,通過若干個沖刺最終完成項目的全部開發(fā)工作。
作為一種敏捷開發(fā)方法,Scrum遵循敏捷軟件開發(fā)宣言中的“可以工作的軟件勝過面面俱到的文檔”,文檔少而精,包含沖刺訂單、產(chǎn)品訂單和燃盡圖,其中燃盡圖用于以圖形化方式直觀地顯示當前沖刺尚未完成的任務(wù)或訂單項的數(shù)目。為了更清晰地了解每個成員的工作完成情況,在Scrum中還引入了任務(wù)看板和計劃紙牌等工作進行項目管理,其中任務(wù)看板采用可視化的方式跟蹤任務(wù)完成情況,通過不同的泳道可以清晰了解每一項工作的進度,及時發(fā)現(xiàn)工作進度中存在的一些問題;計劃紙牌用于對工作量進行估算,可以估算產(chǎn)品訂單中訂單項的規(guī)模和沖刺訂單中任務(wù)所需完成時間。
Scrum因其簡單易用,在現(xiàn)代軟件項目開發(fā)中得以廣泛應(yīng)用,很多知名企業(yè)在軟件開發(fā)過程中也運用了Scrum開發(fā)過程,實踐經(jīng)驗表明Scrum可以有效地提高項目開發(fā)效率,降低項目開發(fā)風險。同時,一些高校也將Scrum方法引入軟件工程實踐教學[4-5]、軟件開發(fā)實訓[6-7]等教學環(huán)節(jié)中,取得了良好的教學效果。
二、基于Scrum的學科競賽指導和備賽
目前很多計算機類學科競賽非常注重企業(yè)的參與,強調(diào)學以致用,部分應(yīng)用軟件開發(fā)類競賽直接引入企業(yè)的真實項目,由企業(yè)命題,學生再按照企業(yè)所給出的項目需求和技術(shù)要求完成項目開發(fā)任務(wù),通過評估最終成果的完成程度、專業(yè)水平、創(chuàng)新性和工程化來對作品進行打分。這些競賽的賽題來源于企業(yè),企業(yè)也非常希望參賽團隊能夠按照真實的企業(yè)開發(fā)流程來進行開發(fā)工作,中國大學生服務(wù)外包創(chuàng)新創(chuàng)業(yè)大賽(主辦單位:教育部、商務(wù)部和無錫市人民政府)、“中國軟件杯”大學生軟件設(shè)計大賽(主辦單位:工業(yè)和信息化部、教育部、江蘇省人民政府)、中國大學生計算機設(shè)計大賽(軟件服務(wù)外包)(主辦單位:中國高等教育學會、教育部四個計算機和軟件專業(yè)教指委)等國家級競賽都屬于此類賽事。因此,為了構(gòu)建一套科學合理的參賽體系,我們在指導和備賽的過程中引入了Scrum敏捷軟件開發(fā)過程。
(一)項目啟動階段
在項目啟動階段,根據(jù)Scrum方法對團隊成員進行分工,考慮到學生參賽團隊的特殊性,學生沒有企業(yè)真實開發(fā)經(jīng)驗,專業(yè)技術(shù)水平和經(jīng)驗方面都有所欠缺,因此教師在其中既扮演客戶和公司管理層的角色,又扮演Scrum教練的角色,指導參賽團隊按照Scrum的流程開展項目開發(fā)工作并且及時解決學生在開發(fā)過程中遇到的一些問題和阻礙。同時,由一名綜合素質(zhì)較高、團隊組織和協(xié)調(diào)能力較強的學生擔任產(chǎn)品負責人(Product Owner),主要負責與教師討論需求,細化需求,確定產(chǎn)品訂單中的需求列表,該學生同時也可以擔任參賽團隊的隊長。其他學生擔任開發(fā)團隊成員,大家分工合作,承擔項目的開發(fā)工作。為了讓學生更好地準備學科競賽,學校提供了備賽專用機房,參賽團隊每天在機房集中備賽。
在項目啟動階段,指導教師和學生一起討論項目需求,將待開發(fā)系統(tǒng)的功能分為三類,分別為核心功能、擴展功能和創(chuàng)新功能。核心功能和擴展功能通常是賽題中明確提出需要實現(xiàn)的功能,由產(chǎn)品負責人負責列出需求清單并和Scrum教練以及開發(fā)團隊成員一起確定需求的優(yōu)先級,通常核心功能的優(yōu)先級最高,對應(yīng)的需求訂單項一般位于靠前的沖刺,擴展功能的優(yōu)先級較低,可放入相對靠后的沖刺階段。創(chuàng)新功能是項目的特色和亮點,需要整個Scrum團隊中的各個成員一起去挖掘,創(chuàng)新功能也是由企業(yè)命題的軟件開發(fā)類競賽中評委打分的一個重要依據(jù),會有多個參賽團隊選擇同一賽題,因此創(chuàng)新和創(chuàng)意是一個重要的評價指標,也是作品能夠勝出的關(guān)鍵。為此,對于一個應(yīng)用軟件開發(fā)者而言,需要在項目啟動和實施階段從功能、技術(shù)等角度探尋創(chuàng)新點,在基本功能和擴展功能的基礎(chǔ)上實現(xiàn)一些合理的、實用的創(chuàng)新功能。
(二)項目實施階段
在項目實施階段,首先在Scrum教練的指導下,根據(jù)項目本身的規(guī)模和難度,將整個項目的開發(fā)過程劃分為若干個沖刺,為了更好地指導和跟蹤參賽團隊的項目完成進度,一個沖刺通常為5~10天,即1~2個星期。對于每個沖刺而言,參照Scrum方法的要求,確定好每一個沖刺的起始時間和需要完成的沖刺訂單項,編制每一個沖刺的團隊日歷,召開計劃會議、每日站立會議、評審會議和回顧會議。
在每一次沖刺計劃會議中,指導教師和參賽學生從產(chǎn)品訂單中選擇若干需求構(gòu)成本次沖刺的沖刺訂單,對沖刺訂單中的訂單項進行分解和細化并估算。產(chǎn)品負責人按照優(yōu)先級的順序,挑選產(chǎn)品訂單中優(yōu)先級相對較高的訂單項任務(wù)放入本次沖刺訂單中,并與Scrum開發(fā)團隊一起將任務(wù)分解成小的功能模塊,團隊成員詳細討論如何按需求完成這些功能模塊,估計完成每個功能模塊所需的大概時間。在沖刺任務(wù)確定后,團隊成員自行挑選和認領(lǐng)工作任務(wù),在認領(lǐng)時可以綜合考慮任務(wù)的難度、工作量的平衡等因素,作為一個具備自我組織和自我管理能力的Scrum團隊而言,大家會以團隊利益和目標為重挑選任務(wù),能力較強的學生選取一些難度稍大的任務(wù)。
在日常項目開發(fā)工作中,引入了計劃紙牌和看板等工具進行項目管理,團隊成員使用計劃紙牌估算任務(wù)所需工作量,如果兩名學生的估算結(jié)果有較大差距,雙方需要陳述估算的理由和依據(jù),直到估算結(jié)果相近為止。使用看板可以讓指導教師和參賽團隊成員更好地了解項目的進展情況,將看板劃分為“To Do”“Doing”和“Done”等泳道,并且用不同顏色的不干膠標簽紙表示不同成員的任務(wù),提供了任務(wù)進度的可視化管理。如圖1所示,參賽團隊在備賽過程中使用任務(wù)看板跟蹤項目進度。
在備賽過程中,Scrum團隊每天早上都召開站立會議,團隊成員逐個回答“昨天做了什么”“今天要做什么”以及“遇到了哪些困難”這三個問題,由產(chǎn)品負責人記錄和整理這些問題的答案,并將遇到的困難及時反饋給指導教師。每天的站立會議結(jié)束后需要更新燃盡圖,如圖2所示,可以使用燃盡圖直觀地展示在一個沖刺階段中工作任務(wù)的完成情況。
在每一個沖刺結(jié)束時,參照Scrum方法的流程召開評審會議和回顧會議。評審會議主要是對沖刺階段的工作成果進行演示和匯報,在Scrum中要求每一個沖刺階段都產(chǎn)生一個可以交付的版本,評審會議主要由產(chǎn)品負責人介紹新版本的技術(shù)架構(gòu)和實現(xiàn)功能等,詳細介紹較上一個版本新增功能,所有團隊成員均需要參加評審會議并及時提出意見和建議。在評審會議之后需要召開回顧會議,團隊成員及時總結(jié)在本沖刺階段中的經(jīng)驗和教訓,以便在下一個沖刺階段改進。
通過引入Scrum開發(fā)方法,參賽團隊能夠明確工作目標和人員分工,及時發(fā)現(xiàn)在項目開發(fā)中遇到的問題并和指導教師一起討論解決方案,極大提高項目開發(fā)效率,降低項目風險。
(三)項目結(jié)束階段
在項目結(jié)束階段,首先會按照賽事要求整理和完善相關(guān)文檔,包括需求文檔、設(shè)計文檔、測試文檔、用戶操作手冊等,依據(jù)Scrum方法的要求,在項目結(jié)束后召開項目總結(jié)會議,逐一檢查產(chǎn)品訂單中各個產(chǎn)品項的完成情況,記錄在開發(fā)過程中遇到的問題和解決方法。對于大部分應(yīng)用軟件開發(fā)類競賽而言,需要錄制項目的演示視頻,一旦進入決賽則需要進行項目答辯和現(xiàn)場演示。團隊需制作好項目答辯PPT并進行多輪彩排和預演,項目演示視頻突出項目的核心功能、特色和創(chuàng)新點,并邀請企業(yè)相關(guān)專家和往屆獲獎師生進行點評。根據(jù)以往的經(jīng)驗,正式答辯前團隊內(nèi)部至少組織三輪以上的項目現(xiàn)場演示和預答辯。通常評委們從功能、性能、創(chuàng)新點、技術(shù)解決方案等方面準備至少20個以上的問題,團隊成員可以分工準備這些問題的答案并預演。一系列預答辯可為正式項目答辯做好充分的準備。
在項目結(jié)束時,指導教師和參賽團隊將對產(chǎn)品負責人和團隊成員的工作進行評估,發(fā)現(xiàn)本次參賽過程中存在的一些問題和待改進之處,為今后更好地開發(fā)軟件項目和參賽積累經(jīng)驗。賽后,無論比賽成績?nèi)绾?,指導教師都?yīng)要求所有參賽學生總結(jié)本次參賽的收獲和體會,既要有團隊總結(jié),也要有個人總結(jié),這些總結(jié)將形成文字材料,不斷積累,不斷優(yōu)化,有助于后續(xù)更好地參加相關(guān)學科競賽工作和從事軟件項目的研發(fā)工作。
三、實施效果
近年來,湖南中醫(yī)藥大學有超過200名學生參加中國大學生服務(wù)外包創(chuàng)新創(chuàng)業(yè)大賽、“中國軟件杯”大學生軟件設(shè)計大賽和中國大學生計算機設(shè)計大賽(軟件服務(wù)外包)等應(yīng)用軟件開發(fā)類學科競賽,在指導和備賽過程中采用了Scrum敏捷開發(fā)方法,取得了良好的成績。近四年我校累計獲得省部級三等獎及以上40項,其中國家級一等獎3項,2016年曹幼儀等同學在第七屆中國大學生服務(wù)外包創(chuàng)新創(chuàng)業(yè)大賽中憑借“廠車管理系統(tǒng)”獲得企業(yè)命題類全國一等獎,2017年姜懷琛等同學在第10屆中國大學生計算機設(shè)計大賽軟件服務(wù)外包全國總決賽中憑借“基于混合交通的最佳出行方案規(guī)劃系統(tǒng)”獲得一等獎,2018年毛振等同學在第九屆中國大學生服務(wù)外包創(chuàng)新創(chuàng)業(yè)大賽中憑借“人工智能在企業(yè)培訓中的應(yīng)用項目”獲得企業(yè)命題類全國一等獎。
下面以中國大學生服務(wù)外包創(chuàng)新創(chuàng)業(yè)大賽(簡稱“服創(chuàng)大賽”)為例加以詳細說明,從2016年至2018年,湖南中醫(yī)藥大學信息科學與工程學院先后有100多名學生報名參賽,參賽人數(shù)及獲獎人數(shù)如圖3所示。2016年獲國家級一等獎1項,三等獎1項;2017年獲國家級二等獎2項,三等獎1項;2018年獲國家級一等獎1項,二等獎1項,三等獎6項。
此外,基于學生參加軟件開發(fā)類競賽的優(yōu)秀作品,以湖南中醫(yī)藥大學名義登記計算機軟件著作權(quán)10多項,申報發(fā)明專利1項;通過對參賽作品進行深入的研究和拓展,學生發(fā)表相關(guān)科研論文3篇,成功申報湖南省大學生研究性學習和創(chuàng)新性實驗計劃項目2項,建設(shè)校級創(chuàng)新創(chuàng)業(yè)孵化基地2個。此外,2015~2017年均有優(yōu)秀參賽學生保送至中南大學、湖南大學等知名高校攻讀碩士研究生。參賽學生就業(yè)率高達100%,部分學生高薪就職于百度、騰訊等知名IT企業(yè)。學科競賽對學生綜合能力和素質(zhì)提升效果顯著,得到知名企業(yè)和兄弟院校的一致認可。
四、結(jié)語
學科競賽在計算機類人才培養(yǎng)過程中發(fā)揮著非常重要的作用。實踐應(yīng)用效果表明,Scrum作為一種在軟件公司廣泛使用的敏捷開發(fā)方法,有效提高了項目開發(fā)效率和學生參與項目開發(fā)的積極性,學生可以將主要時間和精力放到項目的實現(xiàn)和創(chuàng)新上,一定程度上減輕了文檔撰寫的壓力,同時采用迭代式的開發(fā)可以有效降低項目開發(fā)風險,指導教師可以及時了解項目的完成情況并根據(jù)實際情況對開發(fā)過程進行合理的優(yōu)化和調(diào)整。通過學習和掌握Scrum,讓學生更為真實地了解了企業(yè)一線開發(fā)模式,從而全面提升了學生的開發(fā)水平、工程素養(yǎng)和實踐動手能力。
[ 參 考 文 獻 ]
[1] 王曉勇,俞松坤.以學科競賽引領(lǐng)創(chuàng)新人才培養(yǎng)[J].中國大學教學,2007(12):59-60.
[2] 陸國棟,陳臨強,何欽銘,等.高校學科競賽評估:思路、方法和探索[J].中國高教研究,2018(2):63-68.
[3] 張智海,周國祥.Scrum方法的研究與分析[J].合肥工業(yè)大學學報(自然科學版),2010(2):197-200.
[4] 林曉宇,鐘一文,黃世國,等.基于Scrum敏捷方法的軟件工程實踐教學探索[J].電腦知識與技術(shù),2011(19):4762-4763.
[5] 徐建軍,董威,譚慶平,等.基于Scrum敏捷開發(fā)模型的軟件工程實踐課程探索[J].大學教育,2015(4):115-116.
[6] 邢如意.Scrum敏捷實踐在軟件實訓教學中的應(yīng)用[J].軟件導刊,2014(4):199-201.
[7] 蒙煥念.軟件開發(fā)實訓教學中Scrum敏捷開發(fā)方法的應(yīng)用研究[J].廣西教育,2014(47):59-60.
[責任編輯:鐘 嵐]