1引言
1.1教师采用注入式教学方式教师在教学活动中可能存在以下问题:一没有采用现代教育技术手段[2],尤其是借助快速发展的网络技术和多媒体技术;二没有以学生为教学活动的主体;三没有选择合适的项目作为教学活动的主线;四没有一定的工程项目经验,导致教师上课时选择注入式的教学方法,直接将教材上的理论灌输给学生,再加上没有实际项目经验的学生和充满理论知识的教材,教学活动会变得更糟。学生在整个教学过程中无法理解软件工程的目的和意义,体会不到学习这门课程的价值,更无法理解实际项目在整个生命周期各个阶段的具体实施过程,无法使用到实际的CASE工具,无法参与项目管理和过程控制。所以教学活动无法达到预期的目标。1.2学生死记概念应付考试软件工程是在大二上学期开设的一门课程,前导课程是一门程序设计语言和数据库原理,在这个阶段的学生很难有实际项目的开发和管理经验,所以当面对课堂上讲解到关于软件开发过程中的工具、方法和手段时,往往很难真正理解。例如,在需求分析阶段分析人员利用头脑风暴、入驻客户生产一线和快速原型等方式获取用户需求,这些对于没有实际经验的学生来讲,是比较难理解的,如果又没有项目为主线融入到教学中,学生对这方面知识的构建就很有难度了。所以最后学生选择死记概念应付期末考试。1.3教学过程缺乏实践环节软件工程是实践性要求很高的学科。软件问题如何定义,可行性如何分析,需求如何获取,系统功能、数据如何设计,模块如何实现,测试用例如何设计等一系列问题都需要学生实践才能体会。软件开发实践必不可少,它必须以我们项目驱动的教学方法为基础。
2项目驱动教学的实施
项目驱动教学法是基于建构主义理论的教学方法[3]。传统的教学方法是教师教授学生学习,教师为主体的教学模式,这种模式是建立在教师掌握比学生更多的知识的基础上。随着计算机网络技术的发展,学生可能会提前获取知识,传统师生间知识的不平衡正在被打破。与传统教学方法不同,项目驱动的教学以项目为主线,学生为主体,教师指导答疑,这时学生成为知识的主动构建者[4]。借鉴CDIO(构思、设计、实现和运作)国际工程教育模式[5],本文提出的项目驱动的教学方法实施过程包括:项目定义,任务分配,团队合作,指导答疑,示范演示与考核反馈等多个阶段。2.1驱动问题,任务分配项目是项目驱动教学方法的核心,驱动问题就是确定项目。贯穿教学活动中的项目要选择合适,规模不宜太大也不宜太小。根据软件工程的教学经验,若要保证学生在56个学时将软件生命周期的各个阶段掌握好,项目选择是关键。下面罗列了比较适合作为课堂教学活动的项目:病人健康档案管理系统;酒店管理系统;进销存管理系统;图书管理系统;宠物管理系统;学生成绩管理系统;家庭财务系统等。如果没有一个贯穿于教学活动的项目,在讲解各个阶段内容时,知识结构会显得凌乱,不成体系,学生很难将前后的知识融会贯通。例如,在需求分析阶段以病人健康档案管理系统为例讲解数据流图(DFD),却在总体设计阶段以进销存系统为例分析软件功能结构图,这样会增加学生理解数据流图转换为软件结构图的难度。2.2成立团队,确定职责软件工程开课时应指导学生分小组成立团队。团队规模太大导致部分学生可能没有太大的工作量,参与度不高,流于形式,太小又使得学生工作量大,缺乏深度体验分工协作的机会,一般3人或4人的团队比较合适。团队成立后应进行职责划分,确定项目经理,需求人员,开发人员和测试人员。团队建设可以培养学生的团队合作意识以及促使学生参与多人项目开发实践,为以后确定兴趣和进入实际项目研发提供帮助。团队的选题应遵循学生自主选题和教师指导选题相结合的原则。2.3指导答疑,过程控制为保证学生项目的持续进行,教师应给予阶段性指导,包括问题定义,需求获取,系统设计,环境搭建,版本管理,BUG跟踪,用例设计,文档撰写等。虽然构建知识的过程要以学生为主体,但教师的地位不容忽视,教师要能提供问题的解决思路,引导大家充分利用网络资源,使用搜索引擎GOOGLE和BAIDU,学会查阅资料,培养自学和团队学习的能力。例如,在讲解版本控制时,教师可以告诉学生版本控制软件Subversion,VSS和CVS可以帮助项目组管理代码,作为团队开发重要的软件之一必须要求每个团队完成安装和配置。教师将任务安排下去,要求团队组长负责,其他同学协助,利用网络下载软件和安装说明,利用一周时间完成安装配置。并在下周上课时要求一名同学上讲台给大家讲解他所在组的环境搭建和版本控制软件的使用情况,最后列举在安装配置过程中遇到的问题和解决办法。这个过程可以培养学生的自主学习能力和团队协同合作的能力。另外教师为了充分掌握学生完成项目的情况,必须要求学生每周发工作周报。周报内容应包括:项目计划和进度,上周以来团队每位成员已完成内容,遇到的问题,解决的方案,以及下周每位成员的工作计划。教师收集反馈信息要认真阅读,详细回答每个团队遇到的问题,并审查项目进度和计划,加强过程控制,保证项目顺利实施。2.4示范演示,高度互动为提高项目实施过程中学生的学习效果,一方面教师要能在每个关键阶段做好示范,例如讲到快速原型模型是一种获取需求的有效方法时,教师可以提前做好项目的DEMO,向学生展示需求人员与客户沟通时,DEMO比语言交流更具优势;讲到界面设计时,教师可以提前做好一些不同风格的界面,包括优秀的界面,也包括糟糕的界面;再如讲到数据流图时,教师可以使用VISIO演示数据流图的绘制过程;讲到总体设计时,可以直接在课堂上演示从数据流图转换为功能结构图的过程等。这些示范演示的作用可以帮助学生在以后自己实施时进行参照。另一方面要充分调动学生的积极性。可以提前为学生安排任务,指导他们查询资料完成任务,并在下周上课时讲解他们的结果。例如,在讲解数据库设计时,可以安排每个团队利用一周时间完成自己选定项目的逻辑数据模型与物理数据模型的设计,并能利用PowerDesigner生成选定DBMS的SQL脚本。同时指定一位同学在下周上课时将完成结果进行展示和讲解。学生讲解结束后,教师应进行点评并让其他同学发言自由提问,通过这样的过程充分调动学生的积极性,活跃课堂气氛,帮助学生快速解决问题。2.5答辩考核,积极反馈为评价基于项目驱动的教学方法在软件工程中应用的效果,需要对学生的学习和教师的教授情况进行考核和评价。促进教师修正教学方法,完善教学过程,提高教学质量。让整个教学活动成为一个螺旋上升不断提高质量的过程。针对学生的考核方式可以采用项目答辩的形式,成绩构成包括学生在团队中担任的职责占10%,学生完成任务及质量占30%,讲解过程占20%,回答教师提问占20%,文档质量占20%。针对教学效果的评价可以通过匿名的调查问卷收集学生反馈的意见和建议。
3结语
软件产业的迅速发展,对软件人才的数量和质量提出了要求,作为高校特别是地方高校应加强课程建设,探索教学模式,提高教学质量,积极应对行业需求。软件工程课程在软件人才培养方面具有一定的重要性。本文以现代教育技术为手段,基于建构主义理论,提出了一种项目驱动的教学方法。该方法突出了团队协同学习的思想,以项目为主线,以学生为主体,突出教师的重要作用,将理论学习融入到项目的实践中。多年的软件工程教学实践证实项目驱动的教学方法能进一步提高学生的学习兴趣,提高教学质量,可以为其他理论课程的教学活动提供参考。
作者:段林涛 单位:成都大学信息科学与技术学院