APP下载

工程硕士高级软件工程课程“1+2+N”教学模式研究

2019-04-01李春青

计算机教育 2019年3期
关键词:工程硕士软件工程

袁 超,李春青

(天津工业大学 计算机科学与技术学院,天津 300387)

0 引言

工程硕士研究生教育是我国学位与研究生教育的重要组成部分[1]。1997年4月,国务院学位委员会办公室和原国家教委研究生工作办公室借鉴国外成功经验,提出设置工程硕士,并获国务院学位委员会第十五次会议通过,工程硕士专业学位正式诞生[2]。2009年,教育部党组决定增招硕士研究生,全部用于招收应届本科毕业生全日制攻读硕士专业学位[3]。自此,工程硕士专业学位研究生纳入全日制硕士研究生招生渠道,更好地满足了经济社会发展需要以及人民群众对研究生教育的需求[3]。

高级软件工程课程是软件工程专业工程硕士的学位课,具有较强的科学性、技术性和实践性[4]。通过学习该课程,学生能够扎实掌握软件工程领域前沿的理论和技术,具备一定的工程研究能力和独立承担大型软件项目的能力,为学生后续课题研究打下坚实的基础。目前,关于本科软件工程课程教学研究的文献相对较多,而关于工程硕士高级软件工程课程教学研究的文献较为鲜见。

1 高级软件工程课程授课现状

本课程与本科阶段的软件工程课程不同,主要体现在以下几点。

(1)小班授课。每年选修本课程的工程硕士人数在20人左右,利于采用更加灵活的授课方式。

(2)学生基础不同。在实际教学过程中发现,学生所具有的学科背景和专业基础各不相同。其中,一些学生本科来自本专业或相关专业,具有相当的实践工作经验,对本课程的教学期望更高;而有些学生基础较薄弱,尤其是一些跨专业学生,起点相对较低。由于学生的专业基础不同,导致该课程的教学难度增加。

(3)本课程讲授内容比本科软件工程课程更加深入,前沿性、创新性和实践性要求更高。作为工程硕士课程,本课程比本科生课程要求更高,内容更加前沿和深入,要求学生具有更强的分析解决问题的能力。通过本课程的学习,既要培养学生的工程实践能力,也要培养学生的工程研究能力。本课程会涉及比较前沿的技术,如云计算技术、软件重用和软件构件技术、SOA、软件演化、人工智能技术在软件工程中的应用等。其次,本课程要求学生能够针对复杂大型系统进行管理、规划、分析、设计、建模、开发及维护。因此,本课程探讨的教学案例业务逻辑更复杂,系统规模较大,具有高并发、高吞吐量等特点,这无疑增加了学生的学习难度。

2 “1+2+N”教学模式概念及实践

为了能够较系统地培养学生的工程实践和工程研究能力,提出了“1+2+N”教学模式。其中,“1”指用一个完整的具有实际工程背景的软件项目作为主线贯穿整个教学环节;“2”指从“工程实践”和“工程研究”两个维度组织教学;“N”指综合利用多种教学方法达成教学目标。

2.1 用一个完整的具有实际工程背景的项目案例贯穿整个教学环节

由于课时有限,在实际教学过程中,发现案例并不是越多越好。案例过多,容易贪多嚼不烂。把一个具有实际应用背景的教学案例研究透,让学生深刻体会软件开发的全过程,反而效果更好,能够让学生系统掌握软件开发的理论、方法、技术和工具。作者曾主持和参与过10多个软件开发项目,如“新能源汽车充电网络运营服务平台”“天津市轨道交通故障仿真与维修训练平台”“轨道交通在线考试系统”以及“精米控制系统”等。在实际教学过程中,课程组选取了业务逻辑相对简单(适合于课堂教学)、学生容易理解的“轨道交通在线考试系统”作为教学案例。考虑到保密要求,删掉了项目背景,对业务逻辑和数据结构等进行了修改、简化和相关脱敏处理。修改后的项目案例简述如下。

在线考试系统——某单位欲开发一套在线考试系统。参加考试的考生规模大致在20 000人左右。试卷题型主要有单选题、多选题和判断题,一份试卷中各种题型可以自由组合,共有100道题,答题时间为40分钟。要求系统能够实现考生在线考试(通过手机终端或者台式电脑),并能够实现题库管理、自动组卷、自动判卷、考场监控、保存考生历次考试记录、考试成绩查询及打印等功能。

