邢益良
敏捷开发在高职课程团队教学中的应用探讨
邢益良
(海南软件职业技术学院 软件工程系,海南 琼海 571400)
将敏捷开发思想融入高职软件开发类课程教学,探讨基于敏捷开发思想在团队教学中的应用,包括团队组建、团队管理和团队评价。实践表明,敏捷开发思想具有较高的教学适应性,能强化团队管理、有效激励学生和提高教学质量。
敏捷开发;课程团队建设;教学管理
“PHP程序设计”和“Java Web应用开发技术”等课程是高职院校计算机专业的职业技能课程,课程教学目标是使学生掌握软件开发语言和技术,具备软件项目开发能力。团队是企业开发软件项目的主要运作形式。组织高职计算机专业类学生以团队形式开发课程软件项目,对提高教学质量具有重要意义。
团队教学法是指以学生自主性、探索性学习为基础,以项目为主线、以团队学习为中心、以任务目标为使命、以团队为载体、以教师为主导、以学生为主体、以素质培养为目标,有效激发学生创新能力的教学方法[1]。参照传统软件工程和团队教学法,团队成员需要根据自己的工作岗位选择参与软件计划、需求、设计、实现和测试等开发工作。由于学生初步接触软件项目及其相关技术,学生团队常常会出现随意变更项目需求、忽视软件体系结构和不遵循开发规范等问题,所以学生很难把握整个软件项目的开发。这给软件开发带来了无序和进度慢等问题,给学生带来学习成本高和学习周期长等问题,给教师带来了学生评价困难等问题。
近几年,团队教学方法引起了研究者的关注和探讨。例如文献[2-4]研究了团队教学法在计算机课程教学中的应用问题;文献[5]从团队组建、组织结构和管理方面探讨了团队与项目匹配的问题;文献[6]提出由基础层、个性层和综合挑战层构成的团队激励机制;文献[7]研究了学生团队构建的策略问题;文献[8-9]探讨了团队绩效评价问题;文献[10]基于敏捷软件开发模式,从组建团队、题库、配对编程和考核方面探讨了计算机语言课程教学[10]。
但是,学生团队易于流于形式。为解决团队流于形式的问题,本文将具有快速响应特点的敏捷开发思想引入高职教学,探讨其在高职软件开发类课程中学生团队建设、管理和评价中的应用策略。
2001年初,由于看到许多公司的软件团队陷入了不断增长的过程的泥潭,一批业界专家聚集在一起概括出一些可以让软件开发团队具有快速工作和响应变化能力的价值观和原则。他们称自己为敏捷联盟。随后,敏捷联盟创建了一份价值观声明,也就是《敏捷联盟宣言》(The Manifesto of the Agile Alliance)[11]。敏捷联盟首任主席Robert C.Martin认为:敏捷开发是一种以人为核心,迭代、循序渐进的开发方法[12]。除了在软件开发领域,敏捷开发在计算机芯片领域也受到了学者的关注[13]。
在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个既相互联系,又可独立运行的小项目,并分别完成。在此过程中,软件一直处于可使用状态。
敏捷开发思想的关键是以人为核心,认为人是软件开发过程中最为关键的因素,整个软件开发过程能不能实现敏捷化,能不能取得完全的成功,主要是看人的因素能不能处理得当。这里的人不仅包括用户,还包括团队开发者和责任者。极限编程(extreme programmin)、Scrum、特征驱动开发(feature driven developmen)和动态系统开发方法(dynamic systems development methodolog)等是常见的敏捷开发方法,这些方法都强调了团队的重要性。
团队规模是课程教学中会出现的问题,课程团队的人数往往差别较大。遵循传统软件工程组建的团队由于严格分工,因此课程团队人数会偏多。
敏捷开发方法认为团队规模会影响敏捷性,小规模团队更适合敏捷开发。依据敏捷要求以及为了便于管理和发挥团队成员作用,课程团队人数以3~6人为宜。由于通常的教学项目规模并不大,当团队人数偏多时,容易出现个别成员无事可做的现象,甚至因产生“不公平”的心理,让团队失掉和谐。但是,当团队人数偏少时,也容易出现项目不能按期完成的情况,进而挫败学生的学习动力。
学生随意选择队员是课程教学中常见的问题。“最好的构架、需求和设计出自于自组织的团队”是敏捷开发原则,它强调了团队的自组织性。为了让每个学生能与自己满意的团队成员共同参与项目,可采用“先自由组队,后随意分配”的方式组建团队。
组建团队时,可先引导学生根据自己的兴趣爱好、人际关系和能力搭配关系等因素,自己寻找成员组建团队,大多数学生都会自行组建团队。经过一番组队之后,少数不积极组建团队的学生可能会处于无团队的状态。为了鼓励他们能以团队形式参与项目,可将他们随机匹配组建成新团队或分配到其他团队。
为便于他人称呼和扩大团队影响,团队成员需要为自己团队起一个有意义的名称。为避免有些课程团队漠视团队名称,甚至哗众取宠,选用恶俗、具有“负能量”的团队名称,需对课程团队名称进行规范,鼓励采用有创意、正能量、有意义和简短易记的课程团队名称。
Scrum敏捷方法强调团队应是跨职能的团队。“跨职能”削弱了团队成员分工,要求团队成员扮演更多的角色和承担分析、设计、编码和测试等诸多工作。
在课程教学初期,学生对课程和工作岗位之间的关系的是模糊的。为了让学生团队成员明确自己在团队中的作用和责任,每个团队成员至少需要扮演2~3个角色。可通过真实工作职务为成员分配角色,这些职务是指本地区企事业工作岗位中的职务。团队成员通过工作岗位要求和工作内容能初步了解自己的职务和职责。以我院“Java Web应用开发技术”课程为例,可引导学生到“海南人才在线”网站搜索和了解Java Web程序员岗位,并选择自己容易把握得住的工作 角色。
敏捷方法认为:每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。团队队长的一个重要作用是组织团队成员协同工作,向工作目标前进。团队队长在工作初期往往不清楚自己的职责,导致团队成员工作松懈,所承担的项目不能正常完成。通过建立聘用和解聘制度,既能让团队队长提高工作责任感,也能避免因队长的不作为导致团队工作效率低下。队长可由团队成员共同推荐产生,在无人可推荐或无人愿意担任队长时,可随机指定团队队长。在队长任期内,如果团队在指定时间内未完成指定的项目工作量,则可解除队长职务,由其他团队成员按先推荐、后随机的原则担任团队队长。
一个团队要实现敏捷开发,应该尽量避免团队成员的变动,因为新成员会让团队交流等活动的成本提高和时间加长。由于学生临时休学以及学院批准学生长时间停课参加职业技能大赛等原因,会使课程团队因成员人数减少而变得不完整。如果团队剩余人员未达3人,则应组建新团队或接纳新成员进行团队重组。“组建新团队”是指把各个残缺团队的成员重新组建成新团队;“接纳新成员”是指符合人数要求的团队主动吸收残剩成员。如无法按前述原则安排残剩成员,则取消该团队且以个人形式完成项目要求。这样可使残剩成员尽可能以团队形式工作,同时不影响其他团队正常运作。
在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈;每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。这是敏捷开发的重要原则。依据此两条原则,团队内部可定期召开团队工作会议。团队工作会议使团队有了具体的团队合作形式,团队成员可以聚集在一起进行讨论和交流。团队工作会议主要讨论任务分配、问题分析和成果展示等问题。为方便了解和跟踪工作,需要记录团队工作会议内容。
团队与成员是整体与个体的关系。敏捷方法鼓励每个人的积极性并以个人为中心构建项目,以把握整体、区别个体为原则,从整体上判定个体并区别对待个体,客观评价和激励团队和成员。
团队成绩评定公式为
S=11+22+33+44+55+66+77
式中,S是第个团队的团队成绩,1—7是影响因子,取值范围为[0,1],1+2+3+4+5+6+7=1。
1是团队人数成绩,与团队人数有关,人数超3人就减分,人越多成绩越低。
2是组队方式成绩,由成员价值观雷同度来定,雷同度低(不相关性高)则该项成绩就低。
3是团队名称成绩,如果团队名称是负面的,则该项成绩就低。
4是团队角色成绩,如果成员不扮演角色,则该项成绩就低。
5是队长成绩,如果因完成不了任务而变更队长,则该项成绩就低。
6是成员变动成绩,如果成员发生变动,则该项成绩就低。
7是会议成绩,如果没有会议记录,则该项成绩就低。
成员成绩评定公式为
P=kS
式中,P是第个团队中的第个成员的个人成绩,k是第个团队第个成员在该团队中的权重,取值范围为[0,1],权重可由成员角色重要性和成员认可度等决定。
海南软件职业技术学院将敏捷开发思想融入课程团队教学方法,并将课程团队教学方法应用到了计算机应用专业“PHP程序设计”课程、软件技术专业“Java EE编程基础”课程和“Java Web应用开发技术”课程中,加强课程团队组建、管理和评价,让学生明确团队成员责任,加强合作意识和提高交流沟通能力,并公平激励团队和团队成员,使教学质量得到提高。敏捷开发思想广泛适用于Java Web程序设计和Android程序设计等计算机类实践课程,并对其他实践课程具有指导意义,可以更多地探索符合学生团队学习规律的课程项目。
[1] 应宏. 团队教学法的课程开发[J]. 职教论坛,2009(14): 14–15.
[2] 唐捷. 团队教学法在Office办公软件教学中的应用[J]. 科技资讯,2013(12): 197–198.
[3] 高国强. 团队教学法在《网站建设》课程教学中的应用[J]. 软件导刊(教育技术),2013, 12(4): 33–34.
[4] 吴云,徐冠男,王万鑫,等. 团队合作教学法在数据库课程教学中的应用[J]. 福建电脑,2015, 31(3): 66.
[5] 程丽丽. 基于主动选择优化的教学项目—团队匹配研究[J]. 中国教育信息化,2015(2): 43–45.
[6] 姜春茂,曲明成,季伟东. 学生软件团队中的激励机制研究[J]. 计算机教育,2014(5): 19–21.
[7] 阳小华,李萌,刘志明,等. 软件工程学生团队构建的案例分析[J]. 计算机教育,2011(5): 57–61.
[8] 王丹凤,沙金. 团队实践教学中学生个人成绩评定方法研究[J]. 河南理工大学学报(社会科学版),2017, 18(2): 105–109.
[9] 白晓颖,李山山,李明杰,等. 基于敏捷开发的软件工程实践教学探讨[J]. 实验技术与管理,2018, 35(4): 6–11.
[10] 冯爱祥,罗雄麟. 敏捷软件开发模式在计算机语言课程设计中的应用[J]. 中国现代教育装备,2016(7): 73–75.
[11] 周莹莹. 敏捷软件开发技术研究[D]. 长春:长春理工大学,2006: 13–14.
[12] MARTIN R C. 敏捷软件开发:原则、模式与实践[M]. 邓辉,译. 北京:清华大学出版社,2003.
[13] 余子濠,刘志刚,李一苇,等. 芯片敏捷开发实践:标签化RISC-V[J]. 计算机研究与发展,2019, 56(1): 1–14.
Exploration on application of agile development in team teaching of higher vocational courses
XING Yiliang
(Software Engineering Department, Hainan College of Software Technology, Qionghai 571400, China)
The agile development idea is integrated into software development course teaching in higher vocational colleges, and the application of agile development idea in team teaching is explored, which includes the team formation, team management and team evaluation. Practice shows that agile development idea has high teaching adaptability, and can strengthen the team management, effectively motivate students’ learning and improve teaching quality.
agile development; course team construction; teaching management
G712.4
B
1002-4956(2019)09-0142-03
2019-02-10
海南软件职业技术学院科学研究项目(Hr201808)
邢益良(1979—),男,海南文昌,硕士,副教授,主要研究方向为图形图像处理、软件工程和互联网软件开发技术。
E-mail: xyllib@163.com
10.16791/j.cnki.sjg.2019.09.035