刘辉 牛振东
文章编号:1672-5913(2015)11-0025-03
中图分类号:G642
摘要:专业学位教育是我国大力提倡的新兴教育模式,其目的是针对行业的特定职业需求,培养具有专业能力的可以胜任目标职业角色的高层次专门人才。硕士专业学位教育有别于学术型硕士教育,因此需要摸索出针对专业硕士的教育教学方法。文章阐述在软件工程专业硕士核心课程软件体系结构教学中探索出的一套行之有效的硕士专业学位教学方法,介绍探索和实践过程中的经验及教训,为相关课程的教学改革提供借鉴。
关键词:专业学位教育;实践;软件工程;体系结构
0 引 言
专业学位是针对特定职业领域的需要,为培养具有较强专业能力和职业素养的高层次专门人才而设置的一种学位类型。虽然专业学位与学术学位培养的人才类型有所不同,但是二者不存在谁高谁低的问题,都处于同一层次。目前,我国已基本形成了以硕士学位为主,博士、硕士、学士3个学位层次并存的专业学位教育体系。
我国的专业学位教育尤其是硕士专业学位的教育迅猛发展。图1所示为我国1996-2009年全国硕士专业学位授予人数的统计图示。从图中可见,专业硕士授予数量从1996年的0.03万迅猛增长到2009年的11.74万,13年间增长了390倍,年均增长率高达58%。2009年3月,教育部决定增招的硕士研究生名额全部用于招收应届毕业生攻读硕士专业学位。2010年起,所有国务院批准通过的硕士专业学位类别招生工作可纳入全国硕士研究生统一招收安排,这标志着我国硕士专业学位教育迎来了一个新的时期。
基于IT产业的迅猛发展及其对专业高级人才的强劲需求,软件工程专业在工程硕士中非常受欢迎。然而,目前软件工程中的许多专业课程(如软件体系结构)沿用学术型学位教育的教学模式,不利于培养专业学位研究生的实践动手能力。学生毕业后难以迅速进入职业角色,往往需要一个较长时间的职位培训,这也一定程度上影响了专业学位硕士毕业生的就业及职业前景。为了解决以上问题,我们需要对现有的教学模式进行改革探索,坚持以实践能力为核心,对专业课程的教学内容、教学方法、考核方式和教学团队进行改革探索,使之符合专业学位研究生的培养特征。
1 课程现状
软件体系结构多年以来一直是全日制硕士专业学位研究生(计算机技术及软件工程专业)的核心课程,该课程的建设对培养专业硕士在大型软件系统上的构架能力、软件系统评估能力等具有重要意义,是将硕士研究生的目标职业从普通程序员提升至系统构架师的核心课程。国内外知名高校均已开设软件体系结构课程,国外的卡内基·梅隆大学等在软件工程领域处于领先地位的高校都将该课程作为核心课程进行建设;国内的北京大学等亦将软件体系结构作为计算机技术及软件工程领域硕士专业学位的核心课程。
相比于职业技术学院培养的程序员,计算机技术及软件工程领域专业硕士的核心竞争力主要表现为对大型软件系统的架构能力,具体包括对软件系统结构分析、设计和评估的能力。软件体系结构课程的主要目标就是培养学生对软件系统架构进行分析、设计和评估的能力,为其日后的职业生涯奠定基础。我们的教学团队早在2004年便开始承担该课程的教学任务,建立了较为完备的教学大纲和教案,编写、编译了相关教材,设计了实践性教学案例与教学环境。教学团队编译的教材《软件体系结构》《UML用户指南》等受到北京理工大学学生以及兄弟院校的广泛欢迎和采用。采用启发式教学与实践性教学相结合的教学方法,可以使学生不仅理解相关的理论和技术,而且掌握具体的应用和操作方法,能够收到良好的教学效果。采用双语授课可以有效提高学生以英文为载体进行专业知识学习和交流的能力,为专业硕士日后自主学习国际最新技术奠定坚实的基础。相关经验总结参见课题组于2009年发表的教学改革论文。
软件体系结构课程前期的主要问题在于缺少企业专家的参与,缺乏学生能真正接触到的大型企业软件系统案例,为此教师需要引入相关企事业单位的高级企业专家参与授课,引入相关单位的真实案例以进一步激发学生的学习兴趣。此外,原有教学大纲主要来源于学术型硕士研究生的相关课程,不利于培养专业硕士的实践动手能力,因此尚须完善教学内容及考核方式,通过吸收工业实践中用到的最新知识丰富教学大纲;转变课程考核方式,重点考查学生分析问题和解决问题的能力。
2 课程建设
我们通过多年的摸索实践,将软件体系结构硕士专业学位课程建设主要分为完善教学内容与教学大纲、建设专业化教学团队、设计课程考核方式3方面。
1)完善教学内容与教学大纲。
我们通过企业调研、专家研讨等方式了解软件架构师所必需的理论知识与技术技能。调研结果表明,仅仅掌握基本的软件体系结构概念以及经典的软件体系结构风格是无法真正从事复杂软件体系结构建模与分析工作的,需要在实际应用中对主流建模语言(unified modeling language,UML)、面向对象设计、设计模式、软件开发过程等有较好的理解和把握,才能构造和评估真正实用的软件体系结构。此外,一些老旧的知识如面向对象体系风格、子程序/主程序结构等要么因为已经成为常识,要么因为已经很少使用而没有必要在课堂上进行讲授。最后,软件体系结构的形式化描述与验证在企业中很少用到,可以从专业硕士的课程中移除以减少课程负担。软件体系结构的形式化描述与验证,在经典软件体系结构课程中经常作为重点和难点向学术型研究生讲授是必需的,因为这是对软件体系结构进行定量、自动化的科学分析的前提和基础;然而,对于专业硕士而言,教学的着重点是实用性,因此对于这部分教学困难而使用机会不多的内容,可以大幅压缩或者直接取消讲授。
通过详细对照课程知识点与软件架构师所需职业理论与技能,教师可分析和抽取该课程教学大纲尚未覆盖的知识点,删除课程中某些陈旧或与培养目标关系不大的知识点,逐步完善教学大纲。新的教学大纲不但增添了新的实用知识点,而且通过删减部分内容确保了教学工作量的稳定。
2)建设专业化教学团队。
专业学位培养的是能快速应用所学专业知识解决企业实际问题的高级专门人才,因此需要教师对工程实际问题有较为深入的理解,但是传统上高校教师通常主要从事基础理论研究,缺乏企业背景和实际开发经验。解决授课需求与教师背景之间不匹配问题最直接的方法,是引入具有丰富工程实践经验的企事业专家进行案例授课,而校内教师主要负责基础理论和基本概念的讲授。
教学团队可与中国移动研究院、中国农业科学研究院等建立全面的合作关系,聘请资深软件专家加入教学团队。移动研究院的专家可结合其大型软件系统“中国移动开放平台OMP”讲授软件体系结构的概念、风格、设计方法和模式、评估等;农科院专家可结合农业信息采集与分析系统深入浅出地介绍软件体系结构的基本构架模型、描述方法、设计中的主要影响因素等。此外,教师还可利用企事业单位的真实软件体系结构及其演化历史作为教学案例,强调教学案例的分析与讨论;对每个教学案例,分组讨论其体系结构的主要特色、体系结构风格的决策过程、体系结构对软件性能与软件演化的影响等,引导学生利用软件体系结构知识分析和理解实际应用中软件体系结构分析、设计、评估的主要过程与方法,大幅提高学生的学习积极性以及对实际问题的分析解决能力。
3)设计课程考核方式。
教师需转变课程考核方式,主要考查学生的实践能力以及对软件体系结构核心概念与主要理论的理解和应用能力;以考查学生分析、设计和评估软件体系结构的能力为核心,设计难度适中的实践性大作业作为课程考核的主要方式,同时适当辅以理论考试,考查学生对课程核心概念和核心理论的掌握程度。
教学团队设计了一个基于UML建模工具的大作业,要求学生根据给定的软件需求设计最佳的软件体系结构。为了突出软件体系结构不断演化的特性,教师可将大作业的需求分成两个阶段,分两次发给学生以模拟真实环境下不断变更的软件需求。学生不仅要给出最终的设计结果,还必须对软件体系结构的总体构架和风格作出解释,说明其设计的合理性;此外,对设计过程中的每个决策都要给出决策的依据。
图2所示为学生设计的一个优秀案例。该案例充分考虑了UML元素需要逐渐演化的需求,通过多态(继承)很好地满足了系统的可扩展性;此外,该设计利用经典的MVC结构合理地解决了图形界面与文档元素的分离问题。
最后的理论考试则完全以软件体系结构的概念和理论为考核要点,不再结合案例进行考核。考虑到专业硕士的培养目标是解决工程项目中的实际问题,因此我们在课程考核中以大作业考核为主(占总成绩的2/3),以理论考试为辅(占总成绩的1/3);此外,理论考试难度相比学术型硕士相关课程有所降低,保证学生有足够的精力投入到实践动手能力培养中。
3 结语
针对硕士专业学位的特殊性,我们对软件工程专业的核心课程软件体系结构进行了改革探索并取得了一定的成效。课程改革的重点在于:根据企业需求和学科发展前沿调整教学大纲;引入企业专家以加强案例教学;调整课程考核方式以加强学生实践动手能力的培养。经过几年的改革和探索,该课程的教学质量明显提高,其改革实践也对其他专业硕士课程具有一定的借鉴意义。