APP下载

敏捷教学在软件开发实训课程中的应用探索

2019-09-28丁春玲

科技视界 2019年24期
关键词:编码实训软件

丁春玲

【摘 要】针对国内应用型高等院校教学改革的现状和传统软件实训教学中存在的主要问题,把目前企业中普遍采用的敏捷开发方法与软件开发实训教学相结合,介绍了敏捷教学的理念,阐述了敏捷教学在软件开发实训课程中具体的实施流程和措施,收到了较好的效果,具有一定的实践意义和参考价值。

【关键字】敏捷开发;敏捷教学;软件实训;课程教学

中图分类号: G712.4 文献标识码: A文章编号: 2095-2457(2019)24-0070-002

DOI:10.19694/j.cnki.issn2095-2457.2019.24.033

0 引言

以人工智能、云计算、物聯网、大数据、移动计算等为代表的新一代信息技术带动了全球新产业与新经济的迅猛发展,加剧了全世界从工业化社会向信息化社会转变的风暴。经济全球化与人才竞争国际化愈演愈烈,一个国家的强大需要归根结底需要人才实力做支撑,如何培养大批的新型创新型人才以及卓越工程技术人才,成为了现代教育体系面临的新挑战[1]。教育部于2017年推动了“新工科”发展战略,掀起了我国高等教育的新一轮改革热潮,人们积极热烈地探索人才培养的新模式和新途径。

针对新形势下应用型人才培养目标,国内很多应用型本科院校积极引进国外先进教学理念,探索“项目教学”、“校企合作”、“以证促学”、“CDIO实训”等多种教学改革方式并取得一定的成效[2],但在实施过程中或多或少存在一定的问题。在信息工程领域软件开发课程体系中,实训教学是一个培养学生综合能力的关键实践环节,为了达到预期的教学目标,把软件工程领域中“敏捷开发”的方法与软件开发实训教学相结合,让学生了解软件企业真实流程,提升其职业综合素质,更好的与企业需求接轨。

1 传统软件开发实训教学中的问题

软件开发属于团队行为,传统的软件开发实训教学一般以分组教学的形式展开,即将学生分成小组,一个小组的成员协作完成一个小型项目的开发,项目开发过程多以“瀑布模型”的模式展开,这种任务驱动的教学过程中存在的主要问题如下:

(1)时间进度难以控制。传统实训教学中一般流程是教师布置任务、学生执行实训任务、教师验收检查,学生领取任务后,会按软件工程的周期要求制定计划并有序展开各阶段任务,但是由于学生经验不足,而实训的时间周期也有限,学生很难在一开始就把所有的需求和设计全部明确,执行过程中经常会发生需求、设计变动的情况,这种变动可能导致前期工作全部返工,轻则造成进度滞后,重则导致整个项目开发失败。

(2)教学过程难以管理,师生互动不充分,无法及时有效形成教学反馈。传统的实训实施过程中,教师为了督促学生积极有效参与实训,通常会按预先制定的进度计划进行阶段性检查,但是往往由于进度计划不够细致具体,对学生起不到应有的策动效果,部分学生只是应对老师检查,对于实训中遇到的问题学生往往不能或不愿积极主动进行反馈,师生不能深入互动,实训效果也得不到保障。

(3)团队成员之间沟通、协作不够深入。以小组的形势展开实训旨在模拟真实的软件开发过程,提高学生得 团队协作和沟通能力。但在传统的实训教学中,由于项目开发的各个阶段线性实施,如编码完成之前测试无法进行,这就造成编码阶段负责测试的同学无法展开工作;另一方面,小组中能力强的学生往往包揽大部分或全部任务,能力弱的同学则成了打酱油者,小组成员之间无法有效协作和沟通。

2 敏捷教学模式探讨

传统的软件实训教学以“需求分析、设计、编码、测试、维护”这样一个线性流程来安排展开,这与当前众多软件企业中普遍采用的轻量级软件敏捷开发方法严重脱节[3]。针对传统实训教学存在的问题,顺应业界潮流,培养满足企业实际需求的人才,将敏捷软件方法与软件实训教学相结合实施敏捷教学。

2.1 敏捷教学的理念

敏捷教学的理念源于20世纪90年代软件工程领域中兴起的敏捷软件开发方法,其强调以用户需求为核心,以多轮迭代、循序渐进方式进行软件开发,可以大大提高软件开发效率。敏捷教学遵循进化性原则、灵活性原则、迭代性原则和协同性原则[1],它以学生发展为中心,强调理论、技术和实践教学的交叉并行与快速重构,通过多轮迭代的知识学习过程实现能力循序渐进的提升,是一种具有动态适应性的教学新型形态。具体到软件开发实训教学,敏捷教学将抛开传统软件开发的线性实施顺序,按照“编码-测试-发布”的形式进行迭代实施,将整个实训周期划分成若干个较短的迭代周期,每一次迭代都可以生成阶段性的可交付运行的软件版本,这将便于学生之间的沟通和协作,提高学生的参与度和积极性,教师也可以更及时地对开发过程进行干预和控制,形成良性教学反馈闭环。

