任 健,王 康,彭天豪
(北京航空航天大學(xué) 計(jì)算機(jī)學(xué)院,北京 100191)
新工科建設(shè)是我國(guó)主動(dòng)應(yīng)對(duì)影響范圍深遠(yuǎn)的新一輪科技革命與產(chǎn)業(yè)變革的戰(zhàn)略行動(dòng)。高校的課程體系和課程質(zhì)量下培養(yǎng)的學(xué)生是否能夠適應(yīng)新的大環(huán)境下市場(chǎng)對(duì)人才的創(chuàng)新創(chuàng)業(yè)等方面的能力需求,是目前高校課程改革亟待解決的問(wèn)題,同時(shí)也是必須迎接的新的挑戰(zhàn)[1]。然而,現(xiàn)階段軟件工程的實(shí)驗(yàn)教學(xué)仍然存在不少問(wèn)題,與社會(huì)對(duì)人才的要求還存在一定差距。因此,為了切實(shí)提升軟件工程課程的實(shí)驗(yàn)教學(xué)質(zhì)量,需要對(duì)實(shí)驗(yàn)教學(xué)過(guò)程存在的問(wèn)題進(jìn)行分析,并探索促進(jìn)軟件工程實(shí)驗(yàn)教學(xué)改革的策略,從而不斷培養(yǎng)學(xué)生的發(fā)現(xiàn)、分析、解決問(wèn)題及實(shí)踐應(yīng)用能力。此外,大數(shù)據(jù)時(shí)代的到來(lái),為軟件產(chǎn)業(yè)注入了生機(jī)與活力。而軟件產(chǎn)業(yè)的繁榮與發(fā)展,離不開(kāi)高素質(zhì)綜合性軟件工程專業(yè)人才的支持。為培養(yǎng)更多高素質(zhì)的軟件工程人才,改革軟件工程教學(xué)需要?jiǎng)?chuàng)新,這也適應(yīng)了軟件工程行業(yè)的發(fā)展方向。
“軟件工程綜合實(shí)驗(yàn)”是計(jì)算機(jī)相關(guān)專業(yè)的一門專業(yè)課程,也是一門綜合獨(dú)立實(shí)驗(yàn)課程,其目標(biāo)是培養(yǎng)學(xué)生的軟件綜合開(kāi)發(fā)能力和實(shí)踐創(chuàng)新能力。專業(yè)綜合實(shí)驗(yàn)課程往往涉及學(xué)科基礎(chǔ)課、專業(yè)課等多門課程,加上課程內(nèi)容跨度較廣、難度較高,如何設(shè)計(jì)課堂教學(xué)案例,保證課程的教學(xué)目標(biāo)和教學(xué)效果,成為該課程的一個(gè)教學(xué)難點(diǎn)[2]。目前的軟件工程教學(xué)存在以下亟待解決的問(wèn)題。其一,純理論教學(xué)內(nèi)容抽象。在學(xué)習(xí)軟件工程相關(guān)專業(yè)課程時(shí),大部分學(xué)生在前序課程中會(huì)積累一定的編程語(yǔ)言和軟件開(kāi)發(fā)的經(jīng)驗(yàn)。若軟件工程綜合實(shí)驗(yàn)類課程不能促進(jìn)學(xué)生將課程內(nèi)容與開(kāi)發(fā)實(shí)踐有效聯(lián)系,將會(huì)出現(xiàn)學(xué)生認(rèn)為課程內(nèi)容重復(fù),產(chǎn)生一定抵觸心理。其二,教學(xué)模式單一。軟件工程學(xué)科涉及軟件開(kāi)發(fā)、運(yùn)行和維護(hù)等內(nèi)容,學(xué)生除了掌握必要的理論知識(shí)外,還應(yīng)當(dāng)具備熟練的分析、設(shè)計(jì)、測(cè)試能力。但是,軟件工程課程的很多環(huán)節(jié)都沒(méi)有體現(xiàn)對(duì)規(guī)范化教學(xué)和訓(xùn)練的考量,導(dǎo)致學(xué)生在軟件工程項(xiàng)目實(shí)踐中狀況百出,團(tuán)隊(duì)合作經(jīng)驗(yàn)不足,軟件過(guò)程制品缺乏統(tǒng)一的規(guī)范,無(wú)法滿足社會(huì)業(yè)界的生產(chǎn)實(shí)踐活動(dòng)需要。其三,教授規(guī)范化過(guò)程管理工具較少。盡管如Git等協(xié)同開(kāi)發(fā)工具在學(xué)生群體中被普遍應(yīng)用,但是如UML、RUCM和Microsoft Project等規(guī)范化的軟件工程過(guò)程管理工具只有小部分學(xué)生有所接觸,大部分學(xué)生并不了解軟件生命周期各階段制品的規(guī)范化管理對(duì)最終產(chǎn)品質(zhì)量保障的作用。其四,教學(xué)學(xué)習(xí)效果評(píng)估顆粒度不細(xì)致。通?!败浖こ叹C合實(shí)驗(yàn)”課程以學(xué)生組隊(duì)完成指定項(xiàng)目或自選項(xiàng)目的形式進(jìn)行,而且只在期中期末或項(xiàng)目評(píng)審階段對(duì)項(xiàng)目整體成果和績(jī)效進(jìn)行階段性評(píng)估,很難做到每周或者每月對(duì)每名學(xué)生的學(xué)習(xí)效果進(jìn)行評(píng)估,所以部分學(xué)生的問(wèn)題無(wú)法在項(xiàng)目實(shí)施過(guò)程中自動(dòng)顯現(xiàn)。
在新工科大背景下如何對(duì)課程進(jìn)行改革,以消除原有課程教學(xué)的弊端,適應(yīng)人才培養(yǎng)的新需求,成為亟待解決的問(wèn)題。
軟件工程綜合實(shí)驗(yàn)要求學(xué)生針對(duì)現(xiàn)有的開(kāi)源軟件進(jìn)行二次開(kāi)發(fā),遵照軟件開(kāi)發(fā)規(guī)范進(jìn)行系統(tǒng)分析與設(shè)計(jì),完成一個(gè)系統(tǒng)的綜合開(kāi)發(fā)任務(wù)。最后,提交規(guī)范化的實(shí)驗(yàn)報(bào)告,提高學(xué)生軟件工程各階段相關(guān)的系統(tǒng)文檔撰寫(xiě)能力。
第一,本課程教學(xué)目標(biāo)為學(xué)習(xí)和綜合運(yùn)用多種軟件工程方法,從事相應(yīng)的軟件工程活動(dòng),對(duì)軟件工程活動(dòng)中出現(xiàn)的實(shí)際問(wèn)題進(jìn)行合理有效的處置,通過(guò)實(shí)驗(yàn)對(duì)方法的實(shí)施效果進(jìn)行客觀的分析和評(píng)判。整個(gè)課程一共分為三個(gè)專題模塊,其中每個(gè)專題的分配時(shí)間依據(jù)學(xué)生的表現(xiàn)和反饋適當(dāng)調(diào)整,每個(gè)專題內(nèi)的子過(guò)程分別持續(xù)一至兩周。第二,定義軟件項(xiàng)目。學(xué)生自由組隊(duì)后小組交流各成員特點(diǎn)和偏好,并和教師商議討論確定實(shí)驗(yàn)項(xiàng)目。主要有兩種方案供學(xué)生選擇,一是在各開(kāi)源平臺(tái)上探索相關(guān)項(xiàng)目,并以此項(xiàng)目為基礎(chǔ)提取高層次需求,更新和完善該開(kāi)源項(xiàng)目;二是基于調(diào)查和調(diào)研提取的新的需求,從零開(kāi)始,開(kāi)發(fā)新的軟件項(xiàng)目。軟件工程實(shí)驗(yàn)過(guò)程包括軟件需求分析、需求評(píng)審、軟件設(shè)計(jì)與實(shí)現(xiàn)、軟件測(cè)試、軟件測(cè)試評(píng)審5個(gè)階段。不限制軟件工程項(xiàng)目開(kāi)發(fā)架構(gòu),鼓勵(lì)使用瀑布模型、敏捷模型。第三,軟件工程實(shí)驗(yàn)過(guò)程管理。過(guò)程分為軟件項(xiàng)目計(jì)劃與監(jiān)控、軟件配置管理、實(shí)驗(yàn)追蹤與分析。設(shè)計(jì)此專題的目的是促進(jìn)項(xiàng)目推進(jìn)過(guò)程、軟件代碼管理、成員貢獻(xiàn)分工可控化和可視化。學(xué)生要有條理、有秩序地協(xié)作推進(jìn)軟件工程過(guò)程。學(xué)生需要針對(duì)每一專題的每個(gè)過(guò)程進(jìn)行總結(jié)和匯報(bào),保障學(xué)生在每個(gè)過(guò)程中都認(rèn)真參與。
翻轉(zhuǎn)課堂最早于2011年提出[3],該方法是對(duì)學(xué)習(xí)過(guò)程的兩個(gè)階段,即知識(shí)傳授階段和知識(shí)內(nèi)化階段進(jìn)行顛倒[4]。翻轉(zhuǎn)課堂現(xiàn)已成為美國(guó)主流的創(chuàng)新教學(xué)模式[5],同時(shí)也在全球教育界引起了廣泛關(guān)注[6]。軟件工程實(shí)驗(yàn)教學(xué)改變?cè)袉我坏摹疤铠喪健苯虒W(xué)方式,積極推進(jìn)開(kāi)展“教師引導(dǎo)方向、學(xué)生探索細(xì)節(jié)、師生探討教學(xué)相長(zhǎng)”的翻轉(zhuǎn)課堂模式。在“軟件工程綜合實(shí)驗(yàn)”課程開(kāi)展過(guò)程中,翻轉(zhuǎn)課堂模式實(shí)施的具體過(guò)程為:(1)教師布置下一階段任務(wù),提供相關(guān)的學(xué)習(xí)資源,并明確任務(wù)的產(chǎn)出。(2)學(xué)生對(duì)任務(wù)進(jìn)行調(diào)研和分析,通過(guò)小組討論將任務(wù)分解并分工,通過(guò)獨(dú)立探索和協(xié)作產(chǎn)出階段性成果。(3)小組進(jìn)行階段性成果匯報(bào),總結(jié)問(wèn)題并進(jìn)行下一階段的任務(wù)活動(dòng)。(4)教師、助教和其他學(xué)生聽(tīng)取小組的定期匯報(bào),進(jìn)行過(guò)程監(jiān)督,發(fā)現(xiàn)問(wèn)題并提出意見(jiàn)。(5)教師、助教和其他小組結(jié)合任務(wù)進(jìn)度和成果質(zhì)量對(duì)小組和小組成員進(jìn)行考核評(píng)價(jià)[7]。
課程伊始,學(xué)生自行組成6~8人的開(kāi)發(fā)團(tuán)隊(duì),每個(gè)團(tuán)隊(duì)負(fù)責(zé)開(kāi)發(fā)經(jīng)教師認(rèn)可的自選項(xiàng)目。每個(gè)開(kāi)發(fā)團(tuán)隊(duì)都要配備軟件開(kāi)發(fā)過(guò)程中的各個(gè)角色,包括項(xiàng)目經(jīng)理、需求分析人員、編碼人員、測(cè)試人員、開(kāi)發(fā)輔助過(guò)程管理人員等。此外,教師和助教除教學(xué)身份外,還要扮演甲方角色,以客戶視角對(duì)產(chǎn)品做出評(píng)價(jià)和建議。在軟件開(kāi)發(fā)的各個(gè)階段,小組的每個(gè)成員需要履行自己所扮演角色的職責(zé),并通過(guò)周會(huì)制度與其他成員分享階段性的問(wèn)題與進(jìn)展,探討自己對(duì)軟件工程的理解,從不同的角度對(duì)軟件工程整體理論形成更深入的認(rèn)識(shí)。
課程采用團(tuán)隊(duì)互相評(píng)審和團(tuán)隊(duì)內(nèi)績(jī)效管理結(jié)合的方法。引入軟件需求評(píng)審和軟件測(cè)試評(píng)審方法。通過(guò)網(wǎng)上互相評(píng)審和會(huì)議評(píng)審開(kāi)展代碼審查、需求和測(cè)試過(guò)程互評(píng)。此舉有兩大好處:一是每個(gè)小組能夠從不同的視角重新審視自己的文檔和產(chǎn)品,在之后的軟件開(kāi)發(fā)過(guò)程中能從更全面的角度推進(jìn)產(chǎn)品。二是互評(píng)的過(guò)程可以充分保障并有效提高產(chǎn)品和文檔的質(zhì)量。當(dāng)局者迷,很多企業(yè)的小組互評(píng)模式已經(jīng)充分驗(yàn)證了這個(gè)道理。
在學(xué)生團(tuán)隊(duì)內(nèi)部采取協(xié)商規(guī)則、民主評(píng)價(jià)方式進(jìn)行團(tuán)隊(duì)成員績(jī)效管理。在課程開(kāi)始時(shí),由團(tuán)隊(duì)內(nèi)部制定貢獻(xiàn)度評(píng)分標(biāo)準(zhǔn);課程收尾時(shí),團(tuán)隊(duì)內(nèi)部成員結(jié)合貢獻(xiàn)分評(píng)價(jià)標(biāo)準(zhǔn)對(duì)其他成員進(jìn)行評(píng)價(jià),得到每個(gè)人對(duì)團(tuán)隊(duì)的貢獻(xiàn)度,作為最后課程得分的參考。通過(guò)團(tuán)隊(duì)內(nèi)績(jī)效評(píng)價(jià),教師能夠了解團(tuán)隊(duì)健康程度,從而進(jìn)一步調(diào)動(dòng)學(xué)生積極性,提升教學(xué)效果[8]。
在需求分析和提取階段,北京航空航天大學(xué)計(jì)算機(jī)學(xué)院針對(duì)RUCM方法開(kāi)發(fā)出了相應(yīng)的建模工具[9-10],學(xué)生可以使用工具對(duì)程序邏輯判斷等結(jié)構(gòu)進(jìn)行建模。在需求分析和系統(tǒng)設(shè)計(jì)階段,統(tǒng)一建模語(yǔ)言(Unified Modeling Language,UML)可視化工具[11],如StarUML和Visio,讓學(xué)生在實(shí)踐中理解“建模不等于畫(huà)圖”的要義[12-13]。在項(xiàng)目推進(jìn)過(guò)程中引入Microsoft Project作為小組項(xiàng)目的管理工具,可以幫助項(xiàng)目管理者實(shí)現(xiàn)時(shí)間、資源、成本計(jì)劃和控制。
通過(guò)上述工具的學(xué)習(xí)和使用,學(xué)生在實(shí)踐過(guò)程中可以深刻體會(huì)比文字描述更直觀、邏輯更嚴(yán)謹(jǐn)?shù)男畔鬟f效果,這也是使用這些建模和管理工具的重要意義。正確理解和使用針對(duì)需求分析、系統(tǒng)分析及項(xiàng)目過(guò)程管理的非編碼工具是軟件工程能力的核心體現(xiàn),在實(shí)踐中鍛煉使用上述工具的能力是軟件工程專業(yè)學(xué)生的必修課。
在軟件開(kāi)發(fā)階段,學(xué)生被要求在各自組內(nèi)分工完成各類文檔的撰寫(xiě)及項(xiàng)目代碼的開(kāi)發(fā),代碼及文檔在群體化開(kāi)發(fā)網(wǎng)站的提交行為會(huì)影響團(tuán)隊(duì)中的其他成員。在評(píng)審階段,學(xué)生審閱其他小組的文件和代碼并指出項(xiàng)目存在的問(wèn)題,學(xué)生提出的問(wèn)題會(huì)影響問(wèn)題所在團(tuán)隊(duì)的所有成員。
基于學(xué)生每周在軟件開(kāi)發(fā)過(guò)程中的交互數(shù)據(jù),通過(guò)構(gòu)建學(xué)生時(shí)空交互圖反映學(xué)生間的相互影響情況?;趯W(xué)生在群體化學(xué)習(xí)模式中的互動(dòng)表現(xiàn),探索學(xué)生在團(tuán)隊(duì)項(xiàng)目中的互動(dòng)方式,以及互動(dòng)影響學(xué)生在協(xié)作學(xué)習(xí)環(huán)境中的課程成績(jī)的原因。教師還需要智能輔導(dǎo)工具推斷協(xié)作軟件開(kāi)發(fā)過(guò)程中學(xué)生交互的潛在影響。利用針對(duì)圖神經(jīng)網(wǎng)絡(luò)的解釋模型,教師可以分析學(xué)生在學(xué)習(xí)過(guò)程中是否相互影響和影響的程度。
每個(gè)學(xué)生的最終得分取決于他們對(duì)項(xiàng)目的貢獻(xiàn),以及團(tuán)隊(duì)最終交付的軟件產(chǎn)品的質(zhì)量。教師可以使用圖神經(jīng)網(wǎng)絡(luò)及相應(yīng)的解釋模型,通過(guò)挖掘?qū)W生的行為數(shù)據(jù),特別是他們的互動(dòng)行為,分析每個(gè)項(xiàng)目的完成過(guò)程,從而更加準(zhǔn)確地評(píng)價(jià)小組項(xiàng)目中每個(gè)學(xué)生的學(xué)業(yè)成績(jī),客觀地分析各成員的能力和偏好,幫助學(xué)生進(jìn)行組隊(duì)和分配任務(wù)。
軟件工程綜合實(shí)踐類課程內(nèi)容、教學(xué)模式等的改革與實(shí)踐表明,通過(guò)以實(shí)際問(wèn)題為中心、由應(yīng)用案例組織的教學(xué),學(xué)生能夠以批判性的眼光看待問(wèn)題,學(xué)會(huì)將理論知識(shí)運(yùn)用于實(shí)際問(wèn)題的解決。本次“軟件工程綜合實(shí)驗(yàn)”課程的改革成果具體可以總結(jié)為以下三個(gè)方面。
“軟件工程綜合實(shí)驗(yàn)”課程教學(xué)改革解決了國(guó)內(nèi)該課程的綜合性和實(shí)用性不足等問(wèn)題,為軟件工程綜合實(shí)驗(yàn)課程建立新的符合行業(yè)標(biāo)準(zhǔn)的授課模式。同時(shí),提出了適應(yīng)新工科背景下滿足我國(guó)實(shí)際需求和學(xué)生適應(yīng)能力的教學(xué)方法體系,并以“軟件工程綜合實(shí)驗(yàn)”課程為教學(xué)改革試點(diǎn),提出了滿足相關(guān)行業(yè)標(biāo)準(zhǔn)、實(shí)際需求和學(xué)生適應(yīng)能力三項(xiàng)準(zhǔn)則的教學(xué)內(nèi)容和教學(xué)方法改革方案。
教學(xué)過(guò)程以學(xué)生組隊(duì)進(jìn)行生產(chǎn)實(shí)踐為主,通過(guò)專題化訓(xùn)練提高學(xué)生對(duì)軟件生命周期各階段成果的理解和掌握水平,通過(guò)翻轉(zhuǎn)課堂教學(xué)實(shí)踐及分組互評(píng)鍛煉學(xué)生撰寫(xiě)各階段文檔及團(tuán)隊(duì)間交流展示的能力。課程改革教學(xué)效果表明,實(shí)踐環(huán)節(jié)提高了學(xué)生對(duì)軟件生產(chǎn)過(guò)程的把握程度和完成程度,同時(shí)加深了學(xué)生對(duì)軟件行業(yè)各類標(biāo)準(zhǔn)的認(rèn)識(shí)和理解。
教師通過(guò)學(xué)生使用相關(guān)工作軟件的提交質(zhì)量、互動(dòng)數(shù)據(jù)及互評(píng)分?jǐn)?shù)的矩陣,可以每周獲取一次績(jī)效評(píng)估,每月獲取一次互動(dòng)協(xié)作能力評(píng)估,增強(qiáng)教師對(duì)參與實(shí)驗(yàn)課程學(xué)生的成績(jī)和互動(dòng)協(xié)作能力的實(shí)時(shí)感知,有利于實(shí)現(xiàn)通過(guò)實(shí)驗(yàn)過(guò)程提高學(xué)生互動(dòng)協(xié)調(diào)能力的目標(biāo)。
新工科背景下,“軟件工程綜合實(shí)驗(yàn)”課程改革是一項(xiàng)系統(tǒng)工程。本文提出軟件工程理論與實(shí)踐專題結(jié)合的教學(xué)內(nèi)容、課程教學(xué)采用多模式結(jié)合的教學(xué)方式、合作創(chuàng)新的學(xué)習(xí)方式等教學(xué)改革方案,解決了國(guó)內(nèi)該課程現(xiàn)有的綜合性和實(shí)用性不足等問(wèn)題。在豐富學(xué)生理論知識(shí)的同時(shí),提高學(xué)生的動(dòng)手能力、創(chuàng)新能力及團(tuán)隊(duì)合作能力,并對(duì)今后更好地拓展和完善軟件工程綜合實(shí)踐類課程的教學(xué)方法提供一定的借鑒。