基于能力培养的软件工程实践教学改革与实践
2020-04-09彭辉铁菊红岳希叶振张帆
彭辉 铁菊红 岳希 叶振 张帆
摘 要:针对软件工程专业学生工程实践能力弱的问题,文章提出了基于能力培养的软件工程实践教学的改革,详细介绍了基于能力培养的“软件工程”实践课程教学大纲的制定,阐述了基于项目驱动的“工程实践”课程教学内容改革和过程化的考核方式。实践证明这种改革方式可以提高学生的工程实践能力。
关键词:工程实践;软件工程;教学改革
目前,在招聘网站上可以看到大量的企业都在招聘软件测试和软件开发工程师,软件测试和软件开发工程师的岗位需求很多,具有很好的就业市场。然而,部分企业雇主反应,许多普通本科院校软件工程专业毕业生的工程实践能力与企业的要求还有一定差距,企业雇主对软件工程专业毕业生的工程实践能力不满意,主要表现在学生的编程和测试能力弱、团队合作能力差等方面。造成这种现象的主要原因是:一些院校软件工程专业的工程实践教学仍然存在实践教学大纲、内容与行业、企业需求相脱节等诸多问题[1],大部分毕业生的工程实践能力离优秀或卓越还有一定的差距,所以有必要对软件工程实践教学进行创新和改革,提高学生的软件工程实践能力。
1 基于能力培养的教学大纲制定
为了培养学生的软件工程实践能力,软件工程学院除了设置传统的软件工程理论课程之外,还专门设置两门软件工程实践类课程,一门是“工程实践”(软件测试)课程,另一门是“工程实践”(综合训练)课程。“工程实践”(软件测试)课程主要使学生在一个完整的工程项目测试中经历测试计划的制定、测试方案的选择、测试用例的设计、测试的实施、测试的总结等全过程,培养和训练学生的软件测试能力,为学生进入企业从事软件测试工作奠定坚实的实践基础。“工程实践”(综合训练)课程主要使学生在一个软件工程项目的完整开发中经历需求分析、概要设计、详细设计、程序编码、程序测试及集成运行全过程[2]。“工程实践”(综合训练)课程包括对软件工程专业主要核心知识与技术的应用,使学生熟悉软件工程开发流程,能运用所学知识对实际应用进行分析设计,采用目前流行的框架开发项目,规范文档编写和代码编写。这两门工程实践课程的教学大纲制定参考了CDIO工程教育模式标准[3]和成果导向教育模式标准[4]。对于软件工程专业来说,学生最重要的学习成果之一就是软件工程实践能力。这两门课程主要培养学生的软件测试能力、软件开发能力、软件工程问题分析能力、团队合作能力、人际交流和沟通能力等,教学大纲主要围绕培养以上几个能力对教学内容、学时和考核方式等进行设计和制定。
2 基于项目驱动的教学内容改革
“工程实践”(软件测试)和“工程实践”(综合训练)两门课程都采用项目驱动式的教学方式。为了锻炼学生的团队协作能力和人际交流能力,两门课程以小组团队方式完成项目测试和开发任务。学生每3~6人分成一组,根据自己的意向和教师的安排设置组长和组员岗位,教师担任项目经理和评审员角色,并尽可能让学生独立解决项目在测试和开发中遇到的问题,教师只是起到一个顾问和指导的作用,以学生为中心完成教学任务,培养和锻炼学生独立解决问题的工程实践能力。“工程实践”(软件测试)课程教学内容主要模拟软件公司实际的软件项目测试流程,使学生经历测试计划的制定、测试方案的选择、测试用例的设计、测试的实施、测试总结等全过程,培养和训练学生的软件测试工程实践能力。“工程实践”(综合训练)课程主要模拟软件公司实际的软件项目开发流程,让学生经历需求分析、概要设计、详细设计、编码实现、程序测试及集成运行全过程,培养和训练学生的软件开发工程实践能力。
很多学生都没有独自完整开发和测试一个软件项目系统的经历,没有软件项目系统开发和测试经验,所以需要老师在上课之前,以一个实际软件项目系统为案例,准备一套完整软件项目开发和测试全套资料,包括需求规格说明书、概要设计书、数据库设计说明书、详细设计书、代码、编码规范、测试计划书、测试用例书、测试缺陷报告、测试总结报告等,供学生在项目开发和测试过程中参考使用,可以使学生快速上手,更容易理解软件开发和测试流程以及快速学会各种文档的编写,顺利完成整个软件系统的开发和测试工作。把一个完整的软件项目系统开发和测试过程作为案例,可以使这两门工程实践课程的主要教学内容贯穿起来,使得实践的内容成为一个有机的整体,从而提高学生的动手能力,改善实验效果。
“工程实践”(软件测试)课程主要教学内容包括:(1)学生选题。教师准备几个待测试的软件项目系统资料,学生小组讨论选定一个软件项目系统。(2)软件测试计划说明书的撰写。学生以小组团队为单位,阅读和理解项目系统的需求规格说明书、概要设计书和数据库设计说明书,明确项目测试内容,小组组长负责各组员测试任务分工,小组通过讨论和资料查询,按规范格式编写软件测试计划书。(3)软件测试用例设计说明书的撰写。每个学生按照模板和规范格式编写自己模块的测试用例设计说明书,测试用例类型包括功能测试、边界值测试、界面校验测试、业务流程测试、安全测试、易用性测试、白盒测试等。(4)测试实施和测试缺陷报告的撰写。每个学生按照测试用例设计说明书,执行测试用例,记录测试结果,如果发现程序有错误或缺陷,需填写缺陷报告书。(5)测试总结报告的撰写。每个小组对整体系统测试情况进行总结,对系统的缺陷、功能、稳定性、可靠性和性能进行分析,撰写测试总结报告。(6)学生答辩。每个学生对整个测试过程和工作进行总结答辩,每个学生答辩时间大约为10 min,学生讲5 min,老师提问和学生回答问题5 min。
“工程实践”(综合训练)课程主要教学内容包括:(1)学生选题和撰写开题报告。每个小组通过资料查询、讨论等方式自由选定一个软件项目系统,然后撰写开题报告,开题报告包括项目背景、技术路线、进度安排和任务分工等,每个学生至少负责系统的一个功能模块。老师审核开题报告,审核通过之后,学生开始做自己选定的项目系统。(2)需求规格说明书的撰写。每个小组进行文献资料查询,按照老师给的模板撰写需求規格说明书,需求规格说明书包括功能需求和非功能需求。(3)概要设计说明书和数据库设计书的撰写。每个小组根据需求规格说明书,按照模板撰写概要设计说明书和数据库设计书。概要设计说明书主要对项目系统进行功能模块划分,确定每个模块的功能和接口。数据库设计书主要包括数据库概念结构设计和数据库逻辑结构设计。(4)详细设计书的撰写。每个学生对自己负责的模块进行详细设计,设计模块的程序逻辑实现算法和流程,并撰写详细设计书。(5)编码实现。每个学生根据详细设计和编码规范编写自己模块的代码。(6)单元测试的实施。每个学生对自己的模块进行单元测试。(7)系统集成和系统测试。小组组长负责把所有组员的模块集成起来,然后进行系统测试。(8)学生答辩。每个学生总结已完成的工作,并进行答辩。
3 考核方式改革
两门工程实践课程都采用过程化考核,每个阶段都让学生提交作业文档或代码,每个作业有一定的分值,并占一定的比例,总分为100分。作业的考核分为团队考核和个人考核两种,如果作业是小组团队完成,就按团队考核,每个组员的分数一样;如果作业是个人完成,就按个人考核。每个作业考核和一两个能力指标点相关,每个能力指标点在作业中占一定的比重,最后通过加权方式计算出来每个能力指标点的达成度情况。通过能力指标点的达成度情况,可以评估每个学生的工程实践能力。
4 结语
本文主要阐述了基于能力培养的软件工程实践教学的改革与实践做法,实践表明通过这种培养方式可以提高软件工程专业学生的工程实践能力。
[参考文献]
[1]张平.基于CDIO模式的软件工程专业实践教学改革研究[J].无线互联科技,2012(11):209-211.
[2]彭辉,铁菊红,文立玉,等.基于CDIO的软件工程专业工程实践类课程的改革与实施[J].计算机教育,2017(5):30-33.
[3]王中华,汪文彬.基于CDIO模式的软件工程实践教学改革研究[J].福建电脑,2013(12):40-45.
[4]罗铭,黄海凤,胡畅霞.基于OBE理念的翻转课堂教学模式在软件类研究生课程教学中的应用[J].计算机教育,2019(7):138-144.