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