2.2 敏捷教学中的角色

软件开发属于团体行为,经典的敏捷开发方法论中包括三种角色:PO(Product Owner即产品负责人),SM(Scrum Master即团队负责人),TM(Team Member即团队成员)。PO负责提炼产品需求,确定开发目标,把开发任务分解成若干个子任务并确定子任务优先级;SM负责整个开发团队的协作运行,带领团队按照敏捷开发的流程展开实施,确保目标达成;TM负责具体实施子任务的迭代开发和增量交付。

在具体实训教学中只有教师和学生两类角色,所以要确定这两种角色与PO、SM、TM的对应关系。PO一般由教师充当,也可以由能力较强的、对产品需求有清晰认识的学生兼任;SM一开始由教师兼任,当学生团队在教师指导下形成自组织团队时,可由协调能力较强的学生负责,此时教师退出SM角色;TM当然由学生充当,负责项目的迭代开发和增量交付。

2.3 敏捷教学在软件实训中的实施

敏捷开发最突出的特点就是以“编码-测试-发布”的形势进行多轮迭代、增量开发[4],强调尽早编码、尽快开发出软件原型。结合学生经验不足的实际情况,在迭代流程开始之前,可以让学生以头脑风暴的方式明确项目需求,具体步骤如下:

(1)学生分组认领任务:首先将学生分组形成若干个开发团队,确定团队开发课题任务,小组人数一般以4-6人为宜,可根据任务的难度和规模适当增加人数。

(2)生成软件产品规划:在PO指导下,把实训任务分解成若干个子任务,由PO、SM、TM协同讨论,确定Product Backlog(产品需求列表)。Product Backlog中的一行表示一个子任务,通常以User Story的形势展现,一个User Story包含三个主要要素(3W):角色(Who),即谁要使用该功能;活动(What),即需要完成什么功能;商业价值(Why),即为什么要这个功能。另外Product Backlog中还要给出子任务的优先顺序、计划完成时间等。在预估子任务完成时间时,可以采用头脑风暴的形势,团队中的每一个成员都要估算任务完成时间并解释为什么,只有所有成员意见达成一致时才能确定预估时间。Product Backlog列表形式如表1所示,其中優先级的设置主要考虑子任务与核心功能、重要功能的相关度。

(3)生成Sprint Backlog

因为实训课程周期比较短,通常为四周时间,为了更加高效地进行迭代开发时,通常对Product Backlog中的子任务进行进一步分解,得到Sprint Backlog列表,并以人课为单位估算出每个Sprint Backlog所需时间,如表2所示。

(4)实施迭代开发

团队成员根据Sprint Backlog列表循环实施“编码-测试-发布”的过程。考虑到学生学习能力和实践能力不均衡,编码阶段可以采用结对编程的方式进行,这样当一个成员在编码时出现语法或逻辑错误时,与之结对的成员可以及时发现并改正,这样有利于团队成员之间的交流和互相促进。在编码的同时,测试人员可以根据功能描述设计测试用例,编码完成后即可进行测试,以及时发现缺陷反馈问题,以促进修改完善代码,这样编码与测试交叉进行,可以提高开发的效率和质量。

为了更直观的展示迭代开发进度,便于对迭代开发过程透明化管理和团队协作,可以制作迭代任务看板。具体作法是在一块白板上绘制一个表格,该表格包括UserStory、ToDo、Doing、Done四列,分别表示用户故事(迭代目标)、待实施的子任务、正在实施的子任务和已经完成的子任务,每一个迭代完成后及时更新任务看板,便于教师掌握实训进展情况。

3 总结

本文首先分析了国内应用型高等院校教学改革的现状和传统软件实训教学中存在的主要问题,针对问题把目前企业中普遍采用的敏捷开发方法与软件开发实训教学相结合,介绍了敏捷教学的理念,阐述了敏捷教学在软件开发实训课程中具体的实施流程和措施。实际教学实践证明,这种新的实训教学模式可以有效解决传统实训教学中存在的问题,对提高学生积极性和参与度、促成师生深度互动、提高实训效率有明显效果。

【参考文献】

[1]徐晓飞,李廉,战德臣,等.新工科的新视角:面向可持续竞争力的敏捷教学体系[J].中国大学教学,2018(10):44-49.

[2]余久久.应用型本科软件工程课程敏捷方法实践教学探索[J].西昌学院学报(自然科学版),2017,31(04):96-99.

[3]郭朝霞.基于“敏捷开发”的软件实训教学研究[J].南京工业职业技术学院学报,2018,18(02):59-62.

[4]商琦.软件实训课程的敏捷教学研究[J].无锡职业技术学院学报,2018,17(01):28-32.

猜你喜欢

编码实训软件
禅宗软件
基于SAR-SIFT和快速稀疏编码的合成孔径雷达图像配准
《全元诗》未编码疑难字考辨十五则
基于CDIO理念的数控实训教学改革与实践
子带编码在图像压缩编码中的应用
软件对对碰
Genome and healthcare
电工电子实训教学改革与创新
微课在数控实训课中的应用探析
谈软件的破解与保护