前言:想要写出一篇引人入胜的文章?我们特意为您整理了软件工程课程案例库建设方法研究范文,希望能给你带来灵感和参考,敬请阅读。
摘要:笔者针对我校软件工程课程群中的教学问题,通过研究教学案例的选取和设计,建立规范的软件开发全过程案例库,以适应多层次多类型教学任务;在教学过程中融合多种教学模式,加强理论教学和实践教学的耦合度,保证软件工程实践规范化,培养学生工程化理念和团队协作意识,提高学生探索问题、分析问题和解决问题的综合能力;同时建立基于框架的可扩展实践平台,构建“做中学”的环境,提高学员学习兴趣和实践动手能力。
关键词:软件工程;案例库;教学模式;可扩展实践平台
我校软件工程课程群包括“软件工程”“软件系统分析与设计”“高级软件工程”“面向对象设计方法”“软件测试与质量控制”等多门课程,面向本科生、硕士研究生、博士研究生和任职培训等多个层次,课程门数多、内容交错、衔接紧密,培训要求差别较大。为使软件工程系列课程更好地服务于提升学生工程实践能力和协作创新能力的培养目标,我们积极开展实践平台和案例库建设,进行教学方法改革等。通过设计不同粒度、不同类别的案例,构建软件开发全过程案例库,以适应多层次多类型教学任务;在教学过程中融合基于案例的情景体验教学、基于项目牵引的工程实践教学、基于角色扮演和团队协作的项目研讨式教学等多种教学模式,使得每个学员都能参与到项目开发过程中,保证了软件工程实践的规范化;同时建立基于框架的可扩展实践平台,学生自主设计开发软件程序,提高了学生的学习兴趣和实践动手能力。
一、对实际工程项目进行提炼,构建软件开发全过程案例库
为了将枯燥、抽象的教学内容形象化、实例化,案例教学对于保证软件工程课程授课效果至关重要。案例教学与传统的讲授式教学存在较大不同,传统的讲授式教学主要是教员向学生传授知识,沟通的渠道是单向的,而案例教学不仅有教员与学生之间的沟通,还有学生之间的沟通,沟通的渠道是多向的。同时,讲授教学侧重理论,并通过演绎推理来传授知识,案例教学则侧重启发式教学过程,引导学生主动参与到课堂教学中,更注重实践与理论的结合。因此,探索软件工程类课程的案例式教学方法,总结、提炼、归纳、设计相关的教学案例,构建一个贯穿始终、设计合理、资源丰富的软件开发全过程案例库十分必要。
(一)案例的选取和设计
在案例教学中案例的选取和设计是案例教学的关键。好的教学案例应该来源于实际工程项目,同时在维度、粒度和内容上精心设计,既要相互衔接,体现生命周期全过程的要求,又要大小适中,适合单个教学模块的教学需求。从实际工程项目中精心选取、提炼、设计开发涵盖软件分析、设计、测试、项目管理等全生命周期的教学案例库,可为软件工程系列课程的案例教学提供有效的支撑条件,对课堂教学效果的提升起到极大的促进作用。
案例的设计应针对软件工程课程群各模块知识点的所处阶段、应用场景和授课目标的差异,既要有覆盖具体知识点的基本案例,又要有体现全生命周期工程化要求的系统案例和综合应用案例。案例内容包括软件过程中的工程案例、管理案例,贯穿全软件生命周期各阶段。
案例的选取应以全生命周期软件项目为主,从实际工程项目中挑选一批具有代表性的、能突出授课要求的素材,在此基础上进行加工提炼和补充开发,最终构建满足教学要求的系列案例。如从自主研制的“软件过程管理平台”中选取典型模块作为测试对象,针对不同测试类型的教学实验需求,对软件代码进行有针对性的变异和缺陷注入,编写对应的测试需求、测试计划、测试设计和测试报告,形成功能测试、性能测试、单元测试等测试案例。
软件工程课程要强调软件设计和软件测试的重要性,对软件设计和软件测试方法进行讲解时,除了要有设计合适的案例,还可以通过当前主流工具(如软件设计的RationalRose建模工具、单元测试的JUINT工具、功能测试的QTP工具等)的演示,使学员加强对软件设计和软件测试过程的可操作性的理解,并将其运用于实践项目中。
(二)案例库规范化设计
软件工程课程群的多门课程需要多样化的案例,适用于不同的场景,映射出不同的知识点。为了规范这些案例,需提取其公共要素,定义案例库规范化设计的基本元素。
案例库规范化设计基本元素中的“案例表现形式”可将案例设置为文档、代码框架、原型系统等。如在本科生的软件系统分析与设计课程中,案例是为学生搭建的一个OpenFrame框架,即一个半成品的代码框架,学生可从半成品框架中学习相应开发技术,然后自己完善半成品的代码框架,将学习与实践过程融入案例中。
案例库规范化设计基本元素中的“案例类型”可分为工程类案例、管理类案例、支持类案例等。工程类案例包括不同项目不同阶段的工程类开发案例,如客户需求规格说明书、软件需求规格说明书、概要设计说明书、详细设计说明书、软件代码、软件测试计划和测试报告。管理类案例包括项目策划、项目监控、风险管理、需求管理等。支持类案例包括配置管理、质量保证、测量分析等。根据案例的规模及适用情况,可将案例分为:基本案例、模块案例、系统案例。基本案例覆盖一个知识点,简单、清晰地通过一个实例展现知识点的具体应用,适合于基础理论知识传授阶段;模块案例覆盖多个相关联的知识点,通过知识点的综合应用将知识串起来,适合综合理论知识的应用阶段;系统案例覆盖的是一个独立的理论体系,通过完整具体的实例将理论应用于实际操作,适合实践教学阶段。
例如,在“软件测试”中,通过判定三角形的例子来让学生理解等价类划分法,这是一个基本案例,穿插在知识点讲授过程中。在三角形实例中补充边界值法、错误猜测法等测试用例,形成黑盒测试案例,这就是一个模块案例。而系统案例内容多、设计比较复杂,例如功能测试案例的设计,要包含测试计划、测试策略、测试设计的方法、测试用例的生成、测试用例的执行、自动化脚本的设计、测试运行结果分析以及测试报告等内容。
二、融合多种教学形式,紧密衔接理论和实践教学
传统的课堂教学教员在课堂上讲授软件工程方法、技术等理论知识,但由于这些理论较抽象难懂,课堂教学效果往往不理想。传统的实践教学主要是采用分组模式进行项目开发,但由于没有过程监督控制,通常是由一个能力稍微突出的学员完成所有过程,缺乏讨论、协作,最后往往把精力放在代码实现中,提交一套漏洞百出的代码。针对软件工程课程的特点,笔者结合本校人才培养目标和先进教学理念,对传统教学方法和手段进行改革,在教学过程中融合、应用基于案例的情景体验教学、基于项目牵引的工程实践教学、基于角色扮演和团队协作的研讨式教学等多种教学模式,加强了理论教学和实践教学的耦合度,培养学生工程化理念和团队协作意识,提高了学生探索问题、分析问题和解决问题的综合能力。
(一)基于案例的情景体验教学模式
案例教学法从实际案例出发,分析其中存在的问题,探索问题产生的根源和解决问题的过程与方法,用案例将理论和实践联系在一起,并逐步上升到理论,用理论来概括、归纳、指导一类问题的解决方法。同时,以鲜活生动的实例吸引学员,提高学员学习的兴趣,使他们从案例中吸取成功经验和失败教训,加深对理论的理解。在实践教学中,我们以“做中学”为指导,以实际案例项目的生命周期为主线,通过搭建的实践平台和设计的实践项目,使学员在解决具体问题的过程中加深对理论知识的理解、技术方法的灵活运用,提高自身的实战素质能力。基于案例的情景体验教学通过借助来源于实际工程的典型案例,将学生置身于特定的工程项目情景之中,给予他们恰当的引导,为他们提供了一个广阔的思维空间和贴近实战的学习环境。
(二)基于项目牵引的工程实践教学模式
基于项目牵引的工程实践教学,将工程项目与软件工程知识体系有机融合,以工程项目为牵引,让学生在学习理论知识的同时,同步开展生命周期相应阶段的各项任务实践,实现了创新实践与工程认知导引相结合的教学模式。首次上课要求学员分组,各组自主选择感兴趣的项目,后续根据授课进度按阶段完成该项目的整个开发过程。为了提高学生的实践兴趣和做足需求分析,选取项目时,应尽量选择贴近学生生活、需求场景熟悉的项目,如公差勤务系统、图书馆座位管理系统等。如果是从零开始的项目,需要多方面多手段进行软件需求分析,并重点做好软件体系结构设计。另外,选做的项目也可以是已有软件,因为大部分软件开发工作是在老版本的软件基础上进行改进的,已有软件可以是网上开源软件或往届学生留下的作业,要引导学生分析其功能上的缺陷后对其进行改进。通过项目牵引,可使学生在动手实践过程中深刻理解软件工程基本理论知识。
(三)基于角色扮演和团队协作的项目研讨式教学模式
学生以团队协作方式进行项目开发,通过扮演团队中客户、软件需求人员、软件设计人员、编码人员、软件测试人员等不同角色,完成特定任务,并在项目实施过程中及时对项目开发进程和工作产品进行研讨和评审,真正体验一种有序、可控和协作的软件开发过程。描述了软件过程中角色职能及软件开发各阶段的工作产品,并将项目开发活动和项目管理过程映射到课程各知识点,使学员在动态角色参与的项目演练过程中加强对理论知识的理解。
三、针对实践能力培养需求,构建基于框架的可扩展实践平台
软件工程学科课程理论与实践联系紧密,实践教学的有效实施对提高课程整体教学效果具有重要意义。然而,大部分学生系统设计能力较弱,加之课堂教学时间有限,课程内容比较抽象,为了帮助学生更好地掌握所学知识,有效提高其工程实践能力,在现实教学中急需加强学生动手实践环节的时间投入和条件建设。
传统实践教学通常要求学生全程自主完成程序开发并提交相应实践报告。这种“从零开始”的实践教学模式受到学生编程能力、实践学时等因素的制约,难以取得良好教学效果。同时,学生缺乏大型项目的工程实践经验,如果仅以小规模程序为对象开展实践教学,也会严重制约其对软件工程思想的理解和掌握。为此,我们构建了基于OpenFrame框架的开放式教学实践平台,该平台采用当今主流的面向对象技术和框架进行开发,既实现了跟系统结构紧密相关的核心公共模块,又支持学生根据个人兴趣,自主、灵活添加符合接口规范的功能应用模块,从而完成整体系统的开发与设计,有效支持学生根据小组任务分工快速开发上层应用功能模块,协同完成整体系统的设计、开发与集成。该开放式教学实践平台将教师课堂授课与学生情景体验有机结合,使得抽象内容形象化、具体化,同时既能让学生了解到框架技术、敏捷软件开发等面向对象新技术,又能培养学生基于公共体系结构进行团队化工程开发的能力。
通过搭建满足教学需求的实践平台,设计合理有效的实验项目,构建“做中学”的环境,使学员利用有限的学习时间,在实践过程中快速加深对知识的理解,提高自身的素质能力,不断积累实战经验,培养专业自信,提高学习兴趣和实践动手能力。我们鼓励学员在实践中发现问题、分析问题并解决问题,注重学员创新意识和综合素质的培养,将被动的学习转化为主动的参与、实践,引导学员更深刻地体会和理解软件工程全生命周期各阶段的任务、技术和方法。
四、基于项目过程的考核评价方式
考核评价是教学过程中必不可少的环节,针对软件工程课程考核存在着实践考核不足、学习效果测试不及时、考核评价机制不完善等问题,可采用多元考核和评价方式,弱化期末考试成绩,加强过程考核,着重考核项目开发过程中学员思考解决问题的能力。考核包括期末考试和实践项目两部分,期末考试成绩占30%,采用开卷笔试方式,实践项目成绩占70%,采用阶段评审方式对各小组阶段产出的工作产品进行评审,通过学员互评和教师评价相结合的方法确定团队成绩(40%)和个人成绩(30%)。学员分组进行讲解、答辩、成果演示,学员和教师分别对各组进行整体评价,获得团队成绩,个人成绩由组长根据组员在项目开发中的表现以及对项目的贡献大小获得。
五、结语
通过梳理软件工程课程群理论知识点,构建软件开发全过程案例库,并在案例库基础上,对实践教学方法进行研究,融合、应用基于案例的情景体验教学、基于项目牵引的工程实践教学、基于角色扮演和团队协作的研讨式教学等多种教学模式,加强了理论教学和实践教学的耦合度,并构建了基于框架的可扩展实践平台,通过项目牵引和角色扮演使学员将学到的理论直接应用于实际项目开发,培养了学员的工程化理念和团队协作意识,提高了学员探索问题、分析问题和解决问题的综合能力。
参考文献:
[1]邹红,王健,苏丹.以能力培养为导向的软件工程专业核心课程群建设研究与实践[J].高教学刊,2018(12).
[2]张爱玲,周世生.新工科背景下软件工程人才培养的研究与实践[J].计算机教育,2018(6).
[3]伍春香,刘斌,李小红.基于能力培养的软件工程教学实践[J].计算机教育,2017(8).
[4]李玲.软件工程课程教学模式探讨[J].计算机时代,2017(5).
作者:侯雪梅 李志博 于磊 王阳 单位:战略支援部队信息工程大学