软件工程作为计算机软件技术专业的一门核心课程,内容包括指导软件开发、管理、维护等活动的原理、方法和技术。该课程理论性及实践性都很强,概念抽象、原则繁多、内容枯燥,教师教授难度和学生学习难度都较大。主要存在两个方面的问题。首先是理论与实践分离。软件工程课程理论多、内容抽象,理论教学往往成为理论知识的堆积,使学生丧失学习兴趣。其次,当前软件工程课程的教学内容组织方式多为野原理垣示例冶的形式,即前面若干章节介绍软件工程的概念、基本原理和方法等理论内容,最后介绍一个示例,开发案例讲解往往一带而过,无法体现软件工程原理的实用价值,更无法达到训练学生软件工程能力的目标。这种理论与实践分离的教学模式使学生普遍感到该课程枯燥乏味,难以理解和应用,因此教学效果较差。再次,教学案例与实际生产过程脱节。当前的软件工程教学中,虽然也引入了一些案例,但这些教学案例往往是孤立的为阐述某一概念和原理而设计,没有向学生展示完整的软件生产过程,导致学生无法体验到软件生产的实际情境。
1案例教学法和项目教学法
所谓案例教学,就是在教师的指导下,根据教学目的要求,组织学生对案例的调查、阅读、思考、分析、讨论和交流等活动,教给他们分析问题和解决问题的方法或道理,进而提高分析问题和解决问题的能力,加深学生对基本原理和概念的理解的一种特定的教学方法咱员原猿暂。文献咱源暂论述了软件工程教学中应用案例教学法的可行性和必要性,提出一种案例教学模式院教师事先组织、编写好案例曰然后将案例在上课前发给学生,让学生分组讨论、分析曰在课堂上教师和学生进行互动,一起对案例进行解剖、分析、总结。项目驱动式教学法源于圆园世纪愿园年代的德国,是一种建立在建构主义学习理论基础上的新型教学方法。项目式教学法是行动导向教学法的一种体现,它区别于学科体系的教学方法。从形式上看,项目教学法是把学习任务编成一个个项目和任务,通过完成项目和任务达到学习知识、掌握技能的目的。文献咱远暂讨论了项目式教学法在软件工程教学中的实施,作者从课程实践内容的选取、实践教学方法与考核手段的制定三个方面尝试对课程项目教学进行思考和尝试。案例式教学与项目化教学即有密切联系又有本质区别。案例式教学法引入的案例只是为了说明某个功能的应用,教师在教学过程中为了吸引学生的注意力而选择学生熟悉或感兴趣的案例引入课程讲解。而项目教学法是工作过程的再现,学生通过完成项目中的任务可以掌握整个软件开发过程,因此它起到衔接真实工作的作用。在实际的教学活动中可以综合使用这两种教学方法,如文献咱缘,苑暂提出项目导向案例驱动的教学模式,结合案例的讲解分析进行理论教学,然后通过模拟项目演练来进行实践教学。本人在实践中发现,将传统的案例教学和项目化教学模式应用于野软件工程冶课程教学时会出现以下不足院员冤教学案例和实践项目的复杂度受到限制,只能采用一些简化的项目。圆冤教学案例与实践项目是分开的,缺乏连续性。教学案例和学生的实践项目往往来自不同的领域,不利于学生的理解和实践。
2基于案例项目的迭代式教学法
当前,迭代已成为砸哉孕咱愿原怨暂、敏捷式开发咱员园暂等大多数现代软件开发方法的关键实践。在迭代式开发中,开发过程被组织成一系列短期小项目渊称为迭代冤,每次迭代都具有各自的需求分析、设计、实现、测试和部署等活动,产生一个可执行的局部系统。每次迭代都是对系统的持续扩展和精化,随着时间和一次又一次迭代的递进,系统增量式地发展完善,最终成为完整的系统。这种迭代进化式的完成任务的思路对改进软件工程的教学有很好的指导意义。首先,它符合学生的学习规律。人们对知识的掌握并不是一步到位的,往往有一个从认知到掌握到熟练应用的逐步深化的过程。可以按此规律来组织教学内容,先讲解基本知识,使学生对软件工程理论和实践有初步认知,然后逐步增加知识深广度,同时培养应用能力,最终使学生具有按需要自己获取理论知识和独立实践的能力。其次,这种进化式的软件开发思想使得我们可以将大规模的有实用意义的软件开发项目作为教学案例和学生实践项目引入教学中。软件工程课程的特点决定了以简化的小项目作为教学案例或学生练习项目不能很好地说明软件工程原理,难以训练学生应用软件工程原理的能力,教学项目必须有一定的复杂度才能展示软件工程这门课程内容对软件开发活动的指导意义。但由于教学时间和高职学生的学习习惯及学习能力的限制,使用传统项目教学或案例教学方法时,教学项目复杂度的增加使得教学内容难以组织和实施。以迭代进化的方式组织教学案例可以很好地解决这个问题院通过将实际的大项目划分成一个个相互有联系的短期小项目,可以先选择其中一个作为教学案例来完成软件全生命周期的理论讲解,而将余下的作为学生实践项目。由于这些小项目之间是密切联系的,每次迭代开发需要的时间不长,使学生容易看到自己的学习成果,因此既有利于教学组织,又可提高学生的学习兴趣。基于项目的迭代教学方法将教学过程与案例的迭代式开发过程协同起来,以迭代的方式组织教学内容,实现学生能力进化式增长的目标。整个教学过程的由三次迭代来完成,在这三次迭代中通过教师、学生、案例项目在教学活动中的角色不断演化渊教师的角色由传授者逐步过渡为指导者到评判者,学生的角色完成从知识的学习者到实践者到项目完成者的转变,项目的角色也由教学案例转变为实践项目最终成为学生的开发成果冤,分别完成基本原理与方法的传授、教师指导下的学生实践和学生自主学习、独立完成案例项目三种不同的教学任务,达到软件工程理论知识的传授与学生实践能力培养的教学目标。在实施迭代教学时,首先要选择好教学采用的项目。选择的项目应该是学生熟悉的领域,具有一定的实际意义和价值,还要有相当的规模。项目选好后,教师应首先对项目的功能需求进行初步调研,确定一至两个功能作为案例教学的素材,结合该功能的实现过程向学生讲解将软件工程原理应用于软件开发的全过程。然后再挑选一至两个功能指导学生完成,余下的功能实现由学生独立进行从需求调研到实现、测试的全部工作。具体实施过程如下院员冤结合案例项目的第一轮迭代进行软件工程基本理论的案例教学。本课程教学的第一阶段主要结合具体案例进行软件工程基本理论和方法的讲解。教学案例是软件项目的一个核心功能的实现。本轮教学要完成以下教学内容院首先,介绍软件工程的基本概念、软件生命周期模型及软件开发过程等,在此基础上探讨软件需求分析技术,然后对所选案例进行详细的需求分析,写出需求文档。其次,软件的分析和设计技术,包括概要设计、详细设计、哉酝蕴建模技术等。本轮教学的难点是面向对象的分析和设计方法,这部分内容比较抽象,因此教学时要紧密结合教学案例,向学生展示从需求文档得到软件模型的详细过程。第三,软件的实现技术,包括软件编码、单元测试、数据库设计等。第四,讲解软件的综合测试技术,包括测试计划的制定、测试环境的搭建、测试的策略选择、测试用例的设计、测试工具的选择和使用、测试报告的书写等。在教学中,通过结合精心选择的项目用例,以软件过程中不同阶段的知识需求来安排教学内容,将复杂抽象的概念、原理用具体生动的案例进行诠释,给学生以直观、可见的操作演示,从而激发学生的求知欲,调动学习的积极性和主动性,使学生通过案例的学习,掌握软件工程核心要素渊方法、工具和过程冤的深刻内涵。通过本轮教学,学生基本掌握了软件工程的基本理论,对软件工程知识在软件开发过程中的意义及软件开发过程有了一定的理解,为下一轮教学打下了基础。圆冤教师指导学生对案例项目进行第二轮迭代开发垣理论知识的深化讲解。通过第一阶段的学习活动,学生已有了软件工程的基本知识,对软件开发过程有了直观的认识。本轮教学的目的是加深学生对软件工程原理的理解,培养其应用软件工程原理的能力。教学的主体由教师转移到学生,所采用的教学方式是教师指导学生完成本次迭代开发任务,教学过程可概括为野所用知识提示和补充垣学生练习垣集中点评冶。首先,将班级学生分为若干个小组,每个小组成员为四到五人。分组的时候要兼顾以下原则院学习主动的同学与学习被动的同学搭配曰同宿舍的同学搭配曰不同特长的同学搭配曰男女生搭配咱员员暂。对学生进行分组后,教师从案例项目中选出一到两个功能,指导学生按照前面讲的方法进行实现。本次迭代开始前,教师对本阶段所要用到的知识进行简要的回顾,布置本阶段要完成的目标曰规定每个开发阶段的完成时间点。然后各小组在规定的时间内完成本阶段的开发任务。各小组提交工作成果后,由教师进行集中点评,以使各小组之间能互相比较,共同提高。本阶段教学中,教师结合项目进展,补充软件项目管理、配置管理、设计模式等知识,以扩展学生视野,加深学生对现代软件技术的理解。猿冤学生独立完成案例项目的第三轮迭代开发垣理论知识的自主式学习。通过前二轮的教学,学生掌握了软件工程基本原理的基础,具备了一定的应用软件工程原理和方法进行软件开发的能力。因此,本轮教学要求学生独立完成对案例项目的第三次迭代开发,最终提交一个完整的项目。本轮教学任务由各小组自行完成,教师主要起到督促检查作用。学生开发中遇到的困难由他们自己通过查阅资料或互相交流来解决。本轮教学是学生自主学习和实践的过程,培养其独立开发和解决实际问题的能力以及团队协作精神。学生最后提交的系统将作为评定学生本门课程成绩的主要依据。
3本教学法的实施情况
我校采用野圆垣员冶教学模式,野软件工程冶课程被安排在第四学期,十八周,每周四学时,共七十二学时。教学选取野图书管理系统冶作为案例和实践项目。第一轮教学所用时间为八周左右,选择该系统的核心功能野借阅图书冶的实现作为本轮教学的教学案例,讲解需求分析技术、设计和实现技术和工具,以及创建数据库,部署和测试等软件开发全过程的关键技术。除此之外,还简要介绍了软件项目管理的知识。第二轮教学所用时间为四周,本次迭代中,让学生在教师指导下完成野归还图书冶功能的开发和部署。第三轮教学需时四周左右,各小组作为独立的开发团队完成图书管理系统中其余的功能模块,最后提交出功能完善、性能较好的系统。学生的总成绩由学期末理论考试成绩和第二、三轮教学中实践成绩两部分组成,理论成绩占源园豫,第二、三轮教学中的实践成绩各占猿园豫,第二、三轮教学中的成绩评定根据学生的实践态度、小组项目完成情况、小组成员互评成绩综合评定。以上教学模式在圆园员圆和圆园员猿两届学生软件工程课程的教学进行了实践。通过和采用迭代式教学法之前的两届学生的对比发现,采用迭代式教学方法教出的学生的期末考试渊笔试冤的及格率和良好率有了明显的提高,这反映采用迭代式教学法可以促进学生对理论知识的掌握。另外,由于迭代教学时,理论教学到项目实践之间有了平滑的过渡以及教学案例与实践项目的连续性,降低了学生的学习曲线,以及项目被划分成了短期内可以完成的小项目,使得学生容易看到自己的实践成果等原因,学生对软件工程这门课程的学习兴趣较之前的学生有了明显的提升。我校近四届学生对野软件工程冶课程的教学满意度测评结果渊见图员冤也反映了这种迭代式的教学方法已得到学生们的认可。图1学生对叶软件工程曳课程教学满意度调查
4总结
采用基于案例项目的迭代式教学方法可以将大规模复杂的软件项目引入软件工程的教学中。由于使用迭代的方法可以将大规模软件分成一个个相对独立可以在短期内完成的小项目,每次迭代都是一个完整的软件开发过程,因此可以将第一次迭代作为教学案例,将软件工程理论教学贯穿在该案例的实现过程中,使学生在学习理论的同时对当前的软件开发过程有一个直接的体验。在此基础上,将项目的第二次迭代开发作为学生的实验项目,由于此时学生的实践能力还不强,因此需要教师的直接指导,由教师规定出各个子阶段应该做什么,然后由学生来完成。通过前两阶段的学习和实践学生具有了软件工程的基本理论知识和实践能力后,将项目的第三次迭代开发交由学生独立完成,由学生自己管理开发活动,由此锻炼学生的独立实践和应用软件工程原理的能力。通过采用迭代的方式将具有实际应用价值的复杂的软件案例引入教学中,也克服了软件工程教学中示例与实际项目脱节,学生无法体验到实际的软件开发过程的缺憾。通过将抽象的软件工程原理与具体案例相结合,将案例教学与项目化教学相结合,降低了学习难度,提高了学生的学习兴趣。通过野教中学冶、野练中学冶、野做中学冶三阶段迭代进化式教学,学生逐步由知识学习过渡到知识应用,最终具备独立应用软件工程原理和技术解决实际问题的能力。
作者:朱忠旭 单位: 安徽工贸职业技术学院