聶 南 ,應 時 , 宋寶衛 ,宋春來
(1.鄭州輕工業學院 計算機與通信工程學院,河南 鄭州 450001;2.武漢大學 計算機學院,湖北 武漢 430072)
軟件開源的思想和相關技術已經深入了目前的IT領域。比如國外的Git、SVN等軟件版本控制平臺,MyCollab等商務平臺和LibrePlan等項目管理平臺。一些企業如微軟、IBM也在逐漸推出軟件集成開源計劃,比如Visual Studio跨平臺項目等;國內華為、阿里巴巴等公司也開發了許多項目,比如F2etest平臺號稱可以面向前端、測試、產品等崗位提供多瀏覽器兼容性測試。與開源軟件的蓬勃發展相比較,開源軟件工程教育在歐美發達國家已經得到較大較快的發展,據對希臘的一些二級學院的調查統計,被采訪教師中298人占88.4%的認為開源軟件學習更自由,78.6%認為容易獲得。[1]相比之下,開源軟件工程教育在中國的各類院校還很缺乏。比起傳統軟件工程教育,開源軟件開發使學生能夠更深入地參與軟件開發乃至構建發布的整體過程。如果教師和學生能共同搭建一個開源軟件教研平臺,平臺的運用將更好地培養學生參與軟件開發的意識,鍛造團隊精神和學生的知識產權意識,為將來進一步的協作創新創業和開源社區大數據分析打下良好基礎。
近年來,開源軟件的發展成為軟件工程的一種發展趨勢。開源軟件的使用與推廣不僅是一種技術,同時也是一種理念和精神。現實是,在學校軟件工程教學中,傳統教學體系下的教師學生寧愿選擇傳統教學方法,使用商業化的DEMO版甚至是盜版軟件,原因是這些軟件文檔已經建立了完善的培訓體系。而教科書上開源軟件的使用方法和教學內容很少,教師和學生不愿意花時間去學習開源軟件。其實開源軟件具有開放的本質,隨著某些開源軟件社區生態化,在互聯網以及大數據的環境下,若軟件沒有外在可擴展性,則基本上不會有人使用。因此,對學生的軟件開發教育的開源化引導就變得十分迫切,對傳統軟件工程教育的改革也就勢在必行。
另一方面,目前出現了許多新型的教育方式和新學說,例如云教育、移動教育、慕課(MOOC)、在做項目中學習(邊做邊學)、社交網絡中的點對點學習等。云平臺下的教育資源十分豐富,比如知識地圖云(concept map or knowledge map cloud)[2]是一種專業的知識導航系統云平臺,關鍵在于教師如何引導培養學生對云平臺資源的連續關注度[3],是云平臺教育最重要的影響因素之一。還有一些新型的校企合作平臺,這些都可以在開源的軟件工程教育上使用。比如,著名的Piazza的開源項目是一個師生網絡交流平臺,已經在美國多所大學推廣應用。與此類似,中國也有類似的discuz社區項目,許多企業高校合作建立了移動和云軟件開發項目、高校大數據支撐計劃等大學生創新創業平臺。這些教育平臺和技術的推廣將推動開源技術在教育教研中得以深入廣泛應用。
開源軟件的代碼和整體架構的開放性,要求其需要一個網絡發布平臺。目前國外的代表包括GitHub等,國內的包括開源中國等,這些平臺都已經有成千上萬的開源項目和開源愛好者在參與。這些平臺采用的代碼和文檔配置管理工具有GIT、碼云等,代碼由社區中開源愛好者共同參與開發和維護。
傳統的代碼管理常采用局域網存儲,配置工具通常為小型版本控制工具VSS;在廣域網環境下,依據需求可以采用開源工具SVN,建立學習開發用戶、局域網和WEB托管服務器之間的三層系統架構。[4]現在的開源托管平臺常常需要構建一個托管社區,作為學校開源軟件教學使用的托管平臺,可以采用類似的代碼托管工具和其他技術進行集成實現。
目前開源軟件在一些課程平臺中已經開始應用,[5]甚至采用開源軟件Moodle構建網絡教學平臺。[6、7]我們構建了云平臺下的開源測試軟件配置管理系統,采用MFS云存儲系統 (由9臺服務器100片硬盤整列構成mfsChunkServer集群,OpenStack技術構建的云計算基礎構架,開源數據庫Mysql支持的WEB服務和存儲服務)構建了大學云教育桌面系統,實現云資源移動客戶端、ftp和開源測試軟件配置系統等異構系統的集成訪問。如圖1所示。