系统基本用例图和系统总体架构分别如图1和图2所示。

图1 在线考试系统用例图

图2 在线考试系统总体架构

在课堂讲授过程中,重点讲解自动组卷和在线考试两个功能模块。整个项目则需要学生课后分组完成(4~5人一组)。从项目立项开始,到完成交付结束,涉及项目管理、软件过程模型、系统分析、系统设计(架构设计、接口设计、数据库设计等)、编码实现、测试及维护等多个专题和知识点。其间,穿插课堂讨论、项目演示等方式,增加课堂趣味性,调动学生的积极性,加深学生对课程知识的掌握。

2.2 从“工程实践”和“工程研究”两个维度组织教学

“1+2+N”中的“2”指工程实践和工程研究两个维度。工程硕士的培养既注重工程实践能力,也注重工程研究能力,因此本课程提出要从这两个维度组织教学,以达成学生的毕业要求。

1)工程实践维度。

工程实践教育的目标在于培养学生创新的工程实践意识、严谨的工程实践作风、科学的工程实践素质、优秀的工程实践能力和规范的工程实践标准等[5]。

本课程是培养本专业工程硕士工程实践能力的一门重要学位课。以实际工程项目为案例,通过课堂讲授、学生课后项目实践、项目演示及课堂汇报等方式,主要达到以下目标:①运用软件工程的理论、方法和技术解决复杂工程项目中的系统规划、分析与设计、开发与维护、组织与实施以及关键技术等实际问题;②掌握软件工程各阶段CASE工具的使用,如项目管理工具Project、配置管理工具SVN、快速原型设计工具Axure RP、数据建模工具PowerDesigner、软件建模工具Rational Rose、测试工具Junit和JMeter等;③培养学生良好的职业素养,熟悉软件工程的规范和标准,具备规范化的文档编制能力。

2)工程研究维度。

工程硕士属于高层次应用型人才,应该能够持续学习和掌握本专业的前沿理论和技术,所以要具备一定的工程研究能力。对于本课程来说,应该使学生掌握软件工程领域前沿的理论、方法和技术,并应用这些新理论、新方法和新技术解决复杂的工程问题。同时,应该了解本学科的发展趋势,能够对相关理论和工程问题具有自己的见解,具备一定的创新意识和持续学习研究能力,从而适应本行业的快速变化。

针对工程研究能力,本课程主要从两个方面进行改进:①及时更新授课内容,跟踪当前的新理论和新技术。软件工程理论和技术的发展对软件产业向工程化、标准化、自动化方向的发展起到了重要的促进作用。当前,软件工程领域有许多热点问题和亟待解决的难题,如软件可靠性、标准化、智能化、分布式技术、软件架构技术、软件复用、软件演化等问题,这些问题都可以作为教学专题进行讨论。②对教学方法进行改进。例如,对一些涉及前沿技术的专题,可以邀请行业专家作专题报告;其次,针对一些复杂的工程难题,可以发挥学生的主体作用,让其通过查阅文献、小组讨论或者课堂汇报等形式,提出自己的想法和见解。

2.3 综合应用多种教学方法达成教学目标

“1+2+N”中的“N”指多种教学方法,即综合应用多种教学方法达成教学目标。关于软件工程课程,相关文献提出了多种教学方法,比如MOOC/SPOC、案例教学等。然而,要系统上好这门课,还需要有针对性地应用多种教学方法。

1)针对学情不同,通过分组教学和针对性补习减小学生的基础差异。

工程硕士的学情不同于本科生,因为学生的专业背景、学习起点各不相同。其中,有些同学有过行业工作经历,有些同学是本专业应届毕业生,有些同学属于跨专业。为了缩小其基础差异,可通过两种方式:①采用分组教学法,将学生分成小组,以小组为单位组织教学。小组中既有基础较好的,也有基础较差的。通过课后作业、课后实践和课堂讨论,基础较好的同学带动基础较差的,逐渐缩小基础差异。②采用针对性补习的方式,根据学生的知识背景和基础,有针对性地指定相应补习内容和资料,学生通过课外补习达到预期水平,从而缩小全班学生水平差异,便于后续内容的学习。

