基于敏捷开发的物联网工程实践教学探讨
来源:用户上传
作者:顾家铭
摘 要 针对传统瀑布模型在物联网实践课程中的弊端,结合敏捷开发的优点,提出一种适合物联网工程实践课程的教学方法,并给出了相应的实施方法。采用多样化的项目选题,引入敏捷开发中的Scrum模式,使用JIRA、SVN和Jenkins等工具进行项目管理,同时设计项目评估原则。任课教师可以获取实时数据,对项目进行连续跟踪和及时反馈。实践表明,该方法能使学生体验真实项目的开发流程,提高实际编程能力和团队协作能力,养成良好的程序设计风格,编写高质量代码。
关键词 实践教学 敏捷开发 Scrum 项目管理
中图分类号:G424 文献标识码:A DOI:10.16400/j.cnki.kjdkz.2020.02.049
Abstract In view of the disadvantages of traditional waterfall model in the practice course of Internet of things, combined with the advantages of agile development, a teaching method suitable for the practice course of Internet of things engineering is proposed, and the corresponding implementation method is given. It adopts diversified project topics, introduces scrum mode in agile development, uses JIRA, SVN, Jenkins and other tools for project management, and designs project evaluation principles. Teachers can get real-time data, track and feedback the project continuously. Practice shows that this method can enable students to experience the development process of real projects, improve their practical programming ability and teamwork ability, develop good programming style and write high-quality code.
Keywords practice teaching; agile development; Scrum; project management
0 引言
物聯网工程实践是我校物联网专业三年级学生的必修课程,学生已经经历了嵌入式开发、C#开发、Android开发和数据结构的学习。学生通过该课程的学习,掌握物联网项目软硬件开发和维护的一般过程。该课程通过实践操作,让学生深入理解物联网框架和掌握物联网项目开发的基本技术。
一般的物联网工程实践课程,采用传统的瀑布模型进行开发。传统的瀑布式开发模型,按照需求分析、概要设计、详细设计、编码、测试和运行维护等阶段。瀑布式开发模型注重文档,文档是各阶段衔接的必要信息,在可运行的软件产品交付给用户之前,用户只能通过文档来了解产品的“模样”。由于学生没有实际开发经验,对物联网应用了解不深,对撰写文档不感兴趣,所以学生的学习积极性不高。[1]
1 敏捷开发方法
敏捷开发(Agile Development)是针对传统的瀑布开发模式的弊端而产生的一种新的开发模式,Agile有轻巧、机敏、活力的意思,目标是提高开发效率和响应能力。[2]敏捷开发是一种以人为核心、迭代、循序渐进的开发方法,主要方法有极限编程(Extreme Programming,简称XP)、水晶方法(Crystal)、动态系统开发方法(Dynamic System Development Methodology,简称DSDM)、精益开发(Lean)、Scrum等,相对于那些“非敏捷”软件开发方法来说,更强调适应性而非预测性,更强调以人为导向而非过程导向。[3]
敏捷是一种指导思想或开发方式,而Scrum被认为是全球最流行和最有效的敏捷开发的具体方式之一。Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”。在敏捷开发中,Scrum不是开发产品的一种流程或一项技术,而是一个框架,在这个框架里可以应用各种方法和技术。[4]
2 敏捷开发的物联网工程实践面临的挑战
大部分的欧美IT企业已经采用敏捷开发方法进行开发,而近几年受外企和软件外包的带动,中国IT公司也逐渐普及敏捷开发模式。IT界的转变推动大学课程的改革,敏捷开发在物联网工程实践课程中得到越来越多的关注。根据物联网专业的特点,如何设计基于敏捷的物联网教学实践环节,成为教学改革的一个新问题。[5]
如果将敏捷开发直接运用到物联网实践课程的教学环节比较困难,面临以下的问题:敏捷开发需要项目管理的连续跟踪和及时反馈,如何进行项目的过程控制。学生需要在一个学期内,完成从需求分析到最终的产品交付,软件项目在初期被切分成多个可独立运行的小项目,并在每个小的迭代周期分别完成,每一次迭代周期可以开发一个可交付的软件产品,在此过程中软件一直处于可使用状态。我们还需要跟踪每个开发团队的进度,对每个迭代周期进行及时反馈,这样工作量巨大,教师需要采用敏捷开发的自动化工具来进行项目管理和过程控制。 3 敏捷开发的物联网工程实践教学课程的设计
针对以上的需求,引入敏捷开发中最流行的Scrum框架,精心设计了物联网工程实践课程的教学方案,并且搭建了物联网实训支撑平台。本文介绍了在项目选题、项目分组、项目管理和项目评估等方面的探索和经验。
3.1 项目选题
物联网实践项目的选题是实际教学中的一个关键问题。很多学校都尝试引入真实物联网项目,但是考虑到物联网项目的复杂度、工作量、学生的背景、课程设置的局限性等问题,很难找到适合的项目。由于每年大约有120人选修此课程,而且学生背景差异比较大,因此合理的解决方案是提供多样性的项目选题,使不同层次的学生都能找到自己感興趣的项目。这些项目有校企联合开发的、学校内部的,也有学生自定义题目,自定义的题目必须得到教师允许方可开展。项目的多样化激发了学生的学习兴趣,同时也丰富了学生的实际开发经验。
3.2 项目分组
Scrum团队由产品负责人(Product Owner,简称PO)、Scrum主管(Scrum Master,简称SM)和Scrum开发团队(Scrum Team)组成。在企业中,通常由系统架构师(简称SE)担任产品负责人,由资深员工担任Scrum主管,由研发成员组成Scrum开发团队。一个理想的Scrum团队建议在5~9人左右,推崇小团队和高效率。[6]
我们的课程每年约有120名学生,每个开发团队由4~6人组成,大约有25个Scrum团队,由学生自由组合,每个团队自行推选出Scrum主管。由任课老师和用户代表担任产品负责人。
3.3 项目管理
在开课前,任课教师筛选出项目规模、复杂度和工作量适合的物联网应用项目作为学生的可选项目。在开学的第一周,由任课老师和用户代表对项目进行介绍,然后由学生自由组合4~6人左右的开发团队,选择项目或自定义项目,自定义项目需由任课老师允许方可开发。
在整个Scrum过程中,Sprint是核心,Sprint指的是一次迭代,课程选择的迭代周期是2周。Scrum开发团队在每个Sprint中,首先在计划会议中确定本次Sprint的计划,然后完成计划内容的编码和测试,在Sprint评审会议中向任课教师和用户代表演示功能、检视是否合格,最后在Sprint反思会议总结经验和教训,提出进一步的改进措施。在每个Sprint结束,每个Scrum开发团队需要提交“完成的”“可运行”的软件(见图1)。
为了更好地使用敏捷开发模式,对项目进行连续跟踪和及时反馈,我们使用JIRA进行项目管理和开发管理。JIRA被广泛应用于缺陷跟踪、项目跟踪、任务跟踪和敏捷管理等工作领域。为了更好地进行代码管理,我们使用SVN进行代码的版本控制,每次学生提交新的代码到SVN后,自动运行Jenkins持续集成工具自动化部署环境,开发和测试人员可以看到最新的应用程序。使用Jenkins可以使整个构建、部署过程自动化,减轻开发团队的工作量。
3.4 项目评估
项目评估遵循以下的原则:
第一,关注过程性评估。课程选择的Sprint迭代周期是2周,将课程分为8个Sprint,任课老师和用户代表参与每个Sprint评审会议,评估项目质量。任课老师根据项目管理工具JIRA、版本控制软件SVN和持续集成工具Jenkins中的实时数据,不断采集项目信息并且评估项目进度。过程性评价可以了解学生的动态信息,及时反馈信息和及时指导,使计划和方案不断优化。
第二,关注团队贡献和个人贡献评估。Scrum强调的是开发团队的自我管理,在整个过程中,每个团队成员积极主动、技术过硬、自我管理,每个团队成员的技术、协作能力得以提高。每个学生的分数又细化为团队整体得分和学生个人贡献,即培养了团队协作探究能力,又注重学生的学习积极性。
第三,关注代码质量评估。课堂教学普遍的问题是学生实际程序设计能力比较差,代码质量不高。[7]对于一个项目,我们既关心它的功能实现,也关心它的效率和效果。我们评价高质量代码有三个要素:可读性、可维护性和可变现性,任课教师采用自动化工具对项目代码进行检测,并且在课程教学中引导学生重视并养成良好的程序设计风格,编写高质量代码。
4 结语
本文介绍了敏捷开发在物联网实践课程中的探讨和研究。在物联网实践课程中采用多样化的项目选题,引入敏捷开发中最流行的Scrum框架,使用项目管理工具JIRA、版本控制软件SVN和持续集成工具Jenkins等进行项目管理和持续质量控制,同时重新设计了项目评估标准。通过实践教学环节,希望帮助学生体验物联网系统开发流程,掌握物联网项目开发的基本技术。
基金项目:武汉市教育局课题“基于敏捷开发的物联网专业实践教学改革”(2015118)
参考文献
[1] 白鱼秀,郑欢欢.敏捷开发在软件工程实践课程中的应用[J].计算机学报,2017(1):85-86,89.
[2] 顾家铭.敏捷开发在物联网实践教学中的探索[J].软件导刊·教育技术,2016.15(4):19-21.
[3] 张敬周,钱乐秋,朱三元.Agile方法研究综述[J].计算机应用与软件,2002.19(6):1-9,54.
[4] 顾家铭.Scrum和Robocode在C#教学中的应用探索[J].科教导刊,2016(16):117-118.
[5] 白晓颖,李山山,李明杰,等.基于敏捷开发的软件工程实践教学探讨[J].实验技术与管理,2018.35(4):6-11.
[6] 叶俊文.融合Scrum敏捷开发的标准研制项目管理模式探索[J].中国标准化,2019(5):38-43,53.
[7] 陈立前,李姗姗,叶常春.程序设计教学中学生程序设计风格的养成[J].计算机工程与科学,2016.38(z1):50-54.
转载注明来源:https://www.xzbu.com/8/view-15208190.htm