软件工程多模式融合教学路径分析
摘要:针对软件工程课程的特点和软件人才培养的要求,融合多种先进的教学模式和理念,开展多模式课堂教学策略研究,以WorkshopTeamwork教学法为学生开展学习活动的基础。实行任务驱动下的案例项目主线教学,在课堂中引入情境教学方式,并借鉴翻转课堂的做法提高课内学时的效率,文章详细介绍了教学的总体规划、教学过程的实施策略和评价手段,以推动软件工程教学改革。
关键词:多模式融合;软件工程;翻转课堂
1本项教学改革背景
软件技术和产业的飞速发展进步,为我国经济注入了强大的推动力量,信息产业的人才需求量也在逐年扩大。据有关部门统计,未来五年,我国信息化人才总需求量高达1500—2000万人,其中“软件开发”、“网络工程”等人才的缺口最为突出[1]。以软件开发为例,职位数排名前五的职位依次是:软件工程师,高级软件工程师,网页设计,互联网软件开发工程师和网络推广专员。高校作为社会所需人才的培养基地,承担着培养大批合格软件人才的职责,满足软件产业发展和市场需求。为此,很多高校开设了多门软件技术方法课程,其中的核心课程包括软件工程,这门课程训练学生从工程化的角度认识软件开发和维护,通过实践理解和运用工程化的软件开发原理、技术和方法,在软件课程体系中具有重要地位。软件工程课程的特点是知识体系庞大,内容丰富,同时又与产业和应用联系密切,实践性很强。目前,大部分高校采用理论讲授上机练习的形式开展该课程,课程结构设置倾向于教师讲授,未给实践教学以足够的重视,学生参与软件工程项目机会很少[2]。即便是课堂讲授,有限的学时也难以展开或深入。大部分学生虽然学习过几门程序语言和一些软件专业课程,但基本上都没有经历过软件项目开发,普遍感到软件工程笼统抽象,很难真正理解其中的精髓。因此,如何改变软件工程课程的教学模式教学方法,提高教学水平和质量,切实培养学生的工程设计开发软件系统的能力,已经成为高校软件专业教改的重点热点之一。在多年的教学实践探索中,我们学习借鉴了多种新型教学方法的优点,包括WorkshopTeamwork教学❣法[3]、任务驱动的项目案例教学法[4,5]、情境教学法[6]、翻转课堂法[7]等,展开深入研究,将它们进行融合和合理改进,应用到软件工程教学中,提出了多模式融合的软件工程教学策略,结果表明,该教学模式收到了好的效果。
2多模式融合的软件工程教学策略
2.1多种新型教学方法融合应用
2.1.1WorkshopTeamworkWorkshop直译为工作坊、创作室、专题研讨会或实验班,是一种由几个人组成小组,进行密集讨论的集会,运用群体压力和有效的指导来完成复杂而具有挑战性的工作[2]。WorkshopTeamwork教学法以教师引领启发、学生分组学习和共同探讨问题为核心,通过充分的沟通交流实现思维能力、自学能力的培养,对于理解、领悟软件工程中抽象的理论及框架等概念模型具有一定的应用价值。它偏重于短期强化的专业训练,适合软件工程这样的短学制理论课程部分,通过充分调动参与者的积极性,在短期内高效率地完成教学任务。
2.1.2任务驱动的案例项目任务驱动教学法将以往以传授知识为主的传统教学理念,转变为以解决问题、完成任务为主的多维互动式的教学理念;将再现式教学转变为探究式学习,使学生处于积极的学习状态[3]。任务驱动法中的任务可以表现为案例(Case)或项目(Project)的形式。案例通常是能够突出体现一个或多个知识点、技能点的范例,在例子中设置问题或困难的情境,没有特定的解决之道,教师扮演设计者和激励者的角色,鼓励学生积极参与讨论,以求得解决方案。项目往往是综合性的案例,涉及本课程的大量知识技能点甚至融合了多门课程的知识。学生在老师的指导下独立处理项目,自我组织信息收集、方案的设计、项目实施、过程管理和最终评价,了解并把握整个过程。
2.1.3情境教学情境教学法的主要理论依据是情感和认知相互作用和认识的直观原理,通过在教学过程中引起学生积极的、健康的情感体验,直接提高学生对学习的积极性,使学习活动成为学生主动进行的、快乐的事情[6]。在教学过程中,教师有目的地引入或创设具有一定情绪色彩的、以形象为主体的生动具体的场景,以引起学生一定的态度体验,帮助学生理解学习内容,并使学生的心理机能得到发展。
2.1.4翻转课堂法翻转课堂是指重新调整课堂内外的时间,将学习的决定权从教师转移给学生。教师不再占用课堂的时间来讲授信息,这些信息学生在课后通过观看课程视频、电子书、与他人讨论、查阅参考资料等自主学习活动来掌握。课堂内的宝贵时间,学生能够更专注于主动的基于项目的学习,共同研究解决面临的问题,从而获得更深层次的理解。教师也能有更多的时间与每个学生交流,掌握学生的进度和缺欠,以便更有针对性地对学生指导和辅导[7]。
2.2课程规划
软件工程课程系统地介绍软件开发的过程、方法和工具的基本概念及需求分析、软件设计、编码风格、软件测试的工程化方法,涉及计算机科学、数学、经济学、法学、管理学、心理学等多学科,具有理论深、涉及面广、实践性强的特点。针对这些特点,我们设计了以WorkshopTeamwork为基本组织形式,采取翻转课堂的部分做法,将学习内容分解为课外自学部分和课内学习部分,课前由学生独立或以小组为单位进行知识的自我获取和掌握,课堂上开展任务驱动下的案例/项目的互动分析讨论,经常引入模拟工作场景的情境学习,课后学生在教师的指导下进行总结归纳提高,答疑解惑,并开展综合实验。在课程开始时即规定考核方式,最终成绩由四部分组成:课前自学+练习占20%,课堂学习占30%,综合项目(含开展过程和最终答辩)占20%,期末笔试占30%。前三项均为过程性评价,占最终成绩的70%,体现了对实践环节和参与度的重视。在过程性评价中采取个人自评(20%)、小组互评(20%)和教师评分(60%),含多个评估项目如学习态度、参与积极度、任务完成程度、创新性等,能够较为全面和充分地反映学生的个体能力、合作能力和整体表现情况,激励和督促学生平时积极学习,避免了以往仅考笔试的临时冲刺,或者团队中的平均主义现象,真正达到了学习过程就是学习结果的目的。
2.3小组活动的组织和实施
根据WorkshopTeamwork教学法中对案例及情境的需要,我们对软件工程课程教学计划进行总体规划和任务分解。通过收集整理具有代表性软件工程实例,创建若干对应课程相关章节内容的相应工程教学项目及工作情境,内容包括任务的名称、目的、需要解决的问题、项目需求的背景等相关资料。这些工作资料☭的收集和准备,是实现小组学习的关键。课堂任务的设计与选取强调以下几点:任务的相对独立性和开放性;任务是某项知识的学习和应用;将各子任务的完成贯穿到教学的各个阶段;每个具体任务既要覆盖一定范围的相关知识的运用,题目又不应过大,应相对独立,便于项目学习的实施。将学生分成小组,每个团队5-7人,选出一名团队负责人,教学活动将以小组形式,在负责人的主持下,在课内外展开和完成。每名学生在团队中有明确分工,不再是一个旁观者,而是分别担任客户、项目经理、系统分析员、程序员、测试员和评审人员角色等不同角色,完成特定任务,在不同的任务中,实行角色轮换,保证每个成员对所有角色有所体验。小组学习的基本流程是:呈现任务→分析任务→完成任务→总结评价,四个步骤所包含的具体环节如下:呈现任务:创设情节、引起注意、提出任务;分析任务:针对问题、明确思路、提示重点;完成任务:自主探索、领会意图、解决任务;总结评价:检查结果、发现不足、总结经验。在课堂上,教师提出一个待解决的案例问题,每个团队独立提出问题解决方案,各团队对多种解决途径进行讨论,改进不足。在课外,每个团队自由选择或由教师给出一个要开发的实际项目作为案例。团队成员分别扮演各种角色分工,讨论问题解决方案。以案例为核心,围绕需解决的问题展开讨论及工作。小组中的每个人都应当畅所欲言,充分交流,团队负责人负责活动的开展,人员的组织和激励,要求每个成员认真努力,主动参与,及时纠正和避免“南郭先生”现象。教师对学员的实际表现进行考察、点评以便有针对性地提供咨询意见。
2.4案例项目的开展
近年来,软件工程学科发生了巨大变化,从传统的结构化技术到面向对象技术,继而发展到基于构件和面向服务的技术;出现了平台网络化、方法对象化、系统构件化、开发工程化、过程规范化、生产规模化的态势;软件开发过程、工具和方法等方面有了重要的发展。为了及时反映技术和理论的进展,在案例和项目的来源方面,我们改变了以往主要由教师设计的做法,通过学院与유广州、深圳、佛山等多家技术企业和技术机构的校企合作机制,从企业引入了大量的实际产品和项目,根据课程内容和进度,分解和改变成多个小案例和小、中、大型实训项目。为顺应移动互联网发展潮流,我们精选了移动互联网和游戏开发技术中的软件工程实践案例,在课程中介绍这些项目的设计和开发经验,鼓励学生探索;精准医疗是目前医疗发展的新方向,精准软件的设计和开发与云计算、大数据分析等新兴技术密切相关,我们就把纷繁的资源整理成较为系统的格式,提供给学生课外学习,从而使得课程内容紧紧贴合蓬勃发展的医疗应用实际。这些做法不仅解决了案例项目来源单一、数量不足的问题,而且避免了闭门造车,使得学生能够接触到一手的软件产品的分析、设计中的问题,具有很强的实用价值和岗位情境价值,激发了学生的探索欲和表现欲。软件工程中的案例为小例子,较容易为学生接受和理解,能够在15分钟左右的时段内获得结果,不仅在流程上相对完整,而且在课时上便于掌控。项目则更加复杂,综合性更强,往往在学习完软件工程的一个独立阶段之后提出,检验学生综合运用原理和方法的能力,涉及的时间段也比较长,教师在课堂出提出项目要求,学生开展分析,获得初步的需求规格说明,而项目的设计、分工实现和测试、维护等主要放在课外展开,以获得充分的时间保证。在课程结束时,学生课内外产生的设计和分析成果就构成一个完整的项目工程,利于总结、比较和提高。随着软件工程的案例项目数量不断增加,内容不断丰富,为了便于管理、检索和更新,目前已经建立了教学案例项目库,包括课堂案例50多个,各类实践项目30多个,使得课堂内容和训练۵内容得到大大充实,训练素材和学习过程的质量也明显提高。
2.5真实情境的教学运用
在软件工程课堂上,我们组织学生以小组(Teamwork)形式讨论案例和项目中的疑难,提出案例和项目的解决之道并加以迭代修正,获得最终解决方案,组织软件开发和实施过程,就是对软件工程岗位的情境模拟,在其中引入了讨论情境、辩论情境、商议情境、多种媒体表现情境等,给学生以耳目一新的感受,活跃的课堂气氛,竞争与合作并存,使得学生全力投入,有效地促进学生思维的活动。例如,在开展学校医药费管理系统项目的需求分析时,教师提出问题:哪些干系人参与该项目的需求获取?学生小组经过讨论,给出了各自的结果。大多数小组认为,编程人员应当作为干系人参加需求分析活动,只有编写程序的人才知道某些功能是否能够实现。而实际情况则是,技术团队在前面的可行性分析中就已经证实了技术可行性,不必重复可行性分析。经过比较讨论,同学们强化了需求分析重要性的意识。又如,在软件测试环节,很多学生认为单元测试是编程者个人的事情,无需其他技术人员测试。为了验证同学们的想法,我们设置了如下情境:编写一个方法A,输入任意日期,输出该日期所对应的星期几,然后分别由编写团队和其他团队来测试代码有无bug;在学生已经完成的学校医药费管理系统1.0版本中随机选出了几个模块(编号为B1-B4),分别由编写团队和其他团队来进行测试ย。经过20分钟的测试,所获得结果如下表。虽然以上只是小样本实验结果,但学生已经在情境学习中深刻认识到了单元测试中其他技术人员介入的必要性,同时还验证了一个测试原理:检出错误的代码段比其他代码段更容易发现新的错误。学生对相关内容有了更深的领悟。
2.6翻转课堂向课外延伸
软件工程教学要想充分利用课内时间,使得学生在有限的学时中消化案例,理解项目,很有必要借用翻转课堂的课前自学普及型知识、课上讨论关键性要点、课后自我训练升华提高的策略。
2.6.1课前布置任务:教师铺路学生自学要实现学生的课前自学,前提是教师充分重视课前准备工作。教师首先根据课程总体教学目标划分一系列的单元子目标,再根据子目标细化成具体任务。具体任务要适应学习者的水平,符合其课外自主学习的特点,任务难度适中,学生能够独立完成,或以小组形式自学完成。教师根据细化的任务和学习者的实际情况,制作相应的学习资料,以满足学习者的基础知识储备。例如,在总体设计环节,我们将学习内容分解为5个小单元,包括软件总体设计的概念和目标、软件体系结构与风格、总体设计的原则、总体设计的方法和工具、总体设计的应用,每个小单元里包括PPT、案例、思考题、阅读链接。学生在完成了这5个小单元的自学后,初步掌握了总体设计的基原理方法,未能解决的疑问将作为上课时集中讨论的主题。
2.6.2课堂教学活动:解决疑难重点问题教师在课堂上组织学生进行任务完成情况的汇报、测评以及后续任务的布置等教学活动。通过组内交流和组间答疑,尽量使更多的问题由学生自行解决。例如,在总体设计学习中,A小组提出,设计软件时没有必要先确定体系结构风格,应当顺其自然。B小组发表了反对的意见,认为很多项目开发符合特定类型,事先设计好体系风格,有助于采用成熟的方案进行设计,少走弯路。通过讨论大家认识到:复杂系统采用面向对象方式设计比传统结构能够更准备地表示数据之间的关系,提高重用性和可维护性;过滤器类型的软件不必考虑交互性,可以采用管道风格设计;如果业务处理以数据为中心,则可以采用仓库体系结构,等等。教师对学生课堂表现进行考评,综合前期任务的实施情况,制定后续任务。
2.6.3课后自我训练:巩固归纳升华提高教师根据本堂课的学习目标和知识要点,设计课后小练习,交给学生个人独立完成,设计课后综合性练习,交给学生以小组形式独立完成。学生可以将自己的练习结果和思路发布到网络群组中共享,分享经验,共享发现的新工具、新技术,互相帮助攻克困难。需要教师及时关注跟进,了解学生的练习情况,并及时进行辅导、提示和解答,从而保证学生在课后能够及时进行巩固练习,复习归纳。另一方面,学生中涌现的新点子、新材料,产出的优秀作品,教师可以及时收入素材库,作为今后教学的辅助材料。
3结语
近几年来,我们不断摸索尝试以小组为单位的任务驱动下的案例/项目教学新模式,在合适的环节开展情境教学,吸收翻转课堂的优点做法,以实际案例和项目为主题,以实现任务为模块学习目标,学生课外自学、开展小组活动、探索解决问题的方案、团队合作与竞争等,完全改变了传统的以教师为主体的讲授方式,使抽象的概念和工程原理经过学生的主动学习和实践而变得实际起来,取得了很好的教学效果,主要表现在:充分调动了学生的主动性和积极性,课程由原来干瘪无味变得鲜活生动,学生们戏称“软工课堂热,发言抢答忙”,学习观念得以改变,学生的自学能力、查阅文献的能力、分析软件系统和设计系统的能力、编程和测试的实战能力都得到了较大提高。学生通过大量案例和项目的实践学习,感受到了软件工程课程的指导意义和实用价值,提高了运用软件工程先进思想和方法设计开发软件项目的信心和愿望。对于教师来说,开发具有新技术、新思想的教学案例,才可能教好学生,因此,新的教学模式既给予了教师适度的压力,又提高了教师学习运用软件工程思想方法和技术的动力。运用新教学模式时我们也看到了存在的一些问题:随着软件工程技术和思想的发展,学习内容越来越庞大,如何在保留经典和引入新潮之间做好平衡,如何有效地过滤相对过时的内容,尚未有一个明确的原则和解决思路;软件类部分课程具有一定的重叠性,相关的课程是否可以合并,减少重复环节?我们将不断学习,不断实践,改进和完善软件工程教学模式,切实培养学生的思考能力、动手能力,为社会培养更多合格的软件工程人才。
参考文献:
[1]全面解析我国2015年IT行业发展与就业前景.
[2]毛燕琴.软件工程专业案例启发式教学实践框架研究[J].计算机教育,2015:22-24.
[3]吴建斌,陈中育,叶荣华,等.软件工程类课程教学模式改革探索[J].中国信息技术教育,2013:119-121.
[4]熊祥光.项目驱动的校企合作及做中学教改实践[J].计算机教育,2015:49-51.
[5]王文发,武忠远,许淳.地方高校软件工程专业校企合作实践教学的探索与实践——以延安大学为例[J].高等理科教育,2016:114-119.
[6]陈经优.刍议情境教学在软件开发教学中的实施方式及作用[J].网络安全技术与应用,2014:204-205.