李玲
摘 要: 软件工程是计算机专业的一门主要课程,对提升学生的软件开发、 团队协作、沟通、创新及自学能力具有重要作用。针对该课程教学中重技术轻管理问题,阐述了课程的培养目标,以及基于培养目标的教学内容设计。为提升学生的学习兴趣,提出了将任务驱动教学法、案例教学法应用于教学的实施框架,阐述了项目驱动教学法在实践教学中的应用过程。
关键词: 软件工程; 任务驱动教学法; 案例教学法; 项目驱动教学法
中图分类号:TP311.5 文献标志码:A 文章编号:1006-8228(2017)05-50-04
Discussion on teaching model of software engineering course
Li Ling
(Computer Science and Control Engineering Institute, North University of China, Taiyuan, Shanxi 030051, China)
Abstract: Software engineering is a major course in computer specialty, which plays an important role in improving student's abilities of software development, teamwork, communication, innovation and self-learning. Aiming at the problem that the course teaching is emphasis on the technology more than the management, this paper expounds the educational objectives and the teaching contents based off the educational objectives. In order to improve students' interest in learning, the framework for the implementation of task-driven teaching method and case teaching method is put forward, and the application of project-driven teaching method in practice teaching is expounded.
Key words: software engineering; task-driven teaching method; case teaching method; project- driven teaching method
0 引言
软件工程课程是一门研究用工程化方法构建和维护有效、实用、高质量软件的学科,是计算机专业人员必修的一门主干课程。它以数据结构、面向对象程序设计、数据库原理及应用、操作系统等课程为先驱,糅合了工程化软件开发思想,旨在让学生通过本门课程的学习,理解软件工程的基本原理、软件项目开发各阶段的任务,掌握传统的结构化设计方法和面向对象的开发方法,建立以工程化思想管理软件开发维护进程。对提高学生的软件开发能力、解决问题和创新能力以及项目管理、团队合作能力具有重要意义。
软件工程一直是高年级专业课程中教学难度较大的一门课程。从对学生就业单位的问卷调查和访谈结果来看,教学效果未达到理想状态。究其原因,有四个方面。
第一,本课程理论性强,如何引发学生兴趣是重中之重。单纯引入案例教学,没有良好的组织过程,学生仍未能有“身临其境”感觉,无法达到教学效果[1]。
第二,本课程是一门综合性课程,起于理论,必须将理论应用于实践中,理论实践相结合,学生对知识点才会有深刻体会。目前教学仍有重理论轻实践特点,理论与实践有所脱节。
第三,实践过程的组织耗时耗力,评价体系不完善。软件工程的实践环节涉及到数据结构、程序语言、开发环境、数据库等多方面知识,因此实践的开展,易受到先驱课程没有学好或没有拓展、遗忘等影响。需对学生知识状况进行摸底评估。对于实践过程耗时长,要考虑如何引导学生高效工作;如何评估划分不同学生知识结构的层次;针对学生良莠不齐情况合理管理及高效引导实践进程。而目前对实践过程的评价,除了印象分,仍是以最终结果评价为主,有失公正性,对学生的团队协作能力培养也是桎梏。
第四,本课程知识体系一直存在重技术轻管理的误区。现工程教育认证标准在各大高校逐渐推展开。工程教育认证,明确将项目管理能力、承担团队成员以及负责人的角色能力、沟通能力等写入了毕业要求。加大学生软件工程管理能力教育力度,培养符合工程化认证标准的人才,是需要我们反复思考加实践来推进的。本文从软件工程课程培养目标、教学内容体系、课程教育方法三方面出发,浅谈对软件工程课程教改的一些思路。
1 軟件工程课程培养目标
本课程旨在培养学生软件工程理论知识、职业技术能力、职业素养三方面的能力。理论知识方面,要求学生掌握传统的结构化开发和面向对象开发中各阶段的任务、任务完成的步骤,以及相关模型建立的方法。职业技术能力方面,要求学生基本掌握使用Microsoft Project进行软件项目管理,使用visual Source safe进行版本控制、使用 Rational Rose和Viso进行软件系统建模,使用JTest进行辅助测试、使用loadrunner进行压力测试。职业素养方面,通过组织学生进行团队项目开发,培养学生项目管理能力,谈判、沟通、写作能力及团队合作能力。
2 软件工程课程教学内容
工程教育认证基本思想是,以社会需求为导向,革新教学模式[2]。因此,我们应该根据社会需求,合理确定知识结构。基于社会需求及课程培养目标,本课程内容分为理论和实践两部分。
理论部分主要内容如表1所示。
实践部分旨在引导学生将理论应用于实践中,加深对理论的理解,并锻炼学生的软件需求分析、设计、开发能力。针对面向过程软件工程,设计了《期末成绩统计软件》模拟案例。针对面向对象软件工程,设计了《小型图书管理系统》模拟案例。整个项目实施过程,以学生分组形式进行,培养学生的软件开发、谈判、沟通、写作能力,团队合作能力,全面提升学生的职业素养。
3 软件工程课程教学方法
软件工程是一门工程化的课程,理论性、实践性并重。如果教师采用传统“填鸭式”教学方法,以平铺直叙的方式对课本内容进行PPT讲解,极易让学生失去学习兴趣,降低教学质量。教师要想让学生充分了解并掌握本课程知识,必须具体问题具体分析,不同的教学内容采用不同的教学模式。例如针对软件工程课程各类知识结构特点,采用任务驱动教学法、案例教学法、项目驱动教学法、自学等多种方式混合的综合教学方法,以此激发学生的好奇心和解决问题的好胜心,调动学生积极性,提升课程教学效果。
3.1 课堂教学方法
3.1.1 任务驱动教学法
任务驱动教学法是建立在建构主义学习理论基础上的,有别于传统教学的新型教学方法[3]。建构主义是一种关于知识和学习的理论,强调学习者的主动性,认为学习是学习者基于原有的知识经验生成意义、建构理解的过程,而这一过程常常是在社会文化互动中完成的。建构主义的提出有着深刻的思想渊源,它具有迥异于传统的学习理论和教学思想,对教学设计具有重要指导价值。
任务驱动教学法是“以任务为主线、教师为主导、学生为主体”的教学方法。通过巧妙设计,将教学知识点融入到一个个具体任务中,引导学生通过学习新知识新技能来完成任务,达到新知识的理解掌握,并提升学生分析问题解决问题的能力。在此,简述本人在面向对象软件工程需求分析阶段教学中,对任务驱动教学法的运用和一些教学体会。具体过程如下。
⑴ 描述问题。教师首先提出一个实际项目-小型图书管理系统。对项目问题定义进行简要阐述。
⑵ 提出需求分析任务。将教师本人作为客户,要求学生获取小型图书系统需求。
⑶ 执行任务。学生根据自生经验,通过各种方法获取需求,并将需求表述。获取需求过程中,学生用到的通常的是与教师面对面沟通方法,沟通方法单一且因为沟通歧义,会导致获取需求与实际需求矛盾,或只为实际需求的一部分。教师就此引导学生,学习情境分析、问卷、试用客户老系统、简易应用规格说明技术、快速原型等多种获取需求方法。获取需求过程中,要对需求结果进行表述。学生通常会用文字以段落方式长篇大论。这种方式逻辑不严谨,且容易产生误解。教师引导学生学习使用用例图及用例文档的表述方式,并让学生对用例图方式与段落式表述方式比较,达到对用例图的理解、认可及掌握。
3.1.2 案例教学法
案例教学法是基于一定的教学目标,以包含疑难问题的实际情境的描述即“案例”为载体,教师扮演设计者和激励者的角色,鼓励学生积极参与讨论,运用所学的理论知识去识别、分析、解决问题,使学生达到对所学理论知识的深入理解及掌握,并提升学生解决问题的创新能力。在此简述本人在面向过程软件工程总体设计方面对案例教学法的运用和一些教学体会。具体过程如下。
⑴ 学习软件设计原理、模块内聚、耦合、启发式规则。
⑵ 基于《小型考务处理系统》数据流图,使用面向数据流的设计方法映射出结构图,将该结构图作为案例提供给学生。要求学生根据软件设计原理、技术等相关知识对结构图进行结构优化。
⑶ 个体准备。每位学生独立思考,准备优化材料,包含理论来源和结构图处理方式。
⑷ 分组讨论。按3-4人一组对学生分组,并进行组内讨论,给出结构图优化的统一意见。
⑸ 按组发表意见。每组推选一个代表,叙述本组对结构图的逐步优化方案及理论来源。
⑹ 总结阶段。留出一定的时间让学生自己进行思考和总结。随后,教师根据每小组总结的结果,同学生一起进行汇总归纳,并依据教师自身的优化经验对结论进行点评补充。
3.1.3 自学
大学生要具备一定的自学能力。软件工程课程要求学生掌握Microsoft Project、visual Source safe、Rational Rose、Viso多个软件的使用。教师可在课堂上对这些软件的学习做适当引导,并布置学习任务及作业,及时检查并纠正错误。
3.2 实践
软件工程课程的实践环节,可采用项目驱动教学法组织实施。项目驱动教学法是一种以教师为主导、学生为主体、项目为媒介,通过实践方式完成项目,以提升学生综合能力和职业素质为目标的系统教学方法。
项目驱动教学法用于软件工程课程的实践环节。主要实施过程如下。
⑴ 学生分组。每个项目小组,设组长1名,组员3-4名。为避免学生自由组队强强联合造成的“马太效应”,教师发动班干部辅助完成分组工作,盡量做到强弱联合组队。
⑵ 项目布置。教师发布具有实际意义的多个项目问题描述。通过分配或自主选题方式提供给各项目小组。每个项目在一个班级中最多重复三次,以防小组间抄袭。公布内容抄袭处罚办法,达到警示作用。
⑶ 项目实施。项目小组选用合理过程模型。将教师作为模拟客户,严格按照软件工程思想完成项目。完成项目过程中,着重从如下几方面进行监控。
第一,在项目实施的各个阶段,必须提交相应文档。具体包含《关于系统规模和目标的报告书》、《软件项目开发可行性分析报告》、《需求规格说明书》、《系统设计说明书》、《测试计划》、《用户使用手册》。文档要求符合软件文档规范。
第二,必须运用Microsoft Project、visual Source safe、Rational Rose、JTest、loadrunner 等作为软件工程支撑环境,辅助进行软件开发。
第三,坚持阶段性的考核。
传统实践环节考核,通常是项目完成后,以小组答辩形式进行的终极考核方式[4]。这种考核方式,无法在实践过程早期及中期,发现学生项目进展的重大问题并及时纠正。尤其对某些自我约束能力较差的学生,也可能出现实践前期自由散漫工作进度缓慢,后期又无法按时完成的情况。
堅持阶段性考核方式显得尤为必要。考核成员由教师和项目组长担任。考核成绩由各阶段考核成绩、最终项目答辩成绩按比例计算。各阶段考核中,将小组项目的组织过程、小组成员的参与情况、成员对项目本阶段的贡献等多个方面,都作为考核指标。通过阶段性考核方式,既督促、鼓励了学生的积极参与态度和团体合作精神,又能够及早让项目小组认识到本组工作不足并抓紧改进,最重要的是阶段性考核方式较终极考核方式更公正客观。
4 总结
根据本科工程教育认证标准,现今社会对计算机相关专业人才的能力要求越来越全面。计算机专业人员要具有软件开发能力、团队合作能力、创新能力、自学能力等多方面综合能力。根据多年的教学经验,本文从培养目标、教学内容、教学方法三方面阐述了进行软件工程课程教学改革的一些经验。分别论述了任务驱动教学法、案例教学法、项目驱动教学法等几种方法在课堂教学和实践教学中的实施过程。这些措施激发了学生创新意识,调动学习积极性,对提升学生综合能力切实可行,达到了课程培养目标要求。工程教育认证的基本准则是持续改进,我们将在软件工程课程现有教学方法的基础上,合理运用各种教学辅助工具,对新的更合理的教学方法进行长期的不断的探索。
参考文献(References):
[1] 王辰尹,衣杨.面向应用型IT人才培养的软件工程教改关键问题研究[J].计算机教育,2014.8:27-31
[2] 贾玉祥,陈争艳.面向工程教育的软件工程案例分析与实践课程[J].现代计算机(专业版),2015.27:9-12
[3] 吴静.项目教学法与任务驱动教学法的异同比较[J].北京工业职业技术学院学报,2011.3:79-82
[4] 余天佐,蒋建伟,任锐,刘少雪,庄颖.基于工程教育认证标准的持续质量改进——以Z大学全国示范性软件工程专业为例[J].清华大学教育研究,2015.6:104-111