举例来说,本课程在第一次上课时会跟学生有一个互动,给每个学生分发一张卡片。卡片上会提一些本科软件工程课的问题,让学生在卡片背面填写是否能够回答这些问题,并让学生说明对本门课程的了解程度和对本课程的教学期望。通过该方法,可以初步收集班级的学情。然后对学生进行分组,每组4~5人,选一个基础较好的学生作为组长,成员既有基础较好的,也有基础较薄弱的。以后上课时,每个小组的成员坐在一起,作为一个基本教学单位。学习本课程,需要具备相关基础知识,如本科阶段的软件工程、数据库、UML、软件体系结构、Java/C#编程语言等。对于缺少相关知识基础的学生,会根据课程进度,分发相关资料进行课后补习,以便学生跟上课堂节奏。

2)针对项目管理、系统分析与设计、项目实施、测试与维护等环节,综合应用分组教学、案例教学、课后实践、课堂讨论、项目演示等教学方式,可调动学生的积极性与主动性,有助于学生理解软件工程的相关理论,增强分析问题、解决问题的能力和工程实践能力。

具体来说,以上文“在线考试系统”为教学案例,以项目小组为单位组织教学活动。课后实践要求以小组为单位完成整个软件项目,包括项目管理、系统分析设计与建模、代码编写、测试与维护等,同时要掌握相关CASE工具的使用(见3.2节),按照规范编制项目文档。学期结束,要求各小组演示自己的成果,作为实践考核依据。平时也可以随机安排一两组学生到讲台前演示项目阶段成果,以活跃课堂气氛,发挥学生的创造力,分享各自的见解。对于一些关键点和难点(如软件过程模型、系统架构、设计模式等),以小组为单位安排几次课堂讨论,有助于调动学生的积极性,培养学生的创新思维,加深对知识点的掌握。

3)对于软件工程前沿专题内容,通过课堂讲授、邀请专家作专题报告、课堂讨论及汇报、查阅文献等方式,培养学生的工程创新意识、创新思维和创新能力。

如前文所述,新理论、新技术的发展促进了软件工程学科的发展。学生有必要掌握本学科的前沿理论和技术。本课程会邀请行业专家进课堂,分享其研究方向,如云计算技术、软件理解与软件演化、SOA等。同时,会安排学生查阅文献,通过课堂讨论、课堂汇报等方式探讨软件复用与软件构件技术、设计模式、软件过程模型、软件可靠性、AI技术在软件工程中的应用等问题。

3 结语

我校于2009年取得软件工程工程硕士学位授予权。以国家级卓越软件工程师实习实训基地为依托,在培养过程中突出产业适用型人才培养特色,遵循“实用型、有特色、高层次”的教育理念,为软件产业培养基础扎实、素质全面、工程实践能力强并具有一定工程研究能力的应用型、复合型高层次工程技术和工程管理人才。

高级软件工程课程属于软件工程专业工程硕士的学位课,是培养本专业高层次应用型人才的一门重要课程,能够为后续课题研究打下坚实的基础,但是由于工程硕士专业背景、学科基础差别较大,增加了课程的授课难度,相应的教学文献也比较少见。针对工程硕士工程实践和工程研究能力的培养要求,我们提出了“1+2+N”教学模式,基于该教学模式给出了一个高并发系统的教学案例——“在线考试系统”,同时介绍了该教学模式的实施经验。在实践中,该教学模式取得了较好的效果。首先,学生的课堂积极性和参与度有所提高,课堂气氛活跃。其次,学生的工程实践能力和工程研究能力得到加强。各小组都能完成实践项目,并提交规范的项目文档。同时,学生能够从系统的可扩展性和可维护性等角度出发,采用当前流行的架构技术、设计模式等对系统进行优化,每个小组都体现了自己的特色。例如,有的小组采用了SSM框架,并从设计模式的角度给出了解读;有的小组考虑到成员技术背景不同,通过查阅文献,提出了基于WebService的跨平台集成方案,利用HttpClient和JSON等技术集成C#和Java项目。这些都是学生创新能力的表现。此外,本教学模式通过课堂报告等方式,锻炼了学生的演讲和表达能力,有利于综合素质的培养。

猜你喜欢

工程硕士软件工程
禅宗软件
工程硕士教育质量指数构建
——基于全国1 480份有效问卷的研究
软件对对碰
孙思扬作品
子午工程
即时通讯软件WhatsApp
工程
工程
工程
基于校企联合的全日制工程硕士培养模式简析