开篇:润墨网以专业的文秘视角,为您筛选了一篇软件工程课程模拟教学法初探范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘要:目前,软件工程课程教学中的教学实践与实际软件开发环境存在较大差距,在国外,采取模拟教学法是解决这一问题的重要举措,在软件工程课程教学中采用模拟教学法受到学术界越来越多的关注。本文阐述基于模拟的软件工程教学法的背景、种类及其基本过程,并给出一个实例加以说明,对今后在国内开展这一教学有借鉴作用。
关键词:软件工程;模拟教学法;教学改革;教学方法
长期以来,软件工程课程教学是一个难点,其主要表现是教学实践环节与现实软件开发的环境不一致,教学不能适应软件开发特别是大型软件开发的需要。在传统的软件工程课程教学中,教师主要是通过书本和教案以板书的形式给学生传授理论知识,这种传统的教学方式难以为学生传授解决现实软件工程项目若干典型问题的方法和实践技能,这些问题主要包括:采用非线性的解决方法常常面临多个冲突的目标,从多变量中择优,涉及多个利益相关者,以及项目实施后可能获得的非常大的效果等[1]。在传统的教学中,虽然学生也参与一定的实践练习,但由于受时间以及实践项目各种条件限制,课程实践难以在广度和深度上反映软件工程的复杂性和内在本质。鉴于此,有学者认为,在教学中,能够使学生以一种接近实际软件工程开发环境来学习软件工程知识的唯一可行的方法是采用模拟的教学法。
1模拟教学法
在工程项目的设计与实施过程中,由于受到主客观条件的限制,为了估计项目设计和实施的风险,或对项目实施后的效果进行评价等,人们常常采用模拟的方法,这一方法在工程界已经运用了很多年,并获得了很大的成功,显示出其极大的优势。从软件工程的观点来看,大型软件开发方法也借鉴工程学的原理和技术来进行,因而也可以采用模拟的方法,比如在成本估算、项目支持的度量信息的收集、建立项目成员间一致的交流方式、需求管理、项目管理、人员培训、软件过程改进、风险管理以及收益管理等[2],均可采用模拟的方法来实施。
1.1目标
在软件工程课程教学中,采用模拟的教学法,主要目标是让学生能够在课堂教学实践中以一种贴近现实的软件开发环境来学习软件工程原理和技术,模拟教学必须紧紧围绕着知识和技能来进行,所使用的模拟器至少应该具备以下一些功能和特点[3]。
1) 应该恰当地反映软件工程的基本原理与技术。
2) 应该反映通用和专用的软件工程过程。
3) 应该能够让模拟器的使用者反馈信息。
4) 应该容易操作,响应快速。
5) 应该允许操作者之间进行交流。
1.2种类
国外所采用的模拟教学法可以划分为3种模拟教学,即采用业内使用或专用的模拟器教学、以游戏作为形式的模拟器教学和支持群参与的模拟器教学。下面简要地概述这3种模拟器教学法[4]。
1.2.1采用业内使用或专用的模拟器教学法
这是一种比较简单的快捷的方法,业内使用的模拟器是针对特定问题的模拟器,它通常综合考虑一个通用的或目前正在做的专用软件项目开发各方面的问题,比如成本计算、数据收集、需求分析、项目管理、风险管理、软件过程改进等,通常,它提供给操作者相关的输入指令,让操作者通过输入指令,如项目的规模、软件处理流程等,根据操作者的输入信息,输出相应的结果。在模拟的过程中,操作者还可以根据中间结果,调整相关参数,改变处理流程,这类模拟器通常从模拟最简单的任务开始,随着模拟过程的深入,学习任务也变得越来越复杂,而整个模拟过程覆盖软件生命期的各个阶段。
1.2.2基于游戏形式的模拟器教学法
业内用的模拟器通常是面向较复杂的问题,往往不太适合教学使用,这类模拟器,在模拟的中间过程中,虽然可以调整相关参数外,但使用者与模拟器之间的交互并不是很好,这增加了学习者使用的难度,而使用以游戏为形式的模拟器,除了可以调动学生学习的积极性外,最重要的是让学生容易接受。这类模拟器通常具有以下一些功能:1)能恰当地使用软件工程技术来引导学生完成模拟的软件的设计与开发;2)能够演示一般的和专用的软件过程技术;3)能够对学生做出的决策提供反馈信息;4)容易操作并且响应速度较快;5)提供交互功能。模拟器配有图形用户接口界面来显示被模拟的物理环境,设计者希望采用这种游戏的方式来学习,效果会更好。
1.2.3支持群参与的模拟器教学法
实际的软件开发都是在一个团队下完成的,一个项目的成功开发与团队成员的交流与协作是密不可分的。支持群参与的模拟器可以模拟在实际软件开发中团队工作的情形,模拟器被设计成群体讨论和群体交互过程。在模拟的环境里,操作者和所有或部分的参与者通过模拟器进行讨论。文献[5]描述一种交互式VIDEO代码检查模拟器,该模拟器包括一个VIDEO和一个自然语言接口供使用者参与讨论。这类模拟器通常也模拟物理环境,操作者可以从一个地方转到另一个地方来讨论,每一个地方都为特定的任务所设计,操作者可以和其他角色进行对话,操作者可以从一个角色转换到另一个角色。
2实例
下面给出一个用于软件工程教学的基于游戏的模拟器的实例[1,6],该模拟器名叫SimSE,它是由单个操作者所使用的教学模拟器,操作者可以扮演一个软件开发团队中的项目经理的角色,由他来管理团队的成员,为成员分配任务,协调成员之间的行动。SimSE的接口是图形界面的,它是由一个虚拟的办公室构成,办公室里摆放着桌子、计算机、还有会议室、人员、顾客和相关的项目信息,比如需求文档、设计文档和代码,操作者可以利用这些信息来作出决策,从而在一定时间和预算范围内完成项目的开发。
2.1体系结构
图1是SimSE的体系结构,它可以使用一种建模工具来建立,SimSE由以下一些部件组成:1)模拟器的实体:雇员、产品、项目、工具、顾客;2)行动,是指这些实体可以参与的操作(如编码、集成、审查需求文档、中断等);3)用于指示模拟器上行动的规则;4)主要实体的图形表示;5)游戏从哪个实体开始或者开始的状态;根据所选择的模型由发生器对模型进行解析,并且把规则执行部件插入模拟的环境里,以便于执行某一操作,学生可以选择模型并进行相关的操作。
模拟过程是以一种循环方式来执行:时钟设置为以一个时间间隔为单位触发驱动模拟过程的进行,在每一个时间间隔内,规则执行部件首先通过查询状态管理部件来检查执行的是哪一个动作,然后执行与这些动作相关联的规则,最后把结果传递到状态管理部件以更新当前状态。状态更新后,时钟发出信号给界面表示需要更新,用户界面通过状态管理部件进行更新以显示更新后的状态。除了这样一些标准的模拟部件以外,作为教学模拟器的SimSE具有一个特别的部件就是解析工具,它可以让学生在任何时间内通过对以前事件进行跟踪,从而了解整个事件运行过程中出现的结果,以及在什么情况下采用什么规则,通过跟踪,学生比较不同的选择并且能对其进行性能评价,从而知道在某种模型下采用什么样的方法是成功的或是失败的。
2.2模拟方法的关键技术
上述SimSE体系结构主要有3个最重要的部件,它们是实施模拟教学法的核心部件,下面简要概述这几个重要部件的功能。
2.2.1模拟引擎
模拟引擎根据正在实施的某个模型以及操作者的操作来驱动模拟器按照一步一步的方式来执行模拟过程,模拟引擎根据当前的模型状态和用户的相关输入信息来产生新的模拟状态,新的信息构成了模拟环境的一部分,为下一步的操作提供系统当前的信息。SimSE模拟器是面向教学的模拟器,所以它应提供给学生在学习过程中所必需拥有的一些操作,如中止、检查、回溯等。以便于学生能对当前状态以及前面状态进行检查、评估,也可以调整相关参数,从而有一个相应的判断,在此过程中,学生能够较好地掌握在软件工程过程中各个环节相互间存在的原因与结果之间的关系。
2.2.2图形化用户界面
图形用户界面是SimSE重要的特点之一,与通过单纯的字符界面与系统进行交互这种方式相比,图形化的界面输入与输出能够让学生更易于学习,也容易看出操作的效果。比如,模拟教学一个软件项目在后面增加人员对项目所造成的影响时,字符与文本的输入界面只是看到项目完成时间被推迟了,但学生不明白是什么原因导致这样的结果,SimSE可以把项目开发前后的过程用图形化形式显示,结果显示,项目被推迟的原因是由于在后面增加了人员,由于人员之间需要沟通,因而要召开的会议也多了,从而最终影响项目的进度。这些情况都可以从办公环境中可以看出,而这正是可以通过图形化方式显示的。
2.2.3模型
模型是模拟器的核心,它反映了模拟器的功能,模拟器是要模拟用软件工程原理和技术去开发软件的整个流程,因而必须对现实软件开发中的各个环境进行建模,这是模拟器中最为复杂的部分,模型分为两种:一种是相对较小的专用的模型;另一种是比较大的通用型模型。而在这两种模型中,又包含有若干小的模型,在教学中,可以根据需要来选择一部分模型来进行教学。专用的、小的模型一般反映的是软件工程中的一个阶段,如编码、测试等,其目的是让学生掌握解决软件工程过程中的一个特定主题所需要的知识和技能。大型通用型模型是面向整个软件生命期的,如瀑布模型,它主要用于训练学生掌握大规模软件开发所应具备的知识与技能,让学生在特定时间和预算范围内完成一个或更多的项目。
3结语
实施基于模拟的软件工程教学法能够较好地解决在传统的软件工程教学中存在的理论知识传授与实践技能培养不能很好地适应实际软件工程环境的需要,这一教学法已经在国外开展若干年,并且取得较好的教学效果。我们认为,借鉴国外教学经验,深入研究这一教学法并应用到教学中,是一件有意义的事情,对改进软件工程教学是十分有益。当然,这一教学法不能完全代替传统的教学法,各种方法并存,取长补短,根据实际的教学内容采用相应的方法,应是软件工程教学所应采取的教学策略。
参考文献:
[1] Emily Oh. Teaching Software Engineering Through Simulation[C]//Proceedings of the International Conference on Software Engineering, May 2002, Orlando, Florida, USA.
[2] James S.Collofello. University/Industry Collaboration in Developing A Simulation Based Software Project Management Training Course[C]//Thirteenth Conference on Software Engineering Education and Training, March, 2000, Austin, Texas, USA:161-168.
[3] Alex Baker,Emily Oh Navarro, Andre van der Hoek. Problems and Programmers:An Educational Software Engineering Card Game[C]//Proceedings of the Twenty-Fifth International Conference on Software Engineering, May, 2003, Oregon, Portland.
[4] 李广原,马楠. 国外软件工程教学法初探[J]. 计算机教育,2011(1):86-90.
[5] Scott M. Stevens. Intelligent Interactive Video Simulation of a Code Inspection[J]. Communication of the ACM, 1989,32(7):832-843.
[6] Emily Oh Navarro, Alex Baker, Andre van der Hoek. Teaching Software Engineering Using Simulation Games[C]// Proceedings of the 2004 International Conference on Simulation in Education, San Diego, California, January 2003.
Discussion of Teaching Methods of Software Engineering Based on Simulation
LI Guangyuan, HU Qinbin
(School of Computer and Information Engineering, Guangxi Teachers Education University, Nanning 530023, China)
Abstract: For the problem which is a big gap between teaching practice and actual software engineering development environment exists generally in the teaching of software engineering course at present. Simulative teaching method is the only important way to solve this problem abroad, and this method had been gain more and more attention from the academic. This article introduces the background, category and basic process which are based on simulative method of software engineering teaching and also shows an instance to explain it. We hope that there would be a primary discussion about implementation of this teaching method at home for the future.
Key words: Software Engineering; simulated teaching method; transformation of education; teaching method