車海燕,馮 鐵,馬東輝
(1.吉林大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,吉林 長(zhǎng)春,130012;2.吉林大學(xué) 軟件學(xué)院,吉林 長(zhǎng)春,130012)
作為信息技術(shù)的核心之一,計(jì)算機(jī)技術(shù)發(fā)展迅速,物聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能、移動(dòng)計(jì)算、云計(jì)算等正在改變著人類的生產(chǎn)和生活方式,社會(huì)急需大量的相關(guān)人才。然而計(jì)算機(jī)類專業(yè)培養(yǎng)的人才與這些需求,特別是未來新的需求有較大的差距[1]。因此,本專業(yè)類要從“外延發(fā)展”轉(zhuǎn)向以提高質(zhì)量為主的“內(nèi)涵發(fā)展”。
為了更好地進(jìn)行“內(nèi)涵發(fā)展”,需要更新教育基本理念,從傳統(tǒng)的以教為中心轉(zhuǎn)變?yōu)橐詫W(xué)生發(fā)展為中心,更加聚焦社會(huì)需求與學(xué)生發(fā)展,從面向課程的教育(CBE)轉(zhuǎn)向面向產(chǎn)出的教育(OBE)。要以培養(yǎng)滿足社會(huì)特定需求的畢業(yè)生為目標(biāo),要“問產(chǎn)業(yè)需求建專業(yè)”“問技術(shù)發(fā)展改內(nèi)容”,加大產(chǎn)學(xué)合作的力度。
軟件工程是研究軟件開發(fā)維護(hù)與管理的工程學(xué)科,是計(jì)算機(jī)科學(xué)與技術(shù)和軟件工程專業(yè)的專業(yè)基礎(chǔ)核心課程,對(duì)于提升學(xué)生的綜合能力具有至關(guān)重要的作用[2]。軟件工程內(nèi)容比較龐雜和抽象,對(duì)于缺乏軟件開發(fā)實(shí)際經(jīng)驗(yàn)的本科生來說,學(xué)習(xí)這些抽象的理論知識(shí)往往會(huì)感到枯燥無(wú)味且難以理解[3],因此案例教學(xué)和實(shí)踐環(huán)節(jié)是強(qiáng)化軟件工程教學(xué)效果的重要途徑。
軟件工程課程設(shè)計(jì)是與軟件工程課程相配套的后繼實(shí)踐教學(xué)環(huán)節(jié),其主要目的是通過實(shí)際項(xiàng)目開發(fā)培養(yǎng)學(xué)生的實(shí)踐操作能力,使學(xué)生通過實(shí)際的“動(dòng)手做”和“真正練”將在軟件工程課堂上學(xué)習(xí)到的理論知識(shí)進(jìn)一步消化、理解和鞏固。
軟件工程課程設(shè)計(jì)通常的做法是將學(xué)生分成小組,按照軟件工程的思想、方法和過程進(jìn)行給定題目的項(xiàng)目開發(fā),撰寫提交開發(fā)計(jì)劃、需求、設(shè)計(jì)等相關(guān)項(xiàng)目文檔,最后展示開發(fā)完成的項(xiàng)目產(chǎn)品。然而面對(duì)新工科建設(shè)提出的對(duì)培養(yǎng)未來多元化和創(chuàng)新型卓越工程人才的要求[4],該課程存在以下幾個(gè)問題限制了其達(dá)到預(yù)期的教學(xué)效果。
在校教師掌握軟件工程基本原理和知識(shí),掌握多種軟件過程模式,具有較豐富的工程開發(fā)經(jīng)驗(yàn),但是計(jì)算機(jī)技術(shù)發(fā)展迅速、日新月異,在校教師無(wú)法及時(shí)掌握企業(yè)最新開發(fā)信息、采用的流行方法工具,以及企業(yè)對(duì)人才培養(yǎng)的最新要求,限制了學(xué)校培養(yǎng)的人才與市場(chǎng)需求的有效接軌。
由于在校教師人員數(shù)量和工作安排限制,通常一門實(shí)踐課程的師生配比是1:30(即一名教師負(fù)責(zé)一個(gè)自然班)。但是為了提高課程教學(xué)效果,教師需要為學(xué)生提供有針對(duì)性的、個(gè)性化的現(xiàn)場(chǎng)指導(dǎo),同時(shí)需要密切關(guān)注各個(gè)小組甚至每名成員在整個(gè)開發(fā)過程中的表現(xiàn)和參與情況,以便準(zhǔn)確評(píng)估學(xué)生的課程成績(jī)。因此理想的師生配比是1:5(或1:10,即一名教師負(fù)責(zé)一或兩組學(xué)生),但目前這種師生配比在一般高校中都是無(wú)法實(shí)現(xiàn)的。
軟件工程課程設(shè)計(jì)對(duì)于學(xué)生的成績(jī)考核評(píng)價(jià)通?;趯W(xué)生項(xiàng)目小組在課程結(jié)束時(shí)提交的項(xiàng)目文檔和系統(tǒng)演示。教師通過檢查項(xiàng)目開發(fā)結(jié)果、評(píng)閱文檔報(bào)告評(píng)定每個(gè)小組的總體成績(jī),再根據(jù)小組負(fù)責(zé)人為項(xiàng)目組成員評(píng)定的工作量貢獻(xiàn)比例計(jì)算每個(gè)學(xué)生的課程成績(jī)。這種評(píng)價(jià)方法既綜合考查了軟件過程質(zhì)量(項(xiàng)目文檔)和軟件產(chǎn)品質(zhì)量(系統(tǒng)演示),同時(shí)也區(qū)分了項(xiàng)目組成員的不同貢獻(xiàn)度。
但是小組負(fù)責(zé)人評(píng)定團(tuán)隊(duì)成員的個(gè)人工作量缺少客觀標(biāo)準(zhǔn);指導(dǎo)教師通常無(wú)法對(duì)多人協(xié)作項(xiàng)目組中的個(gè)人工作情況進(jìn)行有效的監(jiān)督和控制,進(jìn)而也無(wú)法客觀評(píng)定學(xué)生的個(gè)人課程成績(jī)。同時(shí),這種評(píng)價(jià)方式無(wú)法滿足新工科背景下對(duì)軟件工程實(shí)踐課程提出的教學(xué)要求[5-6],強(qiáng)調(diào)學(xué)生不僅要具有現(xiàn)代軟件工程開發(fā)能力,也要具備主動(dòng)學(xué)習(xí)、協(xié)作學(xué)習(xí)、系統(tǒng)思維、過程控制、表達(dá)展示等綜合素質(zhì),這些要求在傳統(tǒng)評(píng)價(jià)方式中難以體現(xiàn)和落實(shí)。最后,指導(dǎo)教師在課程結(jié)束時(shí)進(jìn)行的單次評(píng)價(jià)無(wú)法體現(xiàn)學(xué)生在實(shí)踐過程中的詳細(xì)工作情況,與“基于項(xiàng)目的教學(xué)”要求的過程控制相違背,難以實(shí)現(xiàn)“做中學(xué)”“做中教”的教學(xué)效果。
本著產(chǎn)學(xué)結(jié)合,培養(yǎng)創(chuàng)新復(fù)合型、適應(yīng)市場(chǎng)需求人才的教學(xué)目標(biāo),調(diào)整教學(xué)內(nèi)容,優(yōu)化教學(xué)方式,組建工程化多層次綜合師資隊(duì)伍,完善課程評(píng)價(jià)體系。
敏捷開發(fā)是目前互聯(lián)網(wǎng)企業(yè)主要采用的軟件開發(fā)模式。騰訊敏捷產(chǎn)品研發(fā)平臺(tái)TAPD(Tencent Agile Product Development)是騰訊公司在2006 年提出的敏捷開發(fā)體系,提供貫穿敏捷研發(fā)生命周期的一站式服務(wù)。
本課程引入TAPD 平臺(tái),利用TAPD 的靈活性選擇合適模塊搭建適合課內(nèi)教學(xué)使用的研發(fā)流程,設(shè)計(jì)合理的課程教學(xué)方式、內(nèi)容和計(jì)劃。
(1)課程采用“基于項(xiàng)目的教學(xué)”模式,以實(shí)際軟件項(xiàng)目開發(fā)的形式進(jìn)行。學(xué)生自愿分組,每組4~5 人,指定一人為項(xiàng)目經(jīng)理。
(2)課堂上指導(dǎo)教師使用真實(shí)敏捷案例基于TAPD 平臺(tái)進(jìn)行體驗(yàn)式教學(xué)。鼓勵(lì)學(xué)生在課下進(jìn)行自主學(xué)習(xí),深入理解敏捷過程思想,快速掌握TAPD 需求、迭代、故事墻、缺陷、報(bào)表、文檔等核心應(yīng)用,能夠基于TAPD 進(jìn)行團(tuán)隊(duì)協(xié)作敏捷開發(fā)。
(3)指導(dǎo)教師與學(xué)生共同確定敏捷開發(fā)題目,由每個(gè)項(xiàng)目小組自由選擇,然后進(jìn)行基于TAPD的敏捷軟件項(xiàng)目開發(fā)。
(4)開發(fā)過程中,指導(dǎo)教師基于TAPD 監(jiān)控項(xiàng)目組及學(xué)生個(gè)人工作進(jìn)展情況,觀察記錄項(xiàng)目組各成員在項(xiàng)目開發(fā)活動(dòng)中的參與情況,為學(xué)生在開發(fā)過程中遇到的問題提供必要的指導(dǎo)意見。
(5)合理安排教學(xué)進(jìn)度,使得學(xué)生可以在課程的32 學(xué)時(shí)內(nèi)進(jìn)行2~3 次項(xiàng)目迭代,充分感受快速迭代式開發(fā)的工作方法。課程的課時(shí)建議安排見表1。
表1 軟件工程課程設(shè)計(jì)學(xué)時(shí)安排
在課程的具體執(zhí)行過程中需要注意以下幾點(diǎn)。
(1)講授敏捷方法。課程采用敏捷開發(fā)思想,使用Scrum 流程作為開發(fā)過程的實(shí)踐流程,以期讓學(xué)生在接近真實(shí)的場(chǎng)景下,在敏捷思想的指導(dǎo)下進(jìn)行完整的軟件項(xiàng)目開發(fā)。為此,需要在項(xiàng)目啟動(dòng)之前使學(xué)生明確敏捷思想和Scrum 流程。這些內(nèi)容可以在之前的軟件工程理論課上進(jìn)行學(xué)習(xí),也可以在本課程初期講授。
(2)學(xué)習(xí)TAPD 平臺(tái)。指導(dǎo)教師在項(xiàng)目啟動(dòng)之前將利用真實(shí)敏捷示范性案例,帶領(lǐng)學(xué)生進(jìn)行體驗(yàn)式教學(xué),讓學(xué)生快速掌握TAPD 平臺(tái)的基本功能、使用方法和敏捷開發(fā)的基本流程。鼓勵(lì)學(xué)生利用TAPD 提供的在線幫助、幫助文檔、使用手冊(cè)、社區(qū)等學(xué)習(xí)資源進(jìn)行獨(dú)立閱讀學(xué)習(xí),理解TAPD 核心應(yīng)用功能,培養(yǎng)學(xué)生積極主動(dòng)探索能力和自學(xué)能力。
(3)設(shè)計(jì)項(xiàng)目題目。以學(xué)生興趣為中心確定項(xiàng)目題目。對(duì)于一門實(shí)踐課程,學(xué)生選擇合適的題目是保證該實(shí)踐教學(xué)順利開展的關(guān)鍵。在進(jìn)行選題設(shè)計(jì)時(shí)盡量選擇真實(shí)的案例[7],并根據(jù)需求的難度復(fù)雜性、課程時(shí)間等因素進(jìn)行必要的裁剪或定制。學(xué)生可以提出自己的題目,指導(dǎo)教師審核題目難度、工作量和與課程目標(biāo)的匹配程度,通過后可以作為學(xué)生的開發(fā)題目。同時(shí)選題也要考慮和當(dāng)前主流的計(jì)算機(jī)技術(shù)相結(jié)合,以激發(fā)學(xué)生的開發(fā)興趣,提升學(xué)生的自主創(chuàng)新學(xué)習(xí)能力。
(4)建設(shè)案例庫(kù)。在教學(xué)過程中進(jìn)行軟件工程案例的收集與整理。一方面請(qǐng)求騰訊及其他軟件組織為課程提供一定數(shù)量的真實(shí)案例,由教師根據(jù)需要進(jìn)行必要的裁剪和定制;同時(shí),在課程的實(shí)施過程中收集整理學(xué)生完成的優(yōu)秀案例。這些真實(shí)案例不僅可以用來進(jìn)行課堂上的體驗(yàn)式教學(xué)、學(xué)生課外的自主學(xué)習(xí),而且可以讓新一屆學(xué)生以這些案例作為基準(zhǔn)進(jìn)行新一輪的迭代開發(fā)。
引入TAPD平臺(tái)能提高學(xué)生對(duì)課程的關(guān)注度,激發(fā)學(xué)生學(xué)習(xí)興趣,增強(qiáng)其學(xué)習(xí)動(dòng)力,達(dá)到以行業(yè)需求、產(chǎn)出為導(dǎo)向的目標(biāo),為學(xué)生就業(yè)和未來職業(yè)生涯發(fā)展奠定牢固基礎(chǔ),符合產(chǎn)學(xué)合作協(xié)同育人模式。在教學(xué)過程中學(xué)生需要進(jìn)行知識(shí)延伸學(xué)習(xí),找到自學(xué)的方式、方法和途徑等,有利于培養(yǎng)學(xué)生終身學(xué)習(xí)能力。
為了改善課程教學(xué)與產(chǎn)業(yè)需求結(jié)合不緊密和課程指導(dǎo)教師人員不充足的現(xiàn)狀,可以采取“企業(yè)入校、教師入企、以舊帶新”的解決方案。
(1)向騰訊申請(qǐng)人員和技術(shù)支持,邀請(qǐng)企業(yè)一線工程技術(shù)人員進(jìn)入課堂,指導(dǎo)學(xué)生進(jìn)行基于TAPD 的敏捷開發(fā),現(xiàn)場(chǎng)解答學(xué)生問題,向?qū)W生傳授軟件公司一線最新開發(fā)經(jīng)驗(yàn)、方法和技術(shù)。
(2)定期派遣教師參加企業(yè)相關(guān)技術(shù)培訓(xùn),或者到企業(yè)進(jìn)行實(shí)地觀摩、學(xué)習(xí)和實(shí)踐,學(xué)校、學(xué)院制定相應(yīng)政策,鼓勵(lì)教師積極參加培訓(xùn)和實(shí)踐活動(dòng)。
(3)征集一定數(shù)量的學(xué)生助教志愿者。在課程建設(shè)初期,征集一定數(shù)量的研究生加入校內(nèi)教師團(tuán)隊(duì)進(jìn)行必要的學(xué)習(xí)、培訓(xùn),在課堂上協(xié)助教師指導(dǎo)本科生進(jìn)行項(xiàng)目開發(fā)。在一期課程結(jié)束后,選取當(dāng)次課程中表現(xiàn)優(yōu)異的學(xué)生,本著自愿的原則,邀請(qǐng)他們幫助指導(dǎo)下一學(xué)年該課程的學(xué)生。
通過“企業(yè)入校、教師入企”,可以幫助在校教師及時(shí)掌握企業(yè)最新開發(fā)信息、采用的流行方法工具,以及企業(yè)對(duì)人才培養(yǎng)的最新要求,培養(yǎng)滿足市場(chǎng)需求的軟件工程人才;通過“以舊帶新”,讓企業(yè)工程人員帶教師、教師帶學(xué)生、老生帶新生,解決教師團(tuán)隊(duì)人員數(shù)量不充足的問題,保證課程指導(dǎo)人員隊(duì)伍的可持續(xù)發(fā)展。組建工程化多層次綜合師資隊(duì)伍能夠給予學(xué)生更高的關(guān)注度和更好的工程化指導(dǎo),實(shí)現(xiàn)“做中教”的教學(xué)效果,培養(yǎng)符合軟件產(chǎn)業(yè)需求的高水平軟件工程人才。
采取更加直觀、有效、科學(xué)、客觀的課程評(píng)價(jià)體系,綜合評(píng)定項(xiàng)目組的整體成績(jī)和項(xiàng)目成員的個(gè)人成績(jī),合理評(píng)定每個(gè)學(xué)生的課程成績(jī)。
項(xiàng)目組的整體成績(jī)主要根據(jù)項(xiàng)目組提交的軟件開發(fā)文檔質(zhì)量、項(xiàng)目組完成各項(xiàng)任務(wù)的及時(shí)性和最后提交的產(chǎn)品質(zhì)量進(jìn)行評(píng)價(jià)。項(xiàng)目組整體成績(jī)占學(xué)生個(gè)人課程成績(jī)的50%。
項(xiàng)目組成員的個(gè)人成績(jī)根據(jù)其在項(xiàng)目中的參與度和個(gè)人貢獻(xiàn)情況進(jìn)行評(píng)價(jià),其中參與度主要考查該成員在項(xiàng)目開發(fā)過程中各種問題討論、腦暴、會(huì)議等環(huán)節(jié)中的表現(xiàn),由指導(dǎo)教師和項(xiàng)目組組長(zhǎng)進(jìn)行雙重評(píng)價(jià)。參與度成績(jī)占學(xué)生個(gè)人課程成績(jī)的20%。
個(gè)人貢獻(xiàn)情況利用TAPD 提供的相關(guān)功能進(jìn)行客觀評(píng)價(jià):利用“資源看板”“需求分布統(tǒng)計(jì)”查看團(tuán)隊(duì)各成員的工作分配情況;利用“故事墻功能”查看團(tuán)隊(duì)各成員所負(fù)責(zé)需求的進(jìn)度情況;利用“缺陷統(tǒng)計(jì)”查看團(tuán)隊(duì)各成員的需求開發(fā)質(zhì)量;利用TAPD 的文檔功能查看團(tuán)隊(duì)各成員貢獻(xiàn)的文檔;利用TAPD 集成的Github 或Gitlab 等工具,查看團(tuán)隊(duì)各成員的代碼提交趨勢(shì)統(tǒng)計(jì)和貢獻(xiàn)統(tǒng)計(jì)等數(shù)據(jù)。個(gè)人貢獻(xiàn)成績(jī)占學(xué)生個(gè)人課程成績(jī)的30%。
這種方法一方面借助TAPD 提供的項(xiàng)目開發(fā)數(shù)據(jù)增強(qiáng)了評(píng)價(jià)的客觀性,實(shí)現(xiàn)了對(duì)多人協(xié)作項(xiàng)目開發(fā)的有效監(jiān)督和控制;另一方面綜合團(tuán)隊(duì)整體完成情況、個(gè)人參與度和個(gè)人貢獻(xiàn)度評(píng)定學(xué)生課程成績(jī)能夠增強(qiáng)學(xué)生的團(tuán)隊(duì)意識(shí)、協(xié)調(diào)溝通能力,鼓勵(lì)學(xué)生積極參與,踴躍發(fā)表個(gè)人觀點(diǎn),有利于培養(yǎng)學(xué)生協(xié)作學(xué)習(xí)、過程控制、表達(dá)展示等綜合素質(zhì),實(shí)現(xiàn)“做中學(xué)”的學(xué)習(xí)效果。
在剛剛結(jié)束的2018—2019 下學(xué)期的軟件工程課程設(shè)計(jì)上,我們首次引入TAPD 軟件開發(fā)平臺(tái),利用敏捷思想進(jìn)行軟件項(xiàng)目開發(fā)。實(shí)踐結(jié)果表明學(xué)生對(duì)TAPD 平臺(tái)反映良好,顯示出了更高的學(xué)習(xí)積極性和自主性,學(xué)生在新技術(shù)學(xué)習(xí)、團(tuán)隊(duì)協(xié)同、文檔撰寫、項(xiàng)目展示等方面的能力獲得了顯著提升,深入理解了軟件工程思想,掌握了軟件工程過程,增強(qiáng)了分析和解決復(fù)雜軟件工程問題的能力。
軟件工程課程設(shè)計(jì)是與軟件工程相配套的一門非常重要的實(shí)踐課,課程教學(xué)效果的好壞將直接影響學(xué)生對(duì)所學(xué)軟件工程理論、思想、方法和技術(shù)的理解和掌握程度,必須給予該課程足夠重視,以培養(yǎng)創(chuàng)新型的軟件開發(fā)人員為目的進(jìn)行課程改革來提高教學(xué)質(zhì)量。我們采取的新工科背景下基于產(chǎn)學(xué)合作的軟件工程課程設(shè)計(jì)的教學(xué)新模式,在課程中引入敏捷軟件開發(fā)思想,借助騰訊TAPD 軟件開發(fā)平臺(tái)為學(xué)生實(shí)際軟件項(xiàng)目開發(fā)給予全過程支持,組建工程化多層次綜合師資團(tuán)隊(duì)為學(xué)生提供切實(shí)有效的開發(fā)指導(dǎo),改進(jìn)課程評(píng)價(jià)體系,客觀、全面、科學(xué)地評(píng)定學(xué)生課程成績(jī)。實(shí)踐結(jié)果表明該教學(xué)新模式能夠激發(fā)學(xué)生的學(xué)習(xí)興趣,提高學(xué)習(xí)的主動(dòng)性和積極性,改善課程教學(xué)效果,使學(xué)生更好地理解和掌握軟件工程的基本原理、思想和方法,并且掌握當(dāng)前應(yīng)用廣泛的軟件工程過程模式和先進(jìn)的敏捷開發(fā)平臺(tái),有利于培養(yǎng)新工科背景下滿足市場(chǎng)需求的軟件工程人才。