开源软件开发协作创新云*
——端配置平台构建分析
2018-05-02宋宝卫宋春来
聂 南 ,应 时 , 宋宝卫 ,宋春来
(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、码云等,代码由社区中开源爱好者共同参与开发和维护。
1.教研使用的开源托管平台
传统的代码管理常采用局域网存储,配置工具通常为小型版本控制工具VSS;在广域网环境下,依据需求可以采用开源工具SVN,建立学习开发用户、局域网和WEB托管服务器之间的三层系统架构。[4]现在的开源托管平台常常需要构建一个托管社区,作为学校开源软件教学使用的托管平台,可以采用类似的代码托管工具和其他技术进行集成实现。
2.云服务下的开源测试配置管理系统
目前开源软件在一些课程平台中已经开始应用,[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.