张霞 谢桂芳 李盛欣
摘 要:“软件工程”是一门理论和实践并重的课程。针对目前软件工程教学现状,本文结合多年来软件工程教学和科研的实际体会,提出在理论教学中运用案例教学法,在实践环节采用任务驱动法进行软件工程教学的改革,使学生的学习变被动为主动,极大地提高了教学效果。并对课程的考核方式及校企合作教学等方面提出了改革措施。
关键词:软件工程;教学改革;案例教学法;任务驱动教学法
中图分类号:G642.0 文献标识码:A
Abstract:Software engineering is a quite theoretical and pragmatic course.In this article,according to the problem in the course of teaching,the practical experiences of teaching and researching on software engineering,the combination of case teaching and task-driven teaching has been used to reform software engineering teaching,so that students change from passive to active learning.The reform achieved good results.Lastly examination methods and school enterprise cooperation teaching are also offered.
Keywords:software engineering;teaching reform;case teaching; task-driven teaching
1 引言(Introduction)
“软件工程”作为计算机科学与技术及软件工程专业的一门核心专业课程[1]。其教学内容包括软件工程的基本概念、原理和技术,工程化、系统化和规范化的软件工程方法学以及软件工程的一些新技术和新方法。其教学目标是让学生掌握软件工程的基本理论,掌握现代化的软件开发方法和技术,掌握一名软件工程师从事软件开发所需的专业技能。但是,我们在教学中发现,大部分学生反映该课内容太抽象,学习积极性不高。在学习中只知道或只会背一些基础理论知识,很难将理论运用到实际的软件设计和开发中。因此,如何优化教学内容和教学环境、提高实践教学,一直是软件工程课程教学改革研究的重点与难点。
2 “软件工程”课程教学中存在的问题(Problems of "software engineering" course teaching)
在软件工程教学中,目前,教师通常是采用讲授加实验教学方法,也就是由教师课堂上讲授概念、理论和方法等基本知识点,实验时让学生动手设计与开发具体项目。多年教学实践表明这种教学方法在本课程的教学中存在一些问题。主要表现为以下几个方面:
2.1 学生难以真正理解和掌握基础理论
传统的教学模式,教师在课堂上讲授理论知识,由于理论知识太抽象、繁琐,学生似乎听懂了。可课后大部分学生还是似懂非懂。当进行课程设计或毕业设计时却不知如何动手,该如何运用课堂上的知识和方法,无法顺利完成软件设计任务。
2.2 学生不能把理论知识有效地运用到实践中
由于学生没有真正掌握基础理论及运用理论的技能和方法,所以在毕业设计时,不能将软件包工程的理论充分运用到设计实践中,导致设计开发的软件和撰写的论文在结构、内容等方面存在很多错误。
2.3 软件工程的价值难以体现
学生平时在学习过程中,开发的都是试验性的小/微型的软件,对于这样的软件,一方面规模小、难度和复杂度不大;另一方面也不需要考虑软件的后期维护成本。开发这类软件运用软件工程的方法,按照软件工程的生命周期开展软件分析、设计和开发的各项活动,学生反而会觉得麻烦。因此,软件工程的价值很难体现。
3 “软件工程”课程的教学改革(Teaching reforms of "software engineering" course)
3.1 “软件工程”课程的理论教学改革
软件工程的基本理论和方法是比较抽象难懂的。为此,在课堂理论教学中,我采用案例教学法[2],通过案例来讲解抽象的概念和方法,这样学生理解软件工程的基本理论、概念和方法时觉得比较容易,听起课来也比较投入。极大提高了课堂教学效果。例如,在讲解用案图的绘制方法时,我们用学生熟悉的“电话簿销售系统”作为案例进行讲解,首先介绍该系统的用案图中用案、参与者、系统三者的符号表示方法。接着介绍该案例是如何分析出用案和参与者的。然后再总结用案和参与者的识别规则。最后分析该用案中是如何表达用案与参与者、用案之间以及参与者与参与者之间的包含、扩展关系的表达。通过这样的改革,我们发现学生在课程设计环节,绘制自己选题的软件系统建模敢于动手了。
另外,我们改革传统的全部课堂都由老师讲授的教学模式。将老师和学生的角色互换。按软件工程的生命周期,安排多次讨论课。例如,讲授完需求建模内容后,我们以学生较熟悉“学生宿舍管理系统”作为案例。在课堂上将学生分成若干个小组,每小组成员分别作为客户和需求分析设计者的角色,仿真实际的开发环境,让学生根据课堂知识讨论如何需求建模。然后,再让学生完善和整理有关的需求文档资料。这样一方面巩固学生对基本理论知识点的掌握熟练度,另一方面使学生对软件项目的开发有了一定的感性认识。
3.2 “软件工程”课程的实践教学改革
任务驱动教学法[3]是教师把教学内容设计成若干个具体的任务。它是一种“做中学”的教学模式,学生通过完成一系列具体的任务来理解、熟悉并掌握教学内容。该方法的核心是以学生进行主动学习,辅以老师的指导,整个过程用任务进行驱动。在《软件工程》的课程设计及大四的毕业设计中,我们发现很多学生不知道如何运用课程的理论知识完成实践任务。为此,我们采用任务驱动法教学模式,在实践教学中以任务驱动老师教学,学生以完成具体任务为学习目的。这样老师教学思路清晰,学生学习目标明确,极大地提高了学生学习热情。在《软件工程》实践教学中,我们分三步实施任务驱动教学法。endprint