合作学习在软件工程专业综合实训课程中的应用
摘要:在软件工程专业综合实训课程中实施合作学习,以开发小组形式,全真模拟软件企业开发软件的流程进行项目实训,有利于培养学生的创新能力、自学能力和团队精神。
关键词:合作学习;软件工程;实践教学
作者简介:阳小华(1964-),男,湖南衡阳人,南华大学计算机学院,教授。(湖南 衡阳 421001)
基金项目:本文系湖南省教育科学“十一五”规划课题“基于团队的软件工程职业人才培养模式研究与实践”(课题批准号:XJK08BGD017)的研究成果。
中图分类号:G642 文献标识码:A 文章编号:1007-0079(2011)13-0112-02
一、在软件工程专业综合实训课程中实施合作学习的必要性
1.合作学习的概述
合作学习是美国一种运用于小组教学的教学方法。1961年詹姆斯·科尔曼在《青少年交往》一书中曾谈到,社会心理学的长期研究已表明,当人们在一个共同的目标下进行合作性的工作时,人们将会互相帮助、互相促进、互相喜爱、互相尊敬,并且尽自己最大的努力去把工作做好,而这一原理也可以应用到课堂教学中去,以提高学生学习的效益。随后,一些学者也相继提出了类似的观点,并逐渐形成了“合作学习”这一具有特定含义的概念。[1]
在传统的课堂学习中,教师讲,学生听,很少有交流的机会。而合作学习则视教学动态因素之间的互动为促进学生学习的主要途径。学生在小组或团队中为了完成共同任务,有明确的责任分工,开展互助性学习活动,共享信息和资源,共同完成学习任务。这种互动无论在内容上还是在形式上都与传统的教学有所不同,它不仅仅局限于师生之间的互动,而是将教学互动推延至教师与教师、学生与学生之间的互动。[2]与个别化学习相比,合作学习有利于促进学生高级认知能力的发展并有利于学习者健康情感的形成。
2.在软件工程专业综合实训课程中实施合作学习的必要性
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。从工程意义上讲是指软件开发、维护、管理等活动的总体,从学科意义上讲包括软件开发相关的理论、原理、方法和技术。软件开发需要融入工程化的思想,要有高度的设计能力,关注更多的软件运行属性和设计质量属性,需要软件开发人员的团队合作。团队协作精神能否良好地在工作中体现出来决定了软件工程能否顺利完成,从而在根本上决定了一个项目开发的成功与否。需要把一群一直“独干、单干、自己说了算”的开发者组织起来形成一个团队相互协作,让这个团队的成员与成员之间能够良好的相互交流、互通有无。微软是全球最大的消费型软件供应商,其Windows2000操作系统的开发团队超过2000人,在这样一个大型的开发团队中严格分离了设计架构、可行性分析、编码、测试、文档管理、市场销售等等多个部门,这么多部门的开发者们能够把Windows2000顺利地交到世界各地的用户手上,团队精神的作用是不言而喻的。
软件工程专业是一门综合性、实践性、行业性非常强的专业。软件工程专业实践教学环节主要以综合实训课程软件项目开发的形式进行,一方面将学得的理论知识运用于实践中,另一方面培养学生的工程能力(包括软件工具的使用)和团队协作精神。团队协作能力是现代应用型软件人才所要具备的基本能力。在软件工程专业综合实训课程中,以合作学习理论为指导,实施合作学习,模拟企业生产开发环境,按照企业真实的开发流程,组织学生完成真实的软件项目。在教学中,教师作为课堂活动的组织者,负责组织和调动整个教学过程,观察并记录每个小组成员的进展,同时,教师又是参与者,教师与学生处于平等的位置上,从而激发了学生的学习兴趣,使不同程度的学生在互助学习的过程中从不同的角度共同得到提高,培养学生的创新能力、自学能力和团队精神。
二、合作学习在软件工程专业综合实训课程中的应用
1.确定课程教学目标
根据软件工程专业的培养计划和四年课程内容,同时考虑到软件人才的社会需求,把实训课程内容分为四个方面:设计程序设计综合设计实践、软件工程设计实践、软件测试实践课程、应用系统设计与实现。[3]
(1)程序设计综合设计。这是软件工程专业一年级本科的必修课程,目标是培养学生个人的工程项目开发能力,提高学生在个人软件开发过程、编程风格、编程技巧、算法理解、基础知识和应用等多方面的素质。教师在实践教学中以案例讲解的形式,介绍课题涉及的关键问题及主要的知识点,引导学生逐步完成。事先准备多个项目供学生自定项目。
(2)软件工程设计。这是二年级本科生的必修课程,目标是培养学生的团队合作及工程项目研发能力,让学生在团队环境下使用最新的软件开发工具获得较真实的软件开发经验,提高学生在项目规划、队伍组织、工作分配、成员交流等多方面的能力,培养积极向上的合作精神。通过该课程实践使学生掌握软件生命周期中各软件过程的组织、实施及管理,掌握软件工程的撰写规范。
(3)软件测试实践。作为软件工程本科生的必修课程,软件测试实践课程是在学生完成软件测试的理论教学后进行的实践教学。目标是让学生掌握具体的软件测试方法,熟悉测试工具的使用,能够利用软件测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。
(4)应用系统设计与实现。这是四年级本科生的必修课程,在四年级的第一学期完成。学生在课程实践过程中将程序设计、数据库、操作系统、面向对象的程序设计、网络、软件工程、项目管理等众多课程的知识进行综合应用,既可以加深对理论知识的理解,又可以掌握实际应用系统的构建方法和技术,可以有效地提高知识点融会贯通的能力、分析和解决实际问题的能力。此外,学生可以根据实践课程要求,选择实践课程要求,选择合适的项目,根据兴趣进行设计,以培养学生的创造性。
2.建立适合合作学习的教学环境
对于软件工程综合实训课程来说,仅仅提供一个软件开发项目是远远不够的,每个人的技术特长需要封装在软件开发的各个阶段细节上,一个成功的产品必须经过严格的产业化运作,包括规划、开发、测试、包装、宣传、营销、客户服务。学生需要在一个符合软件工程要求的环境中开发软件才能够真正掌握软件工程的思想和方法。因此,建立适合合作学习的教学环境是在综合实训课程中实施合作学习取得良好效果的关键。为此,我们研究了软件工程的基本要素和小型软件项目开发的环境构成,逐步建设了相关的软硬件环境,将常用的软件工程工具引入到课程实验项目中,使用配置管理工具将所产生的各种制品控制在有序管理之下,使用建模工具和测试工具进行软件的分析、设计和测试。结合项目实训课程的要求,我们编写了规范的项目实训指导书,包括开发过程模型、系列文档模板、软件编码规范、段评审标准等,使实训工作规范有序。在教学中,全真模拟软件企业开发软件的流程构建开发环境,明晰管理制度、绩效奖惩等。按软件企业的作息时间进行项目模拟开发训练,按软件企业对员工的考核标准给出验收成绩,通过后,学生还需参加项目实训答辩,让学生感受真实的软件开发过程。
3.分组与实施
按照“组内异质,组间同质”的原则,根据男女性别、个性差异、能力强弱等状况将各个班级的学生分成软件开发小组,每组3~5人。鼓励基础有差异、性格互补的学生组成学习协作小组。开发小组构建采用“成员与任务”,并引入“团队角色”理论指导开发团队构建。在确保开发流程完整且主要工作职责相同的前提下,对学生团队“职务角色”有相应规定,如表1所示。
项目组长负责组织小组讨论、学习,考核小组成员的出勤与表现。每学期,根据任务完成、软件开发能力等的测试成绩,动态调整各组成员,运用小组内成员的差异性、互补性,引导学生积极参与、互助合作,利用组间水平的大体平衡开展公平竞争。班主任和任课教师负责协调各班之间、各个小组之间的关系,确保教学活动有序进行。
在教学过程中,学生以开发小组的方式开发一个具有一定规模的软件系统,首先要做好教学准备。学生获得一份简单的软件问题描述,简要描述所开发系统的整体功能要求。自愿组建开发小组,制订项目的开发计划。
第二,完整的软件开发过程。根据实验项目给出的问题描述完成软件需求规格说明。根据软件需求规格说明,设计软件系统的总体结构,然后教师将模块开发任务分配到每个小组,同一个模块将由3~5个小组进行竞争性开发。
第三,每个小组实现分配给他们的模块,编写所有相关文档,测试和调试代码。各小组共同协商讨论制订出本组完成任务的步骤、方法。为了提高小组合作交流的质量和效率,调动每个小组成员的积极性并尽量避免个别学生的“搭车”行为,要求每个小组成员自己先独立思考完成任务的步骤、方法、技能,然后小组共同协商讨论制订完成任务的基本步骤、所采用的技巧和可能的方法。按照6个步骤展开项目实训工作,即项目熟悉和环境准备、项目分析设计与文档编写、项目代码编写、项目测试、项目交付、项目总结。整个实训以一个实际项目的完整开发过程为主线,覆盖了需求获取、需求分析、概要设计、详细设计到实现和测试的整个开发过程。
第四,“组内合作,组间竞争”。小组各成员充分交流合作,确保各成员都能熟练操作教师演示的技能任务。小组合作学习的过程中,首先确保每个小组成员都能完成任务,在共同完成小组任务的基础上小组各成员互相鼓励,大胆创新,设计出独具特色的任务作品,提高任务完成的质量,使本小组在班级中获得更高奖励。各小组在合作学习的过程中,要遵循如下的小组活动规则:[4]一是每个学生都有责任保证他们的小组成员学会教学内容;二是只有所有小组成员都掌握了学习材料后能完成学习任务;三是在请教教师之前要先请求小组所有成员的帮助。
在项目模块开发完成后,团队之间开始进行模块买卖交易,并将所购买的模块与自己开发的模块整合起来成为一个完整的系统。
为了提高合作小组的软件开发能力,每学期为学生安排了两次专题讲座,由兼职教师和软件项目经理主讲。这些主讲人员有主持大中型软件项目的、经验丰富的教师,还有企业从事多年软件开发的工程技术人员。他们的专题讲座拓宽了学生的视野,让学生了解了在实际的软件项目流程。还引导学生以“团队”为单位,参与教师的科研或工程项目,或学生自选具有一定应用价值的开发项目,引导学生在相互合作中形成默契的开发团队,自然选择角色定位,培养职业能力。
3.多元评价,良性竞争
为实现评价的功能,改变过去以个人成绩为标准、以学生个人为奖励对象的做法,在评价中坚持以评集体为主,评个人为辅;以评全面为主,评特色为辅;以评过程为主,评结果为辅。实行鼓励性评价,并引导学生自己与自己比较,从中体会进步,消除落后生的自卑感,增强自信心。明确只有当所有的小组成员都达到目标时才能算获得成功。在课程教学中,真正做到评价主体多元、评价内容全面、评价形式多样、师生参与评价。具体地说,在分组合作学习中,每个学生的成绩以小组成绩为基准,根据每个小组成员在小组合作过程中承担的角色及作出贡献的多少,再做相应的上下增减调整。对在小组合作学习中有突出贡献的学生实行适量加分作为奖励,而对没有作出应有贡献的学生或很少参与本组活动的学生则实行适量减分作为惩罚。教师在学生分组学习操作中通过鉴别评定,充分肯定合作小组的成果,引导学生在科学探究的道路上不断“碰撞、对接、融合”,不断提高小组合作探究的积极性。这种以学生为主体、注重能力与素质、有共同的目标的评价方式,促进了学生合作精神的形成。
三、小结
实践证明,在软件工程专业综合实训课程中实施合作学习,科学可行。
(1)合作学习有利于培养学生的合作精神与综合能力。在合作学习中,为了达到共同的目标,小组成员相互了解,经常交流,彼此争论,互教互学,共同提高,随时解决可能出现的各种问题与矛盾,建立起一种亲密的合作伙伴关系。同时,小组在合作中收集与整理各种相关信息,综合运用各种软件与知识,完成软件开发任务,从而培养与提高了学生的综合能力。
(2)合作学习有利于全体学生主动参与,锻炼实际操作能力。传统的班级教学中,有相当一部分学生由于没有充分的参与机会,往往处于旁听、旁观者的地位。小组合作学习则改变了这一被动的学习状况,每个学生都能选择符合自己兴趣与特长的主题,在小组中独立承担这一部分工作的研究。自己的成功与否直接关系到小组的整体利益,增加了责任感,同时也发挥了自身的潜能。在项目开发过程中,基础相对较差的学生有了更多的机会目睹基础好的同学所做的示范,有更多的学习与锻炼机会。
(3)合作学习促进了学生的人际交往,突出了学生的主体地位。小组合作学习以组内成员合作,组间成员竞争的新格局,取代了个人之间的竞争,有利于成绩差的学生建立起自尊和自信,使其愿意积极主动地投入到与同学的人际交往中,同时,组内成员任务的合作性使学生之间建立起了一种互相依赖的关系,促使他们互相帮助、交流。在具体的合作过程中,每个学生都有一个独立的任务需要完成,要求他不断去学习、实践,改变了被动接受、旁观的局面,从而突出了学生的主体地位。
参考文献:
[1]陈德华.研究模式 超越模式[J].教学与管理,1999,(12).
[2]靳玉乐.合作学习[M].成都:四川教育出版社,2005:171-180.
[3]参见大学计算机可而成报告论坛组委会.大学计算机课程报告论坛论文集[C].北京:高等教育出版社,2009:647.
[4]王坦.合作学习的理念与实施[M].北京:中国人事出版社,2004:35.
(责任编辑:苏宇嵬)
上一篇:软件工程发展过程中的问题研究