《教育教学论坛》杂志社_编辑部【投稿】

 联系我们

点击这里给我发消息 韩编辑 984958817 点击这里给我发消息 韩编辑 984958817
联系电话:0311-80820729
 收录论文
开源项目代码托管平台在计算机专业教学中的应用
发布时间:2020-02-14 点击: 发布:《教育教学论坛》杂志社
开源项目代码托管平台在计算机专业教学中的应用
赵海霞1,李耀炜2,吴庆涛1,张明川1,白秀玲1  
(1. 河南科技大学信息工程学院,河南省 洛阳市 471023;2. 洛阳电子装备试验中心,河南省 洛阳市 471003)
摘  要:社会信息化新高度使得计算机专业教学面临新的机会。阐述了计算机实践教学中全检协作开发方式应作何选择,介绍了开源项目代码托管平台GitHub及其与计算机专业本科教学需求的契合之处,提出了计算机专业实践教学应用GitHub的基本模式,并指出此一作法带来的益处。
关键词:开源,GitHub,实践教学,应用模式
文章编号:                   中图分类号:G642    文献标识码:A
 
Application of Open Source Project Code hosting platform in computer Specialty Teaching
Zhao Haixia 1, Li Yaowei 2, Wu Qingtao 1, Zhang Mingchuan 1, Bai Xiuling 1
 
(1) School of Information Engineering, Henan University of Science and Technology, Luoyang City, Henan Province 471023. Luoyang Electronic equipment Test Center, Luoyang City, Henan Province 471003)
 
Summary: the new height of social informatization makes the teaching of computer specialty face new opportunities. This paper expounds the choice of the cooperative development mode of comprehensive inspection in computer practice teaching, and introduces the open source project code hosting platform GitHub and its correspondence with the undergraduate teaching needs of computer specialty. This paper puts forward the basic mode of applying GitHub in practical teaching of computer specialty, and points out the benefits brought by this method.
 
