聶南 應(yīng)時(shí) 宋寶衛(wèi) 宋春來
摘 要:隨著開源軟件工程的蓬勃發(fā)展,已有教師帶領(lǐng)學(xué)生借助版本控制等工具構(gòu)建協(xié)作開源軟件教研云-端平臺(tái),多個(gè)教研單位共同參與開源軟件的應(yīng)用、開發(fā)和測(cè)試。本文以GitHub、開源中國(guó)等代碼托管平臺(tái)發(fā)布開發(fā)的競(jìng)賽作品為例,論述開源項(xiàng)目學(xué)習(xí)和開發(fā)持續(xù)集成過程,闡釋這種開源平臺(tái)的構(gòu)建有助于培養(yǎng)知識(shí)產(chǎn)權(quán)意識(shí),激發(fā)創(chuàng)新意識(shí)和創(chuàng)業(yè)精神,同時(shí)為開源社區(qū)大數(shù)據(jù)小數(shù)據(jù)分析決策打下基礎(chǔ)。
關(guān)鍵詞:GitHub;配置管理;開源軟件;數(shù)據(jù)分析;小數(shù)據(jù)
中圖分類號(hào):G434 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1673-8454(2018)07-0082-04
一、引言
軟件開源的思想和相關(guān)技術(shù)已經(jīng)深入了目前的IT領(lǐng)域。比如國(guó)外的Git、SVN等軟件版本控制平臺(tái),MyCollab等商務(wù)平臺(tái)和LibrePlan等項(xiàng)目管理平臺(tái)。一些企業(yè)如微軟、IBM也在逐漸推出軟件集成開源計(jì)劃,比如Visual Studio跨平臺(tái)項(xiàng)目等;國(guó)內(nèi)華為、阿里巴巴等公司也開發(fā)了許多項(xiàng)目,比如F2etest平臺(tái)號(hào)稱可以面向前端、測(cè)試、產(chǎn)品等崗位提供多瀏覽器兼容性測(cè)試。與開源軟件的蓬勃發(fā)展相比較,開源軟件工程教育在歐美發(fā)達(dá)國(guó)家已經(jīng)得到較大較快的發(fā)展,據(jù)對(duì)希臘的一些二級(jí)學(xué)院的調(diào)查統(tǒng)計(jì),被采訪教師中298人占88.4%的認(rèn)為開源軟件學(xué)習(xí)更自由,78.6%認(rèn)為容易獲得。[1]相比之下,開源軟件工程教育在中國(guó)的各類院校還很缺乏。比起傳統(tǒng)軟件工程教育,開源軟件開發(fā)使學(xué)生能夠更深入地參與軟件開發(fā)乃至構(gòu)建發(fā)布的整體過程。如果教師和學(xué)生能共同搭建一個(gè)開源軟件教研平臺(tái),平臺(tái)的運(yùn)用將更好地培養(yǎng)學(xué)生參與軟件開發(fā)的意識(shí),鍛造團(tuán)隊(duì)精神和學(xué)生的知識(shí)產(chǎn)權(quán)意識(shí),為將來進(jìn)一步的協(xié)作創(chuàng)新創(chuàng)業(yè)和開源社區(qū)大數(shù)據(jù)分析打下良好基礎(chǔ)。
二、開源軟件的作用和教育意義
近年來,開源軟件的發(fā)展成為軟件工程的一種發(fā)展趨勢(shì)。開源軟件的使用與推廣不僅是一種技術(shù),同時(shí)也是一種理念和精神。現(xiàn)實(shí)是,在學(xué)校軟件工程教學(xué)中,傳統(tǒng)教學(xué)體系下的教師學(xué)生寧愿選擇傳統(tǒng)教學(xué)方法,使用商業(yè)化的DEMO 版甚至是盜版軟件,原因是這些軟件文檔已經(jīng)建立了完善的培訓(xùn)體系。而教科書上開源軟件的使用方法和教學(xué)內(nèi)容很少,教師和學(xué)生不愿意花時(shí)間去學(xué)習(xí)開源軟件。其實(shí)開源軟件具有開放的本質(zhì),隨著某些開源軟件社區(qū)生態(tài)化,在互聯(lián)網(wǎng)以及大數(shù)據(jù)的環(huán)境下,若軟件沒有外在可擴(kuò)展性,則基本上不會(huì)有人使用。因此,對(duì)學(xué)生的軟件開發(fā)教育的開源化引導(dǎo)就變得十分迫切,對(duì)傳統(tǒng)軟件工程教育的改革也就勢(shì)在必行。
另一方面,目前出現(xiàn)了許多新型的教育方式和新學(xué)說,例如云教育、移動(dòng)教育、慕課(MOOC)、在做項(xiàng)目中學(xué)習(xí)(邊做邊學(xué))、社交網(wǎng)絡(luò)中的點(diǎn)對(duì)點(diǎn)學(xué)習(xí)等。云平臺(tái)下的教育資源十分豐富,比如知識(shí)地圖云(concept map or knowledge map cloud)[2]是一種專業(yè)的知識(shí)導(dǎo)航系統(tǒng)云平臺(tái),關(guān)鍵在于教師如何引導(dǎo)培養(yǎng)學(xué)生對(duì)云平臺(tái)資源的連續(xù)關(guān)注度[3],是云平臺(tái)教育最重要的影響因素之一。還有一些新型的校企合作平臺(tái),這些都可以在開源的軟件工程教育上使用。比如,著名的Piazza 的開源項(xiàng)目是一個(gè)師生網(wǎng)絡(luò)交流平臺(tái),已經(jīng)在美國(guó)多所大學(xué)推廣應(yīng)用。與此類似,中國(guó)也有類似的discuz社區(qū)項(xiàng)目,許多企業(yè)高校合作建立了移動(dòng)和云軟件開發(fā)項(xiàng)目、高校大數(shù)據(jù)支撐計(jì)劃等大學(xué)生創(chuàng)新創(chuàng)業(yè)平臺(tái)。這些教育平臺(tái)和技術(shù)的推廣將推動(dòng)開源技術(shù)在教育教研中得以深入廣泛應(yīng)用。
三、開源軟件的代碼托管平臺(tái)
開源軟件的代碼和整體架構(gòu)的開放性,要求其需要一個(gè)網(wǎng)絡(luò)發(fā)布平臺(tái)。目前國(guó)外的代表包括GitHub等,國(guó)內(nèi)的包括開源中國(guó)等,這些平臺(tái)都已經(jīng)有成千上萬的開源項(xiàng)目和開源愛好者在參與。這些平臺(tái)采用的代碼和文檔配置管理工具有GIT、碼云等,代碼由社區(qū)中開源愛好者共同參與開發(fā)和維護(hù)。
1.教研使用的開源托管平臺(tái)
傳統(tǒng)的代碼管理常采用局域網(wǎng)存儲(chǔ),配置工具通常為小型版本控制工具VSS;在廣域網(wǎng)環(huán)境下,依據(jù)需求可以采用開源工具SVN,建立學(xué)習(xí)開發(fā)用戶、局域網(wǎng)和WEB托管服務(wù)器之間的三層系統(tǒng)架構(gòu)。[4]現(xiàn)在的開源托管平臺(tái)常常需要構(gòu)建一個(gè)托管社區(qū),作為學(xué)校開源軟件教學(xué)使用的托管平臺(tái),可以采用類似的代碼托管工具和其他技術(shù)進(jìn)行集成實(shí)現(xiàn)。
2.云服務(wù)下的開源測(cè)試配置管理系統(tǒng)
目前開源軟件在一些課程平臺(tái)中已經(jīng)開始應(yīng)用,[5]甚至采用開源軟件Moodle 構(gòu)建網(wǎng)絡(luò)教學(xué)平臺(tái)。[6、7]我們構(gòu)建了云平臺(tái)下的開源測(cè)試軟件配置管理系統(tǒng),采用MFS云存儲(chǔ)系統(tǒng)(由9臺(tái)服務(wù)器100片硬盤整列構(gòu)成mfsChunkServer集群,OpenStack 技術(shù)構(gòu)建的云計(jì)算基礎(chǔ)構(gòu)架,開源數(shù)據(jù)庫(kù)Mysql支持的WEB服務(wù)和存儲(chǔ)服務(wù))構(gòu)建了大學(xué)云教育桌面系統(tǒng),實(shí)現(xiàn)云資源移動(dòng)客戶端、ftp和開源測(cè)試軟件配置系統(tǒng)等異構(gòu)系統(tǒng)的集成訪問。如圖1所示。
在傳統(tǒng)的軟件測(cè)試體系課程中,學(xué)員完成一個(gè)項(xiàng)目的測(cè)試過程,需要滿足軟件需求、性能、功能和安全等多方位的測(cè)試要求。而且測(cè)試實(shí)踐過程中包含了大量工具的使用,產(chǎn)生多個(gè)文檔與實(shí)驗(yàn)結(jié)果。這就需要對(duì)軟件測(cè)試的實(shí)踐平臺(tái)進(jìn)行配置和管理。這也使學(xué)生容易掌握軟件測(cè)試過程中的管理方法、軟件測(cè)試配置流程、標(biāo)準(zhǔn)體系和相關(guān)配置管理工具。兩個(gè)或者多個(gè)學(xué)生共同完成一項(xiàng)任務(wù),如測(cè)試程序合并修改、測(cè)試文檔的書寫與提交、項(xiàng)目測(cè)試日志的歸納整理等。
如果軟件測(cè)試教學(xué)能夠在云代碼文檔托管平臺(tái)上進(jìn)行,如圖1所示的云環(huán)境下使用開源的測(cè)試工具和測(cè)試框架,便于實(shí)現(xiàn)測(cè)試過程的開源化管理。同時(shí)學(xué)生能夠更深入地學(xué)習(xí)掌握測(cè)試技術(shù)。在項(xiàng)目測(cè)試過程中可以培養(yǎng)學(xué)生的溝通技巧,加強(qiáng)協(xié)作意識(shí)(網(wǎng)上實(shí)時(shí)技術(shù)動(dòng)態(tài)更新和交互),這種云環(huán)境下的移動(dòng)開源技術(shù)的集成必將發(fā)揮更深遠(yuǎn)的影響。PC 測(cè)試平臺(tái)下開源軟件測(cè)試管理工具包括單元測(cè)試工具、性能測(cè)試工具、Web測(cè)試工具等。移動(dòng)測(cè)試平臺(tái)包括Android Appium, 從JUnit單元測(cè)試,到Instrumentation 進(jìn)行全方面的集成測(cè)試。此外,測(cè)試平臺(tái)還和internet上的百度開發(fā)者中心、Testin等云測(cè)試中心,mooctest慕測(cè)軟件測(cè)試競(jìng)賽平臺(tái)建立耦合。開源項(xiàng)目突出創(chuàng)新性,需要對(duì)原有模塊進(jìn)行深入理解,并且提出改進(jìn),難度更大,適合于高年級(jí)或者研究生參加研發(fā)和競(jìng)賽活動(dòng)。
開源軟件項(xiàng)目應(yīng)用開發(fā)目前分四個(gè)層次,即使用、閱讀、開發(fā)和改進(jìn)。第一層次:使用開源代碼。大部分人在項(xiàng)目開發(fā)過程中簡(jiǎn)單地學(xué)習(xí)開源文檔資料,可以較容易地掌握開源代碼的用法。如應(yīng)用eclipse開發(fā)工具學(xué)習(xí)和編寫java程序。第二層次:閱讀開源代碼,理解其實(shí)現(xiàn)原理深入應(yīng)用。不僅包括開源代碼本身的核心邏輯及其架構(gòu)設(shè)計(jì),還能掌握軟件開發(fā)過程中的一些最佳實(shí)踐法則。比如單元測(cè)試、利用travis進(jìn)行自動(dòng)編譯測(cè)試等。第三四層次:對(duì)eclipse開發(fā)插件、sdk進(jìn)行改造吸收并將開源代碼的設(shè)計(jì)理念應(yīng)用到自己的軟件開發(fā)過程中去。從看得懂到會(huì)靈活應(yīng)用中間還需要大量的時(shí)間去思考和實(shí)踐。重新構(gòu)造IDE。目前,我們的教學(xué)應(yīng)用通常停留在第二層次,第三第四層次的內(nèi)容理解即可。我們?cè)陂_源軟件社區(qū)和業(yè)內(nèi)的廣大愛好者一起合作努力,并貢獻(xiàn)自己的力量和創(chuàng)新。
四、效果分析
開源托管云平臺(tái)與傳統(tǒng)平臺(tái)相比有許多不同之處,優(yōu)劣如表1所示。
開源的平臺(tái)對(duì)成員間知識(shí)共享的影響程度很大,大量用戶創(chuàng)新對(duì)于促進(jìn)開源軟件項(xiàng)目績(jī)效意義非凡。[8]這種平臺(tái)對(duì)教育的作用同樣重大,可以增強(qiáng)師生相互的影響力和知識(shí)產(chǎn)權(quán)意識(shí)。這是一種強(qiáng)調(diào)學(xué)生、教師、教學(xué)平臺(tái)三者信息分享和互動(dòng)的全新教育模式,在此基礎(chǔ)上進(jìn)行社交網(wǎng)絡(luò)拓展,可以實(shí)施點(diǎn)對(duì)點(diǎn)學(xué)習(xí),甚至應(yīng)用在青少年階段。[9]例如某案例的社區(qū)群討論互動(dòng)時(shí),一方面可以深入推敲例子本身;另一方面可以外延擴(kuò)展相關(guān)知識(shí)領(lǐng)域。從而激發(fā)學(xué)生的學(xué)習(xí)興趣,引導(dǎo)學(xué)生掌握方法,提高學(xué)生學(xué)習(xí)成績(jī)。引領(lǐng)現(xiàn)代教育方向,回歸教育本質(zhì),塑造移動(dòng)互聯(lián)網(wǎng)環(huán)境下的教育生態(tài)。開源平臺(tái)下的軟件開發(fā)項(xiàng)目的學(xué)習(xí)架構(gòu)流程如圖2所示。
開源軟件項(xiàng)目的學(xué)習(xí)首先是對(duì)其開放架構(gòu)的理解,特別是其跨平臺(tái)的共性的技術(shù)。例如MVC體系結(jié)構(gòu)的比較分析,關(guān)鍵在其應(yīng)用API的分析與使用。XML數(shù)據(jù)的解析API包括很多,如DOM、JDOM、SAX??梢酝ㄟ^分析比較他們的優(yōu)劣來學(xué)習(xí)。例如對(duì)外擴(kuò)展、項(xiàng)目對(duì)數(shù)據(jù)庫(kù)、云服務(wù)器存儲(chǔ)、數(shù)據(jù)庫(kù)的host鏈接的分析比較(國(guó)外的talking Dava、國(guó)內(nèi)的Bmob等),數(shù)據(jù)處理方式的對(duì)比等。也可以讓學(xué)生在實(shí)踐中學(xué)習(xí)理論知識(shí),例如項(xiàng)目程序中應(yīng)用到的一些原理算法。該范例中的音頻文字解析就屬于操作系統(tǒng)線程調(diào)度問題,這種探討將非常有助于學(xué)生深入領(lǐng)悟相關(guān)技術(shù)。
另一方面,開源軟件技術(shù)的開發(fā)涉及著作權(quán)、專利等知識(shí)產(chǎn)權(quán)問題。在協(xié)議選擇上就有非常詳細(xì)的規(guī)定,比如從Apache到GPL,再到AGPL越來越嚴(yán)格的開源協(xié)議。 這些理念有助于培養(yǎng)學(xué)生的知識(shí)產(chǎn)權(quán)意識(shí)。
該開源教學(xué)平臺(tái)引導(dǎo)學(xué)生在學(xué)習(xí)的同時(shí),以團(tuán)隊(duì)方式參加模擬的或?qū)嶋H的項(xiàng)目和競(jìng)賽演練,加強(qiáng)學(xué)生的協(xié)作動(dòng)手能力和合作意識(shí),在一些計(jì)算機(jī)競(jìng)賽和實(shí)訓(xùn)中把項(xiàng)目做得更深入和完美,為深入學(xué)習(xí)有關(guān)研發(fā)技術(shù)和成長(zhǎng)為卓越工程師打下基礎(chǔ)。以參加軟件開發(fā)競(jìng)賽、使用人數(shù)、采用的開源軟件為例,如表2所示。
教師帶領(lǐng)學(xué)生參加創(chuàng)新項(xiàng)目,專業(yè)競(jìng)賽是目前國(guó)內(nèi)外普遍的教學(xué)創(chuàng)新活動(dòng)。例如,大學(xué)生創(chuàng)新項(xiàng)目中開發(fā)和應(yīng)用的大量JAVA EE開源項(xiàng)目。在我們參與的競(jìng)賽項(xiàng)目中,大膽地使用ios/android等平臺(tái)下的開源項(xiàng)目,一方面培養(yǎng)了學(xué)生使用開源軟件、掌握開源技術(shù),一方面體現(xiàn)作品的創(chuàng)新意識(shí),取得了很好的效果。
隨著開源軟件產(chǎn)品數(shù)據(jù)的巨量增加,我們借助一些大數(shù)據(jù)分析工具和平臺(tái),如開源項(xiàng)目成熟度分析工具Ospaf(open source project analyze framework)(tomcat支持的Mac os和win版本)、Orange(python開發(fā)),bug tracking system (BTS)的 Bugzilla、云創(chuàng)的大數(shù)據(jù)實(shí)驗(yàn)平臺(tái)等。[10、11]在開源社區(qū)進(jìn)行挖掘統(tǒng)計(jì)分析可以了解到大量軟件或者某軟件下載量的大數(shù)據(jù)和小數(shù)據(jù),具體技術(shù)關(guān)注度和使用的程度,參與人和時(shí)間量的交互互動(dòng)信息的節(jié)點(diǎn)數(shù)、連接度、網(wǎng)絡(luò)密度、版本分時(shí)平均度,從而把握開發(fā)熱點(diǎn)問題和預(yù)測(cè)開發(fā)技術(shù)方向,做出面向軟件大數(shù)據(jù)和小數(shù)據(jù)更精確的分析和決策,構(gòu)建在線學(xué)習(xí)分析模型[12-14],加強(qiáng)引導(dǎo)學(xué)生的連續(xù)關(guān)注度,從而促進(jìn)開源軟件工程教育的發(fā)展。
五、結(jié)束語
目前開源軟件人才是IT業(yè)內(nèi)需求最強(qiáng)和最有前景的,比如開發(fā)運(yùn)營(yíng)開源技術(shù)是行業(yè)最受歡迎的技術(shù)之一。教師指導(dǎo)學(xué)生開源教學(xué)平臺(tái)的建設(shè),得到了校內(nèi)外多人的參與,提升了其技術(shù)和潛在的商業(yè)價(jià)值。開源項(xiàng)目的成敗由技術(shù)熱度、公司支持、教育引發(fā)等多方面因素決定,不論結(jié)果如何,都使許多學(xué)生能盡快融入公司的項(xiàng)目開發(fā)過程。學(xué)生敢于嘗試,通過大賽等各方面的鍛煉,具備綜合的創(chuàng)新能力與素養(yǎng),因而能夠通過許多公司的實(shí)習(xí)與考核,培養(yǎng)他們的創(chuàng)業(yè)創(chuàng)新意識(shí)。新開源教學(xué)體系的提出,督促教師不斷學(xué)習(xí)進(jìn)取,積極參與平臺(tái)的改進(jìn)與提高,編寫具有針對(duì)目前社會(huì)需求的教材和講義,搭建相應(yīng)實(shí)驗(yàn)平臺(tái),設(shè)計(jì)實(shí)驗(yàn)項(xiàng)目,從而提高了師生的創(chuàng)新研發(fā)水平,促進(jìn)產(chǎn)學(xué)研的共同發(fā)展。
參考文獻(xiàn):
[1]Sakellariou P. FREE AND OPEN SOURCE SOFTWARE IN COMPUTER EDUCATION: EXPLORING THE CURRENT SITUATION IN GREEK SECONDARY SCHOOLS[C].Technologies Contect Pilsen,2016:41-46.
[2]Ju D, Shen B. Internet of Knowledge Plus Knowledge Cloud–A Future Education Ecosystem[J].Ieri Procedia,2012(2):331-336.
[3]Huang Y M. The factors that predispose students to continuously use cloud services:Social and technological perspectives[J].Computers & Education,2016(97):86-96.
[4]聶南.軟件配置管理的三層配置管理教學(xué)平臺(tái)實(shí)現(xiàn)[J].中國(guó)教育信息化,2011(9):53-55.
[5]李健.開源軟件與計(jì)算機(jī)專業(yè)課程設(shè)置[J].改革與開放,2016(3):123-124.
[6]尹傳娟.利用開源軟件Moodle構(gòu)建計(jì)算機(jī)公共課程的網(wǎng)絡(luò)教學(xué)平臺(tái)[J].計(jì)算機(jī)時(shí)代, 2009(2):73-74.
[7]Maican C,Lixandroiu R. A system architecture based on open source enterprise content management systems for supporting educational institutions[J]. International Journal of Information Management,2016,36(2):207-214.
[8]陳曉紅,周源,蘇竣.分布式創(chuàng)新、知識(shí)共享與開源軟件項(xiàng)目績(jī)效的關(guān)系研究[J].科學(xué)學(xué)研究,2016(2):228-235.
[9]Christa S.C. Asterhan, Edith Bouton Teenage peer-to-peer knowledge sharing through social network sites in secondary schools Computers & Education, Volume 110,2017(7):16-34.
[10]嵇智源.基于開源軟件的大數(shù)據(jù)分析平臺(tái)[J].數(shù)字技術(shù)與應(yīng)用,2015(3).
[11]Tamura Y, Yamada S. Comparison of big data analyses for reliable open source software[C].IEEE International Conference on Industrial Engineering and Engineering Management.IEEE,2016:1345-1349.
[12]姜強(qiáng),趙蔚,王朋嬌,王麗萍.基于大數(shù)據(jù)的個(gè)性化自適應(yīng)在線學(xué)習(xí)分析模型及實(shí)現(xiàn)[J].中國(guó)電化教育,2015(1):85-92.
[13]張家華,鄒琴,祝智庭.基于Moodle平臺(tái)的在線學(xué)習(xí)深度分析研究[J].電化教育研究, 2016(12):46-51.
[14]黃貴懿.基于在線教育交互信息的學(xué)習(xí)分析系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].教育現(xiàn)代化,2017(30):101-103.
(編輯:王天鵬)