软件工程综合实验课程的改革与建设

2017-04-10 12:05:52吴春雷崔学荣
实验室研究与探索 2017年1期
关键词:软件工程实验

吴春雷, 刚 旭, 崔学荣

(中国石油大学(华东) 计算机与通信工程学院, 山东 青岛 266580)

软件工程综合实验课程的改革与建设

吴春雷, 刚 旭, 崔学荣

(中国石油大学(华东) 计算机与通信工程学院, 山东 青岛 266580)

根据软件工程卓越工程师教育培养计划的总体要求,为了切实增强学生的工程实践能力和创新意识,构建软件工程专业核心课程群并对其中的综合实验课程进行了深化改革和建设。明确综合实验课程的目标定位,重构符合国际SWEBOK和国内CCSE的实践教学知识体系,设计面向全生命周期软件交付的敏捷实验教学流程,探索多教师分阶段、协作式的实验指导模式,提出并实施多元性、过程化的软件工程实践考核评价方法。

卓越工程师; 实验教学; 软件工程; 实践能力; 实验课程改革

0 引 言

软件工程是综合运用计算机理论和技术以及工程管理的原则和方法,按照用户需求及设定的预算和进度,实现特定功能的软件产品的定义、设计、开发、测试、发布和维护的工程或以之为研究对象的学科。由此可见,学科特点决定了软件人才的培养需要兼顾系统的理论知识掌握和综合的工程实践锻炼[1-2]。特别是随着我校软件工程专业成为“卓越工程师教育培养计划”(以下简称“卓越计划”)建设专业,对软件人才培养质量在实践能力和创新意识方面提出了更高的要求[3-5]。然而,软件工程人才培养普遍存在重理论、轻实践,理论学习不系统、实践锻炼不完整,以及考核标准不科学等问题,难以达到“卓越计划”培养标准的要求[6]。

1 专业综合实验课程的目标定位

近年来,在卓越工程师教育培养计划的支持下,围绕提升学生的“专业理论、设计开发、系统思维、过程管理”四个核心能力的总体目标,以软件工程过程、软件需求工程、软件项目管理、软件测试与维护、软件质量工程等5门理论课程和软件开发实战1门综合实验课程组建了软件工程专业核心课程群(以下简称“课程群”),并对课程群的知识体系、教学内容、教学方法、实践流程和考核方式进行了系统规划、协同建设,经过四年的持续探索完善,已取得明显成效。

软件开发过程实战属于课程群中的综合实验课程,计划课时为96学时,贯穿软件工程专业教学计划的整个第6学期。通过对国内外软件工程行业协会和知名院校的调查,决定按照SWECC修订和发表的SWEBOK和我国CCSE课程体系重构课程群的理论知识框架和实践训练内容,使其涵盖软件工程的十个知识域[7-9]。综合实验课程在课程群中处于核心地位,与其他理论课程及知识域的关系如图1所示。

图1 软件工程核心课程群结构图

实验课程落实了CDIO(Conceive-Design-Implement- Operate)工程教育理念[10],实验内容包括项目构思、软件设计、构建实现、交付运行等软件开发过程的主要环节。实行了以项目案例为示范、以网络平台为支撑、以学生团队协作学习为主导,以多教师协作式指导为保障的“基于项目的教学”模式,旨在利用该课程充沛的时间和资源,使学生完成一个软件项目的完整开发训练,在实践过程中实现对5门理论课程教学内容的理解和掌握,建立软件工程的整体概念,并增强工程实践能力和创新意识。

2 面向全生命周期开发过程的实践内容设计

不同于许多传统的经典学科,软件工程的知识体系是软件大师们在长期的工程实践中总结提炼出来的。如果仅仅依靠理论课堂的灌输式讲授,将难以引起学生的共鸣而变成空洞的说教。因此,课程群引入CDIO工程教育理念,并在综合实验课程中实施“基于项目的教学”方法,包括:

(1) 参照企业模式,以学生自愿为原则,按照4或5人的规模组建学生项目团队。采取全员参与、角色扮演、协作学习、交流共享等措施,使学生成为认知的主体、知识的主动建构者,实现“以教师为中心向以学生为中心的转变”。

(2) 强化项目案例的质量,通过设计综合性、创新型软件开发项目,并把课程群知识点融入到项目开发的过程中,做到在过程中介绍理论、指导实践,实现“以知识结构为中心向以项目流程为中心的转变”。