圖1 云桌面平臺下的開源測試配置管理系統
在傳統的軟件測試體系課程中,學員完成一個項目的測試過程,需要滿足軟件需求、性能、功能和安全等多方位的測試要求。而且測試實踐過程中包含了大量工具的使用,產生多個文檔與實驗結果。這就需要對軟件測試的實踐平臺進行配置和管理。這也使學生容易掌握軟件測試過程中的管理方法、軟件測試配置流程、標準體系和相關配置管理工具。兩個或者多個學生共同完成一項任務,如測試程序合并修改、測試文檔的書寫與提交、項目測試日志的歸納整理等。
如果軟件測試教學能夠在云代碼文檔托管平臺上進行,如圖1所示的云環境下使用開源的測試工具和測試框架,便于實現測試過程的開源化管理。同時學生能夠更深入地學習掌握測試技術。在項目測試過程中可以培養學生的溝通技巧,加強協作意識(網上實時技術動態更新和交互),這種云環境下的移動開源技術的集成必將發揮更深遠的影響。PC測試平臺下開源軟件測試管理工具包括單元測試工具、性能測試工具、Web測試工具等。移動測試平臺包括Android Appium,從JUnit單元測試,到Instrumentation進行全方面的集成測試。此外,測試平臺還和internet上的百度開發者中心、Testin等云測試中心,mooctest慕測軟件測試競賽平臺建立耦合。開源項目突出創新性,需要對原有模塊進行深入理解,并且提出改進,難度更大,適合于高年級或者研究生參加研發和競賽活動。
開源軟件項目應用開發目前分四個層次,即使用、閱讀、開發和改進。第一層次:使用開源代碼。大部分人在項目開發過程中簡單地學習開源文檔資料,可以較容易地掌握開源代碼的用法。如應用eclipse開發工具學習和編寫java程序。第二層次:閱讀開源代碼,理解其實現原理深入應用。不僅包括開源代碼本身的核心邏輯及其架構設計,還能掌握軟件開發過程中的一些最佳實踐法則。比如單元測試、利用travis進行自動編譯測試等。第三四層次:對eclipse開發插件、sdk進行改造吸收并將開源代碼的設計理念應用到自己的軟件開發過程中去。從看得懂到會靈活應用中間還需要大量的時間去思考和實踐。重新構造IDE。目前,我們的教學應用通常停留在第二層次,第三第四層次的內容理解即可。我們在開源軟件社區和業內的廣大愛好者一起合作努力,并貢獻自己的力量和創新。
開源托管云平臺與傳統平臺相比有許多不同之處,優劣如表1所示。

表1 開源托管云平臺和傳統托管平臺
開源的平臺對成員間知識共享的影響程度很大,大量用戶創新對于促進開源軟件項目績效意義非凡。[8]這種平臺對教育的作用同樣重大,可以增強師生相互的影響力和知識產權意識。這是一種強調學生、教師、教學平臺三者信息分享和互動的全新教育模式,在此基礎上進行社交網絡拓展,可以實施點對點學習,甚至應用在青少年階段。[9]例如某案例的社區群討論互動時,一方面可以深入推敲例子本身;另一方面可以外延擴展相關知識領域。從而激發學生的學習興趣,引導學生掌握方法,提高學生學習成績。引領現代教育方向,回歸教育本質,塑造移動互聯網環境下的教育生態。開源平臺下的軟件開發項目的學習架構流程如圖2所示。

