投稿问答最小化  关闭

万维书刊APP下载

面向软件工程系统能力培养的渐进式实践课程方案探索

2022/10/20 11:28:18  阅读:114 发布者:

0 引 言

软件工程的核心问题是在满足时间、成本、质量等约束条件下的软件交付问题,其挑战在于多因素融合的复杂性、软件的不可见性以及一系列不确定性,如相关人员的认知差异、过程中的需求变更、人员的流动、突发事件等。

软件工程系统能力(图1)是应对软件交付问题的核心能力之一,该能力不但包括从需求开始选择合适开发模型和技术框架来进行系统的分析、设计直至部署交付的能力,而且还包括诸如过程规划、风险管控、质量策略、版本控制及人员协作等工程管理能力和社会能力。

目前这一能力的培养主要有两类做法:一类是直接送学生到企业或以企业为主进行实训,如美国的卡内基梅隆大学,加拿大的滑铁卢大学,我国的哈尔滨工业大学、电子科技大学等;另一类更普遍的做法是立足高校自身开展软件工程专业的实践教学,如我国的南京大学、浙江大学等。

立足高校自身开展软件工程专业的实践教学中,大多是基于教师给定的需求,与现实差距较大。教师对培养学生理解与认知软件交付过程中的不确定性和复杂性,以及如何降低软件交付风险等方面缺少具体手段,学生感觉概念空洞抽象;企业抱怨学生只关注技术,缺乏软件交付意识等。这些是目前国内软件工程专业建设普遍面临且一直未得到很好解决的问题。

现实中,企业虽有真实的软件研发环境及规范,但因各企业间差异性大,且软件研发周期相对学生可支配的实习时间不匹配等,导致学生在实习过程中很难深度参与;不加改造的企业环境一般难以满足教学要求;同时,过分依赖企业进行实践教学又存在不稳定性和高成本投入的弊端,教学目标难以保证且可持续性差。

应立足高校自身、引入企业资源,模拟复杂软件问题环境,对学生进行软件工程系统能力训练,让学生能尽早完整地体验软件研发全过程,深入理解软件工程,进而缩短适应企业环境的时间,实现高校人才培养与企业需求无缝衔接,其中的主要难点是:①如何理解软件工程系统能力的内涵;②软件工程系统能力与计算机系统能力有什么不同;③如何解决学生认为软件工程概念抽象的问题;④如何建立体验式实践课程体系,帮助学生理解软件工程基本概念并培养软件工程系统能力。

1 面向软件工程系统能力培养的渐进式实践课程方案

依据软件工程专业本科培养方案,结合工程专业认证和软件工程知识体系(SWEBOK),立足学校自身环境,紧密结合企业资源,设计分层递进的面向软件工程系统能力培养的渐进式实践课程方案(图 2),可以逐一解决软件工程系统能力培养中的难题。

2 能力模型

软件工程系统能力模型(图 3)参考SWEBOOKIEEE ACM 软件工程能力标准提出。该模型将软件工程系统能力细化为软件工程技术能力、软件过程与项目管理能力和社会能力3 个维度共 16 种能力。

软件工程技术方面主要从多方法、工具的选用与权衡维度来关注相关能力的培养,如软件需求分析与变更管理能力、软件设计与技术选型能力、软件测试与评价能力以及相关工具的使用能力等。软件过程与项目管理方面主要从多因素模拟和决策维度来关注相关能力的培养,如过程与文档规范能力、项目规划与实施能力、风险识别与控制能力、资源平衡与决策能力等。社会能力方面主要从多角色仿真与协作维度来关注软件研发中与人相关能力的培养,如各角色间的协作能力、任务执行能力、自我学习与反思能力、环境适应能力以及职业道德规范等。

这些能力要在软件工程人才培养中重点覆盖并得到较为充分的训练。该模型回答了软件工程专业毕业生应该具备什么核心系统能力的问题,也说明了计算机系统能力的差异和分类培养的必要性。

3 实践课程体系

在能力模型的指导下,实践课程的设置方案应该指导软件工程专业本科生的实践课程体系建设。如图 4 所示,在学生具备程序设计能力的基础上,在软件工程相关理论知识点的支撑下,通过 3 个层次的实践课程逐步提升软件工程系统能力,解决培养手段问题和软件工程概念难以理解的问题,尤其是对于软件交付过程中不确定性的认知困难问题。

3.1 基本软件工程能力

在集中固定的时间内,以设定软件需求为基础,让学生体验一个完整的软件系统开发过程。这是第 1 个层次,重点关注软件工程概念理解。

3.2 复杂软件系统分析与设计能力