其中,软件项目及其实践内容的设计是影响教学效果的首要因素。传统课程的项目案例一般都比较简单,多是针对单门课程某些知识点的巩固训练,例如项目管理、架构设计或测试用例编写等。然而,本课程项目案例需要更高的层次和更丰富的内容,因为实验课程对应于整个软件工程核心课程群,实践过程要能够覆盖课程群的全部知识点。通过参考SWEBOK和CCSE,并结合我校软件工程专业人才培养目标和学生实际情况,制订了实验课程的训练要点,并设定了每个知识域的不同掌握程度,包括K(知识)、C(理解)、AP(应用)和AN(分析)四个层次[7-8]。这里梳理了其中具有AP和AN要求的软件工程核心知识体系,作为实验课程教学的内容设计标准,如表1所示。

表1 实践知识体系设计与学时比例分配

按照上述标准,在每次课程第1阶段都进行项目构思和开题。学生在教师的指导下提出项目构思,撰写项目规划,通过答辩后确立项目题目和实践内容。

3 基于敏捷过程的规范化实践流程建设

软件工程许多实验课程的实践流程与企业差别较大,普遍存在不系统、不规范的问题,是学生工程能力培养中的一个薄弱环节。为此,对实践教学流程进行了全新改革,采用敏捷开发思想,建立了符合目前主流企业软件项目标准开发过程的实践流程。使学生在接近真实的场景下,针对完整的项目案例,采用先进的工具平台模拟实战开发,实现工程能力的系统化、规范化培养。

制定了以敏捷化工程过程Scrum为模板、符合RUP规范要求的实践教学流程,对其中涉及的角色、活动、工件、迭代计划、里程碑和关键环节进行了详细定义,形成了一整套可操作的规范体系[11]。根据实践课程16周的时间跨度和学时安排,将实践过程分为项目启动、项目实施和项目收尾3个阶段,并在实施阶段细化出2或3次迭代,最终形成包括4或5次迭代(每次迭代3或4周时间)的总体迭代方案,见图2。

图2 实验课程项目开发总体流程

因为新的实践过程涉及多种软件工具,例如分析设计、编码测试、配置管理和协作监控等工具,原有分散孤立的工具形态难以适应当前强调团队协作和敏捷化的教学要求,所以需要一个包含软件交付全生命周期、能够实现过程信息自动收集和共享的软件协作开发平台。IBM Jazz的理念和功能符合课程的需求[12],为此搭建了一整套基于IBM Jazz的软件工程综合实践环境,包括协作平台 RTC、需求管理分析工具Doors和需求定义工具RRC、软件建模分析工具RSA,以及测试管理平台RQM等。然后,针对每个实践环节,结合课程群设定的知识和能力培养标准,构建了基于Jazz平台各工具的知识和能力实现矩阵,如表2所示。

4 多教师分阶段、协作式的实验指导改革

通常的实践课都是由一名教师或者实验师指导,但这种方式在软件工程核心课程群的实践教学中面临很大挑战。因为课程群中的5门理论课程是从不同角度在描述软件工程这一整体概念和理论体系。从认知的角度应该借助真实的项目案例作为载体,打破传统的课程界限,配合完整的软件开发过程分别讲解需求、测试、过程、项目管理等理论,使理论教学同步指导实践。为此,一方面对课程群的理论授课进行了全盘设计,包括知识体系、课时分配、衔接划分及推进计划等;另一方面,安排理论课教师通过“分阶段、协作式”的方式全部投入到实验课程的指导工作,而且按照前文制定的3个阶段4或5次迭代的实践流程设计了较为精细的实验指导序列,如图3所示。

表2 实验课程的知识和能力实现矩阵

图3 教师分阶段、协作式指导序列图

“分阶段、协作式”是指各位教师按照软件项目的推进过程,在合适的时机对自己熟悉的内容进行实验指导。例如,软件需求工程授课教师会在实验课程的项目规划、需求分析、需求变更等阶段介入,为学生提供当前阶段最需要的理论知识和操作技术。

5 多元性、过程化的实践考核探索