圖2 開源項目架構學習測試流程圖
開源軟件項目的學習首先是對其開放架構的理解,特別是其跨平臺的共性的技術。例如MVC體系結構的比較分析,關鍵在其應用API的分析與使用。XML數據的解析API包括很多,如DOM、JDOM、SAX。可以通過分析比較他們的優劣來學習。例如對外擴展、項目對數據庫、云服務器存儲、數據庫的host鏈接的分析比較(國外的talking Dava、國內的Bmob等),數據處理方式的對比等。也可以讓學生在實踐中學習理論知識,例如項目程序中應用到的一些原理算法。該范例中的音頻文字解析就屬于操作系統線程調度問題,這種探討將非常有助于學生深入領悟相關技術。
另一方面,開源軟件技術的開發涉及著作權、專利等知識產權問題。在協議選擇上就有非常詳細的規定,比如從Apache到GPL,再到AGPL越來越嚴格的開源協議。 這些理念有助于培養學生的知識產權意識。
該開源教學平臺引導學生在學習的同時,以團隊方式參加模擬的或實際的項目和競賽演練,加強學生的協作動手能力和合作意識,在一些計算機競賽和實訓中把項目做得更深入和完美,為深入學習有關研發技術和成長為卓越工程師打下基礎。以參加軟件開發競賽、使用人數、采用的開源軟件為例,如表2所示。
教師帶領學生參加創新項目,專業競賽是目前國內外普遍的教學創新活動。例如,大學生創新項目中開發和應用的大量JAVA EE開源項目。在我們參與的競賽項目中,大膽地使用ios/android等平臺下的開源項目,一方面培養了學生使用開源軟件、掌握開源技術,一方面體現作品的創新意識,取得了很好的效果。

表2 平臺實例效果圖
隨著開源軟件產品數據的巨量增加,我們借助一些大數據分析工具和平臺,如開源項目成熟度分析工具 Ospaf(open source project analyze framework)(tomcat支持的 Mac os和 win版本)、Orange (python 開發),bug tracking system (BTS)的 Bugzilla、云創的大數據實驗平臺等。[10、11]在開源社區進行挖掘統計分析可以了解到大量軟件或者某軟件下載量的大數據和小數據,具體技術關注度和使用的程度,參與人和時間量的交互互動信息的節點數、連接度、網絡密度、版本分時平均度,從而把握開發熱點問題和預測開發技術方向,做出面向軟件大數據和小數據更精確的分析和決策,構建在線學習分析模型[12-14],加強引導學生的連續關注度,從而促進開源軟件工程教育的發展。
目前開源軟件人才是IT業內需求最強和最有前景的,比如開發運營開源技術是行業最受歡迎的技術之一。教師指導學生開源教學平臺的建設,得到了校內外多人的參與,提升了其技術和潛在的商業價值。開源項目的成敗由技術熱度、公司支持、教育引發等多方面因素決定,不論結果如何,都使許多學生能盡快融入公司的項目開發過程。學生敢于嘗試,通過大賽等各方面的鍛煉,具備綜合的創新能力與素養,因而能夠通過許多公司的實習與考核,培養他們的創業創新意識。新開源教學體系的提出,督促教師不斷學習進取,積極參與平臺的改進與提高,編寫具有針對目前社會需求的教材和講義,搭建相應實驗平臺,設計實驗項目,從而提高了師生的創新研發水平,促進產學研的共同發展。
參考文獻:
[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]聶南.軟件配置管理的三層配置管理教學平臺實現[J].中國教育信息化,2011(9):53-55.
[5]李健.開源軟件與計算機專業課程設置[J].改革與開放,2016(3):123-124.
[6]尹傳娟.利用開源軟件Moodle構建計算機公共課程的網絡教學平臺[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]陳曉紅,周源,蘇竣.分布式創新、知識共享與開源軟件項目績效的關系研究[J].科學學研究,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]嵇智源.基于開源軟件的大數據分析平臺[J].數字技術與應用,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]姜強,趙蔚,王朋嬌,王麗萍.基于大數據的個性化自適應在線學習分析模型及實現[J].中國電化教育,2015(1):85-92.
[13]張家華,鄒琴,祝智庭.基于Moodle平臺的在線學習深度分析研究[J].電化教育研究,2016(12):46-51.
[14]黃貴懿.基于在線教育交互信息的學習分析系統設計與實現[J].教育現代化,2017(30):101-103.