一、软件工程实践框架构建
校企结合的软件工程实践框架包括教学大纲、案例库、教师团队、考核标准、交流平台和实施反馈6个部分。
1、教学大纲
软件工程实践作为软件工程专业本科阶段最后一门2学分的必修课程,是学生进入企业实习前的软件工程综合训练,安排在大三暑假集中2周完成,之后学生进入企业进行为期1年的企业实习。教学目标是培养学生的文档撰写能力和团队合作精神,对学生进行规范化软件开发和管理的训练。教学内容应尽量覆盖目前软件应用热点,教学实施采用开放性原则,即任课教师可以根据当年的软件应用热点和企业师资状况,选定该年的教学实践内容。
2、案例库
案例库是整个实践教学的基础,以往的实践课程多采用教师提供的虚拟案例,很难体现实际工程中面临的一系列问题;而有效的案例必须来自实际项目需求,这些案例可以源于企业实际项目,也可以源于教师的应用研究课题,真正做到将实践课程融入实际工作环境。实践案例的内容主要分为3类:软件应用类(如手机移动软件开发)、面向领域软件开发类(如面向金融领域的软件开发)以及软件方法应用类(如敏捷软件开发方法)。在满足课程教学目标的前提下,实践案例的筛选要能充分体现软件企业开发中面临的典型问题,如需求不稳定等。实践案例覆盖的应用领域要宽且涉及的领域知识能让学生在短期内理解。每个案例所涉及的技术难度和案例规模要适中,能方便学生在两周内完成并让参与实践的学生有成就感。此外,还要考虑实践案例实施时间和场地的影响等因素,在案例建设中对实际案例进行剪裁,以满足上述要求。由于不同软件项目采用的模型或方法不同,其实际开发过程可能差异很大。软件过程模型既决定软件项目管理需要监控的里程碑点,又影响过程执行中需要使用的相关模板,因此案例库建设很重要的一部分内容是针对不同的实践案例,根据采用的过程模型,确定项目执行中的监控点和成果的展现形式,开发相关标准和模板。案例库的建设是一个不断丰富的过程。为激发学生主动参与实践过程的积极性,要保证每年的实践案例不重复。
3、教师团队
软件工程实践应该以学生实践为主、教师讲评和答疑为辅的方式实施教学。在实践过程中,学生如果没有积极主动参与,那么将无法达到目的;教师的指导作用不容忽视,学生软件开发、过程理解与项目管理等方面的经验不足,需要教师及时引导。指导教师要适时开展讲座、及时评审文档并解答学生在实践中遇到的各种问题,还有更重要的一点是教师要作为客户回答学生提出的各种有利于澄清需求的问题。实践的成功实施必须依赖于好的实践教学团队。软件学院教师实践经验的局限很难让学生体会实际的软件开发过程,企业教师虽然可以弥补这一缺陷,但因企业教师的不稳定性致使所积淀的实践成果很难延续。为了使学院教师也能在实践教学中不断成长,我们组建了以学院教师为主、企业教师为辅的校企结合的实践教学团队。学院教师负责教学大纲的修订、课程的组织安排、案例库的建设、规范化的指导和充当现场客户等工作,而企业教师则负责提供企业案例、在校内建立模拟企业环境以及进行实践现场指导等工作。在企业教师的聘请上,我们以软件学院现有的企业实习基地单位为突破口,同时借助软件行业协会等支持,积极与企业联系,探讨企业参与实践教学的可能方式。为不断促进实践教学的开展,软件工程实践教学团队每年定期与合作企业商讨当年实践教学案例的选择和实施方式,同时共同完成当年实践教学工作。在校企结合的教师团队中,学院教师相对稳定,企业教师则根据每年选定的实践案例需要进行动态调整,聘请最熟悉该实践案例的高水平企业工程师参与实践教学,以保证实践教学效果。
4、考核标准
考核标准是实践参与者的指挥棒,它充分体现了实践的最终意图,既要减少“打酱油”现象,又要扭转“大作业式”软件开发局面。团队开发要充分调动每个人的积极性,这样才能在有限的时间内向用户交付更多的功能。此外,通过考核内容引导学生关注用户的需要,这也是实际软件项目关注的重点。在实践中向学生渗透“向用户交付价值”的思想,即软件开发者向用户交付的不仅仅是软件功能,更重要的是要向用户交付可以为其创造价值或节约资源的软件功能。向用户交付不想要或不感兴趣的功能是一种资源浪费,因为每一个软件功能的开发都需要投入时间、人力等成本。与学生大作业中的虚拟题目不同,软件开发者追求的目标是以最小代价向用户交付满意软件。基于上述思想,软件工程实践课程的考核可以在基本考核标准基础上进行适当微调,形成个人成绩。基本考核标准是以团队为单位从过程实施和最后成果演示两个方面进行课程考核。过程实施部分主要考核各团队是否按时提交阶段性成果以及阶段性成果的撰写质量;最后成果演示部分主要考核各团队最后的交付软件或原型系统及其相关文档的最终稿。最终将过程实施和最后成果演示两部分成绩按一定比例形成团队成绩。学生个人成绩也受所采用的过程模型的影响,如敏捷过程模型强调团队的成绩就是个人的成绩,而瀑布模型比较适合分层管理思想,学生个人成绩可以在团队成绩基础上,根据个人对团队所做贡献的业绩系数进行调整。
5、交流平台
在整个实践过程中,教师与学生之间需要频繁交流:教师需要定期发布通知、上传文档模板、监控项目进展情况、解答学生问题;学生需要针对实践中遇到的问题寻求教师或同学的帮助,同时根据计划按时提交阶段成果。为了教师与学生之间能够顺畅交流,整个实践过程需要实时监控,实践支持平台也必不可少。在实践教学平台建设中,我们从开发与维护的可持续性、学生使用的便利性等方面反复论证,确定“以学院现有的信息化平台为基础”的建设原则,在学院的“协同工作与学习系统”中实现“教学辅助”功能并向企业教师开放。该平台不仅实现了课件、作业的上传和下载,还成为学生获取教学补充材料和师生教学互动的直接渠道,具体网址为http://soft.buaa.edu.cn/eCollege/Index.aspx。
6、实施反馈
校企结合的软件工程实践框架为软件工程实践教学建设与实施提供了依据,但它只是一个框架,规定了软件工程实践课程教学的基本内容。每次具体实施都是对该框架的一次验证,并且可以根据实施情况对框架进行优化和完善,因此将实施反馈作为该框架的重要组成部分,要求每年课程实施完成后根据当年教学主题的不同,开发有针对性的调查问卷,以及时了解课程的实施效果,为持续提升后续实践教学质量提供动力并指明方向。
二、框架应用
依据前面提出的软件工程实践框架,通过与IT行业敏捷软件开发实践实施最好的Thought-Works(斯特沃克)公司进行多次洽谈,北京航空航天大学软件学院软件工程实践教学团队于2012年4月确立2012年暑期软件工程实践的具体实施方案,确定由7人构成的校企结合指导教师团队对2009级本科生进行敏捷方法实践训练。
1、实践准备
为了使学院教师和企业教师能很好地合作,在实践准备阶段,学院教师团队一行3人花费2周共累计5天的时间进入企业体验生活,与来自企业的4名具有丰富开发经验的教师组成7人的实践教师指导团队。以该公司为某国际机构开发的一个有关慈善业务管理系统项目为实践案例材料,对其剪裁后,形成了此次实践教学案例并配备50页文字材料,提供已运行系统的链接网址。为规范整个实践过程,实践教师指导团队根据此次实践主题,制定了详细到天的教学实施计划,明确给出教师、团队的具体工作内容以及每个阶段的提交物,确定学院教师与企业教师的工作重点,同时开发实践交付物相关文档的模板。
2、应用效果
2012年6月15日—7月30日,我们依照上述思想对大三139名本科生组成的14个团队讲授软件工程实践课程。在6月15日的实践启会后,向学生下发案例的相关材料、教学实施计划及相关标准、模板,让学生在实践前就明确验收标准。为了增强实际项目开发氛围,我们要求学院指导教师和学生每天按时到实践场地。学院指导教师每天到实践现场不定期考查各团队进度、批改审阅学生提交的阶段成果,针对开发出现的技术与管理问题进行现场指导,从客户角度回答与需求相关的问题。企业指导教师则按计划在各阶段点到实践现场作团队指导和总体点评。在第一、第二阶段的评审会上,除了指导教师针对每个组作点评外,还邀请做得好的团队介绍成功经验,供其他组借鉴。第三阶段的验收包括软件功能演示和小组答辩。学院指导教师依据最初计划,对学生的文档和软件产品给出综合成绩。为了了解校企结合实践教学的效果,我们在课后进行针对教师、教学等各个方面的问卷调查,软件工程实践课调查问卷见表1。学生对企业教师在实践指导中的作用给予充分肯定,满意度达到96.3%;对学院教师在实践中的指导和评审也很满意,但是相对来说,学生对学院教师的实践准备不是很满意。产生该结果的原因在于:一是学生对案例内容生疏,与以往由学生自己提供实践项目不同,此次则由教师提供实践项目并且在实践启动会后才下发相关材料;二是对“客户意图”理解不够,与以往大作业中自己既是客户又是开发者不同,此次实践项目的客户是指导教师,他们对案例需求具有解释权。很多学生在开发中遇到需求不清楚的问题时没有与教师积极交流,而是“臆断”需求,导致在阶段性检查中由于没有正确理解“客户”需求而受挫。此外,学生普遍反映时间太短,但这恰好符合软件开发项目的实际情况,软件开发中最紧缺的资源莫过于时间。学生对此次实践的整体满意度为95.56%,还是很高的。这表明以教师为辅、学生为主的校企结合教学模式以及对学生实践能力和团队协作能力的培养方式得到了学生的充分肯定。对于该调查中的两个开放问题:“你认为此次实践值得发扬的方面有哪些?需要改进的方面有哪些?”学生认为最值得发扬的是企业教师参与实践的指导,最需要改进的是延长实践持续时间。该反馈再次验证了校企结合模式的有效性。
三、结语
软件工程实践课程是对本科生3年来所学软件工程理论的综合训练,对即将进入企业实习的本科生非常重要。实践过程越接近目前软件开发企业现状,越能缩短学生适应企业的时间。开放的软件工程实践框架为更新实践教学内容注入了新的活力,企业教师的引入弥补了学院教师实践知识的局限性,源于企业的真实案例极大地调动了学生的积极性,面向用户价值的验收与考核标准引导学生要立足用户开发软件,充分利用信息化平台等手段实现师生线上和线下交流。对于一名合格的软件工程师,这些训练必不可少,并且做得越早越好。为了能持续地提高该课程教学效果,我们还需要在真实案例的建设和校企教师团队特别是高水平企业教师的深度参与等方面不断努力。
作者:林广艳 贾经冬 谭火彬 单位:北京航空航天大学 软件学院