为培养适应新经济发展的新型工科人才,教育部发起了新工科建设战略,开启了我国高等工程教育改革新路径 [1]。作为新工科建设中数量最多、影响最大的专业,计算机类专业建设和教育提升中,首要内容是学生系统能力培养 [2]。教育部计算机类专业教学指导委员会于2010年即提出在计算机类专业教育中树立系统观和加强系统能力培养 [3],经过多年研究和实践,形成了以南京大学、北京航空航天大学、清华大学等高校为代表的多种培养模式 [4-6],并于 2015 年展开试点工作。作为首批试点单位,山东工商学院根据学校定位,借鉴名校经验,在软件工程、计算机科学等专业展开了应用型高校系统能力培养探索与实践工作。
近年来,多位学者从不同层次、不同角度对系统能力内涵进行了阐述,虽然表述不同,但均强调计算机类专业应重视“系统观”教育,使学生具备计算机系统层面的认知与设计能力,并能综合运用多种知识解决复杂工程问题。针对现有系统能力培养中存在的问题,多个学校进行了各具特点的探索和实践。北京航空航天大学按照“三工”教学准则,围绕“一个CPU、一个操作系统、一个编译器”展开系统能力培养改革 [4];清华大学提出“注重系统、强调实验、培养能力”教学理念,统一规划计算机系统类教学内容和实践体系 [5];南京大学基于“IA32+Linux+GCC+C”平 台, 以 程 序 员 视角,建立高级语言、指令集体系结构、操作系统、编译器等之间相互关联,培养学生的“系统观”[6]。王志英教授将这些系统能力培养经验总结为4 种模式,并在新工科背景下,从计算机教学的角度,将计算机系统划分为 3 个层次,即强调计算机运行系统设计和开发的计算机基础系统、强调计算机领域专门系统设计和开发的计算机领域系统,以及强调各种应用系统设计开发的计算机应用系统 [2]。3 个层次的定义,将计算机系统能力培养从计算机基础系统扩展到了更广泛的范围,使得不同层次高校的各类计算类专业可以选择合适自己的系统能力培养模式。
2 软件工程系统能力特点
软件工程是用系统的、规范的、可度量的方法开发、运行、维护软件的学科,兼具科学性教育属性和工程教育属性 [7]。作为计算机类专业,软件工程专业学生应具有包含系统认知、系统设计、系统开发和系统应用在内的计算机系统能力 [3];作为工程类专业,软件工程专业学生应具有包括工程专项能力、工程系统能力和工程创新能力三大模块在内的工程能力,其中工程系统能力是对工程专项能力的综合,同时也是工程创新能力的基础,包括系统分解、系统应变、系统集成和系统协调能力 [8]。因此,软件工程专业应着重培养学生的计算机应用系统能力和工程系统能力,二者相辅相成,共同构成软件工程系统能力。
2.1 计算机应用系统能力
软件工程计算基础知识领域的大部分内容包含于计算机科学专业的基础课程内 [9],但由于二者在人才培养、研究领域等方面的侧重,软件工程系统能力培养所处的计算机系统层次与计算机科学专业明显不同,更接近于计算机应用系统层次,如图 1 所示。为培养学生调试、优化、编制高效程序,解决现代复杂软件工程问题的能力,一方面学生应从软硬件交界面 ISA 出发,了解底层硬件、操作系统、编译系统的工作原理及相互作用机制,另一方面应深刻理解计算机基础系统、算法与程序、数据处理及网络通信技术之间的相互关系,建立完整的计算机应用系统概念。
2.2 工程系统能力
工程系统能力是解决复杂工程问题的重要能力要素之一 [8]。具体到软件工程,可以理解为以软件生命周期整体论知识为基础,系统运用需求分析、体系结构设计、软件测试、管理和维护等方法和技术,应对各种风险,协调团队完成复杂软件工程问题求解的能力。软件生命周期具有一定的阶段性特征,但同时又有很强的关联性,如软件需求分析与软件设计、测试、维护、配置管理、质量保证等知识领域紧密相关,软件质量与软件测试密切相关等;特别是在现代软件工程问题的复杂性和用户需求的多变性情况下,以迭代和敏捷开发为代表的适应性软件开发生命周期模型逐渐取代了以瀑布模型为代表的预测型模型,各个阶段的联系更加紧密,边界更为模糊。因此,软件工程学科也应着重培养学生的工程系统观,使学生能够以软件生命周期整体去看待软件系统,系统运用各种知识实现复杂软件工程问题的求解。
2.3 软件工程计算机应用系统能力和工程系统能力紧密关联
在软件工程知识体系中,需求分析、软件设计和软件构造等知识领域与计算基础知识领域紧密相关。如面向对象思想、多态和反射机制、程序设计模式等是各类软件工程方法的基石,在深层次上影响软件设计、需求分析和软件构造的技术和方法。因此,引导学生将工程类的课程和计算机系统类的课程关联起来学习,有助于学生形成系统的软件工程专业知识体系,提高解决复杂软件工程问题的“大系统”能力。
3 软件工程系统能力培养存在的主要问题
计算机系统能力培养方面普遍存在缺乏系统贯穿课程、各门课程独立规划、系统开发规模及综合性不足等问题 [3-5],在软件工程专业同样存在;除此之外,软件工程系统能力培养还存在以下主要问题。
3.1 课程体系设置没有考虑软件工程专业系统能力培养特点
一些高校在设置软件工程专业计算机基础知识领域课程体系时,照搬计算机科学专业的知识体系 [10],没有考虑软件工程专业的特点,不仅缺乏对软件工程专业系统能力培养的支撑,而且占用了大量学分。在设置软件工程专业工程类知识体系时,同样存在各门课程独立规划、独立教学的问题,造成软件需求分析、体系结构设计、软件测试、质量保证等核心课程各自为战、知识点冗余、衔接关系脱节,难以形成系统的工程能力培养体系。
3.2 缺乏大规模复杂软件工程问题训练
软件工程是针对大规模复杂软件引发的“软件危机”提出来的,学生必须进行一定规模的复杂软件工程问题训练,才能暴露软件开发和维护中的深刻问题。但目前相当多的学校只是设置了若干小规模的实验或实训,或者虽然设置了大规模的软件开发项目,但学生在训练时,并没有按照软件工程流程进行软件开发和过程管理,学生难以融会贯通软件工程方法和技术,形成软件工程系统能力。
3.3 缺乏团队能力训练
团队能力是软件工程师重要的职业技能之一,“团队”一词在 C-SWEBOK 中出现了 110 余次,及几乎所有的软件工程过程 [9]。一些高校软件工程专业缺乏团队能力训练和考核,学生在实践中仍然“单打独斗”,或者虽然组队完成项目,但团队成员中缺乏沟通、协调,导致模块接口出现错误、文档与代码不一致、与用户需求存在差异等问题层出不穷 [11]。
3.4 缺乏文档能力训练
按照软件工程规范提供全面、清晰、准确的文档是软件工程师的责任,包括但不限于软件需求、设计、测试等各种文档 [9]。但在实践中,学生往往关注的是编程和系统实现,没有意识到文档的重要性,忽略软件文档的撰写,或者文档撰写比较随意,不符合软件工程标准;同时,教师对学生文档的准确性、规范性、全面性等方面缺乏严格的要求和考核,导致学生文档能力严重欠缺。
4 软件工程系统能力培养改革实践
本校软件工程专业依据中国工程教育专业认证要求,借鉴名校经验,围绕软件工程系统能力培养持续改革,建立了符合自身特点的软件工程课程体系。
4.1 课程体系改革总体思路
课程体系改革的总体思路是“系统导向、强化实践、培养能力”。在全面分析 C-SWEBOK定义的软件工程知识领域的基础上,根据对软件工程系统能力特点的理解,将相关课程划分为计算机应用系统能力、工程系统能力和工程实训 3个课程群,如图 2 所示。计算机应用系统能力和工程系统能力课程群主要以培养学生系统观为目标,全面梳理各门课程知识点之间的衔接关系,合理压缩课程学分;压缩下来的学分用于加强学生工程实践,在每学期均独立开出 1 门实训课,构建工程实训课程群,通过系统规划各门实践课的实训内容,逐次夯实学生的系统能力。
4.2 计算机应用系统能力课程群
将计算机基础系统相关的计算机系统基础、操作系统两门课程,与程序设计基础、计算机网络与 Web 技术、面向对象程序设计、数据库系统 4 门课程,组成计算机应用系统能力课程群。相对于传统计算机基础系统能力培养课程体系,本课程群最大的变化是在保证知识单元覆盖 C-SWEBOK 定义的计算机基础知识域的前提下,删除了组成原理、数字逻、编译原理等系统类课程,并新开设计算机系统基础作为系统贯穿课程,该课程使学生以程序员视角,建立高级语言、ISA、OS 以及编译器、链接器之间的关联,对指令在硬件上的执行过程和执行机制有一定的认识,课程采用袁春风教授的《计算机系统基础》作为教材。
4.3 工程系统能力课程群
通过分析 C-SWEBOK 定义的软件工程知识体,将紧密相关的软件需求、设计、构造、测试、质量等核心知识单元分配到相关课程中,建立工程系统能力课程群。课程设置和知识单元分配按照以下原则。(1)设置软件工程过程作为系统贯穿课程。该课程以系统工程视角,描述软件演化过程,概述各核心知识域之间的关系,使学生建立系统的工程观。(2)将知识域中所有与质量相关的知识单元合并到软件测试与质量保证课程中,使学生建立系统的质量观。(3)以课程产出为目标,将关联度强的知识单元分配到一门课程中。如软件需求分析需要学生完成一个规范、完整的需求规格说明书,内容包含用户界面、实体关系、静态对象模型等,虽然这些知识单元属于软件设计知识域,但考虑需求规格说明书的完整性和规范性,将其分配到软件需求分析课程中。(4)“纵向分析”与“横向联系”相结合,合理分配知识单元。软件工程方法和技术需要计算机基础知识单元作为支撑,如面向对象需求分析方法需要学生掌握面向对象思想,软件构造技术需要学生掌握并发原语、多态和反射技术等,因此需要在纵向分析课程群内课程知识点的基础上,横向联系计算机应用系统能力课程群内的知识单元,综合考虑。
4.4 工程实训课程群
每学期安排 1 次 2—8 周的工程实训课程,构建工程实训课程群,逐次夯实学生系统能力。大部分课程采用团队训练模式,培养学生团队协作能力;部分课程邀请企业高级工程师共同实施,并随着技术发展动态调整授课内容,目前课程群内各课程能力目标如表 1 所示。软件工程综合实践是软件专业出口课程,项目组要完成 8 000 行以上的代码,并完成项目需求规格说明书、体系结构设计规格说明书、详细设计规格说明书以及测试文档等,文档工作量在 800 页以上。由于其综合性和复杂性,团队的项目完成周期通常是整个学期,部分需要 2 个学期;课程组织形式类似于毕业设计,每个项目团队由一位教师全程指导其进行项目开发、文档撰写等工作;课程考核采用答辩形式,由全体指导教师共同评分,考察项目工作量和创新性、需求及设计正确性、文档规范性、功能完成度、文档与实现的一致性等,综合判断学生能力是否达到专业毕业要求。
5 结 语
围绕软件工程系统能力培养进行的课程体系改革,有效提高了学生解决复杂软件工程问题的能力,尤其是学生团队合作及文档能力,受到了用人单位普遍好评。同时,在软件工程系统能力培养改革中仍然存在一些困难和问题,如工程实训课程群对所有教师的工程实践能力提出了较高的要求,“双师型”队伍的建设迫在眉睫;软件工程综合实践课程安排在第 7 学期,严重影响了学生考研等。在后续的改革中,我校软件工程专业将秉承中国工程教育专业认证“持续改进”的要求,继续向知名高校学习,加强校企合作,综合考虑各方面因素,改革教学方法,逐步完善课程体系,培养适合于新工科要求的高素质软件工程人才。
参考文献:
[1] 吴爱华, 侯永峰, 杨秋波, 等. 加快发展和建设新工科 主动适应和引领新经济[J]. 高等工程教育研究, 2017(1): 1-9.
[2] 言十. 新工科建设与系统能力培养[J]. 计算机教育, 2018(7): 1-4.
[3] 王志英, 周兴社, 袁春风, 等. 计算机专业学生系统能力培养和系统课程体系设置研究[J]. 计算机教育, 2013(9): 1-6.
[4] 高小鹏. 计算机专业系统能力培养的技术途径[J]. 中国大学教学, 2014(8): 53-57, 34.
[5] 刘卫东, 张悠慧, 向勇, 等. 面向系统能力培养的计算机专业课程体系建设实践[J]. 中国大学教学, 2014(8): 48-52.
[6] 袁春风, 王帅. 大学生计算机专业教育应重视“系统观”培养[J]. 中国大学教学, 2013(12): 41-46.
[7] 教育部高等学校软件工程专业教学指导分委员会. 高等学校软件工程专业规范[M]. 北京: 高等教育出版社, 2011.
[8] 李立新, 王文军, 高红江. 面向工程系统能力提升的土建类专业培养方案优化[J]. 教育现代化杂志, 2019(40): 146-150.
[9] 教育部高等学校软件工程专业教学指导委员会C-SWBOK编写组. 中国软件工程知识体系C-SWEBOK[M]. 北京: 高等教育出版社, 2018.
[10] 张锦, 刘宏. 软件工程专业人才培养模式实践与思考[J], 软件导刊, 2020(1): 11-14.
[11] 赵军霞, 焦铬, 张剑. 新工科背景下的软件工程实践课程教学改革[J]. 计算机教育, 2019(11): 69-72.
网为您提供的关于《新工科背景下软件工程系统能力培养探索》的内容,如需查看更多硕士毕业论文范文,查找硕士论文、博士论文、研究生论文参考资料,欢迎访问硕士论文网软件工程应用论文栏目。