邓立苗 于仁师?
摘要:软件工程实践作为计算机专业毕业设计及实习前的综合实践环节,在应用人才培养体系中占有重要地位。本文在对目前实践教学中存在问题分析的基础上,根据本专业特点,从实践安排、实践教学方法及实践环节三方面进行改革与实践,从而达到培养应用型人才的目标。
关键词:软件工程;实践;任务驱动;应用能力
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2015)06-0106-02
《软件工程》是计算机专业的一门专业必修课,主要以工程化的方式介绍软件开发过程中的原理与方法。本课程在整个计算机专业课程体系中起着非常重要的作用,它集计算机专业各门专业基础课(程序设计语言、数据结构、数据库原理等)为整体,要求学生掌握软件开发技术、软件工程开发方法和软件项目管理等主要知识,并将所学知识融会贯通,深入理解、强化和应用[1]。该课程不仅理论性强,而且工程性、实践性特别强。因此,传统的实践教学模式不能满足该课程教学的需要,必须对课程实践教学进行创新与改革。本文在分析现有实践教学现状的基础上,结合我校开展的应用型人才教学改革的实际情况,对软件工程实践教学改革进行探索。
1 现状分析
在软件工程的教学过程中,存在的一个主要问题就是在学生进行软件开发时无法将所学到的理论应用于实践过程中,應用实践能力较差。对于本校计算机专业的学生,本课程一般安排在大四上学期讲授,毕业设计安排在大四下学期,这样可以将本门课所学的理论方法用来指导毕业设计。但在毕业设计过程中,存在着很多问题,比较典型的是虽然掌握了软件工程的开发原理与方法,但在软件开发时却感觉无从下手,不知道这些方法该如何使用,无法完成一个完整的小型软件项目的开发。同时,撰写文档的能力较差,在毕业论文的撰写过程中,各章节的安排不符合软件开发流程,不能很好地描述每个开发阶段所使用的方法和工具。
另一个主要问题就是实践环节成果往往很难进行定量评定,现有的教学框架中缺乏一个完善实践成果评价体系。软件工程实践成果一般是团队成员共同的结果,因此如何考核个人与团队的业绩也是一个难点。
要解决计算机专业软件开发实践能力和文档撰写能力差等问题,需要重视和加强软件工程课程的实践环节,探讨适合本门课程的实践教学方法,从而提高本门课程的实践教学效果,有效地提高学生的实践能力和软件开发能力。
2 实践教学改革
针对软件工程实践课程的特点,在认真分析了以往课程教学中存在的问题,在深入高校、企业调研及与学生座谈等基础上,积极探索理论和实践教学模式,对实践安排、实践教学方法及实践考核环节进行探讨与改革,充分体现该课程的综合性、实践性和工程性。
2.1实践安排
俗话说,“工欲善其事,必先利其器”,充分的准备工作是保证任务顺利完成的基础。在进行实践之前,需要做好准备工作,包括实践安排以及确定实践内容。
以往实践环节都安排在理论课程全部讲完以后,集中时间安排上机实践。在这种情况下,虽然已学完全部的理论知识,对软件整个开发过程有了比较全面的认知,但没法使理论和实践有机结合在一起。实际的软件开发是分阶段进行的,每个阶段都有需要完成的任务,且有解决相关问题的方法。在讲解这些原理和方法的过程中,如果结合实践过程同步进行的话,能够更好地加深对所学的理论知识的理解。针对这一目的,课程采用理论与实践同时进行的方式,分阶段进行,分为需求分析、概要设计、详细设计、编程实现和系统测试这五个主要阶段。在讲完每个阶段的理论知识后,安排相应学时的实践环节,让学生用所学的知识解决实际问题,从而更好地指导实践,提高他们的实践应用能力。
为达到本门课程的实践要求和目标,本课程的实践内容需要紧紧围绕软件开发中涉及的方法、过程、管理及相应支持工具展开,因此实践的载体——实践题目是关键。题目过于简单,无法体现团队开发优势,过难又会因超出学生现有能力和时间限制而无法完成,挫败学生的积极性[2]。实践题目的规模要适中,在实践中,既要让学生认识到业务理解和系统实现上有难度,又不至于难以完成。要求学生按照软件开发生命周期的各个阶段来进行,并在每个开发阶段撰写相应的文档。在本门课程刚开始就让学生自己选择实践题目,题目尽量选择大家较为熟悉的一些系统,如学生管理系统、酒店管理系统、订票系统等,这样能够更好地了解软件的需求。同时,针对农业院校的特点,鼓励学生选择农业方面的项目,如农产品信息管理系统、农业推广平台及病虫害决策支持系统等题目,从而让学生更好地将本专业知识应用到农业领域中,为了达到培养现代化的农业信息化人才的目标。同时,为了强化软件开发过程,淡化编程语言的限制,对开发语言和工具不作限制,让学生选择自己较擅长的编程语言。为了培养学生团队协作与沟通能力,项目以小组的形式进行,4-5个人为一个开发小组,选出一个能力较强的学生担任项目组长,组长起着任务分工以及整体协调的作用。
2.2 实践教学方法
在软件工程的授课过程中,不能将理论和实践环节孤立地划分开来,而是应该将这两部分紧密结合在一起,相互作用,相互渗透,通过理论知识来指导实践过程,反过来通过实践加深对理解知识的理解和掌握。在实践教学中,主要采用任务驱动和小组讨论的方式。
在讲解每个阶段的原理方法前,采用任务驱动的方式,针对所选的题目,先让学生思考这个阶段要完成什么任务,应该如何完成。讲解完相应的原理与方法以后,让学生分组讨论如何用这些方法去完成项目本阶段的开发,将所学的知识融入实际的软件项目开发与管理中。比如讲到系统分析中的需求分析时,就可以让学生来讨论自己所选项目要完成哪些功能,或者让学生分别扮演需求方和开发方两个角色,来获取软件需求。讨论好要完成的功能后,再考虑用什么形式来描述需求。通过这种方式将所学的知识应用于实际项目的开发过程中,大大提高了学生学习的积极性,从而加深对理论知识的理解。有时由于课堂时间有限,没有足够的时间讨论,可以把相应的内容作为课后作业,让学生利用课余时间去完成。
每个阶段的理论知识讲完以后,安排一定学时的上机实践,完成本阶段的任务。每个小组按计划、分阶段按时完成阶段任务,提交阶段成果[3],如表1所示。教师组织评审并扮演项目的评审者角色,对本阶段的成果进行检查验收。指出所出现的问题,并指导学生在规定的时间内解决问题。这样使得问题能够尽快得到解决,尽量避免为后面的工作留下隐患。
2.3考核环节
考核也是非常重要的一个环节,选择一种合适的考核方式,会对学生起着积极的激励作用。以往教学过程中对实践考核不太重视,到最终只让学生上交程序和文档。这样就会使一些学生对实践不重视,不认真去完成程序,而是从网上下载程序应付了事,教师只通过看文档也没法真正了解学生所做的工作,不能真正体现公平性。为提高学生的积极性,尽可能地显示公平性,将实践成绩分为两部分:平时成绩和最终考核成绩。平时成绩根据学生出勤情况、上课讨論和阶段评审情况来打分,最终的考核采用答辩的形式进行,考核成绩分为三部分:程序运行情况、答辩情况和文档撰写情况。答辩基本上模拟毕业答辩的形式进行,首先由项目组长演示程序,然后项目组的每个人介绍自己所做的工作,每个人介绍完自己的工作后,教师根据他们所做的工作进行提问,根据他们所做工作及回答问题的情况打分。虽然项目以分组的形式进行,但每个人都有自己独立划分的任务,这样增加了他们的责任感和动力,使每个人都能够动手进行实践。通过这种分工合作的形式,培养了学生的团队合作精神以及沟通能力。同时每人都需要上交一份实践报告,作为评判文档撰写情况的依据。
3 结论
本文在对软件工程实践教学中出现问题分析的基础上,针对学生软件开发能力和撰写文档能力差这两个主要问题,从实践安排、教学方式和考核方式三个方面进行改革与实践,以达到本门课程实践教学目标和培养学生实践能力的目的。
参考文献:
[1] 厉小军,谢波.软件工程实践课程教学改革探讨[J].计算机教育,2012(3):106-110.
[2] 林广艳,贾经冬,谭火彬,武晓乐.本科生软件工程实践课程探索[J].计算机教育,2010(24):138-141.
[3] 曾红卫,刘悦,刘炜.软件工程实践教学方法探索[J].计算机工程与科学,2011,33(A1):15-18.