工程教育认证下基于项目驱动的软件工程教学设计
2019-01-23熊才权康瑞华閤大海
邓 娜,林 松,熊才权 ,康瑞华 ,閤大海
(1.湖北工业大学 计算机学院,湖北 武汉 430068,2.海军指挥学院 战略教研室,江苏 南京 210016)
0 引 言
2016年6月,我国正式加入国际上最具影响力的工程教育学位互认协议《华盛顿协议》,通过认证协会认证的工程专业,毕业生学位将得到《华盛顿协议》其他组织的认可,这将极大地提高我国工程教育的国际影响力[1]。自此,各大高等院校积极开展各个工程专业的认证准备工作,高等教育工作者也纷纷致力于工程教育认证方面的研究[2-3]。工程教育认证从各个方面对工程专业毕业生的能力提出了新的要求,同时也要求教育工作者解放思想、转换观念,以工程认证的毕业要求为输出导向,探索适应工程教育认证的新颖高效的教学模式。
软件工程导论是湖北工业大学开设的一门面向软件工程专业大二学生的专业基础课和专业特色课,在该专业筹备申请工程教育认证的推动下,针对传统课程的各种局限和不足,我们提出基于项目驱动的软件工程课程的教学设计,以期提高教学质量,为学生达到各项毕业要求提前做好准备。
1 工程教育认证毕业要求
工程教育认证对工程类专业毕业生从工程知识、问题分析、设计/开发解决方案、研究、使用现代工具、工程与社会、环境和可持续发展、职业规范、个人和团队、沟通、项目管理、终身学习等不同的方面提出了12条毕业要求。这12条毕业要求大致可以分为理论素养、实践能力、个人素养3个类别。具体如下:
理论素养:工程知识、问题分析和研究这3个方面要求毕业生具备利用各种理论知识和科学原理来分析、解决和研究复杂工程问题。
实践能力:设计/开发解决方案和使用现代工具两个方面要求毕业生能利用现代工具来设计和开发复杂工程问题。
个人素养:工程与社会、环境和可持续发展、职业规范、个人和团队、沟通、项目管理和终身学习等7个方面要求毕业生对社会、环境负责,具有良好的团队合作能力和沟通能力,以及终身学习等个人素养。
2 项目驱动教学法
项目驱动教学法是一种培养工程人才的新颖的教学方法。它以项目为载体, 将课程讲授的主要内容穿插其中,注重课程理论体系的完整性,实现理论实践一体化、传授知识与培养能力一体化、“教、学、做”一体化,特别适合于实践性较强的课程[4]。
跟传统教学方法相比,项目驱动教学法有以下不同之处:
(1)教学对象不同。传统教学方法适合于几乎所有的教学对象,通常采取“教师讲、学生听”的模式来讲授理论知识,这种教学方式较为呆板,教学效果不好;而项目驱动教学法特别适合于工程类专业学生,用项目来贯穿整门课程的教学,既让学生掌握了理论知识,也锻炼了工程实践能力。
(2)教学过程不同。在传统的教学过程中,教师依据事先定好的教学进程,以章节为主线,逐步教授各个章节的内容;而在项目驱动的教学过程中,教师可以不再受章节的限制,而是以项目的开展为主线,从项目的准备工作开始,到项目各个阶段的进行,再到项目的结束,在这些环节中,穿插着理论知识的教授,让学生体会到“纸上得来终觉浅,绝知此事要躬行”。
(3)教学目标不同。传统教学方法的教学目标简单单一,就是让学生掌握相关理论知识,而这个目标已经远远不适用于当前社会和工作岗位对学生的要求。为了培养满足社会需求的学生,不仅要求学生具备扎实的理论功底,更重要的是要求学生不能纸上谈兵,而是应该拥有解决实际问题的动手实践能力,而这正是项目驱动教学法的目标。
3 对应关系
通过分析工程教育认证对毕业生提出的12条毕业要求和总结项目驱动教学法的特点,发现这二者之间存在着一定的对应关系,见表1。
表1 工程教育认证毕业要求与项目驱动教学法特点的对应关系
从表1中可以看出,项目驱动教学法跟工程教育认证的毕业要求有着高度的契合度。毕业要求中三大类别的能力和素养都能通过项目驱动教学法得到锻炼和培养。具体说明如下:
(1)在项目驱动教学法中,让学生在项目中穿插学习理论知识,跟纯粹通过教师 “满堂灌”相比,更容易让学生理解和掌握。更重要的是,学生在项目中遇到问题时,他们会有一个思考的过程,这个过程能帮助提高学生分析问题和研究问题的能力。
(2)项目驱动教学法能在理论与实践之间搭起一座桥梁。学生实际实现一个完整的项目时,从项目初期的设计,到项目中后期的开发,本质上,学生已经是在设计/开发复杂工程问题的解决方案了,而在整个过程中,项目所需的各种类型的现代工具就自然而然地使用熟练了。
(3)个人素养是工程教育认证特别要求的。这些素养很难在传统的教学过程中得到培养,而在项目驱动教学法中,项目实施中不可避免的交流、沟通以及团队协作,遇到问题需要主动学习、自主学习、独立思考等,都能在潜移默化中使个人素养得到培养和提高。
4 基于项目驱动的软件工程课程教学设计
软件工程课程是软件工程专业的核心专业课,它主要教授如何将工程化的思想应用到软件的开发之中。教学章节内容涵盖了从软件项目初期的可行性分析、软件立项到需求分析、概要设计、详细设计、实现、测试、维护等各个环节,跟实际的软件项目开发过程完全吻合。因此,软件工程课程非常适合于使用项目驱动法来进行教学。
以章节内容为覆盖标准,我们对传统软件工程教学过程进行改革。我们选择学生非常熟悉的图书馆管理系统为贯穿整门课程的软件项目,基于项目驱动法重新设计该课程的教学过程见表2。
表2 基于项目驱动的软件工程课程教学设计
基于项目驱动的软件工程课程教学过程具体如下。
(1)在课程开始时,教师向学生布置关于课程项目的任务,包括各个开发环节需要提交的文档和源代码等;由于图书馆管理系统是学生非常熟悉的小型软件系统,通常项目组人数在10~12人比较合适,因此向学生说明分组的人数要求;根据学生对编程语言的熟悉和掌握程度,选定项目开发语言。
(2)可行性分析是项目立项前的一个重要环节。在传统教学中,这一章的教学通常比较枯燥:由教师列出各种类型的可行性分析,包括政策可行性、技术可行性、成本/效益分析、SWOT分析等,学生听完这些理论之后可能仍会觉得没落到实处,遇到一个真实项目时,会觉得无从下手。在项目驱动法中,由学生自行去搜集资料,做好每种类型的可行性分析并撰写好可行性分析文档。在这个过程中,学生独立思考了,并且通过团队协作完成了资料的调查和文档的撰写,对可行性分析内容的理解会更加深刻。
(3)真实软件项目有两种来源,一个是订单式软件,一个是非订单式软件。签订合同和软件立项分别标志着这两种来源软件的立项。在项目驱动法中,学生收集文档模板,自己尝试着去撰写平时甚少有机会接触到的合同以及立项建议书,这为他们以后立项真实项目打好了基础。
(4)软件需求分析的任务主要包括需求建模和撰写需求规格说明书。需求建模又包括建立数据模型、行为模型和功能模型。在小组内,学生自行分配任务,承担建模的不同任务,如构建数据字典、ER图、状态图、数据流图或者各种UML图。负责不同建模任务的学生同时负责需求规格说明书中相关内容的撰写。在这个阶段,学生可以利用各类软件工具来提高需求分析效率,如IBM Rational Rose等。
(5)软件概要设计的任务主要包括体系结构设计、数据设计、接口设计和撰写概要设计说明书等。在小组内,学生承担不同的概要设计任务,如设计数据库表、构建软件结构图、设计人机交互界面或者模块接口等。学生可以利用各类软件工具来提高概要设计效率,如Microsoft Visio、SQL Server等。
(6)软件详细设计的任务主要包括模块内部算法的设计、过程设计和撰写详细设计说明书等。学生承担不同的概要设计任务,如画程序流程图、NS图等。
(7)软件实现是将设计变为可运行代码的一个环节。在小组内,学生各自负责部分模块的编程任务,使每一位同学的动手实践能力都得到锻炼。
(8)软件测试发现并改正程序中的错误。从单元测试到集成测试、系统测试,递进式的关系让学生对每一个层次的测试都非常清楚。
(9)由于最终课程中开发的图书馆管理系统不会有真实的用户,学生在小组间交叉扮演用户角色。在使用过程中报告的错误可以提交给项目开发小组进行改正性维护,由项目开发小组撰写维护文档。
在课堂以及项目开发的整个过程中,教师始终只扮演一个观察者或者解惑者的角色,对学生遇到的共性问题和重点知识点进行解惑和讲解。每位学生参与了项目从可行性分析到维护的全过程,在实践中学习理论、思考问题,不仅锻炼了动手能力,强化了对理论知识的理解,还培养了团队合作、相互交流和主动学习的好习惯。这些能力和素养正是工程教育认证对毕业生的要求。
5 结 语
工程教育认证对工程类毕业生提出了更高的要求,要求他们具备解决复杂工程问题的能力,包括掌握扎实的理论知识、动手实践能力以及团队协作、终身学习等素养,而这些能力在传统教学中很难得到锻炼和培养。利用项目驱动教学法与工程教育认证的毕业要求之间高度的契合度,我们对软件工程课程的教学过程进行了重新设计,以提高教学质量和学生素质。下一步研究工作是探索软件工程课程实践环节有效的教学模式。