1. 引言
随着创新驱动发展、“互联网+”等国家战略的推进,物联网、3D打印、大数据、人工智能、5G通信等新兴技术蓬勃发展,新业态、新产业不断出现,社会对工程科技人才的培养提出了更新要求,大学工科教育变革势在必行。2017年2月以来,教育部组织专家学者先后开展了一系列大学新工科建设研讨,形成了“复旦共识” [1]、“天大行动” [2] 和“北京指南” [3] 等纲领性文件,为工程教育创新改革指明了方向。但这些纲领性文件整体思维较为宏观,如何有效地将新工科的宏观理念落实在人才培养的具体过程中,尚需进行深入细致的探讨。“软件工程”是计算机及其相关专业人才培养的一门重要的核心课程,任务是使学生掌握软件开发和维护的理论、方法、技术、标准和工具等,具备借助工程化手段从事软件设计、开发、维护和项目管理、运营的能力。
本文总结了“软件工程”课程教学在新工科视角下存在的主要不足并分析了形成原因,介绍了CDIO (Conceive-Design-Implement-Operate,构思–设计–实现–运作)工程教育理念的基本内涵、国内外发展历程和应用趋势,构建了基于新工科视角的“软件工程”CDIO教学模式,即提出了“软件工程”CDIO教学模式的体系构架;以软件工程知识体(SWEBOK V3)为基准,结合实际构建“软件工程”教学知识体系;通过理念引入、概念建立、课程教学、软件生产实习、毕业设计等进行大跨度、无缝的渗透教学,将传统“软件工程”课程进行扩充性改造,使课程知识边界得到扩大,学生能力边界得到拓展,展望了下一步在软件工程教学中培养学生综合创新能力需要关注的新视点。
2. 新工科视角下“软件工程”教学的主要不足及形成原因
新工科 [4] 是指针对新兴产业的以物联网、数据科学和工业智能为核心的工科和云计算、大数据、区块链、虚拟现实、人工智能和机器人等应用于传统工科专业的升级改造所形成的新型工科,其内涵是以立德树人为引领,以应对变化、塑造未来为建设理念,以继承与创新、交叉与融合、协调与共享为主要途径,培养多元化、创新型卓越工程人才,其本质是“工科”,取向是“新”。
软件工程教育在迎来巨大的人才需求的同时,也面临着满足人才培养要求的巨大压力。这要求软件工程教育应主动对接工程实际,围绕工程需求,按照工程逻辑来构建学生的思维、知识及能力。目前,软件工程教育教学与新工科的要求存在一些明显不足 [5],这些不足主要表现在以下几个方面:
(1) 软件工程实际与软件工程教育存在壁垒。工程教育回归工程、服务社会,要求工程实际应有效地映射为工程教育的具体方案,工程教育的内容则应最大化体现工程实际。现实中,IT企业的工程实际与大学软件工程教育教学两个不同的体系之间存在着壁垒,部分教师缺乏工程经验的直观积累和对工程逻辑的必要认知,导致软件工程教育与工程实际产生偏离。
(2) 现有课程体系重视能力培养与遵循工程逻辑不够。教育教学的最终实施都离不开具体的课程,课程是教育教学目标的主要载体,软件工程教育教学也不例外。目前,软件工程课程体系对能力培养重视不够,过于强调知识灌输,课程体系不能很好地体现工程逻辑。
(3) 课程知识体系设计面临挑战。目前,软件工程课程知识体系都是基于知识传授的逻辑体系,而非能力培养的逻辑体系。由于历史沿革、师资力量等原因,软件工程教育教学对于专业性要求较高,但对课程知识体系与工程相结合,即如何培养学生遵循全周期、全流程工程逻辑以解决复杂工程问题的能力不够。
上述不足的形成原因是非常复杂的。任何教育教学模式都不可能脱离技术发展的特定历史背景,任何高校和教育教学参与者不可能游离于特定历史背景的制度范畴之外。从系统而理性的视角去看,以下几个方面 [6] 必然会对上述不足的形成产生重要影响:
(1) 新工科教育无既定人才培养模式。无论何种专业的新工科,都会受到所处时代的技术局限,缺乏既定人才培养理念和模式,短时间内难以满足相关产业领域对新型人才的迫切需求。同时,由于新工科往往产生于多个学科的交叉融合,表现出较强的学术活跃度和前沿性,相关产业领域技术变革、转型升级迅速,新经济对人才的需求与新工科教育创新人才培养滞后的矛盾难以避免。
(2) 教学科研渐行渐远的现实困境。现代大学作为一国科技创新的重要力量,在科研上追求卓越本无可厚非,但因此忽视教学和人才培养则背离了大学的应有之义。当前,由于高校教学科研的分轨发展,科研未能充分有效地融入教学,教学科研渐行渐远,不利于创新人才的培养。
(3) 传统课程及知识体系的单一性与新工科交叉性之间的矛盾。对于传统主流学科和课程而言,经过多年的沉淀已经形成了较为清晰的学科边界和完备的课程及相关知识体系。但对于新工科而言,其显著的多学科交叉特征和多向度知识结构对课程及其知识体系提出了新的要求。
总之,研究探索软件工程课程教学的新模式,既是新业态的不断出现提出的新要求,又是新工科建设不断发展的必然选择。
3. CDIO工程教育
CDIO [7] [8] 是由美国麻省理工学院和瑞典皇家工学院等机构联合创立的先进工程教育模式,代表了现行国际工程教育的最新成果。它根据卓越工程技术人员必须具备的知识、能力和素质,系统全面地定义了具有可操作性的能力培养、全面实施以及检验测评的12条标准,以产品研发到产品运行的生命周期为载体,让学生以主动的、实践的、课程之间有机联系的方式学习工程,其培养大纲将毕业生的能力分为工程基础知识、个人能力、人际团队能力和工程系统能力四个层面,以综合的培养方式使学生在这四个层面达到预定目标,实现知识、能力与素质一体化培养,成为既具备扎实的专业基础知识,又具备较强的专业技能与素养的创新型人才。
CDIO于2005年由汕头大学率先引入中国,并创造性地设计了基于项目设计为导向的EIP-CDIO工程教育模式,在专业培养架构、培养标准体系、一体化课程体系、教学体系以及质量保障和评估体系等方面进行了积极的探索和实践,这些探索和实践已成为中国高等工程教育界具有重要影响力的改革行动之一。教育部也成立了相关推广工作组,已有汕头大学、成都信息工程大学等40余所高校参与试点,部分高校已经将CDIO的理念延伸至教学改革的各个领域,但多数仍局限于机械、电气、化工、土木、农业等类专业。
通过对已有文献的梳理分析发现,CDIO在我国的发展应用呈现以下趋势:
(1) 本土化实践探索。研究者基于本土特征和产业需求,陆续提出EIP-CDIO理念 [9]、CDIOCMM能力成熟度模型 [10]、CDIO-CBE (能力本位CDIO模式) [11]、SCCIM-CDIO [12]、TOPCARESCDIO [13]、N + CDIO [14] 等,为我国高校培养大学生创新精神和实践能力,提供了工程教育本土模式。
(2) 专业性应用总结。借鉴“实践导向”与“全过程性”等核心理念,研究者对测控 [15]、电工电子 [16]、新型临床药学 [17] 等专业人才的培养,提出了基于CDIO工程能力要求和以项目驱动方式开展教学的人才培养方案、课程体系、工程能力培养过程和措施等,立体化、多层次地循序渐进提升学生工程实践能力。
(3) 兼容性模式探索。如在数理等公共基础课程教育教学改革过程中创新提出MPCCDIO教育教学模式 [18]、校企双导师制的教学模式引入CDIO工程教育理念 [19] 等,培养学生的自主学习能力、创新意识、团队合作能力等综合素养。
上述应用和发展表明,CDIO本身具备的系统性、科学性和可操作性等特点,能够切实提高人才培养模式改革的科学性与系统性,其应用已成为推进高等工程教育改革、提升工程人才培养质量、推进工程专业认证的重要手段,对于新工科建设具有重要的参考价值和实践意义,利用CDIO推进新工科行动不失为一条值得尝试的道路。
根据对国内外工程教育模式改革的分析和总结,我们发现:CDIO基于工程全周期、全方位的工程教育模式将工程知识和工程问题紧密结合起来,有效培养学生的实践与应用能力,取得了较理想的效果,与我国“新工科”回归工程之内涵具有较高的契合度。我们认为:将此模式应用到新工科建设中,无疑是一条非常有实践价值的途径。基于此,针对目前“软件工程”课程教学中存在的主要问题,结合CDIO工程教育模式的意愿、大纲和标准等核心文件要求,构建了新工科视角下软件工程课程教学新模式。
4. “软件工程”CDIO教学模式构建
4.1. “软件工程”CDIO教学模式的体系构架
“软件工程”CDIO教学模式的体系架构如图1所示。该架构由CDIO系统框架、教学实践框架和CDIO能力评价框架三部分组成。其中,CDIO系统框架将CDIO的理念精化为大纲,再由大纲精化为可执行的步骤;教学实施框架则依据CDIO的实施步骤设计相对应的教学实施过程;能力评价框架是依据CDIO的能力评价大纲对教学实施的结果进行评价。该构架以项目为牵引,以知识传授为主体,以能力提升为核心,以素质教育为目标,以案例教学为手段,通过课堂翻转、学习小组讨论、项目组研讨和校企融合等方式,实现软件工程课程集知识、能力与素质教育融为一体,相互渗透,协调发展的教学目标。相较于传统教学模式,CDIO教学模式使软件工程教学与工程项目实践高度契合,集系统化的理论知识与科学化的项目实践于一体,更加注重学生思维能力、沟通能力等综合能力的培养,更加注重工程项目管理,更加注重工程项目与经济、社会的相互影响,更加注重学科知识体系构建。
Figure 1. Structure of “software engineering” CDIO instruction mode
图1. “软件工程”CDIO教学模式的体系构架
4.2. 教学知识体系确立
2004年,IEEE Computer Society 与ACM(Association for Computing Machinery)联合制定“软件工程知识体SWEBOK (Software Engineering Body of Knowledge)”,给出软件工程领域的十大核心知识域(Knowledge Areas, KA)。SWEBOK 2004的提出极大地推动了软件工程和软件工程专业教育的发展。国内大多数软件工程教学都参考了SWEBOK 2004。随着软件行业的发展、新观点的出现和知识体的增长,IEEE又推出SWEBOK V3 [20]。
SWEBOK V3对卓越软件人才的定位更加清晰,充分考虑了企业的诉求,即:具有扎实的数学基础、计算基础、工程经济基础和工程基础,受过良好软件工程专业教育和训练的人才,才能成为软件行业的中坚力量和领军人物。在SWEBOK V3的框架下,软件工程教育培养的应该是熟悉企业文化、具有团队合作与交流能力的“可用的”软件人才,而不是“还需要实习的”准软件人才。这与教育部正在实行的“卓越工程师教育培养计划”目标是完全一致的。IEEE SWEBOK V3把软件工程划分为4个教育基础知识域、11个实践知识域和7个辅助学科域,如表1所示。
按照各专业人才培养方案的设计和课程教学时数的要求,上述SWEBOK V3内容不可能全部作为软件工程课程的教学内容,有必要进行分解和裁剪。其基本思路是:将教育基础知识域的内容作为各专业基础课的教学内容,辅助学科领域的内容作为专业基础课和专业课的内容,实践知识域中的内容作为软件工程课程的主体内容。其基本关系是:教育基础知识域和辅助学科领域是实践知识域的基础和支撑。
为保证教学内容与国际发展接轨,体现教学内容的科学性和完整性,我们以SWEBOK V3为基准,结合实践构建软件工程教学知识体系。软件工程教学知识体系由知识领域(Area)、知识单元(Unit)和知识点(Topic)三个层次组成。最高层是知识领域,代表一个特定的学科子领域,用于组织、分类和描述软件工程知识体系的顶层概貌。知识领域之下又划分成更小的知识单元,代表各个知识领域中的不同方向。知识点是整个体系结构中的最底层,代表知识单元中单独的主题模块。软件工程教学知识体系的知识领域和知识单元如表2所示。
Table 1. Software engineering knowledge areas
表1. 软件工程知识领域
Table 2. Software engineering knowledge areas and knowledge unit
表2. 软件工程知识域和知识单元
4.3. 教学过程的设计与实践
4.3.1. W2H递进渗透逻辑框架
为把软件工程课堂讲授的内容与CDIO大纲契合,更好地实现教学效果与能力评价的匹配,我们设计课堂讲授的W2H递进渗透框架。该框架包括一个引擎和三个逻辑层面。一个引擎是“以问题为中心”;三个逻辑层面是基于理念和概念的“是什么(What)”层、基于原因和机理的“为什么(Why)”层和基于实践方法的“怎么办(How)”层,它们之间的关系如图2所示。
4.3.2. 递进渗透过程
软件工程教学知识体系内容丰富、结构复杂,单独一门软件工程课程无法承载,需要进行一系列的递进渗透教学,即以知识点为渗透因子,将教育基础知识域和辅助学科域的内容,递进地分配到不同阶段学习过程中,如第一学年在“计算机导论”中引入了计算机信息技术素养、职业道德和软件工程思想;第二学年在“C程序设计”和“数据结构”中强化模块化思想、算法设计和编程规范;第三学年在“数据库系统”等技术课程中进行大案例教学;第四学年第一学期开设“软件工程”及进行案例化软件生产实习,第二学期进行毕业实习和毕业设计,进一步培养团队协作精神、交流沟通技能以及职业实践技能,让软件工程知识得到升华。
Figure 2. W2HLogical framework of progressive infiltration
图2. W2H递进渗透逻辑框架
软件工程教学知识体系通过理念引入、概念建立、课程教学、案例化软件生产实习、毕业设计等进行大跨度、无缝的渗透式教学(如图3所示),在这种“情境化”渗透平台上,将传统的一门软件工程课程进行扩充性改造,知识体系实际覆盖SWEBOK V3教育基础知识域、实践知识域和辅助学科域,课程边界得到扩大,学生的工程化能力边界得到分层次、有步骤的系统拓展,为学生构建了一个坚实的职业发展平台。
Figure 3. Diagram of infiltration teaching
图3. 渗透教学示意图
4.4. 模式的实例化应用
4.4.1. 实例化应用平台
中国气象数据网 [21] 作为气象云的主要门户应用系统,是中国气象局面向国内外用户开放气象数据资源的支撑平台,是国家科技基础条件平台的重要组成部分,可为各类教学、科研项目提供有效在线数据服务和离线数据服务。
4.4.2. 实例化应用内容
软件工程课程教学突破传统作业模式,采用案例化作业。随着教学进程的不断推进,以一个案例作业贯穿课程教学始终,如我们依托中国气象数据网这一平台进行实例化应用教学,“基于Python的气象大数据分析及其可视化表达”就是其中一个。该案例化作业的主要内容包括:(1) 自主登录中国气象数据网,注册成为免费系统用户;(2) 自主获取气象的领域知识,主要途径有系统平台学习和与校外气象领域专家交流探讨等;(3) 从平台自主下载相关气象数据;(4) 进行数据清洗与数据集成;(5) 数据建模与分析;(6) 数据的可视化表达等。
由于案例化作业的内容对课程教学内容边界进行了大跨度的拓展,大家的学习潜能被广泛调动起来,部分同学将此案例进一步延伸扩展成为毕业设计的内容,毕业设计答辩成绩优良以上的占比在70%左右,学校教学督导专家在答辩现场也对同学们所做的工作表现出浓厚的兴趣并给予高度评价和充分肯定。
5. 教学成效分析
通过多年在计算机科学与技术、信息安全、物联网工程和网络工程等专业的“软件工程”课程教学改革的实践,整体上看,基于新工科视角的“软件工程”CDIO教学模式的应用取得了以下主要成效:
(1) 学生的软件工程综合素养获得全面提升。学生通过课程实践所开发的软件系统代码规模平均超出4000行,设计文档规范性明显提高;软件系统的集成性和综合性明显提高;软件质量意识和质量水平得到提升;总结、讨论时的分析、表达等方面综合素养得到了显著提升;基于互联网的现代软件工程技术和工具应用得到全面掌握;课程设计的累积成果向毕业设计转化和延伸等。
(2) 学生毕业后的社会竞争力得到明显提高。主要表现在:一是进入国外高水平大学和国内985、211大学的深造人数逐年提高;二是相关专业毕业生入职IT行业知名企业的比例不断提高;三是相关专业毕业生就业向IT行业发达城市和地区聚集。
(3) 教学与科研相互促进使得教学团队师资水平整体提高。四年来,“软件工程”课程组成员发表相关专业高水平论文近20篇,主持或参与包括国家自然科学基金在内的科研、教研项目8项,3获得博士学位,1人晋升为教授。
6. 总结与展望
软件工程内容丰富,发展迅速,作为计算机及其相关专业一门重要的核心课程,其教学质量对学生职业实践能力的培养影响深远。突破传统的软件工程教学模式,基于新工科视角的“软件工程”CDIO教学模式秉承国际工程教育先进理念,教学知识体系完善,教学形式符合软件人才的市场需求,教学目标注重学生的多维度能力整合,实践效果总体良好。
如何从单纯的技术发展上升到更高的层次,进而领悟新工业革命的影响,从更深的层次体会技术在工业和社会中的走向以及未来技术融合的大趋势,这些都是未来卓越的工程师及技术人才需要关注和思考的问题,为此,未来的软件工程教育教学需要注重从以下几个视点 [22] 对学生进行综合创新能力的培养:
(1) 问题视点。培养“问题视野”比“知识视野”更重要的意识。中国教育中存在的一个普遍问题,便是重知识、轻问题。教师多看重知识的完整性、系统性,而不注重引导学生联系“问题”,不注重拓宽学生的问题视野。
(2) 趋势视点。卓越的工程师不能局限于仅仅掌握自己所从事专业领域的一些知识,还需要了解技术综合发展的大趋势以及对相关专业或行业的影响,或者自己所从事的专业或行业对大趋势可能的贡献等,以更为开阔的视野审视技术发展的前瞻趋势。
(3) 逻辑视点。网络技术的发展,使得知识的逻辑在悄悄变化,如知识的存在逻辑变化:知识不仅存在于老师那里和书本中,还存在于网络和人工智能系统中,甚至存在于看似垃圾的数据里(大数据);知识的传递逻辑变化:网络知识传递呈现碎片化、去中心化特征等。
软件工程教学应该摒弃“以教师为中心”的教育模式,利用学生的“群体智能”和自主学习能力,使学生掌握的知识更“完整”、更“系统”,使学生的“问题视野”更开阔,这些都是需要在教学实践中进一步探究的问题。
基金项目
湖南省自然科学基金(2018JJ2136);湖南省教育厅科学研究项目(20A175);湖南科技大学潇湘学院教学改革研究项目(G31962)。