• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于代碼倉(cāng)庫(kù)的語(yǔ)言類計(jì)算機(jī)課程教學(xué)輔助平臺(tái)

      2021-01-07 05:43:44陸柳敏楊李婷張衛(wèi)豐
      軟件導(dǎo)刊 2020年12期
      關(guān)鍵詞:相似性倉(cāng)庫(kù)代碼

      陸柳敏,王 庭,楊李婷,張衛(wèi)豐,4

      (1.南京市供電公司,江蘇南京 210008;2.南京郵電大學(xué)計(jì)算機(jī)學(xué)院;3.南京郵電大學(xué)工程實(shí)踐中心,江蘇南京 210003;4.廣西可信軟件重點(diǎn)實(shí)驗(yàn)室,廣西桂林 541004)

      0 引言

      目前,版本管理已經(jīng)成功應(yīng)用于大多數(shù)企業(yè)項(xiàng)目代碼管理中,版本管理所帶來(lái)的歷史回溯、分支保護(hù)、持續(xù)集成等功能逐漸成為項(xiàng)目生產(chǎn)必備要素。高校計(jì)算機(jī)課程強(qiáng)調(diào)使用項(xiàng)目代碼完成實(shí)踐課程,但是項(xiàng)目化代碼作業(yè)導(dǎo)致學(xué)生作業(yè)管理難、無(wú)法追蹤進(jìn)度、代碼評(píng)定困難等問(wèn)題。

      本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于版本管理的教學(xué)平臺(tái)系統(tǒng),在課程作業(yè)管理中引入版本管理的優(yōu)秀特性與功能。系統(tǒng)使用分布式版本管理工具Git,與課程作業(yè)管理邏輯相結(jié)合,使用Git 操作代替學(xué)生提交作業(yè)、教師創(chuàng)建作業(yè)、教師同步作業(yè)等行為。

      筆者根據(jù)使用代碼倉(cāng)庫(kù)管理課程作業(yè)遇到的問(wèn)題,提出“作業(yè)批量分發(fā)”“作業(yè)自動(dòng)批改”“作業(yè)在線批注”“作業(yè)相似性檢測(cè)”4 點(diǎn)需求,據(jù)此4 點(diǎn)需求使用代碼倉(cāng)庫(kù)、持續(xù)集成等技術(shù)進(jìn)行縝密設(shè)計(jì),在南京郵電大學(xué)的計(jì)算機(jī)課程中進(jìn)行試用,反饋良好。

      1 相關(guān)工作

      版本控制軟件提供完備的版本管理功能,用于存儲(chǔ)、追蹤目錄(文件夾)和文件的修改歷史,是軟件開(kāi)發(fā)者必備工具,Git 已經(jīng)成為軟件行業(yè)開(kāi)發(fā)人員的首選。

      代碼克隆表示在文本、詞匯、結(jié)構(gòu)或含義方面類似或等同的源代碼片段。Kamiya 等[1]將代碼克隆定義為程序干擾和較差的軟件可維護(hù)性。代碼克隆具有兩面性:一方面代碼克隆可以提高軟件開(kāi)發(fā)效率[2-3];另外一方面,軟件克隆可能導(dǎo)致長(zhǎng)期的軟件維護(hù)風(fēng)險(xiǎn),例如代碼中可能存在重復(fù)缺陷以及克隆代碼片段之間的可行性缺失現(xiàn)象[4];Chatterji 等[5]給出了克隆代碼的開(kāi)放式查詢,而Stephan等[7]回顧了該領(lǐng)域相關(guān)成果。Mondal 等[6]研究表明,盡管代碼克隆對(duì)軟件可維護(hù)性會(huì)產(chǎn)生負(fù)面影響,但克隆代碼可能比非克隆代碼擁有更高的準(zhǔn)確性;但是在學(xué)生作業(yè)中直接克隆其它人的作業(yè)或代碼并不是一種好行為,學(xué)生缺失了鍛煉的機(jī)會(huì),教師無(wú)法正確評(píng)估學(xué)生學(xué)習(xí)的掌握情況。

      此外,文獻(xiàn)[8]主要利用微信進(jìn)行編程教育,增強(qiáng)互動(dòng)性;文獻(xiàn)[9]利用黑盒測(cè)試技術(shù)對(duì)學(xué)生作業(yè)進(jìn)行自動(dòng)測(cè)試,解決教師批改作業(yè)工作量大、學(xué)生實(shí)踐能力差等問(wèn)題,通過(guò)程序設(shè)計(jì)輔助教學(xué)平臺(tái)可以提高教師教學(xué)質(zhì)量和學(xué)生的學(xué)習(xí)效率;雷大正等[10]提出以能力為本位,以編程實(shí)踐為主線的思想,培養(yǎng)學(xué)生實(shí)際開(kāi)發(fā)能力。

      這些工作在一定程度上解決了編程教育信息化問(wèn)題,但是沒(méi)有解決學(xué)生編程過(guò)程的管理和作弊問(wèn)題。本文提出利用Git 代碼倉(cāng)庫(kù)的版本管理機(jī)制實(shí)現(xiàn)學(xué)生作業(yè)過(guò)程管理和防作弊,有效提高了編程實(shí)訓(xùn)效果。

      2 教學(xué)平臺(tái)設(shè)計(jì)

      系統(tǒng)需求有3 個(gè)方面:①在代碼管理方面,提供類似于GitHub 的代碼管理功能,管理員可以管理教師及學(xué)生賬號(hào);②教師可以創(chuàng)建學(xué)生賬號(hào)并分組,創(chuàng)建代碼倉(cāng)庫(kù),并且可以把代碼倉(cāng)庫(kù)分發(fā)給某個(gè)小組。此外,教師可對(duì)學(xué)生提交的代碼進(jìn)行批改注解,對(duì)學(xué)生的作業(yè)進(jìn)行相似性檢測(cè);在作業(yè)批改與自動(dòng)檢測(cè)方面,需要為教師提供課程項(xiàng)目代碼評(píng)判結(jié)果展示界面,以便管理者審查學(xué)生未合格的代碼;③教師在批改代碼文件時(shí),系統(tǒng)需要為其提供非侵入式批注功能,并通過(guò)郵件等方式將批注消息與內(nèi)容發(fā)送給相應(yīng)的代碼倉(cāng)庫(kù)作者。

      系統(tǒng)根據(jù)需求分為管理員、教師與學(xué)生3 種角色:①管理員負(fù)責(zé)整個(gè)平臺(tái)的管理,負(fù)責(zé)教師與學(xué)生賬號(hào)的管理;②教師主要職責(zé)有:管理學(xué)生賬戶,包括導(dǎo)入導(dǎo)出與分組功能;創(chuàng)建模板倉(cāng)庫(kù);創(chuàng)建學(xué)生倉(cāng)庫(kù);批改學(xué)生倉(cāng)庫(kù);相似性檢測(cè)等;③學(xué)生權(quán)限包括登錄系統(tǒng),下載及同步代碼倉(cāng)庫(kù)。

      系統(tǒng)總體架構(gòu)如圖1 所示。系統(tǒng)架構(gòu)基礎(chǔ)服務(wù)組件包含Git 服務(wù)組件與數(shù)據(jù)服務(wù)組件。Git 組件主要負(fù)責(zé)Git的相關(guān)數(shù)據(jù)查詢與操作自動(dòng)化,數(shù)據(jù)服務(wù)組件提供數(shù)據(jù)庫(kù)相關(guān)的操作接口。核心功能組件包括注解機(jī)制服務(wù)組件、持續(xù)集成服務(wù)組件、對(duì)比算法組件以及權(quán)限配置組件。這4 種組件與基礎(chǔ)服務(wù)組件相結(jié)合使用,組成系統(tǒng)各部分主要功能模塊。

      圖1 系統(tǒng)總體架構(gòu)

      (1)注解機(jī)制服務(wù)組件。該部分主要關(guān)注教師與學(xué)生的非侵入式批注功能與郵件通知服務(wù),該組件與基礎(chǔ)服務(wù)組件結(jié)合使用作為作業(yè)在線批注模塊的核心功能。

      (2)持續(xù)集成服務(wù)組件。此組件負(fù)責(zé)系統(tǒng)與持續(xù)集成工具進(jìn)行數(shù)據(jù)交互的功能,它是作業(yè)自動(dòng)批改功能模塊的核心部件,可與數(shù)據(jù)服務(wù)組件結(jié)合使用將數(shù)據(jù)存儲(chǔ)到系統(tǒng)數(shù)據(jù)庫(kù)。

      (3)對(duì)比算法組件。這是一個(gè)包含代碼相似度核心對(duì)比算法的組件,主要功能是對(duì)比出兩個(gè)代碼倉(cāng)庫(kù)的相似度。

      (4)權(quán)限配置組件。這一部分體現(xiàn)系統(tǒng)中各賬戶的權(quán)限控制與權(quán)限分配規(guī)則功能,它與基礎(chǔ)組件中的數(shù)據(jù)服務(wù)、Git 服務(wù)相結(jié)合作為賬戶管理、作業(yè)項(xiàng)目存儲(chǔ)管理兩個(gè)模塊的核心功能。

      綜上所述,本系統(tǒng)在設(shè)計(jì)結(jié)構(gòu)上具有較強(qiáng)的可擴(kuò)展性,主要體現(xiàn)在以下3 點(diǎn):①各功能模塊之間相互隔離,僅通過(guò)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行驅(qū)動(dòng),各模塊之間耦合性低;②基礎(chǔ)服務(wù)組件提供數(shù)據(jù)庫(kù)數(shù)據(jù)、Git 代碼倉(cāng)庫(kù)數(shù)據(jù)的管理接口,新加入模塊可直接使用標(biāo)準(zhǔn)接口開(kāi)發(fā),省去了大量重復(fù)代碼;③系統(tǒng)頁(yè)面的控制層均由Wicket 實(shí)現(xiàn),易于插入新功能頁(yè)面。

      3 作業(yè)相似度檢測(cè)

      代碼相似度檢測(cè)功能是項(xiàng)目的核心功能。在計(jì)算機(jī)課程管理中,為降低作業(yè)評(píng)判工作量,大多數(shù)課程會(huì)使用統(tǒng)一題目發(fā)給學(xué)生,造成學(xué)生大量抄襲作業(yè)現(xiàn)象。一些課程開(kāi)始使用線上編程系統(tǒng),但依舊無(wú)法解決抄襲問(wèn)題,并且這種在線編程系統(tǒng)無(wú)法支持工程化作業(yè)。

      鑒于此,本文提出在代碼倉(cāng)庫(kù)模式下的代碼管理中進(jìn)行代碼相似性檢測(cè)方案,設(shè)計(jì)并實(shí)現(xiàn)一種新型的代碼相似度檢測(cè)算法,其主要實(shí)現(xiàn)原理是:利用獲取Git 代碼倉(cāng)庫(kù)中的代碼版本歷史提交信息之間的差異,判斷兩份代碼的更迭軌跡是否相似,從而獲得學(xué)生作業(yè)的相似性結(jié)果。該方法與傳統(tǒng)代碼相似性判斷方法不同,其將判斷目標(biāo)由代碼主體轉(zhuǎn)移到代碼的更迭記錄,這種轉(zhuǎn)變使其更適合采用工程項(xiàng)目中代碼的相似性檢測(cè)方法,但需要基于Git 代碼倉(cāng)庫(kù)實(shí)現(xiàn)。

      項(xiàng)目對(duì)比算法有兩個(gè)核心思想:①需要根據(jù)倉(cāng)庫(kù)兩兩版本之間的相似度確定最終的相似度;②對(duì)于兩個(gè)版本之間的相似性需要考慮文本內(nèi)容的相似性以及每個(gè)版本與之前版本差異的相似性。

      設(shè)倉(cāng)庫(kù)R1與倉(cāng)庫(kù)R2是兩個(gè)代碼倉(cāng)庫(kù),則倉(cāng)庫(kù)間的相似性可通過(guò)公式(1)計(jì)算。

      其中,m和n分別為倉(cāng)庫(kù)R1和R2的提交次數(shù),Max(m,n)表示取m和n的最大值,C(R1,R2)表示R1和R2中檢測(cè)出的相似版本個(gè)數(shù)。

      4 教學(xué)平臺(tái)反饋

      基于代碼倉(cāng)庫(kù)的教學(xué)平臺(tái)目前已經(jīng)成功應(yīng)用到南京郵電大學(xué)計(jì)算機(jī)學(xué)院兩門課程中,項(xiàng)目申請(qǐng)者是編程教育一線教師,對(duì)編程教育中的痛點(diǎn)認(rèn)識(shí)深刻。在2018 年的實(shí)踐中,利用該平臺(tái)的過(guò)程管理功能判定13 位學(xué)生不及格(在以前沒(méi)法判定不及格),在2019 年4 月份的“軟件設(shè)計(jì)實(shí)踐”中,成功實(shí)現(xiàn)多人協(xié)作模式下的軟件開(kāi)發(fā),通過(guò)問(wèn)卷調(diào)查取得較好的應(yīng)用效果。學(xué)生反饋情況如圖2 所示。

      圖2 學(xué)生學(xué)習(xí)收獲反饋

      5 結(jié)語(yǔ)

      本平臺(tái)在編程語(yǔ)言類教學(xué)課程中可作為學(xué)生的統(tǒng)一作業(yè)提交平臺(tái),教師可方便查看學(xué)生作業(yè)進(jìn)度并進(jìn)行批改、相似度檢測(cè)等操作,學(xué)生在這種強(qiáng)有力的監(jiān)管之下會(huì)積極進(jìn)行編程作業(yè)的原創(chuàng)工作。本平臺(tái)在南京郵電大學(xué)C語(yǔ)言教學(xué)課程中試用,評(píng)價(jià)良好。

      后續(xù)工作是基于此平臺(tái)對(duì)學(xué)生的單人或協(xié)作作業(yè)進(jìn)行分類規(guī)劃,對(duì)于協(xié)作的作業(yè)進(jìn)行個(gè)人作業(yè)量統(tǒng)計(jì)與相似度檢測(cè),逐步杜絕抄襲,為學(xué)生創(chuàng)造良好的學(xué)習(xí)氛圍。

      猜你喜歡
      相似性倉(cāng)庫(kù)代碼
      倉(cāng)庫(kù)里的小偷
      一類上三角算子矩陣的相似性與酉相似性
      填滿倉(cāng)庫(kù)的方法
      淺析當(dāng)代中西方繪畫的相似性
      四行倉(cāng)庫(kù)的悲壯往事
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      低滲透黏土中氯離子彌散作用離心模擬相似性
      布拖县| 延边| 深圳市| 石棉县| 明水县| 磴口县| 乌拉特后旗| 新乡县| 昌邑市| 巨野县| 固阳县| 肥东县| 牡丹江市| 来凤县| 双柏县| 白朗县| 赣榆县| 错那县| 高州市| 颍上县| 志丹县| 都匀市| 兖州市| 新绛县| 华池县| 荔波县| 太康县| 革吉县| 高邮市| 岫岩| 会同县| 进贤县| 互助| 阳新县| 安徽省| 汉源县| 博湖县| 赤峰市| 山阴县| 自治县| 云霄县|