在工程环境约束下开展软件需求分析与系统设计实践,关注需求的不确定性、设计的技术成熟度、团队的管理协同能力等多个复杂因素,培养学生在多目标优化下的复杂软件系统分析与设计能力 [1]。这是第 2 个层次,重点突出实际工程需求和设计的复杂性。

3.3 软件工程系统能力

在集中固定的时间内,以团队形式,选择源于企业的实际需求,仿真现实环境的不确定性问题,让学生体验融合多要素、多角色,面向用户交付价值的实际复杂软件系统的交付过程,重点培养学生的复杂工程管理能力,进而实现软件工程系统能力的全面提升 [2]。这是第 3个层次,重点关注软件交付过程的不确定性和复杂性。

4 实践教学案例设计准则

依据能力模型,设计满足不同层次能力培养需要的实践教学案例,包括软件交付的过程案例和项目案例,其设计准则如图 5 所示。

4.1 项目案例

项目案例用于描述实践中需要开发的软件(要解决的问题),主要关注软件工程技术能力培养。重点仿真用户多维度需求,预埋需求变更,体现软件交付过程的复杂性。设计准则包括来源于企业真实项目,功能需求具有一定模糊性并预埋可变点,功能点多、功能间有耦合、做不完要取舍,非功能质量属性如可用性、可维护性、可靠性等要求高。

4.2 过程案例

过程案例用于描述实践教学过程设计(如何组织开发过程),主要关注软件项目管理能力和社会能力培养。重点仿真软件交付中的不确定因素,促使学生及其团队在开发过程中不断平衡现有资源、做决策、验证、反思、改进以推进目标达成,应具有较高的挑战度。设计准则包括选择经典或主流软件过程模型,在体现规范的前提下预设多种不确定性变量并结合突发事件,多角色团队合作以及有关干系人之间的协商等。

4.3 复杂软件研发场景仿真

在实践教学案例开发中,内容要与时俱进,如过程案例从瀑布到敏捷,体现最新的管理理念,也体现了人和组织给软件生产过程带来的复杂度;项目案例追踪软件行业的热点,融入各类行业背景;案例规模和难度从简单模拟到复杂的实际应用。

通过实践教学案例,可仿真接近于现实的软件交付中多因素融合的复杂性和不确定性场景,并在工作量、复杂度、技术难度、开放性等方面预留灵活性,为学生的创新和挑战预留空间,满足能力渐进式培养的需要,解决实践课程方案的落地问题。

5 实践课程实施规范和教学支持平台

建立一套覆盖实践课程全流程的实施规范并文档化(图 6),明确实践前应准备的内容、实践中的复杂和不确定性环境要素模拟、实践后的回顾总结与问卷调查等。覆盖实践全流程,分阶段制订标准规范并文档化,从而保证实践教学的规范性,并持续优化。

针对现有教学系统支持软件研发环境弱、企业软件研发平台支持实践教学弱的问题,可以自主研发教学平台。我校研发了一个支撑软件工程系统能力培养的在线协同教学平台(图 7),为学生提供软件研发和部署环境,全方位支持实践教学管理;同时固化流程与规范,集成相关工具,集成华为、腾讯两家企业软件研发工具。

联合腾讯开发教学案例,共享腾讯和华为等企业平台资源,聘请企业师资走进课堂,共同承担教改项目等,进一步提升实践教学质量和效果,也为学生尽早熟悉国内主流软件研发与管理环境创造条件。从制度规范、平台建设和校企合作 3 个方面,解决实践课程长期稳定运行、教学质量持续优化的问题。

6 课程方案应用及效果

依据面向软件工程系统能力培养的渐进式实践课程方案,设计北航软件学院软件工程专业本科生实践课程体系如图 8 所示。该课程体系包括 3 门实践课程(如图中的虚线框内)分别对标 3 个层次能力的培养。

在北航软件学院软件工程专业本科生培养中,在学生具备程序设计能力的基础上,依据上述成果构建 3 个层次难度递进的实践课程体系,在实践教学平台的支持下,配合理论课程的学习,逐步提升学生的软件工程系统能力。

每次实践选择一个项目案例和一类过程案例,模拟“学生没有遇到的、一个新的”复杂软件工程问题场景,通过多维度考核引导学生建立“面向用户交付有价值的软件”理念,满足不同级别能力培养需要。

大二暑期的软件工程基础实践通过简单项目案例 + 瀑布过程案例,完整覆盖从需求到软件发布及版本控制各环节的软件交付,增强了学生对开发过程的基础认知,使其认识到开发过程的技术难点和工具掌握的必要性并具备了基本的软件工程能力。

