丁春玲
【摘 要】針對(duì)國(guó)內(nèi)應(yīng)用型高等院校教學(xué)改革的現(xiàn)狀和傳統(tǒng)軟件實(shí)訓(xùn)教學(xué)中存在的主要問(wèn)題,把目前企業(yè)中普遍采用的敏捷開(kāi)發(fā)方法與軟件開(kāi)發(fā)實(shí)訓(xùn)教學(xué)相結(jié)合,介紹了敏捷教學(xué)的理念,闡述了敏捷教學(xué)在軟件開(kāi)發(fā)實(shí)訓(xùn)課程中具體的實(shí)施流程和措施,收到了較好的效果,具有一定的實(shí)踐意義和參考價(jià)值。
【關(guān)鍵字】敏捷開(kāi)發(fā);敏捷教學(xué);軟件實(shí)訓(xùn);課程教學(xué)
中圖分類(lèi)號(hào): G712.4 文獻(xiàn)標(biāo)識(shí)碼: A文章編號(hào): 2095-2457(2019)24-0070-002
DOI:10.19694/j.cnki.issn2095-2457.2019.24.033
0 引言
以人工智能、云計(jì)算、物聯(lián)網(wǎng)、大數(shù)據(jù)、移動(dòng)計(jì)算等為代表的新一代信息技術(shù)帶動(dòng)了全球新產(chǎn)業(yè)與新經(jīng)濟(jì)的迅猛發(fā)展,加劇了全世界從工業(yè)化社會(huì)向信息化社會(huì)轉(zhuǎn)變的風(fēng)暴。經(jīng)濟(jì)全球化與人才競(jìng)爭(zhēng)國(guó)際化愈演愈烈,一個(gè)國(guó)家的強(qiáng)大需要?dú)w根結(jié)底需要人才實(shí)力做支撐,如何培養(yǎng)大批的新型創(chuàng)新型人才以及卓越工程技術(shù)人才,成為了現(xiàn)代教育體系面臨的新挑戰(zhàn)[1]。教育部于2017年推動(dòng)了“新工科”發(fā)展戰(zhàn)略,掀起了我國(guó)高等教育的新一輪改革熱潮,人們積極熱烈地探索人才培養(yǎng)的新模式和新途徑。
針對(duì)新形勢(shì)下應(yīng)用型人才培養(yǎng)目標(biāo),國(guó)內(nèi)很多應(yīng)用型本科院校積極引進(jìn)國(guó)外先進(jìn)教學(xué)理念,探索“項(xiàng)目教學(xué)”、“校企合作”、“以證促學(xué)”、“CDIO實(shí)訓(xùn)”等多種教學(xué)改革方式并取得一定的成效[2],但在實(shí)施過(guò)程中或多或少存在一定的問(wèn)題。在信息工程領(lǐng)域軟件開(kāi)發(fā)課程體系中,實(shí)訓(xùn)教學(xué)是一個(gè)培養(yǎng)學(xué)生綜合能力的關(guān)鍵實(shí)踐環(huán)節(jié),為了達(dá)到預(yù)期的教學(xué)目標(biāo),把軟件工程領(lǐng)域中“敏捷開(kāi)發(fā)”的方法與軟件開(kāi)發(fā)實(shí)訓(xùn)教學(xué)相結(jié)合,讓學(xué)生了解軟件企業(yè)真實(shí)流程,提升其職業(yè)綜合素質(zhì),更好的與企業(yè)需求接軌。
1 傳統(tǒng)軟件開(kāi)發(fā)實(shí)訓(xùn)教學(xué)中的問(wèn)題
軟件開(kāi)發(fā)屬于團(tuán)隊(duì)行為,傳統(tǒng)的軟件開(kāi)發(fā)實(shí)訓(xùn)教學(xué)一般以分組教學(xué)的形式展開(kāi),即將學(xué)生分成小組,一個(gè)小組的成員協(xié)作完成一個(gè)小型項(xiàng)目的開(kāi)發(fā),項(xiàng)目開(kāi)發(fā)過(guò)程多以“瀑布模型”的模式展開(kāi),這種任務(wù)驅(qū)動(dòng)的教學(xué)過(guò)程中存在的主要問(wèn)題如下:
(1)時(shí)間進(jìn)度難以控制。傳統(tǒng)實(shí)訓(xùn)教學(xué)中一般流程是教師布置任務(wù)、學(xué)生執(zhí)行實(shí)訓(xùn)任務(wù)、教師驗(yàn)收檢查,學(xué)生領(lǐng)取任務(wù)后,會(huì)按軟件工程的周期要求制定計(jì)劃并有序展開(kāi)各階段任務(wù),但是由于學(xué)生經(jīng)驗(yàn)不足,而實(shí)訓(xùn)的時(shí)間周期也有限,學(xué)生很難在一開(kāi)始就把所有的需求和設(shè)計(jì)全部明確,執(zhí)行過(guò)程中經(jīng)常會(huì)發(fā)生需求、設(shè)計(jì)變動(dòng)的情況,這種變動(dòng)可能導(dǎo)致前期工作全部返工,輕則造成進(jìn)度滯后,重則導(dǎo)致整個(gè)項(xiàng)目開(kāi)發(fā)失敗。
(2)教學(xué)過(guò)程難以管理,師生互動(dòng)不充分,無(wú)法及時(shí)有效形成教學(xué)反饋。傳統(tǒng)的實(shí)訓(xùn)實(shí)施過(guò)程中,教師為了督促學(xué)生積極有效參與實(shí)訓(xùn),通常會(huì)按預(yù)先制定的進(jìn)度計(jì)劃進(jìn)行階段性檢查,但是往往由于進(jìn)度計(jì)劃不夠細(xì)致具體,對(duì)學(xué)生起不到應(yīng)有的策動(dòng)效果,部分學(xué)生只是應(yīng)對(duì)老師檢查,對(duì)于實(shí)訓(xùn)中遇到的問(wèn)題學(xué)生往往不能或不愿積極主動(dòng)進(jìn)行反饋,師生不能深入互動(dòng),實(shí)訓(xùn)效果也得不到保障。
(3)團(tuán)隊(duì)成員之間溝通、協(xié)作不夠深入。以小組的形勢(shì)展開(kāi)實(shí)訓(xùn)旨在模擬真實(shí)的軟件開(kāi)發(fā)過(guò)程,提高學(xué)生得 團(tuán)隊(duì)協(xié)作和溝通能力。但在傳統(tǒng)的實(shí)訓(xùn)教學(xué)中,由于項(xiàng)目開(kāi)發(fā)的各個(gè)階段線性實(shí)施,如編碼完成之前測(cè)試無(wú)法進(jìn)行,這就造成編碼階段負(fù)責(zé)測(cè)試的同學(xué)無(wú)法展開(kāi)工作;另一方面,小組中能力強(qiáng)的學(xué)生往往包攬大部分或全部任務(wù),能力弱的同學(xué)則成了打醬油者,小組成員之間無(wú)法有效協(xié)作和溝通。
2 敏捷教學(xué)模式探討
傳統(tǒng)的軟件實(shí)訓(xùn)教學(xué)以“需求分析、設(shè)計(jì)、編碼、測(cè)試、維護(hù)”這樣一個(gè)線性流程來(lái)安排展開(kāi),這與當(dāng)前眾多軟件企業(yè)中普遍采用的輕量級(jí)軟件敏捷開(kāi)發(fā)方法嚴(yán)重脫節(jié)[3]。針對(duì)傳統(tǒng)實(shí)訓(xùn)教學(xué)存在的問(wèn)題,順應(yīng)業(yè)界潮流,培養(yǎng)滿足企業(yè)實(shí)際需求的人才,將敏捷軟件方法與軟件實(shí)訓(xùn)教學(xué)相結(jié)合實(shí)施敏捷教學(xué)。
2.1 敏捷教學(xué)的理念
敏捷教學(xué)的理念源于20世紀(jì)90年代軟件工程領(lǐng)域中興起的敏捷軟件開(kāi)發(fā)方法,其強(qiáng)調(diào)以用戶(hù)需求為核心,以多輪迭代、循序漸進(jìn)方式進(jìn)行軟件開(kāi)發(fā),可以大大提高軟件開(kāi)發(fā)效率。敏捷教學(xué)遵循進(jìn)化性原則、靈活性原則、迭代性原則和協(xié)同性原則[1],它以學(xué)生發(fā)展為中心,強(qiáng)調(diào)理論、技術(shù)和實(shí)踐教學(xué)的交叉并行與快速重構(gòu),通過(guò)多輪迭代的知識(shí)學(xué)習(xí)過(guò)程實(shí)現(xiàn)能力循序漸進(jìn)的提升,是一種具有動(dòng)態(tài)適應(yīng)性的教學(xué)新型形態(tài)。具體到軟件開(kāi)發(fā)實(shí)訓(xùn)教學(xué),敏捷教學(xué)將拋開(kāi)傳統(tǒng)軟件開(kāi)發(fā)的線性實(shí)施順序,按照“編碼-測(cè)試-發(fā)布”的形式進(jìn)行迭代實(shí)施,將整個(gè)實(shí)訓(xùn)周期劃分成若干個(gè)較短的迭代周期,每一次迭代都可以生成階段性的可交付運(yùn)行的軟件版本,這將便于學(xué)生之間的溝通和協(xié)作,提高學(xué)生的參與度和積極性,教師也可以更及時(shí)地對(duì)開(kāi)發(fā)過(guò)程進(jìn)行干預(yù)和控制,形成良性教學(xué)反饋閉環(huán)。
2.2 敏捷教學(xué)中的角色
軟件開(kāi)發(fā)屬于團(tuán)體行為,經(jīng)典的敏捷開(kāi)發(fā)方法論中包括三種角色:PO(Product Owner即產(chǎn)品負(fù)責(zé)人),SM(Scrum Master即團(tuán)隊(duì)負(fù)責(zé)人),TM(Team Member即團(tuán)隊(duì)成員)。PO負(fù)責(zé)提煉產(chǎn)品需求,確定開(kāi)發(fā)目標(biāo),把開(kāi)發(fā)任務(wù)分解成若干個(gè)子任務(wù)并確定子任務(wù)優(yōu)先級(jí);SM負(fù)責(zé)整個(gè)開(kāi)發(fā)團(tuán)隊(duì)的協(xié)作運(yùn)行,帶領(lǐng)團(tuán)隊(duì)按照敏捷開(kāi)發(fā)的流程展開(kāi)實(shí)施,確保目標(biāo)達(dá)成;TM負(fù)責(zé)具體實(shí)施子任務(wù)的迭代開(kāi)發(fā)和增量交付。
在具體實(shí)訓(xùn)教學(xué)中只有教師和學(xué)生兩類(lèi)角色,所以要確定這兩種角色與PO、SM、TM的對(duì)應(yīng)關(guān)系。PO一般由教師充當(dāng),也可以由能力較強(qiáng)的、對(duì)產(chǎn)品需求有清晰認(rèn)識(shí)的學(xué)生兼任;SM一開(kāi)始由教師兼任,當(dāng)學(xué)生團(tuán)隊(duì)在教師指導(dǎo)下形成自組織團(tuán)隊(duì)時(shí),可由協(xié)調(diào)能力較強(qiáng)的學(xué)生負(fù)責(zé),此時(shí)教師退出SM角色;TM當(dāng)然由學(xué)生充當(dāng),負(fù)責(zé)項(xiàng)目的迭代開(kāi)發(fā)和增量交付。
2.3 敏捷教學(xué)在軟件實(shí)訓(xùn)中的實(shí)施
敏捷開(kāi)發(fā)最突出的特點(diǎn)就是以“編碼-測(cè)試-發(fā)布”的形勢(shì)進(jìn)行多輪迭代、增量開(kāi)發(fā)[4],強(qiáng)調(diào)盡早編碼、盡快開(kāi)發(fā)出軟件原型。結(jié)合學(xué)生經(jīng)驗(yàn)不足的實(shí)際情況,在迭代流程開(kāi)始之前,可以讓學(xué)生以頭腦風(fēng)暴的方式明確項(xiàng)目需求,具體步驟如下:
(1)學(xué)生分組認(rèn)領(lǐng)任務(wù):首先將學(xué)生分組形成若干個(gè)開(kāi)發(fā)團(tuán)隊(duì),確定團(tuán)隊(duì)開(kāi)發(fā)課題任務(wù),小組人數(shù)一般以4-6人為宜,可根據(jù)任務(wù)的難度和規(guī)模適當(dāng)增加人數(shù)。
(2)生成軟件產(chǎn)品規(guī)劃:在PO指導(dǎo)下,把實(shí)訓(xùn)任務(wù)分解成若干個(gè)子任務(wù),由PO、SM、TM協(xié)同討論,確定Product Backlog(產(chǎn)品需求列表)。Product Backlog中的一行表示一個(gè)子任務(wù),通常以User Story的形勢(shì)展現(xiàn),一個(gè)User Story包含三個(gè)主要要素(3W):角色(Who),即誰(shuí)要使用該功能;活動(dòng)(What),即需要完成什么功能;商業(yè)價(jià)值(Why),即為什么要這個(gè)功能。另外Product Backlog中還要給出子任務(wù)的優(yōu)先順序、計(jì)劃完成時(shí)間等。在預(yù)估子任務(wù)完成時(shí)間時(shí),可以采用頭腦風(fēng)暴的形勢(shì),團(tuán)隊(duì)中的每一個(gè)成員都要估算任務(wù)完成時(shí)間并解釋為什么,只有所有成員意見(jiàn)達(dá)成一致時(shí)才能確定預(yù)估時(shí)間。Product Backlog列表形式如表1所示,其中優(yōu)先級(jí)的設(shè)置主要考慮子任務(wù)與核心功能、重要功能的相關(guān)度。
(3)生成Sprint Backlog
因?yàn)閷?shí)訓(xùn)課程周期比較短,通常為四周時(shí)間,為了更加高效地進(jìn)行迭代開(kāi)發(fā)時(shí),通常對(duì)Product Backlog中的子任務(wù)進(jìn)行進(jìn)一步分解,得到Sprint Backlog列表,并以人課為單位估算出每個(gè)Sprint Backlog所需時(shí)間,如表2所示。
(4)實(shí)施迭代開(kāi)發(fā)
團(tuán)隊(duì)成員根據(jù)Sprint Backlog列表循環(huán)實(shí)施“編碼-測(cè)試-發(fā)布”的過(guò)程??紤]到學(xué)生學(xué)習(xí)能力和實(shí)踐能力不均衡,編碼階段可以采用結(jié)對(duì)編程的方式進(jìn)行,這樣當(dāng)一個(gè)成員在編碼時(shí)出現(xiàn)語(yǔ)法或邏輯錯(cuò)誤時(shí),與之結(jié)對(duì)的成員可以及時(shí)發(fā)現(xiàn)并改正,這樣有利于團(tuán)隊(duì)成員之間的交流和互相促進(jìn)。在編碼的同時(shí),測(cè)試人員可以根據(jù)功能描述設(shè)計(jì)測(cè)試用例,編碼完成后即可進(jìn)行測(cè)試,以及時(shí)發(fā)現(xiàn)缺陷反饋問(wèn)題,以促進(jìn)修改完善代碼,這樣編碼與測(cè)試交叉進(jìn)行,可以提高開(kāi)發(fā)的效率和質(zhì)量。
為了更直觀的展示迭代開(kāi)發(fā)進(jìn)度,便于對(duì)迭代開(kāi)發(fā)過(guò)程透明化管理和團(tuán)隊(duì)協(xié)作,可以制作迭代任務(wù)看板。具體作法是在一塊白板上繪制一個(gè)表格,該表格包括UserStory、ToDo、Doing、Done四列,分別表示用戶(hù)故事(迭代目標(biāo))、待實(shí)施的子任務(wù)、正在實(shí)施的子任務(wù)和已經(jīng)完成的子任務(wù),每一個(gè)迭代完成后及時(shí)更新任務(wù)看板,便于教師掌握實(shí)訓(xùn)進(jìn)展情況。
3 總結(jié)
本文首先分析了國(guó)內(nèi)應(yīng)用型高等院校教學(xué)改革的現(xiàn)狀和傳統(tǒng)軟件實(shí)訓(xùn)教學(xué)中存在的主要問(wèn)題,針對(duì)問(wèn)題把目前企業(yè)中普遍采用的敏捷開(kāi)發(fā)方法與軟件開(kāi)發(fā)實(shí)訓(xùn)教學(xué)相結(jié)合,介紹了敏捷教學(xué)的理念,闡述了敏捷教學(xué)在軟件開(kāi)發(fā)實(shí)訓(xùn)課程中具體的實(shí)施流程和措施。實(shí)際教學(xué)實(shí)踐證明,這種新的實(shí)訓(xùn)教學(xué)模式可以有效解決傳統(tǒng)實(shí)訓(xùn)教學(xué)中存在的問(wèn)題,對(duì)提高學(xué)生積極性和參與度、促成師生深度互動(dòng)、提高實(shí)訓(xùn)效率有明顯效果。
【參考文獻(xiàn)】
[1]徐曉飛,李廉,戰(zhàn)德臣,等.新工科的新視角:面向可持續(xù)競(jìng)爭(zhēng)力的敏捷教學(xué)體系[J].中國(guó)大學(xué)教學(xué),2018(10):44-49.
[2]余久久.應(yīng)用型本科軟件工程課程敏捷方法實(shí)踐教學(xué)探索[J].西昌學(xué)院學(xué)報(bào)(自然科學(xué)版),2017,31(04):96-99.
[3]郭朝霞.基于“敏捷開(kāi)發(fā)”的軟件實(shí)訓(xùn)教學(xué)研究[J].南京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2018,18(02):59-62.
[4]商琦.軟件實(shí)訓(xùn)課程的敏捷教學(xué)研究[J].無(wú)錫職業(yè)技術(shù)學(xué)院學(xué)報(bào),2018,17(01):28-32.