61

将开源软件引入教学:学生出现的常见错误

 5 years ago
source link: https://www.oschina.net/translate/open-source-software-in-class?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

摘要

将开放源码软件(OSS)项目引入软件工程课程有很多优点,例如,让学生从真实世界的项目中学习良好的编程习惯,并让学生一睹真实的项目。

然而,教师不容易让一个或多个 OSS 核心团队提供课程项目支持。所以替代方案是让学生研究“玩具特性”—— 这些项目特性不是 OSS 核心团队指定,而是由教师指定。但是,该项目可能对 OSS 项目不重要,或者可能会破坏 OSS 项目的设计,使得这些代码贡献不太可能整合进 OSS 代码库中。

这篇论文中,我们作为一个名为 Expertiza 的 OSS 项目的教学人员和核心团队,讨论了我们在过去五年里支持 700 名学生,参加了 313 个基于 OSS 的课程项目的经验。

我们手动检查了这些课程项目,并总结了学生贡献中经常发生的 13 个常见错误,例如不遵循已存在的设计或混乱的 pull request。我们提出了五条建议来帮助学生减少常见错误的发生频率,并提高 OSS pull request 的质量。

CCS  概念 信息系统 开源软件 ; 协作和社交计算系统和工具; • 软件及其工程 开源模型 ;

关键词开源软件,软件工程,开源课程,Expertiza

1 引言

开源软件 (OSS) 是在开源许可下任何人都可检验、修改、发布源码的一种计算机软件 [13] 。越来越多的人开始使用开源软件并为  OSS  项目做出贡献。

OSS 有着许多令人瞩目的优点,第一点是高质量。参与开发开源软件的不是少数开发者而是成百甚至上千的开发者。有了这么多的开发者,bug 可以被快速修复,许多新功能可以迅速实现。第二点是开源软件的安全性高和稳定性好。理由和上面类似,如果允许访问所有源码,被原作者所忽视的安全漏洞将会被其他开发者修补。

另一个引人注目的优势是,开发者可自由地更改现有代码库代码。这样,开发者能任意添加想要的特性,这使得软件具有高度可定制性并且适用于各种用途。

更重要的是,日益增长的开发者为了成为更好的程序员而努力为 OSS 项目做贡献。拥有社区支持的帮助是 OSS 项目的另一优势,在这里开发者的编程技能将得到快速提升。

如上所述,为 OSS 项目做出贡献的一个显著优势是提升编程技能。因此,许多专家与学者尝试将 OSS 项目引入软件工程的课程中。这些努力为工科专业的学生带来了诸多益处。

第一,阅读文档与研究源码能帮助学生从真实项目 [5] 中学到许多东西,例如编码风格,特性设计和其他良好的开发习惯。

第二,从事 OSS  项目可以让学生全面了解一个大项目,因为学生在为已存在项目作贡献而不是从头开始项目。他们必须考虑新增代码如何与当前设计兼容。最后同样重要的是,学生需要经常和  OSS  核心团队交流。这种互动可以加强学生的沟通能力,这对于他们的未来职业发展至关重要。

尝试将 OSS  项目吸纳进课程中的老师有两个必须处理的问题,也就是如何从基于  OSS  的课程项目中获得想法以及评估学生交付的成果。其中  OSS  核心团队的成员最有资格设计课程项目与评估学生的工作成果。

例如,Ellis 和其他人 [8]  将 Sahana 项目纳入到他们的课程中。Sahana 核心团队将评估项目要求以及学生编写的所有代码。然而,出于开源社区自愿的性质,教师很难让  OSS 核心团队为他们的课程提供协助。

因此,一些教师已经将 OSS 项目中的“玩具性质功能”(由教学人员而不是开源社区委托/指定的功能)指定为课程项目。“玩具性质功能”使课程项目“不真实”,并且一旦项目完成,就会让学生的工作被搁置,而对 OSS 社区或软件用户没有任何进一步的好处。

在本文中,我们将分享一些我们作为教学人员和 OSS 核心团队成员的经验,以支持学生开发基于 OSS 的课程项目。我们审查了 2012 年秋季学期至 2017 年春季学期的 313 门课程项目,并分析了我们接受(合并)或拒绝学生的 pull request 的原因。

之后,我们总结了在回顾学生的代码合并请求时发现的 13 个常见错误。我们进一步发现,大多数学期中许多常见错误的出现频率保持相对稳定。

然后,我们提出五点建议,以帮助学生减少常见错误,并以更高的质量达到 OSS 的代码合并要求。

2 相关研究

许多论文都谈论了将 OSS 项目纳入计算机科学教学中。Bishop 等人 [3] 提出了四种整合方案,包括将开源代码作为课堂实例、基于开源软件的顶点课程(译者注:顶点课程类似于中国的毕业设计)、将软件扩展用于研究目的、以及将其纳入黑客马拉松中。我们的文献检索表明,大多数此类研究是在常规课程中使用了 OSS 项目 [7,9,14,16,19]。

一些研究讨论了将 OSS 项目整合到软件工程课程中的好处。Ellis 等人 [7] 介绍了一项关于让学生参与 OSS 项目的多年研究。他们发现参与 OSS 项目的学生能够获得重要的软件工程知识。

Raj 和 Kazemian [19] 在数据库实现课程中使用了 OSS 项目,以帮助学生深入了解软件设计和开发。作者认为,OSS 社区与学术界的合作可以重振计算机科学教育。Pinto 等人 [18] 采访了七位在软件工程课程中采用了 OSS 项目的软件工程教授。他们发现鼓励学生开展 OSS 项目不仅可以提高他们的社交和技术技能,还可以丰富他们的简历。

其他研究人员关注的是在软件工程课程中采用 OSS 项目的挑战性。 Toth [25] 认为在软件工程课程中使用 OSS 项目的第一个挑战是确定和选择合适的 OSS 项目。Smith 等人 [20] 报告了他们在选择软件工程 OSS 项目中的经验。他们表示,选择适当规模和复杂性的 OSS 项目非常重要。选择合适的 OSS 项目的重担可能会阻碍教师将 OSS 项目纳入软件工程课程的积极性。

同样的,Gehringer [10] 认为教师需要花费数周或数月的时间来寻找合适的 OSS 项目。教师自己参与 OSS 的开发会更好。作者还概述了几个已经与学术界合作的 OSS 项目。Ellis 等人 [6] 总结了他们在让学生参与 OSS 项目时遇到的五个挑战:学生缺乏经验、课程时间有限、非正式的开发实践、保持开发工作的能力和产品的复杂性。

此外,评估学生对 OSS 项目的贡献也很重要。在他们的文献综述文章中,Nascimento 等人 [17] 总结了学生和教师观点中的 10 种评估类型,例如考试,报告,软件工件,调查和演示。其中,调查是获取学生反馈的主要手段。软件工件、报告和演示是评估学生提交作品时的主要工件。

很少有论文提及评估学生对开源软件项目所做贡献的标准。Buchta 等人 [4] 介绍了详细的评分标准,涉及功能的实现、与项目经理的交流、报告的格式等。Liu [14] 提出了一个名为“渐进式开源软件”GROw(Gradually Ripen Open-source Software)的软件开发流程,其中包括评估标准和编码风格指南。

据我们所知,以前没有论文谈及学生对 OSS 项目贡献中经常发生的常见错误。在本文中,我们总结了 13 种常见的错误,并将其分为六大类,这可作为评估学生代码的核对清单。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK