软件类课程设计研究

时间:2022-12-12 11:08:22

软件类课程设计研究

基于敏捷思维的软件类课程设计研究敏捷开发其轻量级、快速响应的特性使其在当今软件开发中有着非常重要的地位。当前软件类课程教学中,存在重理论、弱实践的情况。针对该问题,借鉴敏捷思维中的相关特性,在软件类课程教学设计中强调敏捷理念快速迭代、原型开发、强调沟通等方面,进行教学模式创新,达到提升学生积极性与实践能力的目的。

一、前言

软件开发过程(softwaredevelopmentprocess)又叫做软件开发生命周期(softwaredevelopmentlifecycle,SDLC),是软件产品开发的任务框架和规范,也可以简单地称为软件生命周期及软件过程。软件在开发设计过程中有许多的模型,这用于对设计过程中所涉及的各项任务以及方法进行描述。

二、当前软件类课程教育现状

在我国信息技术类的专业课程中,软件类课程所占比例很高,如数据库、面向对象程序设计、网页设计等。该类课程的学习效果将较大影响未来学生的专业技能打造影响未来的就业效果,但该部分课程传统的教学实践,主要以章节知识点作为过程,以此来构建整个课程知识体系的讲授与实践,由于遵循传统的软件开发中的过程组织形式,把软件开发中的生命周期阶段依照经典理论的顺序组织起来,坚持按需求、分析、设计、编码和测试的阶段进行开发与教学。此类方法具有理论成熟,各过程较为清晰,并有规范的文档格式要求,是以往软件类课程教学中常用的方式。但由于该类教学过程中前期环节较为枯燥,导致学生的畏难情绪增强,容易在初期阶段就影响此类学生的学习兴趣,从而影响学习效果,导致中后期的教学效果不佳。

三、敏捷开发模式

敏捷开发模式是2000年后开始兴起的一种软件开发模式,属于轻载软件模式。因其在实践中开发效率优于传统的软件工程开发模式,现已在全球开发中占有越来越高的比重,2010年12月10日,中国敏捷软件开发联盟正式成立。敏捷思维注重集思广益,博取众长,使得每个人的能力都能得到更好的体现,并且强调先有一个初步的原型,对其进行高迭代,不断完善软件产品的过程,使得敏捷开发能在短时间内开发出可运行的系统。其强调应对需求快速变化,调整开发的方式。能够让学生先看到一个基础的“产品”,随着教学的不断深入,“产品”也在不断的完善和优化,随着课程的结束,“产品”也就设计完毕,这样不断刺激学生的求知欲,在学习过程中能够不断得到反馈,激发其学习的热情。这需要从教学内容设计与实践内容进行筛选,一方面教学内容要扩展敏捷思维的使用范围,减少或降低很多敏捷方法中应用条件的限制,另一方面理论联系实际地对这部分内容综合讲解,保证学生对理解知识点的情况下,对敏捷开发的有全面认识和理解。在工业领域和教学领域都存在敏捷方法的实施问题,如何利用并组合现有工具技术形成适合敏捷开发的环境并融入教学实践,对于深入理解和实际应用该方法具有深远的意义。

四、敏捷思维教学模式设计

现实开发中,由于项目需求的不可预设性,预先设计一个具备可调整弹性、较为完美的架构是无法实现也没必要的。当前我们设计的教学模式,也应该在案例设置、教学模块选择、实践环节的安排上,尽量遵循这个原则:注重实践目标的达成,尽可能让更多的学员完成该门课程所涉及的软件在实际开发中所需的基本应用环节,让学生能更好的参与到实践开发环节中来,相反,一些较难的理论知识点,在适当环节应当给予略过,让学员有所了解,在今后学习过程中,能够知道回来学习即可。如图1所示,敏捷思维重视强调学生与学生在“作品”开发上的沟通衔接,学生与教师在学习反馈的及时有效,教学设计上的紧密协作、面对面沟通,要求能够及时完成新的“产品”版本,建设紧凑而自我组织型的团队,能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人所起到的作用。为此,我们在教学过程中结合敏捷开中所采用的几种方法如:极限编程(XP)、Scrum、精益开发(leandevelopment)、动态系统开发方法(DSDM)、特征驱动开发(featuredrivendevelopment)、水晶开发(cristalclear)等[2]。综合其快速迭代的特征来设计教学模式:(1)“迭代式”的实践练习。如图2所示,把课程中的实践练习设计为一个软件产品开发,整个教学过程划分为几个迭代周期,依照课程进度每个迭代周期是一个定长或不定长的时间块,每个迭代学习期持续的时间一般较短,通常为1~4学时。在传统的教学中,一次性的明确了大的教学目标,但由于学生能力的参差不齐,使得总体设计环节学员的进度不一,大的目标导致实现的差异性较大,使得学生难以完成,导致抄袭情况凸显,违背了最初目标。而在迭代式教学中,把学员的实践目标范围缩小,使得技能需求描述更加清晰,依托实践进度情况,动态修正各项技能的反复求精,把学生能力从不全面到全面,提升其专业水平,改变那种传统教学过程中,追求机械地知识讲授,而不考虑学生实践完成效果及专业技术变化等客观条件。(2)作业的“增量交付”。每一阶段的实践练习在一个在每个迭代学习期结束时将被提交,而不是在整个学期结束时以期末作业的形式一次性提交。每次交付的都是可被实施应用的练习“作品”。使用迭代的思想来设计作业,从前期一个基本的原型,到功能随着知识点的推进而不断完善。每次作品的实现,有助于激发学生的成就感,并且实践过程中的操作内容将有利于提高动手能力的培养,一次亲手完成的实践任务将极大的达到人才培养的目标。(3)教师和学生的反馈互动,从而推动教学开展。敏捷开发非常强调开发者和用户能经常互动,主张用户能够在开发过程中全程参与进来,这个思路正好借鉴进了教学改革中,教学中的师生互动可以很好的模拟这个过程。这使得“作品”的设计中,各项“需求”变化和“实践反馈”能及时有效的让教师动态管理,并投入到教学设计的改变当中去。同时,同学参与讨论也能极大的提高沟通技能,这也是本专业学生所欠缺的。(4)鼓励持续集成。软件设计中,一些新功能可能会出现于每个迭代周期即将结束时出现,并集成到产品中去。学生在实践过程中,一些突发的灵感会使得他们偶尔增加出新的模块,这些变化可能到后期会对整个“产品”运行带来影响,甚至导致后期运行不顺利。但其带来的好处是显而易见的,这样能培养学生拥有一个积极的、有自我创新、能够自我管理的学习品质,提高他们学习的主观能动性。这同敏捷设计理念中的开发团队自我管理,以人为中心建立开发过程和机制、而非把过程和机制强加给别人的观点是不谋而合的。

五、存在的问题及改进思路

(1)课程体系衔接。软件开发涉及相关知识内容较多,不同对于企业人才需求可以有所侧重,但部分课程的关联性较强,如果过于强调敏捷开发,势必会造成部分前置课程知识点学生接触不够,后续教学中需要再次复习的情况。这类问题需要教师在工作中更加注重关键点的沟通,同时教师与教师之前也要有敏捷开发中的“沟通”,良好的互动与沟通才能把一块知识体系串联起来,提高课堂理论教学的效率,减少部分知识点教学时间的重复性消耗。(2)评价体系建立敏捷思维多样性强,特别是不同任课教师间允许采用不同语言和工具来设计不同的“作品”,多样化的工具带来的是评价标准不易统一,教师间也就难以相互帮忙指导,这需要在评价过程中,明确目标导向,即“产品”——软件的自主设计为第一位的,对于学生的评价也应遵循这一原则,以项目为导向,软件的完成度及运行效果作为课程评价。

六、结语

敏捷方式本意是为了解决在软件设计过程中存在的诸如低质量、需求遗漏、延期带来的挫折等。此类问题在笔者所处学校教学培养中依然存在,为此需要传统方法中使用敏捷思维,去掉冗余的理论部分,知识点,把学生的价值成为开发主体,通过课程中的讲解以及课后的小组训练,改变教学中过多灌输纯理论的教学方式,追寻一个原则,在软件类课程中,完整参与一次项目实践开发好过一次深入的理论知识点学习。消除开发中的神秘感,增强同学的学习兴趣,学生通过学习各种工具,在今后工作应用中打下实践基础,并留有理论基础,便于后续开发过程中,有需要再回过头来加强理论知识点学习,践行敏捷理念。

作者:杨扬 单位:玉溪师范学院