Key words: open source, GitHub, practical teaching, application model
1 计算机专业本科教学面临的新机会
开展专业教学的方式方法一方面因为其反映着教学基本规律而具有当然的科学性,同时也不可否认是受到资源、条件、尤其是技术发展阶段的制约,因而不应当一成不变。换言之,一些行之有年的专业教学方式,也应当随着技术进步主动寻求变化。对于大学计算机教育而言,技术发展到当前阶段,最大的条件变化或者说相比以往的最大优势是,网络接入、信息内容的高度可获得性,远程交流协作的便利性。方兴未艾的大规模在线开放课程[1](Massive Open Online Course,MOOC,慕课),很好地实现了对讲解、研讨、答疑、测验等内容的覆盖,是教育讲授环节与信息化时代现实条件相结合产生的重大革新,成功的在线课程如斯坦福大学吴恩达的机器学习课程,其教学效果和社会效益达到惊人的程度。
与此类似,受益于云计算技术的快速发展和广泛部署应用,以代码托管、版本控制为基本特征的软件项目远程协作开发平台的日益成熟普及,为大学计算机教育的实践环节带来了新机会,长期存在但一直为人们所接受的时空限制、效率低下、协作手段原始等困境可望被打破,进而建立随遇接入、实时交流、高效协作、体验良好的实践教学新模式,GitHub[2]、开源中国[3]等开源社区的丰富资源和运行经验可对此愿景形成有力支撑。
2 计算机实践教学中软件协作开发方式选择
进行软件协作开放有很多种方式。首先可以肯定的是,在目前的技术条件下,单机开发、现场审查、手工合并这种“刀耕火种”式的原始协作方式应当摒弃,尽可能寻求先进工具/平台支撑、保证人员能全力聚焦主要业务是当前时代的主流作法。软件协作开发平台分商用和开源两类,考虑到经济成本、学习成本和必要性,除了极其特殊的情形,院校通常没有理由去选择像IBM RTC这样的封闭式协作开发环境。行业主流是以“代码托管、版本控制、分支管理”为基本功能的开源平台,这种开源平台又分两种,一种是公共互联网上云化的社区版本,另一种是利用开源产品如GitLab在内网环境上搭建的自有平台,两相比较,依托互联网平台不需购置设备,不需动手搭建配置而是可以直接上手使用,随时随地接入使用而不受时空限制,全程不需系统维护,代码安全有保证,优点十分突出,而且GitHub、码云、coding等代码托管平台大都针对高校推出了校园版、高校版,适宜作为教学实践环节软件协作开发的工具。
3 开源项目代码托管平台GitHub与计算机专业教学相契合
GitHub是一个面向开源及私有软件项目的托管平台,以免费、开源的分布式版本控制系统Git为基石,只支持Git作为唯一的版本库格式进行托管。GitHub是全球最大的社交编码和代码托管网站,托管着超过1亿个项目,是一个汇集了3100多万开发者的庞大社区,用户中商业机构或组织数量超过210万[2],其最大优势在于使得从一个项目创建分支、以及为该项目贡献代码变得极其简易。经过多年发展完善,GitHub支持项目管理和多人协作的各项功能日益强大和友好,在计算机教学方面具备了较好的应用前景。
3.1  GitHub简介
GitHub本质上是实现对各种Git库的托管并提供一个Web界面,因此核心是版本控制系统Git。版本控制是一种记录一个或若干个文件内容变化、以便将来查阅特定版本修订情况的系统,具体功能包括:记录文件的所有历史变化,随时可恢复到任何一个历史状态,支持多人协作开发或修改,必要时进行错误恢复。Git的核心和诸多优点在于它的分布式,Github最大限度地利用了Git的优点。
(1)GitHub组织管理功能
为更好满足大型开发团队的需要,GitHub推出了名为“组织(Organizations)”的新的账号管理模式。组织是非登录账号,不能像创建普通登录账号那样直接创建,而是需要以GitHub用户身份登录,然后再创建自己的组织,创建者成为组织天然的管理者。组织下面有成员、仓库、成员划分成的小团队。组织和用户一样可以创建项目,但是组织没有SSH公钥配置,没有工作描述之类的个人账号才拥有的属性,也不能以组织的身份操作版本库。可以使用团队(Team)功能对组织里面的成员进行管理,主要是权限管理。通过将组织成员指派到各个团队,便可以高效地分类授予Owner、Admin、Write、Read等不同的项目访问权限。此外,有了团队划分还带来项目沟通上的方便,管理者可以用“@Team名称”的方式发布通知消息。
组织创建架构完毕后,就可以创建仓库供组织成员协作开发。管理者创建项目Repository,各成员将项目仓库Fork到自己GitHub账号下,然后按常规方式Clone、修改、推送,最后向项目仓库发起合并请求。
(2)GitHub Project管理与缺陷跟踪
缺陷跟踪(Bug Tracking)是软件研发流程中重要的一环,集项目需求管理和缺陷管理于一身,通过对研发工作流的控制帮助团队建立规范的研发体系。问题单(Issues)是GitHub提供的轻量级缺陷跟踪模块,为项目中的问题规范地新建Issue,标记分类,并利用其语法格式将问题与特定成员或团队建立关联,一直追踪到问题关闭,利用好问题单功能可以获得较高的工作效率。每个仓库都有自己的Issues页。
Github2016年9月上线的新功能Project,是一个应用看板(KANBAN)方法的项目管理工具,方便对工作进行组织和优先级排序,极大改进了对问题单(Issues)和合并请求(Pull Request)的管理。Project Board由以卡片形式分类归入各个列的问题单、合并请求和备注构成,包括面向用户、面向组织、面向仓库三中类型,基本模板是用 To do、In progress、Done三个列对任务进行追踪,开发人员可进行列内卡片重排序、列间卡片移动、改变列顺序等管理活动,管理者可全面掌握各任务进度,还可添加备注进行任务提醒,明确任务委托人和需要将修改通知到的相关人员,必要时还可将备注升级为问题单以提高处理优先级。
(3)GitHub文档
建立良好的文档是所有项目成功的关键,包括教学环节的项目。令文档可访问能使得人们了解该项目,令项目文档易于更新能保证文档保持相关性。GitHub里工程有两个常见文档形式:README文件和wiki。README文件是让他人更多了解项目所做工作的、快捷简便的方式,内容包括项目名称、概况、项目的安装和使用指南、项目贡献说明、项目人员表、许可证等。GitHub推荐至少为项目配置一个README文件,事实上为项目配置README文件是创建新仓库时的一个显式选项。与README文件仅仅给出概要信息不同,wiki用于对项目的深度信息进行展现。每个仓库创建时都带有一个wiki,在wiki中添加内容和页面非常方便,GitHub保持了对wiki页面所有修改的追踪。此外还可以使用 GitHub pages快速部署项目的静态网页。
(4)GitHub代码审查功能
代码审查对于开发、协作、评价都非常重要。GitHub为每个合并请求内嵌了轻量级代码审查工具,支持开发人员了解全部更新且展现方式友好,支持成员讨论代码或向特定人发送审查请求,提高代码审查效率,解决简单冲突,获得高质量代码。
3.2  GitHub在计算机专业教学中的应用前景
GitHub作为最具号召力和影响力的开源项目代码托管平台,业务流程清晰巧妙,健壮性极佳,除了前文所述外还有很多功能。仅从以上所列的功能看,GitHub在计算机教学过程中、尤其是实践教学环节中应用没有任何门槛或障碍。此外,由于IT行业对教育领域的长期关注和同业竞争,GitHub针对高校实施了高品质计划和项目。面向所有学校和教育机构开放的GitHub education,将GitHub 企业版和商业版免费开放给学生和老师,可以使用学校的单点登录、权限管理、高级 Auditing、技术支持等,提供的学生开发者套件包括 Azure 等云服务、无限私有仓库、开发相关服务等内容。
事实上,国内外均有将GitHub成功引入课堂的范例[4,5],还有研究人员针对这个细分领域开展研究,刘玉辉[6]构建了GitHub项目团队成员贡献指标模型,提出了一套贡献指标计算方法,通过数据处理计算完成对项目内成员的个体评价。柯其寿[7]更进一步,运用数据包络分析法,基于改进DEA模型进行GitHub开发者效率评估。GitHub的功能特点和易用性使其在计算机专业教学中有着广阔的应用前景。
4 计算机实践教学应用GitHub的基本模式和益处
4.1  计算机实践教学应用GitHub的模式
计算机专业实践教学环节,尤其是多人合作的任务场景下,应用GitHub可采用以下三种基本模式。
(1)开源共享模式
与GitHub上众多开源项目一样,任务小组的牵头人在GitHub上创建项目仓库,其他成员像对待所有感兴趣的开源项目一样,将项目仓库Fork到自己账号下,并像参与其他开源项目一下Clone该仓库、开发、提交、推送、请求合并。牵头人对项目负有管理责任,全体开发人员的工作、贡献均被记录,指导老师可在线查看。
(2)半封闭项目模式
利用GitHub的组织管理、项目管理等功能支持,以对外可见、封闭运作的方式实施。具体由任务小组牵头人在GitHub上创建组织、项目仓库,添加组织成员并做好权限设置,指导老师也作为组织成员被邀请但可给予只读权限。此模式下任务小组可充分利用GitHub的各种功能,完善项目的文档、demo、可视化等展示部分,提高项目质量,获得全面的项目经验。
(3)私有仓库模式
IT巨头针对教育领域的特殊政策是高校师生应当善加利用的宝贵资源。在GitHub托管项目,开源的免费,私有的则需要收费,但利用GitHub education,任务小组可免费创建私有仓库,封闭式完成项目,免除外部干扰或版权方面的顾虑。
(4)实施流程举例
以下是一个采用模式二、即半封闭项目模式开展多人协作毕业设计的流程。前提是小组各成员和指导老师均有可用的GitHub账号。首先,小组负责人登入GitHub,创建一个组织(如命名为HAUSTXGOrg);第二步,邀请小组成员和老师,可通过各自的GitHub账号或邮箱邀请,组织创建者可对成员设置权限,还可随时邀请新成员加入组织或将组织成员移出;第三步,创建项目仓库,并利用KANBAN工具进行任务进度安排和跟踪;第四步,各成员按正常GitHub分布协作流程完成开发任务并提交PR申请,负责人审核通过后合并更新。组织创建者还需承担如下职责:按老师审定的任务方案和分工方案明确各成员任务分工和要求,必要时为某些分系统单独创建仓库将相关人员创建为一个小组(Team),为保证代码安全对各项目仓库进行分支管理及对成员进行权限管理,进行初步的代码审查和文档审查。指导老师全程可随时掌握项目进展和各子任务完成质量,适时干预指导,既保证了教学质量和进度,又对各成员项目贡献率和完成情况一目了然,便于做出客观评价。
4.2  计算机实践教学应用GitHub的益处
强大的工具对教学和科研的重要意义为人所公认,在计算机实践教学中应用GitHub,能够以其高可用性、高可靠性提高开发效率,以良好的交互性解除时间空间的限制,极大提高项目迭代进展速度,保证教学任务质量进度。除此之外还有以下收益。
(1)有效进行协作开发能力培养
多人协作已经是软件项目实施的基本模式,计算机专业的学生应当具备与他人进行协作开发的能力。大学课堂往往利用大作业、毕业设计等教学环节,通过鼓励、明确要求等方式引导学生结成小组共同完成任务,以此进行团队意识和写作能力的培养,这些无疑是负责任的作法,但实施效果不彰。究其原因,学生缺乏项目管理经验和团队协作技巧是一方面原因,同时也应正视条件欠缺造成的严重影响。
工具对于开发活动的重要性毋庸赘言,在如今环境下,当一个团队以离线的、朴素的、近乎手工的方式开展协作时,糟糕的体验会令每一个参与者怀疑协作的必要性和可行性。事实上开源社区多年来已经形成了高效顺畅友好的协作文化,并将这种文化巧妙地融入了协作平台工具当中,让每个成员在使用这些工具的同时受到熏陶。在校学生尽早熟悉运用开源社区的协作开发平台,有利于实现高效率协作和互动,并在实践过程中领会吸收项目管理和团队协作的精髓。
(2)以技术手段促进学术公平和学术诚信
大到国家科技创新体系,小到学科建设和个人发展,学术公平和学术诚信都至关重要。维护学术上的公平和诚信除了依靠体制机制、政策法律完善之外,更需要处在末端的大学校园身体力行。学术公平主要通过机会均等和评价公正达成,学术诚信则要通过珍惜羽毛和有所敬畏这一内一外两种机制的叠加作用。目前的状况,至少在计算机教学实践环节,在维护公平诚信方面是不够有力的,根源不在于意愿而在于手段的缺乏。
在传统模式下,任务团队的分工、成员实际承担和完成情况、成员实际贡献并没有以适当的方式记录和呈现,团队事实上存在着实际承担和实际贡献悬殊、工作量转让等问题,作为最终评判者的指导老师同样由于工具支撑不够而拿不到足够的证据资料,因而无法保证评价的公平公正。引入开源社区的协作平台,平台的各种先进技术手段将项目成员的代码提交与版本更新、注释、文档、审查交互均记录在案,指导老师也能够随时在线掌握项目进展和各成员情况,如此则有力促进本教学环节的学术公平和学术诚信。
5 结语
教育部《教育信息化2.0行动计划》提出“三全两高一大”的发展目标,其中的“一大”即建成“互联网+教育”大平台,要推动从教育专用资源向教育大资源转变,努力构建“互联网+”条件下的人才培养新模式,发展基于互联网的教育服务新模式。计算机专业天然具备先行先试的条件和责任,通过将基于互联网的开发平台引入教学,可率先获得大资源平台和“互联网+”教育服务新模式的助力,并呼应新工科“打造工程教育开放融合新生态”的理念。
参考文献
[1] http://old.moe.gov.cn/publicfiles/business/htmlfiles/moe/s7056/201504/186490.html.
[2] https://github.com.
[3] https://www.oschina.net/.
[4] Claudia Raibulet,Francesca Arcelli Fontana. Collaborative and teamwork software development in an undergraduate software engineering course[J],The Journal of Systems & Software, 2018.07.010:409-422.
[5] 曾少宁,李慧,袁秀莲.基于GitHub平台的问题驱动式编程实验教学方法[J].计算机教育,2017(9):158-162.
[6] 刘玉辉.GitHub开源软件项目团队协作过程监控与评价[D].哈尔滨:哈尔滨工业大学计算机科学与技术学院,2018:11-21.
[7] 柯其寿.基于改进DEA模型的GitHub开发者效率评估[D].武汉:武汉工程大学计算机科学与工程学院,2017:41-59.
基金项目:河南省高等教育教学改革研究与实践重点项目:2017SJGLX054,面向新工科与工程教育认证的计算机类人才培养模式探索与实践 。
作者简介:赵海霞,女,副教授,研究方向为数据库及应用开发;李耀炜,男,副研究员,研究方向为机器学习;吴庆涛,男,教授,研究方向为网络安全;张明川,男,副教授,研究方向为网络安全;白秀玲,女,副教授,研究方向为数据挖掘。