敏捷开发模式在软件项目教学中应用

敏捷开发模式在软件项目教学中应用

摘要:敏感开发模式是一种将多种语言的高级设计工具和手段集合起来的应用型技术,是将程序的控制逻辑作为基础,利用计算机的信息化处理水平开发的综合性系统。随着计算机科学的发展,传统软件开发已经无法满足现代社会的需要,敏捷开发模式应运而生。本文主要阐述敏捷开发模式在应用型本科院校软件开发课程项目中的应用,并结合学生的特点,让学生在实践中掌握敏捷开发的操作。

关键词:敏捷开发模式;软件开发课程;项目教学实践

1引言

随着软件行业的不断发展,传统的软件系统变得愈加复杂,“软件危机”越发严重。在软件开发中,常常伴随着超出预算成本、开发人员频繁流动、开发周期过长、体系制度官僚化、软件质量降低和市场环境迅速变化等问题。这让软件开发过程越加笨重复杂,越来越不适应现代社会的需求,导致软件开发失败率上升。在应用型本科高校软件开发课程教学中,实训项目教学是培养学生软件开发能力的一个重要核心环节。为了保证预期教学目标的实现,把时下软件工程行业领域中敏捷开发模式与软件开发实训项目教学二者有机结合,可以使学生融入软件企业真实流程,培养其良好的职业素养,达到更好的与企业需求接轨的课程教学目标[1]。

2教学存在的问题

针对新时代新形势下应用型人才培养目标,国内同类院校针对软件开发课程采用了一些先进教学改革理念,初步探索并实施了“项目案例教学”、“校企联合培养”、“以证促学、以赛促学”等多种教学改革方式并取得一定的成效[2]。但在实施过程中或多或少存在一定的问题。

2.1开发进度难以控制。与其他一般工程项目相比,软件开发项目由于工作难以具体量化,涉及人的因素很多,项目开发进度难以控制。主要表现在以下两个方面:一是开发活动时间难以预估,软件开发活动属于高智力活动,实际开发过程中可能遇到意想不到的问题。二是开发时间与开发人员的能力、职业素养有很大关系。同样一个程序模块,不同人员所需的开发时间相差巨大,有人可能需要一天,有人可能需要一周。同时,在软件开发课程项目教学中,大部分学生没有开发经验,并且课程教学时长有限,教学执行过程中经常存在需求分析、需求设计等变更突发情况。这种变动往往导致前期开发设计工作作废,造成教学进度滞后,甚至导致针对整个项目开发的教学过程失败。

2.2教学过程难以管理。在传统软件开发课程项目教学中,软件项目开发过程的各个阶段实施线性管理。在完成代码编写前无法进行软件测试环节的实施,造成在代码编写阶段负责软件代码测试环节的小组成员无法顺利展开工作。同时,很多时候学习开发团队中综合能力较强的学生经常完成绝大部分工作任务,团队中能力较弱的学生逐步变成了旁观者。团队成员之间无法进行有效沟通和协作,导致无法带动全体学生共同进步,合作完成学习任务的初衷不能实现[3]。软件开发课程项目实施是与软件工程课程相匹配的后续主要集中实践教学环节。其主要目的是通过与真实企业脱密项目的开发与学习来培养高年级学生的动手实践操作能力,使学生通过实际的“真项目”和“真动手”把在软件工程相关课堂上掌握的软件开发理论知识进一步消化吸收、理解和巩固。软件开发课程项目教学环节通常的做法是把班级全体学生分成若干个小组,按照软件工程项目管理的思想、方法和过程进行固定题目的模拟项目开发,通过撰写开发计划、需求分析、编码设计等相关项目文档来锻炼学生的动手能力。但是,面对当下新一代信息技术所提出的培养复合型和创新型工程人才的要求,目前这种教学组织形式普遍存在项目相关课程教学与新一代信息技术产业需求脱节,校外企业课程指导教师人员精力不够;项目开发课程整体评价方法单一等一系列问题。这些问题限制了软件开发课程项目教学难以达到预期的效果[4]。

3敏捷开发模式优势

