骆斌 刘钦 冯桂焕 王浩然
摘要:随着软件工程自身观念、知识、实践、工具等的发展更新,我国软件工程领域专业硕士教育的发展迎来巨大的机遇和挑战。文章介绍GSw2009中的CBOK以及最新的SWEBOK V3两种软件工程知识体系,阐述借鉴GSwE2009的南京大学课程体系和与之配套的工程能力训练系统,结合中国研究生教育的实际,提出将软件工程中的过程管理方法引入教学管理体系。
关键词:软件工程;研究生;知识体系;课程体系;专业规范
0.引言
20世纪90年代初,卡内基一梅隆大学软件工程研究所(SEI)和软件工程教育者研讨会共同努力建立了软件工程硕士教育计划。1993年,IEEE-CS/ACM联合指导委员会建立,标志着软件工程建设进入一个新的时期。随后,经过软件工程协调委员会(SWECC)的多年努力,2004年正式发布了软件工程知识体SWEBOK和本科生软件工程教育计划CCSE 2004,2009年发布了软件工程职业道德规范和职业实践以及研究生软件工程教育计划GSwE2009-2014年,随着软件工程自身观念、知识、实践、工具等的发展更新,SWEBOK也终于更新到V3版。
2002年国内启动了软件工程硕士培养程序,2011年软件工程作为独立的一级学科得以设立。因此,研究国际软件工程硕士教育体系,对处于初创期的中国软件工程教育具有特别重要的意义。南京大学软件学院对软件工程领域专业硕士培养模式进行初步探索,试图从知识体系、课程体系、工程能力训练体系以及教学管理体系上为我国软件工程专业硕士教育提供思路。
1.知识体系
软件工程知识体系主要有两个来源:SWEBOK和GSwE2009中的教育知识体系CBOK。
GSwE2009中的教育知识体系CBOK主要来源于SWEBOK 2004,同时也参考了SEEK 2004、INCOSE 2003和Haskins 2007。相比较SWEBOK2004,CBOK增加了一个新的知识域(knowledgearea,KA)(职业实践)和4个关于教育的知识域(工程经济学基础、计算基础、数学基础和工程基础),与此同时还增加了系统工程基础和职业操守指导等两个全新知识域。此外,CBOK还调整了一些知识单元/知识点,具体为:
(1)人机交互设计被加入到软件设计知识域;
(2)工程经济学单元被加入到软件工程管理知识域;
(3)风险管理单元被加入到软件工程管理知识域;
(4)软件检验和有效性验证单元被加入到软件质量知识域。
为加强软件工程在GSwE2009中的角色和地位,GSwE2009对部分知识域的名称和知识单元/知识点组织进行了调整,如软件需求改为需求工程,软件测试改为测试,软件配置管理改为配置管理等。
2014年新版的SWEBOK V3与CBOK类似,在SWEBOK 2004的基础上增加了4个关于教育的知识域(软件工程经济学、计算基础、数学基础和工程基础)和软件工程职业实践知识域。软件工程专业实践知识域又细分为专业性(professionalism)、团队动力学(group dynamics)和交流技巧(communication skills)。
通过对这两个知识体系的分析可以发现,只有具有坚实的数学基础、计算基础、经济基础和工程基础,全面了解软件开发的过程、方法和工具且受过良好训练的人,才有可能成为未来软件行业的中坚力量和领军人物。
2.课程体系
在设计课程体系架构时,GSwE2009规定至少为CBOK所规定的核心知识单元分配15个学分的教学时间和200小时的交流时间(北美的学术模式),同时课程设置应满足CBOK所规定的相关核心知识单元的布鲁姆分类学认知范畴中的6种级别(知识、理解、应用、分析、综合和评价)。GSwE2009建议使用整个课程50%的学时来覆盖CBOK所规定的核心知识单元内容。
南京大学软件工程专业的硕士研究生课程体系架构采取混合模式,要求硕士研究生在校学习8个学分的通修课程(A类)和24个学分的专业课程(B/C/D类)。B类课程为高级软件工程课程,覆盖重要的软件工程核心知识;C类“系统分析与设计”及“软件质量保障”课程,覆盖部分软件工程核心知识、软件工程高级知识深入和特殊应用领域知识;D类课程分两类,第一类为与软件工程核心知识和高级知识相关的课程,第二类为与专业方向(即办学特色和特殊应用领域)相关的课程。部分A类课程、B类课程、C类课程和D类第一类课程覆盖了GSwE2009推荐的15个学分所要求的核心知识,D类第二类课程的教学内容体现了学校的办学特色和对特定应用领域的关注。具体课程体系见表1。
3.工程能力训练体系
与GSwE2009和SWEBOK V3中的职业实践要求相对应,南京大学软件学院通过知识点分解和联合设计教学体系,确保了理论与实践教学的一体化。
在此基础上,软件学院进一步整体规划与设计验证型实验、设计型实验和实习。工程能力训练体系以软件工程方法为指导,以验证型实验(软件工程知识和领域知识的简单个人应用,用于巩固和加深学生对于特定理论知识点的理解程度)、设计型实验(团队级综合软件工程课程实践、与应用相结合的领域课程实践,循序渐进地对学生构思、设计、实施和操作能力加以强化)、实习等阶段为主线,以特定软件工程方法系列实验和特定软件系统/技术系列实验为两翼,以前沿技术和学生创新为补充,全面提高学生的工程化实践能力。为期36周的全时制实习使学生体验了业界氛围和一线开发人员的工作环境,进一步锻炼其工程能力。为培养学生的工程创新思维和创新能力,工程能力训练体系中还引入了面向问题的教学模式、案例驱动的教学模式、开放性实验模式和学生创新小组模式等创新型实践教学方法。
以手持设备软件开发课程为例,整个课程实验作业见表2。前两个迭代主要以验证型实验为主,后两个迭代则是充分发挥团队合作的设计型实验,要求所有作品必须在Android或者iOS的市场中上线,获得真实的用户评价和建议并能据此改进,这样会给学生带来更好的前进动力和高质量的要求。迭代过程也强调教师对学生开发工作的跟踪和反馈,以帮助学生思考软件项目开发中的不足并持续改进。
除了工程技术能力的培养,南京大学软件学院还特别注意学生的知识产权和保密意识,开设了相关课程。学生在实习期开始时需要和企业签订知识产权及保密协议书,从而系统全面地培养学生的工程职业能力。这也正是GSwE2009和SWEBOK所要求的。
4.教学管理体系
软件工程管理中有一个著名的论断:没有高质量的开发过程,就没有高质量的软件。软件产品的质量与软件人才的培养质量有很大程度的一致性,因此教育教学的质量在很大程度上取决于教学过程的质量。南京大学软件学院创新性地将软件工程中的过程管理方法引入教学管理,从教学过程设计阶段就充分考虑质量保障的目标、方法和措施,并在教学实施的每个环节之中动态地进行质量跟踪和监控,通过不断提高教学过程的质量来确保教学目标的实现。
以对软件工程领域专业硕士生最重要的实习环节为例,南京大学软件学院开学初就为学生确定导师,第一学年在校期间由导师指导学生进行学术或工程型项目研发,第二小学期末学生向导师提交学术或工程型报告,经导师确认,启动实习。如导师认为报告不合格,可向学院申请延期3个月启动实习。
工程硕士研究生的实习须通过学院组织的双向选择程序,经学院工程发展中心批准备案后开始。实习研究生在实习期应该及时与指导教师保持联系。指导教师未及时与学生联系者须追究责任;对指导教师的联络置之不理者,学院将根据其拖延期相应顺延毕业时间。工程发展中心会定期检查师生交流的情况,确保实习期导师指导的顺利进行。研究生在实习期调整实习单位,必须有明确理由并报学院工程发展中心同意。凡未经批准自行调整实习单位,导致论文工作无法延续者,实习期重新计算,毕业时间相应顺延。
除此之外,学位论文也有一个严格的过程管理。学位论文的写作分为选题、开题报告、中期检查、论文提交等环节。学院通过每个节点的阶段性审查来控制整个论文写作的质量。
对于全日制研究生,规定在软件工程专业实践开始的第四个月与学位论文指导教师讨论选题,并在软件工程专业实践开始的5个月内完成开题报告。无故推迟完成开题报告,学院将对学生作延期毕业处理。所有研究生应在学位论文答辩前3个月向学位论文指导教师提交学位论文中期进展报告,如学位论文中期检查未获通过,学院和指导教师有权推迟相关研究生的答辩。所有研究生应在学位论文答辩前两个月向学位论文指导教师提交学位论文初稿,并在学位论文答辩前一个月向学位论文指导教师提交学位论文,以便启动软件工程专业实践成果评审、学位论文评阅等答辩前准备工作。如果在论文中发现学术不端行为,学院将对学生作出延期毕业处理。
5.结语
南京大学软件工程硕士课程体系、工程能力训练体系、教育管理体系实施5年以来,共毕业约600名研究生。他们的就业率和平均起薪一直在南京大学各院系中名列前茅。通过对他们就业的企事业单位的回访得知,这些毕业生陆续开始承担重要的技术和管理岗位,深受各方的好评。因此特撰写此文以供我国软件工程硕士教育体系设计者们参考。