传统的实验课程考核评价一般以系统演示和实验报告为主,而且通常在课程结束时实施,教师通过考察系统、评阅报告进行打分。然而,这种考核方式已经无法满足课程群新的教学要求,因为按照“卓越计划”人才培养标准,设立了以工程实践能力、创新意识培养为核心的教学目标[13-14]。强调学生不仅要具有现代软件工程开发能力,也要具备主动学习、协作学习、系统思维、过程控制、表达展示等综合素质,这些要求在传统考核方式中难以体现和落实。另外,传统的期末单次考核方式也无法使教师掌握实践过程中的详细情况,与“基于项目的教学”要求的过程控制相违背,难以实现“做中学”“做中教”的教学效果。

经过不断探索,课程群实施了多元化、过程化的考核评价体系,重视学生的专业知识掌握、实战开发过程、系统开发结果、创新能力水平等全面素质的考察和评价,真正实现以考促学、以考促教的目的。对每个小组开发的软件系统都进行这方面的评价,包括设计水平、开发效果、界面体验、测试质量等,并根据在小组中的表现对每个成员进行细致评价。

(1) 实践过程中阶段性的输出物。在开发过程规定的3个阶段和5次迭代中,每个小组会产生包括项目规划、产品订单、需求报告、架构设计、测试方案等许多文档和阶段性输出成果。对这些文档和成果进行过程中的即时检查能够获取更加客观、真实的平时成绩,有助于教师发现问题并给予及时指导。项目收尾阶段的输出物主要是5份文档:需求分析文档、软件架构设计文档、系统测试文档、软件过程总结以及项目管理文档。文档的评价结果将作为课程成绩的重要组成部分,旨在引导学生重视书面表达能力并提高科技文档的撰写水平。

(2) 实践结束时交付的软件系统。开发结束时学生小组提交的项目系统是考核评价的最主要依据,它展现了学生的理论运用能力和综合解决问题的水平。考核指标包括项目的整体完成率、系统功能的可用性、可靠性、项目管理和过程控制能力。最终的答辩准备及答辩效果也是评价要素。

(3) 实践衍生出的创新成果。因为课程中的项目构思不再是传统僵化的固定命题,而是学生自主选择的创意应用,所以鼓励小组在课内完成的软件系统的基础上进行创新发展,包括申请国家软件著作版权,发表学术论文,开展学科竞赛等。这种机制很好地激发了学生实践课程的投入热情。例如,2015年的实验课程软件作品获得11项国家软件著作版权、7项大学生创新项目。

过程化考核体现在评价在教学的推进中及时采集数据并给予学生指导。课程群设置了每周2 h的研讨环节,就是让学生汇报和展示最新的进展和阶段性输出,包括每个学生在此过程中的参与情况,这一做法持续16周,能够覆盖整个教学周期的全部关键环节。因此,老师能够在教学过程中及时发现问题并给出指导,实现了“考教结合、考指导教”的效果。

6 改革成效

软件工程专业核心课程群综合实验课程自2012年改革建设以来,经过近4年的教学实践和不断完善,取得了明显成效。首先,学生的工程实践能力与创新意识明显提高。根据学校官方统计,近4年软件工程专业学生参加省级以上学科竞赛并获奖的人数逐年提高,2015年获奖36项,同比增长近25%,获得国家软件著作版权11项。其次,学生初次就业率和就业层次实现持续增长,近4年分别为:2013年96.67%、2014年为98.78%、2015年100%。另外,改革建设做法也得到了领域教育专家的较高评价,2014年获邀参加教育部“高校计算机类专业应用型人才培养方案研究”研讨会并进行大会交流。企业代表也认为改革思路表明了软件工程教育改革发展的基本方向,与企业软件工程师的培养路径一致。

7 结 语

软件工程综合实验课程的改革思路和建设效果对学生工程实践能力和创新意识具有重要的影响作用,为了达到“卓越计划”对软件人才培养的较高要求,对该课程的教学内容、实践流程、指导方法和考核方式进行了全方位的改革。首先,参照国际上IEEE/ACM CC2001、SWEBOK和我国CCSE课程体系,对实践教学应该覆盖的知识体系进行重构,使其包含软件工程学科全部十个知识域,更加完整和规范。然后,根据知识的逻辑关系和前后顺序,探索实践了新型的教学安排和组织形式,打破传统相对孤立的课程界限,把课程群中的几门理论课程教学融入到一个软件项目的完整开发过程中,在实践中有针对性地介绍理论,营造了良好的知识学习氛围,提高了工程实践的质量。另外,设计了以企业标准化项目交付过程为主线的敏捷实践流程,搭建了一整套先进的实践教学环境。最后,提出并实施了与实践过程相匹配的多教师分阶段、协作式的实验指导,以及多元性、过程化的考核评价方式。