3.1明确要求结果精。以往传统瀑布开发模式从一个点开始,一个面结束。这样的开发会导致成果与出发点严重偏离,重点无法被作为重点开发出来,从而与原来的构想相差甚远。敏捷开发模式类似接力比赛,每一段开发过程都不长,并且还能把握好每次过程变化的时机,遵循计划变更响应变化,可以使软件开发所要求的结果更加精准。敏捷开发是将用户的需求进化作为核心,运用循序渐进、迭代的方法进行软件开发。在当前的市场中,很多都是中小型软件企业的开发方法。在计算机软件开发中,敏捷开发最具代表性。这种代表性体现在项目的分割中,敏捷开发是将开发项目分割为多个小项目,在保证每个小项目都具备可集成、可视、可运行的效果下,最终实现开发项目的整体运行。敏捷开发的核心原则就是主张简单、拥抱变化,在软件开发中,要坚持最简单的解决方案,尽可能地保持软件模型的简单化。但在开发过程中,团队的人员与环境是不断变化的,因此开发方式也要与现实相符,不断变化[5]。

3.2更新迭代有保障。敏捷开发模式方法软件开发迭代周期的质量要求非常高。要求敏捷开发团队拥有灵活的开发方法,甚至会在开发正式功能代码之前先开发与之相对应的该功能模块的测试代码,因此质量有保障。在敏捷开发模式下,最具核心价值的功能模块总是被优先考虑开发,这样能给客户带来最大的投资收益。同时,速度快也是敏捷开发模式最显著的优点之一。敏捷开发模式团队通常重点专注于当前开发项目中最需要、最具价值的功能模块。另外,较短的迭代周期使团队成员能迅速进入开发状态。

3.3灵活互动效果好。在应用型本科院校,将敏捷开发模式应用到软件开发的课程项目中,可以增强学生的语言组织能力与沟通能力。因为敏捷开发需要将客户的需求作为核心,需要学生不断地与客户进行沟通,了解客户的具体需要,在沟通中逐步完善软件开发内容。而且敏捷项目在完成中需要进行分组,每个小组通过相互配合完成项目的阶段性成果,有助于培养学生的团队意识[6]。由于将项目分为多个子项目,学生在开发过程中要先对子项目进行测试,可以在短期内看到开发成果,让他们的成就感得到满足,有利于激发他们的开发热情。同时,在应用型本科院校中尝试敏捷开发课程项目,也让学生体验到软件开发企业的工作流程与工作方法。

4敏捷开发模式的应用

4.1课前准备。不同于传统的软件开发课程,敏捷开发项目在教学应用中对教师、机器设备、上课场地等方面有很高的要求。对教师来说,开展敏捷开发模式的课程教学需要教师具有相关的软件开发经验。教师可以编写较为完善的《项目需求说明书》,并在课前分好小组,为每组选出“项目经理”,并教授“项目经理”如何给组员分配项目任务与编写《项目任务书》。这就需要教师运用大量的时间进行准备与思考。在任务的选择上不能过于简单,这样会体现不出实践的作用;也不能超出学生的能力范围,这会降低学生的学习动力[7]。在“项目”开始时,教师要组织学生进行5分钟的小组成员会议。这需要教师对课堂的把控十分精准。在场地上,学校要为每个小组提供较为独立的空间,用作小组的项目开发地,方便小组成员之间的交流与探讨,也防止与其他小组之间的冲撞。在上课安排上,教师要安排3-4课时的时间进行敏捷开发模式的课程。软件开发是一件需要学生长时间专注的事情,要进行大量的脑力分析与项目校准,要耗费大量的时间。在设备上,学生需要大量的信息作为项目开发的理论基础。学校提供信息化的查询平台,方便学生实时查看项目的推进速度,并在线填写工作日志与查阅项目任务书[8]。

