一、引言
2011 年8 月,教育部首次在48 所高校增设软件工程一级学科博士点和硕士点,到目前为止拥有软件工程一级学科硕士点的学校达到了百余所。这对于软件工程学科而言,既是机遇也是挑战。虽然软件工程专业作为一级学科的时间并不长,但各学校通过对软件工程学科和自身优势的不断探索和研究,依据自身的师资力量、地理位置、商业环境等优势逐步摸索出适合自身的办学体系,使软件工程学科得到了一定发展。软件工程学科是从计算机科学与技术学科中分化而来,虽然现在已经独立成为一级学科,但由于其与计算机科学与技术学科的紧密联系,在其发展体系中,仍有很多内容与后者相重叠,特别是与计算机科学与技术下的二级学科计算机软件与理论和计算机应用技术极为相似。为了深入理解软件工程学科内涵,提高研究生培养质量,本文根据60 所具有软件工程一级学科博士点( 39 个单位) 和一级学科硕士点( 21 个单位) 的高校官网,对其公布的研究方向和培养方案进行统计分析,并对其中拥有二级学科计算机软件与理论的高校的研究方向和培养方案进行了对比分析,期望明确两个学科的区别与联系,以便深入理解软件工程专业的学科内涵,不断提高研究生培养质量。
二、两学科在研究方向设置上的比较
( 一) 软件工程学科的研究方向
鉴于师资力量和办学优势不同,每个学校设置的软件工程专业的研究方向也有所差异,研究方向的数目为1 ~ 20 个不等,大多数高校为4 ~7 个。经过统计,60 所高校总共有256 个研究方向,为便于分析与比较,将这256 个方向按照研究内容进行归类后得到24 个方向,其分布如图1 所示。由图1 可以看出,开设软件工程理论方向的高校最多占60%,其次是智能服务与云计算占48%,多媒体应用技术最少约占3%; 涉及软件相关方向的有软件工程理论嵌入式软件开发 软件技术与理论等14 个研究方向,占到了总方向数的58. 3%; 其他研究方向包括占比在第三至第五的3 个方向网络与信息安全 数据挖掘与大数据处理和人工智能也大多涵盖在计算机科学与技术下的另一个二级学科计算机应用技术中。从关于研究方向设置的统计分析来看,软件工程学科与计算机应用技术学科还有很多的交叉。
( 二) 计算机软件与理论的研究方向
除与计算机应用技术学科在方向设置上有一定的交叉外,软件工程还与计算机软件与理论专业一脉相承。为了更好地区分这两个学科,本文在上述60 所设置软件工程学科的高校中,对其中设置计算机软件与理论学科的、根据官网可以找到的16 所高校的研究方向进行统计,得到了105 个研究方向。在此基础上根据其研究内容进行归类,得到24 个研究方向。按其所占比例从高到低进行排序,得到其研究方向的分布如图2所示。从图2 可以看出,计算机软件与理论专业的研究方向也比较广泛,开设比例从60%到5%各不相同。其中开设学校最多的是分布式计算和数据挖掘与大数据处理,最少的为软件体系结构。涉及软件的研究方向共11个,所占比例为45. 8%,其他研究方向同样也涵盖在计算机应用技术二级学科中。
(三) 软件工程与计算机软件与理论学科在研究方向上的对比
虽然从官网上得到的计算机软件与理论专业的研究方向不够完全, 两者仍存在很多相似之处。为了更好地分析两个学科在方向设置上的异同,按照软件工程学科研究方向设置的比例进行排列,与计算机软件与理论设置的方向进行了对比。
虽然两学科设置研究方向的学校比例有所差异,研究侧重有所不同,但是两者一致或相似的研究方向多达18 个,相似度为75%。软件工程专业单独的研究方向有6 个,包括数字媒体分析与计算软件测试 软件系统设计与实现软件项目管理 信息系统管理和语义技术,偏重于软件系统的设计。计算机软件与理论专业单独的研究方向也有6 个,分布式计算程序语言设计 电子商务 机器学习 实时系统和知识表示与知识工程,更偏重于计算机理论和计算机应用。关于两个学科设置的研究方向相似程度的占比分析,其中软件工程学科单独设置的研究方向所占比例为25%; 相似度高于70% 的研究方向占到了25%,不足20% 的仅为8. 33%。由此可以得出结论: 两个学科在研究方向的设置上非常相似,也说明软件工程学科在方向设置上还没有摆脱计算机软件与理论的影响,基本停留在计算机软件或系统设计层面上,还需对软件工程学科做进一步地探究,根据各高校特点科学合理地设置研究方向。
三、两学科在培养方案上的比较
( 一) 软件工程专业的培养方案
在上述60 所高校中通过查询和统计其官网的公开数据,得到了25 所高校软件工程专业的培养方案。这25 所高校制定的培养方案各不相同,除去政治、英语等公共基础课程之外,总共开设了161 门课程( 包括专业基础课、专业课、选修课) 。将课程按照涉及的领域、包含的内容进行归类总结后得到15 个类别( 不区分专业基础课、专业课、选修课) ,其在各统计学校中开设的情况如图4 所示。从图中可以看出,算法设计类的课程开设高校最多,占94%; 中文信息处理技术类的课程所占比例最少,为24%; 与软件工程紧密相关的课程包括: 软件设计方法与度量 ( 88%) 、软件工程方法( 64%) 、嵌入式软件设计 ( 56%) 和项目管理 ( 32%) 等5 类课程,占课程总类别的33. 33%; 有80%以上的学校开设了网络信息从上可以看出,对于软件工程专业的课程培养体系,软件工程学科的专业课程设置较为合理,更侧重于培养学生的学科知识和技能。
( 二) 计算机软件与理论专业的培养方案
为了更好地对比软件工程专业与计算机软件与理论培养方案的区别,通过登陆16 所高校的官方网站进行查询,得到9 所学校计算机软件与理论专业的培养方案。同样的,除英语、政治等公共基础课程之外,总共有74 门课程( 包括专业基础课、专业课、选修课) 。按照课程涉及的领域、包含的内容将其归为13 类( 不区分专业基础课、专业课、选修课) ,课程开设情况如图5 所示。计算机软件与理论专业开设的课程中,算法设计类课程开设比例为100%,即上述9 所高校都开设了该课程; 软件开发类课程所占比例最少,为11%; 这15 类课程中包含软件工程 嵌入式软件系统和软件开发共3 类软件相关课程,占到总课程类别的23%。开设比例比较多的类别为计算技术数据库理论计算机网络与安全和专业基础课程,涉及的范围也比较广泛。
( 三) 两学科培养方案的对比
以上对软件工程和计算机软件与理论两个学科培养方案的统计与分析可知,两者开设的课程虽然各不相同,但彼此有相似之处,按照软件工程专业课程开设比例进行排列,与计算机软件与理论学科开设的课程进行比较,虽然两学科开设课程学校的比例有所差别,但课程类别基本相同,软件工程学科除包含计算机软件与理论所有课程类别,只多开设了两门课程,两者课程的一致度高达86. 7%。从两个学科开设课程相似度的比较来看,其中软件工程专业单独开设的课程所占比例为13. 3%; 开设课程比例完全相同的为13. 3%;同一课程类别开设学校比例相似度高于70% 的占了80%,对于这些课程而言,两个学科的开设情况是一致的。综上可知,对于软件工程专业的培养体系,本质上与计算机软件与理论专业是一致的,并没有太大的区别。
四、几点思考
在传统软件工程学科培养模式的基础上,应结合信息技术发展的最新趋势,凝练研究方向、制定科学先进的课程体系。第一,由面向服务的软件工程方法向面向数据的软件工程方法转变。大数据时代的到来对软件工程方法提出了新的要求,数据的获取与存储、组织与管理、分析与应用等都离不开软件的支持,软件的作用正向计算、存储、数据中心架构甚至整个IT 环境蔓延。因此,在教学中应体现软件工程方法学的新趋势。第二,软件开发模式由封闭转向开放,软件开发周期大幅缩短。作为信息技术的核心,软件系统正变得巨大且复杂,而网络化软件已经成为网络计算和软件技术产业发展的必争之地。网络软件开发人员已由专业走向大众,通过实现分享、交互和群体智慧,转向协同开发、合作创新、同行及用户评价模式。同样的,在教学中要向学生介绍这种软件开发模式。第三,服务计算为软件的定制化奠定基础。在互联网和云计算环境下,各种软件技术的有效组合使软件发生根本变革 软件即服务( software as a Service,SaaS) ,这种理念也将使软件教学变得更加容易。在教学和研究中应重点关注以服务为导向的架构( SOA) 方法论、参考架构、SOA 工具平台之间的工作模式等。第四,普适计算是物联网、移动互联网环境下实现智能化服务的关键。随着移动设备、智能手机和传感器技术的迅速发展,实现人、机、物的相互融合成为可能。在课程体系中增加情景感知、智能家居、参与感知等普适计算方向的课程,可使学生了解为用户提供更透明、更智能、更广泛、更绿色、更安全的一体化服务,构建未来高度和谐的环境的发展趋势和重要作用。第五,软件开发工具与平台在新时代软件工程中起着重要作用。目前软件开发语言大多基于C + +、Java 等,在网络环境和云平台下如何进行软件开发在教学中几乎都未体现,而在多个服务器上实现应用的扩展极为重要,因此在教学中选择好的软件开发工具或平台作为案例讲解,不仅可以为学生展示在这些平台下进行软件开发的各个环节,而且有助于提高软件开发效率。
五、总结
总之,本文对60 所高校的软件工程学科的研究方向和培养方案进行了统计和分析,并与其中设有计算机软件与理论学科的相应研究方向和培养方案进行了比较,两者研究方向的相似度达到75%,培养课程的相似度达86. 7%。从这一结果可以看出软件工程学科并没有找到自身的发展体系,各高校对软件工程学科内涵的理解并不十分清晰,更谈不上促进学科发展、提高研究生培养质量。未来必须明确软件工程学科研究生应掌握的学科基础和专门知识,构建以数学、计算机科学、系统科学、管理学为基础,以软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程方法和工具、软件质量等为核心的知识体系,以软件技术与软件系统为着力点,推进软件工程学科发展,培养具有软件开发与管理的高层次创新性人才,更好地满足社会的需求。