[1] 卢 苇,蔡圆媛,邢薇薇. 国际化软件人才培养模式改革与创新[J]. 高等工程教育研究, 2013(1): 76-82.

[2] 林 健.“卓越工程师教育培养计划”专业培养方案研究[J].清华大学教育研究,2011,32(2):47-55.

[3] 韩 彬,雷 毅. 全面深化实践教学改革,培养学生工程实践能力[J]. 实验室研究与探索, 2015 ,34(9): 196-199,235.

[4] 施晓秋,金可仲. 卓越计划“3+1”模式下的课外专业教育体系[J]. 高等工程教育研究,2012(4):40-44.

[5] 曾明星,周清平,王晓波,等.软件工程专业“项目化”教学实施体系的构建[J].实验室研究与探索,2013,32(5):158-163.

[6] 林 健.高校“卓越工程师教育培养计划”实施进展评析(2010~2012)[J].高等工程教育研究,2013(4):1-12.

[7] 骆 斌,张大良,邵 栋. 软件工程专业的课程体系设计[J]. 中国大学教学, 2005 (1): 32-35.

[8] 骆 斌, 臧斌宇,丁二玉. 软件工程专业教育知识体系的分析、重构与求精[J]. 计算机教育, 2010 (23): 2-8.

[9] 刘 强,陈 越,骆 斌,等.“软件工程”课程教学实施方案[J].中国大学教学,2011(2):41-44.

[10] 查建中.论“做中学”战略下的CDIO模式[J].高等工程教育研究, 2008(3):1-6, 9.

[11] 陈国栋,罗省贤.Scrum敏捷软件开发方法实践中的改进和应用[J].计算机技术与发展,2011,21(12):97-99,104.

[12] 宁德军,朱育雄,孙 昕. 奏响软件交付的爵士乐:JAZZ平台实践者之路[M]. 北京:清华大学出版社,2009:40.

[13] 刘华东.构建“三三三”培养体系,推进本科教育迈向更高目标[J].中国高等教育,2012(18):34-36.

[14] 夏有为.培养实践能力,造就创新人才(二)——访美籍科学家交大密西根学院院长倪军教授[J].实验室研究与探索,2015,34(1):1-4.

Reform and Construction of The Comprehensive Practical Curricula of Software Engineering

WUChun-lei,GANGXu,CUIXue-rong

(College of Computer and Communication, China University of Petroleum, Qingdao 266580, Shandong, China)

According to the requirements of education and training program for excellent engineers in software engineering field, a core curriculum group for software engineering is constructed and comprehensive practical courses are reformed to enhance the students' engineering practical ability and innovative consciousness effectively. Firstly, the objective and location of the practical course are defined. Then the practical knowledge system is reconstructed according to international SWEBOK and domestic CCSE. Finally, the agile experimental teaching process for the whole life cycle of project delivery is designed, the multi-phased and participatory experimental guidance mode by multi-teachers is explored, and the diversity and process-oriented practices evaluation mechanism for software engineering are proposed and implemented.

excellent engineers; practice teaching; software engineering; practice ability; experimental course reform

2016-02-02

教育部-IBM专业综合改革项目(2015);山东省卓越工程师教育培养计划专业建设项目(2013);中国石油大学教学改革和考试改革项目(JY-B201413、KS-B201409)

吴春雷(1980-),男,山东青岛人,博士,副教授,软件工程系主任,研究方向:软件工程技术与过程。

Tel.: 15265322566; E-mail: wuchunlei06@163.com

崔学荣(1979-),男,山东烟台人,博士,副教授,计算机与通信工程学院院长助理,研究方向:超宽带无线通信。

Tel.: 0532-86981339; E-mail: cxr163@163.com

TP 311.5; G 642

A

1006-7167(2017)01-0180-05

猜你喜欢
软件工程实验
记一次有趣的实验
禅宗软件
英语文摘(2021年10期)2021-11-22 08:02:26
做个怪怪长实验
软件对对碰
NO与NO2相互转化实验的改进
实践十号上的19项实验
太空探索(2016年5期)2016-07-12 15:17:55
子午工程
太空探索(2016年6期)2016-07-10 12:09:06
工程
谈软件的破解与保护
精品(2015年9期)2015-01-23 01:36:01
工程