The constant changes in the software industry, practices, and methodologies impose challenges to teaching and learning current software engineering concepts and skills. DevOps is particularly challenging because it covers technical concepts, such as pipeline automation, and non-technical ones, such as team roles and project management. The present study investigates a course setup to introduce these concepts to software engineering undergraduates. We designed the course by employing coding to associate DevOps concepts to Agile, Lean, and Open source practices and tools. We present the main aspects of this project-oriented DevOps course, with 240 students enrolled in it since its first offering in 2016. We conducted an empirical study, with both a quantitative and qualitative analysis, to evaluate this project-oriented course setup. We collected the data from the projects repository and students perceptions from a questionnaire. We mined 148 repositories (corresponding to 72 projects) and obtained 86 valid responses to the questionnaire. We also mapped the concepts which are more challenging to students learn from experience. The results evidence that first-hand experience facilitates the comprehension of DevOps concepts and enriches classes discussions. We present a set of lessons learned, which may help professors better design and conduct project-oriented courses to cover DevOps concepts.
翻译:软件行业、做法和方法的不断变化给当前软件工程概念和技能的教学和学习带来了挑战。DevOps特别具有挑战性,因为它涵盖技术概念,如管道自动化、团队作用和项目管理等非技术概念。本研究报告调查了向软件工程本科生介绍这些概念的课程设置情况。我们设计了该课程,将DevOps概念与Agile、Lean和开放源代码的做法和工具联系起来。我们介绍了这个面向项目的DevOps课程的主要方面,自2016年首次提供以来有240名学生参加了该课程。我们开展了一项实验性研究,包括定量和定性分析,以评价这一面向项目的课程设置。我们从项目存放处收集了数据,从问卷中收集了学生的看法。我们挖掘了148个储存库(相当于72个项目),并获得了86份对问卷的有效答复。我们还绘制了对学生从经验中学习更具挑战性的概念。结果证明,第一手经验有助于理解DevOps概念,丰富了课堂讨论内容。我们提出了一套经验教训,可以帮助教授更好地设计和开展面向项目的课程。