基于CDIO的软件工程专业课程体系设计探索
2021-05-07
(南华大学计算机学院 湖南·衡阳 421001)
2019年国务院政府工作报告中提出要打造工业互联网平台,拓展“智能+”,为制造业转型升级赋能。在“云大智链”等新技术与实体经济相结合的背景下,云计算、大数据等新技术将达到7000亿元左右的市场规模。2020年相关技术人才需求量约为210万,近几年内相关人才需求的增速将保持在40%左右。然而,众多软件工程专业毕业学生很难适应专业相关的工作。造成这种尴尬困境的主要原因是,目前毕业生能力达不到软件产业市场要求,尤其是较高工程素养和工程实践经验、具有团队合作能力和持续学习能力的软件人才不足。这种毕业生的能力和素质与市场需求之间存在鸿沟的现象也是工程教育领域普遍存在的问题。
为此,国内外工程教育界进行了长期的探索,其中CDIO工程人才教育模式就是其中之一。该模式最初是由MIT和瑞典几所大学于创立的。CDIO是Conceive Design Implement Operate的缩写。CDIO是从系统的观点以产品的全生命周期过程为载体,根据CDIO大纲和标准,让学生在工程实践中主动的学习并获得相应的工程能力。CDIO提出后,受到国内外工程教育界的广泛关注。汕头大学于2005年将其引入我国。随后,清华大学、北京交通大学、成都信息工程学院等加入CDIO合作组织。
此外,在工程教育领域还有《华盛顿协议》,它是由欧美工程专业团体于1989年发起的工程教育本科专业认证的国际互认协议。2013年我国成为其预备成员,2016年成为其正式成员。陈利华等将《华盛顿协议》、CDIO、卓越工程师计划和合作教育结合起来,探索建立了浙江大学的工程教育人才培养模式。
对于软件工程人才培养的问题,课题组从南华大学的办学定位出发,对软件工程专业人才培养模式、学生团队构建、学生实训等方面进行了有益的探索。本文借鉴CDIO理念对软件工程专业课程体系的设计进行研究,将学生的培养置于实际工程环境下,在做中学,在学中做,以此抚平理论和实践之间的鸿沟,使学生毕业后能迅速适应企业环境,能解决行业复杂工程问题,成长为卓越的软件工程师。
1 课程体系设计主导思想
CDIO模式包括三个总目标:一是要具有深厚的技术基础知识;二是能够系统地完成新产品开发整个生命周期的全部过程;三是了解技术对社会和环境的重要影响。
为了实现以上目标,处理好教学过程中的理论与实践的关系。课程组得出以下结论:(1)学科课程之间应和工程过程一样是相互支撑的,而不应将它们看成是由不同知识点组成的独立实体;(2)工程能力和人文素质的培养应融入到学科教育中。
因此,在对课程体系设计时,将工程入门经验、有机融合的课程、实际工程项目开发三个关键的元素按照一体化的思路进行设计:(1)需要让学生容易获得工程入门经验,以增加学生的成就感和学习兴趣;(2)按照软件工程的实践过程将课程按需求获取、分析、设计、编码、测试、部署与维护过程进行水平拆分,形成相互关联和支撑的课程;(3)以学科竞赛赛题为项目为背景,构建一个中等复杂程度的项目实践课程。
2 课程体系改革实践
基于以上主导思想,借鉴国内外其他高校经验,建立了“3+0.5+0.5”的软件工程人才培养体系。因学校采取的是大类招生,所以第一、二学年进行统一的计算机大类学习(统一学科平台);第三学年专业基础课及专业选修课学习,其中第5学期专业基础课程学习(统一专业平台),第6学期专业方向学习和校内实训(方向平台);第四学年的第7学期和第8学期学生分别在校内、校外实训和毕业设计。
(1)知识体系的分配。IEEECC-SE提出的软件工程专业的知识体系(SWEBOK)有十个知识域,包括:需求、设计、构造、测试、维护、配置管理、工程管理、工程过程、工具和方法和软件质量。根据CDIO思想将SWEBOK的知识域分为四个部分:计算机与软件工程基础知识、个人素质与团队工作知识、软件工程过程知识、软件系统及应用知识。它们的关系如图1所示。
图1:知识体系之间的关系
统一学科平台主要完成计算机与软件工程基础知识的培养,统一专业平台主要完成软件工程过程知识的培养,方向平台主要完成软件系统及应用知识的培养,个人素质与团队工作知识的培养贯穿于各个阶段。
(2)统一学科平台设计。1至4学期的统一学科平台包括:计算机科学导论、高级语言程序设计、计算机组成原理、数字逻辑、离散数学、数据结构、Java语言与网络编程、多媒体技术、计算机网络原理、操作系统、数据库原理、算法分析与设计、软件工程概论、生产见习等课程和相应的实践环节。在公共基础课程模块和专业基础课程模块中,重点突出软件工程概论和生产见习这两个课程,使学生对软件工程有一个整体的认识,了解其基本过程。建立起工程入门经验,为以后的学习建立一个框架,并使学生对成为软件工程师产生浓厚的兴趣。这个阶段完成第一个关键元素的任务。
(3)统一专业平台设计。第5学期的统一专业平台是本次课程体系改革的核心。根据软件工程专业的特点,将原来的课程由包含某类知识点的相对独立的教学单元,水平切割成为与软件开发瀑布模型中各主要阶段(需求分析、设计、实现、测试)相关联的两个课程组。按CDIO标准中第5条中的要求,设计一个初级的项目和一个高级的项目分别贯穿于这两个课程组。
第一课程组以计算器案例贯穿其中,包括的课程有:UML与需求获取、软件设计与规范、C#程序设计、人机交互工程、单元测试与软件质量。这一组课程的主要目的是让学生对软件工程的整个过程有一个初步的认识,并从个人能力上进行培养,使学生能够自己动手完成一个简单的项目。通过在简单项目上的成功,建立学生对软件工程专业的信心,增强以后专业学习的兴趣。
第二课程组以Web新闻发布案例贯穿其中,包括的课程有:UML软件建模、软件体系结构与设计模式、ASP.NET程序设计、Javascript与Ajax开发、软件验证与确认。这一组课程的主要目的是让学生以团队为基本单位完成一个中等复杂程度的工程项目。从而培养学生的团队协作及工程实践能力,获得实际工程经验。
每个课程组所包括的课程包含了软件开发瀑布模型的一个完整生命周期,即从需求到设计再到实现与测试。课程组内课程形成了一种螺旋的关系。
这两个课程组之间的课程有对应关系,例如,课程组1中的“UML与需求获取”与课程组2中的“UML软件建模”均定位于对软件需求的获取与分析,但这两个课程在教学内容和难度上各有侧重。“UML与需求获取”侧重于需求的表示、简单需求的获取等基础知识,而“UML软件建模”则侧重于较复杂系统的建模。对应课程之间形成一种上升的关系。采取这种螺旋上升,逐步递进的方式既体现了以CDIO过程为背景,同时也能够使学生较快看到努力学习的成果,提高学生的自信和兴趣。这个阶段主要完成第二个关键元素的任务。
(4)方向平台设计。为了使学生能在社会及企业环境下构思、设计、实施、运行具有复杂和高附加值的工程产品和系统。在第6学期,除了软件项目管理、云计算与分布式软件设计两门公共课程外,其他的课程按方向分成课程组。根据软件行业发展的趋势、本校的核特色以及学院所承担的纵向和横向课题的情况,将其他课程分成群体软件组、企业信息化组、数字媒体组和核行业软件组,各组的课程如表1所示。
表1:方向课程组的课程
第6学期最后以综合实训作为贯穿性综合课程。综合实训的方向以教师团队的实际项目作为背景,让学生以团队的形式完成。以此培养学生团队在社会及企业环境下建造产品和系统的能力。这个过程也可当作第三轮循环,在这一轮循环中,是以实践的形式体现出来,在实践中完成整个软件工程过程的所有阶段和步骤。
第7、8两个学期,学生进入软件生产现场(校内或校外的实训基地),参与实际项目的开发,自然的过渡到软件工程师的角色。这两个阶段主要完成第三个关键元素的任务。
3 课程体系改革效果
该课程体系在软件工程实验班中进行了实践,取得成功后在整个软件工程专业全面推广,使得件工程专业的学生的工程实践能力得到稳步提高。以学生参与各类学科竞赛为例,获得省级及以上奖项数,从15年的5项增长到18年的45项。并获得2017至2018年度湖南省第十三届大学生计算机程序设计竞赛团体总分第一名的好成绩。
本次课程体系改革,充分体现了CDIO的思想,使学生在工程实践的环境中以主动的、有联系的、实践的方式学习并获得相应的工程能力和经验。按该课程体系培养出来的学生能解决行业内复杂的工程问题,适应市场需求。