将开源软件引入教学:学生出现的常见错误 已翻译 100%

oschina 投递于 06/26 15:33 (共 37 段, 翻译完成于 07-05)
阅读 2045
收藏 11
2
加载中

摘要

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

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

kevinlinkai
kevinlinkai
翻译于 06/26 16:21
2

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

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

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

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

kevinlinkai
kevinlinkai
翻译于 06/26 16:27
0

1 引言

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

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

lnovonl
lnovonl
翻译于 06/26 22:46
0

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

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

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

lnovonl
lnovonl
翻译于 06/26 23:13
0

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

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

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

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

lnovonl
lnovonl
翻译于 06/27 09:48
1

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

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

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

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

凉凉_
凉凉_
翻译于 06/27 09:34
0

2 相关研究

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

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

Tocy
Tocy
翻译于 06/26 17:22
0

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

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

凉凉_
凉凉_
翻译于 06/27 09:44
0

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

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

凉凉_
凉凉_
翻译于 06/27 09:50
0

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

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

Tocy
Tocy
翻译于 06/27 09:54
1
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(0)

返回顶部
顶部