4.2实践过程。开始时,教师扮演部门经理或用户的角色,将项目任务下去,确定好《项目需求说明书》、项目原型与项目立项工作。然后由各小组的项目经理对小组成员进行任务划分,根据成员分工制定《项目任务书》,明确各成员的工作任务。小组成员在分配到任务后,要明确任务的要求,根据任务要求确定所需技术的应用。基于敏捷开发的软件课程项目开发流程如图1所示。各小组开进行敏捷开发中,要制定开发体系,要建立以项目经理为主导,包含设计、前台联络、后台开发和产品测试的团队,进行产品迭代开发。项目经理要明确小组的敏捷开发方式,制定完善的开发流程,确定迭代周期,让产品更具吸引力。小组内部要明确使用工具的配备,确认日志、监控平台等工具的有效性。在进行开发中,小组要进行四个会议的召开。迭代计划会议:迭代计划会议是每个项目进行前要召开的会议,是明确项目的具体需求重要会议。会议上,小组内要对开发时长进行估算,根据项目需求的优先排序,明确工作计划,分析产品需求列表的工作时间,制定迭代周期与迭代目标。每日站会:课程项目实践中,每次上课都要进行5分钟的站会。这5分钟内,小组成员需站立完成,所以称为每日站会。会议内容主要是进行组内的任务沟通,在会上各成员对“昨天的工作进度”、“今天的工作计划”、“工作中遇到的问题”等话题进行探讨。项目经理负责记录会议上的内容,并在会后针对提出的问题进行私下解答。迭代审评会议:这个会议主要是向用户进行成果展示。在课程项目中,各小组要将开发的成果展示给教师或全班学生,演示产品的使用功能并接受教师与其他学生的评价指导[9]。迭代总结会议:迭代总结会议是在项目完成后进行的总结会议。会议的主体围绕“这次项目有哪些值得延续的地方”、“这次项目有哪些还能进步的地方”、“这次项目有哪些做得不好的地方”三个话题进行,在团队内部进行讨论与分析,根据问题的轻重缓急进行解决,并在之后的项目中注意此问题的发生[10]。

4.3课程评价。在项目课程教学之后,教师要及时地进行评价考核,指出学生在项目中存在的问题,并针对问题提出改进的措施。教师可以根据学生在项目开发中的平时表现与项目结束时的表现进行评价。平时评价是教师每节课结束时,学生在会议上的自我评价与每组“项目经理”分配的工作任务的完成度与完成质量的评价。根据《项目任务书》,教师要给每位学生当天的工作日志上进行优、良、中、差四个等级的工作评价,将优、良、中、差分别折算为4分、3分、2分、1分,最后取总成绩的平均分作为学生的平时成绩。项目结束评价是在项目验收阶段,由各个小组根据项目的展示相互评价,教师也要根据项目完成的质量进行总结评价。项目评价的整体成绩是50%的小组互投成绩和50%教师评价成绩的总和。最后会将平时成绩与小组项目成绩进行综合,得出个人的总成绩。通过这种课堂评价,可以更有效地提升学生的软件开发能力。这种敏捷开发模式的应用也让学生在走出校园后,更加适应企业的工作环境。在应用型本科院校的软件开发课程应用敏捷开发,让学生在工作前了解软件开发公司在进行软件开发中的组织架构、工作方式,更好地与客户进行沟通、交流。每次项目的结束都会增强学生软件开发的学习认知,提高学生学习的兴趣。

5结论

综上所述,在应用型本科院校的软件开发课程项目中引入敏捷开发模式,与行业企业共建课程资源库、真实项目教学案例库,全面推动课堂教学改革,探索实施“以学为中心、以教为主导”的软件项目课堂教学。积极推进基于敏捷开发模式的教学方法和教学手段改革,进而推进现代信息技术与教育教学深度融合,推进突出能力和素质培养的教学方法改革,对构建线上线下混合等教学模式有着良好的推动和引领作用。同时积极推进课程考核评价方式改革,探索以学生学习成果为导向的教学评价,进一步加强过程性考核评价,形成过程性考核与终结性考核有机结合的课程考核评价方式。可以调动学生的学习积极性,培养学生团队协作能力与动手能力,实现知识、能力和素质培养的有机结合。当然,在实际操作中,敏捷开发模式在软件项目教学中的应用需要学校提供充足的软、硬件条件,给参与其中的教师一个宽松的教学改革环境。同时要求最好小班教学,如果人数过多,会产生较高的教学成本,也不好掌握教学效果。敏捷开发模式的引入,也要根据学生的实际情况进行操作,选择合适的敏捷开发模式,在实践中不断完善发展。

作者:孙德刚 单位:山东华宇工学院信息工程学院