王 濤,白 羽,余 躍,毛新軍,歐陽建權(quán),尹 剛,王懷民
(國防科技大學(xué) 計算機(jī)學(xué)院,湖南 長沙 410073)
近年來,教育部和多個高等院校聯(lián)合提出了“新工科建設(shè)”的思路,希望以此來推動工程實踐能力和創(chuàng)新能力強(qiáng)的高素質(zhì)復(fù)合型工科人才的培養(yǎng)。然而,軟件工程課程本身具有的綜合性、交叉性、工程性等問題使得軟件工程實踐教學(xué)面臨著諸多問題,比如缺乏高質(zhì)量實踐教學(xué)案例、難以有效指導(dǎo)實踐教學(xué)過程、難以持續(xù)評估實踐開發(fā)過程等。要推動學(xué)生工程實踐能力和軟件創(chuàng)新能力的培養(yǎng),亟須在實踐對象、資源、環(huán)境等方面突破當(dāng)前實踐教學(xué)的局限,需要相應(yīng)平臺的強(qiáng)力支撐。
網(wǎng)絡(luò)技術(shù)的發(fā)展推動了數(shù)字化教學(xué)平臺的發(fā)展,形成了以學(xué)校為中心的在線學(xué)習(xí)管理平臺和以學(xué)習(xí)者為中心的在線學(xué)習(xí)服務(wù)平臺兩大類。在線學(xué)習(xí)管理平臺如Blackboard等堅持以教師、課堂為中心的教學(xué)理念和管理模式,側(cè)重于課堂教學(xué)活動的在線化,并不能有效支持實踐;在線學(xué)習(xí)服務(wù)平臺如Coursera等MOOC[1]自主學(xué)習(xí)平臺以及CodeAcadamy[2]、Topcoder[3]等自主實踐平臺是以學(xué)習(xí)者為中心,但與軟件工程實踐教學(xué)活動有所脫節(jié)。如何充分利用當(dāng)前互聯(lián)網(wǎng)和信息技術(shù)帶來的機(jī)遇,構(gòu)建面向軟件工程實踐教學(xué)的支撐平臺,是實現(xiàn)新工科建設(shè)目標(biāo)亟須解決的關(guān)鍵問題。
借鑒以開源軟件為代表的群體化實踐,我們形成了將互聯(lián)網(wǎng)開放資源以及開發(fā)者群體智慧引入實踐教學(xué)過程,基于高質(zhì)量開源軟件構(gòu)建實踐任務(wù),利用互聯(lián)網(wǎng)群體協(xié)助指導(dǎo)學(xué)生創(chuàng)新實踐的群體化實踐教學(xué)基本思路和方法,希望以此克服老師和學(xué)生在知識、經(jīng)驗、時間等方面的局限性,突破傳統(tǒng)實踐教學(xué)面臨的實施空間、協(xié)同對象、實踐資源等受限的問題,實現(xiàn)創(chuàng)新人才的培養(yǎng)目標(biāo)。
開源軟件蘊(yùn)含的以“大眾化協(xié)同、開放式共享、持續(xù)性評估”為核心的群體化學(xué)習(xí)與創(chuàng)新機(jī)理[4],為群體化實踐教學(xué)支撐平臺建設(shè)提供了很好的思路。
(1)引入大眾化群體協(xié)同模型,將教師答疑輔導(dǎo)為主的課堂實驗?zāi)J睫D(zhuǎn)變?yōu)榛陂_放社區(qū)、以互助討論為主的協(xié)作學(xué)習(xí)模式,實現(xiàn)教師引導(dǎo)激發(fā)、學(xué)生協(xié)同實踐的協(xié)作創(chuàng)新模式。
(2)引入開放式資源共享模式,將以教師為單一資源來源的封閉環(huán)境資源分享模式轉(zhuǎn)變?yōu)榛诨ヂ?lián)網(wǎng)的大范圍資源共享模式,更有效地推動創(chuàng)新實踐活動的開展。
(3)引入持續(xù)性過程評估機(jī)制,實現(xiàn)對學(xué)生、老師以及實踐教學(xué)活動的有效評估與反饋,推動創(chuàng)新實踐群體共同協(xié)作參與和多樣化貢獻(xiàn)匯聚,更有效地實現(xiàn)協(xié)同實踐創(chuàng)新能力培養(yǎng)。
基于上述基本思想,我們形成了以開源群體化機(jī)理為內(nèi)核,將教學(xué)體系與實踐體系相融合的群體化實踐教學(xué)支撐平臺建設(shè)思路,如圖1所示。
群體化實踐教學(xué)支持平臺需要通過一系列的機(jī)制和工具設(shè)計,將課堂與互聯(lián)網(wǎng)社區(qū)聯(lián)接起來,將課堂教學(xué)與創(chuàng)新實踐銜接起來,從而為軟件工程創(chuàng)新人才的培養(yǎng)提供支撐。
圖1 群體化實踐教學(xué)支撐平臺建設(shè)思路
圖2 群體化實踐教學(xué)支撐平臺Trustie的整體框架
基于群體化實踐教學(xué)的思想,圍繞閱讀和維護(hù)高質(zhì)量的開源軟件,開發(fā)有創(chuàng)意、上規(guī)模的軟件系統(tǒng)兩個方面的任務(wù),構(gòu)建形成了面向群體化實踐教學(xué)的支撐平臺Trustie[4]。
Trustie平臺涵蓋了對開源代碼閱讀與評價、開源資源的分析與共享、實踐項目的協(xié)同開發(fā)等群體化實踐教學(xué)的支持,主要包括數(shù)據(jù)存儲管理、核心支撐機(jī)制、關(guān)鍵子系統(tǒng)以及Web交互等,整體框架如圖2所示。
針對實踐教學(xué)實施過程中不同時期的特殊需求,我們構(gòu)建了面向不同實踐任務(wù)的子系統(tǒng),各子系統(tǒng)的主要功能如下:
(1)課堂教學(xué)管理平臺。支持圍繞課堂學(xué)習(xí)開展實踐,提供實踐任務(wù)發(fā)布、實踐過程監(jiān)測等管理工具以及活躍度排序、實踐質(zhì)量分析等評估工具。
(2)開源代碼閱讀標(biāo)注平臺。支持圍繞開源代碼開展實踐,提供開源代碼標(biāo)注任務(wù)發(fā)布、代碼閱讀與標(biāo)注、對標(biāo)注進(jìn)行匯聚與分析等功能。
(3)開源資源開放共享平臺。支持教師和學(xué)生圍繞開源資源實現(xiàn)資源匯聚、分析與分享,提供互聯(lián)網(wǎng)資源的熱度分析、質(zhì)量評估等資源評估工具以及檢索推薦等資源共享工具。
(4)實踐項目協(xié)同開發(fā)平臺。支持課堂小組圍繞實踐任務(wù)開展分布式協(xié)作實踐,提供任務(wù)跟蹤、協(xié)同開發(fā)等群體協(xié)同工具,以及代碼質(zhì)量、個體能力等持續(xù)評估工具。
2.2.1 對群體化實踐教學(xué)組織的支持
實踐教學(xué)的實施需要老師對學(xué)生進(jìn)行積極引導(dǎo)、對實踐過程教學(xué)有效監(jiān)測和管理,面向?qū)嵺`教學(xué)管理的Trustie-Course平臺提供了相應(yīng)的支撐機(jī)制。
(1)多層次實踐教學(xué)組織?;谠撈脚_,課程教師可以根據(jù)不同實踐任務(wù)的需要以及不同課程教學(xué)和實踐的特點(diǎn),創(chuàng)建不同粒度和層次的實踐教學(xué)組織方式,包括結(jié)對模式、分組模式、班級模式、課程模式、社區(qū)模式等。這些多樣化、不同粒度、不同層次的群體化組織能夠更好地促進(jìn)資源共享、有效協(xié)同、數(shù)據(jù)采集、科學(xué)評估。
(2)跨班級、跨學(xué)期資源匯聚和共享。一門實踐課程通常會涉及多個班級和學(xué)期?;谠撈脚_,課程教師可以實現(xiàn)不同班級、不同學(xué)期之間大量教學(xué)資源的“一鍵”匯聚和共享。跨班級、跨學(xué)期的共享能夠?qū)崿F(xiàn)教學(xué)活動的繼承和互補(bǔ),推動實踐教學(xué)承上啟下、不斷延續(xù)。
2.2.2 對開源代碼的閱讀標(biāo)注的支持
高質(zhì)量開源代碼閱讀與維護(hù)對提升學(xué)生工程意識、分析復(fù)用能力等具有重要價值。Trustie-Codepedia平臺為學(xué)生群體化開源代碼學(xué)習(xí)提供了相應(yīng)的支撐。
(1)面向代碼理解的開源注釋。Codepedia平臺基于開源社區(qū)構(gòu)建了面向?qū)嵺`教學(xué)的代碼閱讀標(biāo)注資源庫;提供了項目總體結(jié)構(gòu)、類與方法、方法間調(diào)用關(guān)系等不同視圖,便于學(xué)生理解項目需求與系統(tǒng)設(shè)計;設(shè)計針對每一行代碼的獨(dú)立標(biāo)注機(jī)制,學(xué)生可以針對任何一行代碼或者一個代碼庫等進(jìn)行標(biāo)注;集成了SonarQube等代碼分析工具,并基于工具分析結(jié)果形成相應(yīng)的引導(dǎo)問題,引導(dǎo)和培養(yǎng)學(xué)生編寫高質(zhì)量代碼的意識。
(2)面向?qū)嵺`過程的眾包評估。老師要有效評估學(xué)生對代碼理解的準(zhǔn)確性和標(biāo)注的質(zhì)量,僅靠實踐教學(xué)是很難完成的。平臺設(shè)計了包括標(biāo)注后才能查看他人標(biāo)注等多種機(jī)制,促使學(xué)生獨(dú)立思考、認(rèn)真標(biāo)注,防止學(xué)生之間相互抄襲;設(shè)計了贊與踩、匿名評論、交叉互評等機(jī)制,通過學(xué)生之間的相互評閱,利用相應(yīng)的機(jī)器學(xué)習(xí)和自然語言處理技術(shù),對每個學(xué)生的代碼標(biāo)注質(zhì)量進(jìn)行準(zhǔn)確的分析和評估。
2.2.3 對互聯(lián)網(wǎng)資源開放共享的支持
在實踐教學(xué)實施過程中,為學(xué)習(xí)者提供所需的個性化軟件資源和知識資源等極其關(guān)鍵。面向開放式資源共享的Trustie-OSSEAN平臺[5]為大范圍互聯(lián)網(wǎng)資源的高效共享提供了相應(yīng)支持。
(1)面向?qū)嵺`教學(xué)的互聯(lián)網(wǎng)資源匯聚共享。互聯(lián)網(wǎng)上匯聚了海量有價值的教學(xué)資源,這些資源大多并非來自傳統(tǒng)意義上的教學(xué)群體,而是由特定互聯(lián)網(wǎng)社區(qū)提供。所提供的資源具有多樣化、持續(xù)增長等特點(diǎn)。Trustie-OSSEAN平臺基于全球主流開源開發(fā)社區(qū)和應(yīng)用社區(qū)構(gòu)建形成了面向?qū)嵺`教學(xué)的大規(guī)模資源庫;在實踐教學(xué)平臺與互聯(lián)網(wǎng)社區(qū)之間建立起“通道”,方便教師將特定互聯(lián)網(wǎng)社區(qū)資源導(dǎo)入實踐課程,幫助實踐教學(xué)群體便捷、快速地共享海量的學(xué)習(xí)資源,以支持軟件工程實踐教學(xué)活動。
(2)面向教學(xué)資源選擇的開源資源評估與推薦。海量開源資源存在規(guī)模巨大、分布廣泛、形式多樣、質(zhì)量良莠不齊的特點(diǎn)。Trustie-OSSEAN平臺提供了一種基于使用者應(yīng)用反饋的項目量化評估機(jī)制,實現(xiàn)對開源軟件的評估、排序以及發(fā)展趨勢預(yù)測,從而幫助學(xué)習(xí)者尋找到所需要的資源;基于互聯(lián)網(wǎng)大規(guī)模群體對軟件及相關(guān)討論的標(biāo)注標(biāo)簽進(jìn)行關(guān)聯(lián)分析,提供了海量資源的準(zhǔn)確定位與相似相關(guān)項目的推薦,為學(xué)習(xí)者提供更準(zhǔn)確的學(xué)習(xí)實踐資源檢索與推薦。
2.2.4 對群體化分布式協(xié)同實踐的支持
創(chuàng)新實踐能力培養(yǎng)的關(guān)鍵在于動手實踐。圍繞基于群體化軟件開發(fā)方法的實踐教學(xué),形成了面向群體協(xié)同開發(fā)的Trustie-Forge平臺,提供了高效便捷的在線協(xié)同支撐工具和服務(wù),為大規(guī)模群體協(xié)同實踐提供支持。
(1)實踐項目的任務(wù)管理。對協(xié)作實踐任務(wù)的有效跟蹤管理是提升協(xié)作效率和質(zhì)量的關(guān)鍵要素。Trustie-Forge平臺提供項目目標(biāo)規(guī)劃、里程碑設(shè)置來控制項目工作的進(jìn)展,保證目標(biāo)規(guī)劃的實現(xiàn);提供項目任務(wù)(需求、功能、支持、缺陷等)分配管理機(jī)制,使開發(fā)過程能夠有序進(jìn)行;提供項目進(jìn)度統(tǒng)計、分析、通知等,確保協(xié)作團(tuán)隊之間所修改的代碼保持一致性和完整性;提供wiki、論壇等以實現(xiàn)群體知識分享與高效協(xié)同。
(2)實踐項目的制品管理。群體協(xié)作中個體實踐制品的有效管理和融合直接影響團(tuán)隊項目的最終成敗。Trustie-Forge提供分布式版本管理工具對項目組織中不同個體所提交的代碼進(jìn)行版本管理,確保多個個體之間所修改的代碼保持一致性和完整性;提供代碼分析工具對學(xué)生提交的代碼進(jìn)行分析,讓學(xué)生對知識點(diǎn)的掌握以及在編程開發(fā)中容易觸犯的共性錯誤和個性錯誤一目了然;提供協(xié)同編輯工具幫助項目成員合作編輯同一個文檔,最終形成整個項目組的開發(fā)成果;提供基于Pull-Request的貢獻(xiàn)匯聚機(jī)制實現(xiàn)群體協(xié)同制品的高效匯聚和合并。
(3)實踐過程的持續(xù)評估。如何對協(xié)同過程進(jìn)行持續(xù)的分析和評估對于指導(dǎo)學(xué)生實踐非常重要。Trustie-Forge平臺基于持續(xù)集成工具Jenkins和質(zhì)量分析工具SonarQube構(gòu)建了實踐質(zhì)量持續(xù)檢查模塊,實現(xiàn)了對提交代碼的自動化靜態(tài)質(zhì)量分析,能夠?qū)W(xué)生的實踐過程進(jìn)行持續(xù)檢查與實時反饋,在提高軟件代碼質(zhì)量的同時提高開發(fā)者的編程質(zhì)量和水平;提供了基于開發(fā)過程數(shù)據(jù)的個體能力分析工具,對團(tuán)隊協(xié)作中個體實踐工作量、實踐質(zhì)量等進(jìn)行有效的分析和排名等?;谶@些工具實現(xiàn)對學(xué)生實踐過程的持續(xù)的、定量和定性的分析和評估。
Trustie平臺通過一系列機(jī)制和工具設(shè)計,將課堂學(xué)習(xí)者與大規(guī)?;ヂ?lián)網(wǎng)群體連接起來,讓互聯(lián)網(wǎng)大眾參與到實踐教學(xué)活動中,幫助學(xué)習(xí)者獲得多源、多樣的知識和技能,支持更開放的交流和討論,吸取多方的不同觀點(diǎn)、見解和意見;將學(xué)生創(chuàng)新實踐與互聯(lián)網(wǎng)群體實踐連接起來,將開源開發(fā)者、開源項目、開源社區(qū)討論等作為重要組成部分參與到創(chuàng)新實踐過程中,讓學(xué)生向全球頂級開發(fā)者學(xué)習(xí),對軟件工程群體化實踐教學(xué)提供了有力支持。
圍繞群體化實踐教學(xué),Trustie平臺匯聚以下的實踐教學(xué)相關(guān)資源,有力地支持了軟件工程實踐教學(xué)活動的有效開展。
(1)高質(zhì)量開源代碼閱讀片段超過50萬個。
(2)開源項目超過530萬個,在線討論數(shù)量超過2 000萬,對開源開發(fā)與應(yīng)用社區(qū)進(jìn)行實時監(jiān)測與持續(xù)更新,且更新延遲小于30分鐘。
(3)發(fā)布了超過3 580次實踐任務(wù),學(xué)生累計提交實踐作品達(dá)到101 153個,累計下載超過245萬次。
(4)創(chuàng)建實踐項目達(dá)到3 317個,缺陷發(fā)布數(shù)量超過10萬個,項目資源累積3萬份,這些資源涵蓋了軟件、文檔、代碼、媒體以及論文等類型。
國防科技大學(xué)包括程序設(shè)計等課程實踐都基于Trustie平臺來開展。計算機(jī)學(xué)院圍繞群體化實踐教學(xué),采用小班教學(xué)的模式,對軟件工程專業(yè)的學(xué)生開展了持續(xù)兩年的教學(xué)實踐,包括實踐任務(wù)的發(fā)布與管理、小米便簽等開源代碼的閱讀與維護(hù),創(chuàng)新軟件的需求創(chuàng)意、開源復(fù)用、協(xié)同開發(fā)等,都基于Trustie平臺來實施。在開源代碼閱讀階段,代碼標(biāo)注達(dá)到平均3~4行添加1條注釋且比較規(guī)范標(biāo)準(zhǔn),在代碼維護(hù)階段平均添加代碼規(guī)模約為500行,基于Git的代碼提交約為142次,對學(xué)生代碼分析、協(xié)同開發(fā)以及代碼質(zhì)量等方面的能力提升起到了很好的作用;在協(xié)同開發(fā)階段,學(xué)生開發(fā)的軟件系統(tǒng)規(guī)模平均超過10 000行,開發(fā)的軟件系統(tǒng)具有較好的集成性和綜合性。
同時,Trustie在全國多所高校得到推廣使用。截至目前,全國有超過360所高校和科研院所在Trustie平臺上開展課程教學(xué),包括清華大學(xué)、北京大學(xué)、中科院大學(xué)、北京航空航天大學(xué)、同濟(jì)大學(xué)、湖南師范大學(xué)等不同層次的高校;注冊用戶超過18 000人,其中教師數(shù)量超過3 000余人,學(xué)生超過15 000人。
此外,開發(fā)社區(qū)中的項目創(chuàng)建者覆蓋了來自全國150多所高校的近1 000名師生以及約25個科研院所和創(chuàng)新實驗室的科研人員,包括北斗開源實驗室、國內(nèi)首個機(jī)器人操作系統(tǒng)團(tuán)隊Micros、國際頂尖機(jī)器人競技團(tuán)隊Nubot以及國家超級計算廣州中心等。此外,還有超過200多名自由軟件愛好者也在平臺中通過項目貢獻(xiàn)了自己的代碼、開發(fā)經(jīng)驗以及心得文檔等。
Trustie平臺在國防科技大學(xué)軟件工程實踐教學(xué)改革中的應(yīng)用,有力地支持了群體化實踐教學(xué)活動,有效提高了實踐教學(xué)的效果,對學(xué)生工程實踐能力和軟件創(chuàng)新能力的培養(yǎng)起到了很好的支撐作用。
Trustie平臺集成了各類持續(xù)檢查分析工具,能夠在教學(xué)實踐中幫助老師對學(xué)生的實踐過程進(jìn)行持續(xù)監(jiān)測與實時指導(dǎo),解決了以往實踐教學(xué)難以指導(dǎo)和評估的問題,有效提升了學(xué)生編寫高質(zhì)量代碼的實踐能力。例如,平臺將代碼質(zhì)量持續(xù)檢查機(jī)制引入到群體化實踐教學(xué)活動中,能夠?qū)崟r分析發(fā)現(xiàn)學(xué)生實踐代碼中經(jīng)常性出現(xiàn)的錯誤和風(fēng)險,并對相應(yīng)的學(xué)生進(jìn)行針對性的指導(dǎo)。在分析對比小班教學(xué)實踐中使用持續(xù)檢查機(jī)制前后學(xué)生的代碼質(zhì)量發(fā)現(xiàn),利用平臺持續(xù)檢查機(jī)制大大降低了學(xué)生代碼中質(zhì)量問題的密度。同時,通過調(diào)查問卷獲得的學(xué)生反饋表明,該機(jī)制和工具大大提升了學(xué)生編寫高質(zhì)量軟件代碼的意識和能力。
Trustie平臺提供的開放共享和協(xié)同開發(fā)工具,有效支持了學(xué)生創(chuàng)意激發(fā)、需求分析、軟件設(shè)計、資源復(fù)用、協(xié)作開發(fā)等活動,培養(yǎng)了學(xué)生基于互聯(lián)網(wǎng)的群體化軟件開發(fā)思維和團(tuán)隊協(xié)同開發(fā)能力,提升了學(xué)生的軟件工程綜合素質(zhì)。例如,在持續(xù)兩年的小班教學(xué)實踐中,學(xué)生基于該平臺構(gòu)思并協(xié)作完成了無人值守的圖書館、家庭接待機(jī)器人、多無人機(jī)聯(lián)合搜尋系統(tǒng)、Baby安保助手等多項代碼規(guī)模超過10 000行的具有集成性和綜合性的創(chuàng)新實踐作品,并在計算機(jī)作品比賽、機(jī)器人比賽等多項全國性賽事中取得了金獎、銀獎等優(yōu)異成績。
新工科建設(shè)對軟件工程專業(yè)實踐教學(xué)提出了更高的要求,基于群體化的實踐教學(xué)思想為創(chuàng)新性、工程性高素質(zhì)復(fù)合型人才培養(yǎng)提供了解決思路,但是需要相應(yīng)基礎(chǔ)平臺的有力支撐。本文詳細(xì)介紹了面向群體化實踐教學(xué)的支撐平臺Trustie,重點(diǎn)闡述了面向?qū)嵺`教學(xué)的關(guān)鍵支撐機(jī)制,包括實踐教學(xué)管理機(jī)制、開源代碼閱讀機(jī)制、網(wǎng)絡(luò)資源開放共享機(jī)制以及項目實踐協(xié)同開發(fā)機(jī)制等,并從建設(shè)應(yīng)用情況及實際應(yīng)用成效兩個方面說明了Trustie對軟件工程實踐教學(xué)改革和學(xué)生創(chuàng)新實踐能力培養(yǎng)的支撐作用。