大三上的复杂软件系统分析与设计实践 [3],选择在工程环境约束下进行指定的需求分析与系统设计实践,重点关注从系统角度处理需求的模糊性和不确定性、技术方案的成熟度以及与方法工具的潜在冲突等,在功能需求和多维度质量需求的多目标权衡中,给定一个可行的系统设计方案。采用可视化建模语言,如 UML 支持软件系统的可视化建模与设计,并以大作业式实践 + 研讨 + 集中实践 + 展示方式开展实践教学,帮助学生实现提升需求分析→架构设计→软件构造能力的演进,重点培养学生的复杂软件系统建模、分析与设计能力。

大三暑期的软件工程综合实践 [4],选择源于实际的综合项目案例 + 敏捷过程,限定时间、多角色扮演,引入需求变更、突发事件等不确定因素以及多维度评审与考核等方法,模拟现实软件研发场景,让学生体验实际复杂软件系统从需求到可用软件的研发过程,重点培养学生的复杂工程管理能力,全面提升其软件工程系统能力。

为了解课程实施效果,每次实践后对学生进行问卷调查,并要求学生提交个人总结,如 2021年实施软件工程综合实践后对选课的 182 人发出问卷,回收问卷 179 份,结果表明软件工程系统能力培养模型涉及的 3 个方面的能力均在一定程度上有所提升。其中软件工程技术与方法方面,需求分析与管理能力提升最多达 147%;软件过程与项目管理方面,项目规划与执行能力提升最多达 136%;社会能力方面,与用户沟通的能力是能力培养模型中关注的所有能力中提升最多的,达 157%。从学生提交的个人总结中能体会到,虽然实践课程给他们带来了很大的挑战,但收获也颇丰。

通过 3 个层次的实践课程的训练,学生理解了为什么要写文档和代码要规范,为什么要进行配置管理等,对软件工程基本概念的理解更加立体化,真正体会到软件工程中全方位要素培养的重要性。实践后的调查问卷和实践总结以及毕业生一次性就业情况等都表明,面向软件工程系统能力培养的实践课程体系的应用达到了预期效果。

7 结 语

本文提出了软件工程系统能力模型,并从课程体系、教学案例、实施规范、教学支持平台以及质量保障等方面对这一能力的培养给出了系统化的解决方案。北航软件学院在这一方案的指导下,逐步构建完善了面向软件工程系统能力培养的实践课程体系。在具体实施中,形成从基本工程能力、复杂系统设计能力到复杂工程管理能力的递进式培养,为大四学生实习和毕业设计奠定基础。该方案提升实施效果的关键是复杂软件研发场景的仿真,适当引入企业一线资深指导教师的深度参与可以达到事半功倍的效果。

参考文献:

[1] 谭火彬, 张莉, 林广艳. 系统分析与设计课程互动式案例教学改革与实践[J]. 计算机教育, 2019(2): 5-10.

[2] 林广艳, 贾经冬, 谭火彬. 校企结合的软件工程实践框架的构建与应用[J]. 计算机教育, 2013(24): 99-102.

[3] 谭火彬, 林广艳. 培养软件工程思想的面向对象程序设计课程改革与实践[J]. 计算机教育, 2018(8): 53-58.

[4] 贾经冬, 林广艳, 谭火彬. 面向市场需要的软件工程实践教学改革: 以北航软件学院为例[J]. 北京航空航天大学学报(社会科学版), 2014(2): 107-112.

基金项目:2017 年教育部—腾讯计算机系统有限公司大学生创新创业联合基金项目“软件开发实践”;2017 年国家级新工科研究与实践基金项目“面向新工科的软件工程实训体系与平台建设”;2017 年教育部—华为技术有限公司产学合作协同育人基金项目“基于软开云的新工科软件工程专业核心实践课程建设”;2018 年教育部—腾讯计算机系统有限公司产学合作协同育人基金项目“软件工程基础课程设计的实践”“全生命周期的软件工程课程体系改革”“基于 TAPD 的软件工程实践改革与探索”;2021 年华为“智能基座”产教协同育人基金项目“软件工程综合实践课程建设”。

第一作者简介:林广艳,女,北京航空航天大学副教授,研究方向为软件工程,lingy@buaa.edu.cn

引文格式:林广艳,张莉,谭火彬,等. 面向软件工程系统能力培养的渐进式实践课程方案探索[J].计算机教育,2022(9):196-201.

转自:计算机教育”微信公众号

如有侵权,请联系本站删除!


  • 万维QQ投稿交流群    招募志愿者

    版权所有 Copyright@2009-2015豫ICP证合字09037080号

     纯自助论文投稿平台    E-mail:eshukan@163.com