论文部分内容阅读
摘要: 随着科学技术地不断发展,现代仿真技术发展体系也在逐步完善中。重点阐述面向对象仿真技术的概念,指出系统建模的重要性。并在此基础上对系统开发所遵循的RUP基本原则和采用的UML建模语言做简单介绍。
关键词: 面向对象仿真;概念;方法;工具
中图分类号:V249.1 文献标识码:A 文章编号:1671-7597(2011)0310034-02
1 面向对象仿真概念
“面向对象”是软件业界面对日趋复杂的软件需求,为了解决“软件危机”而提出的一种巧妙对策。自20世纪70年代这一概念正式确定以来,因其在复杂系统分析、设计和实现过程中所体现出的先进思想和卓越品质,得到了广大软件开发人员的钟爱。经过几十年的迅猛发展,它已渗透到计算机软件领域的几乎所有分支(面向对象仿真就是一个典型的例子),甚至软件以外的其它领域。
系统仿真是20世纪40年代末出现并逐步发展起来的一门新兴学科,它是建立在控制理论、相似理论、信息处理技术和计算技术等理论基础之上的,以计算机和其他专用物理效应设备为工具,利用系统模型对真实或假想的系统进行实验,并借助专家经验知识、统计数据和信息资料对试验结果进行分析和研究,进而做出决策的一门综合性的试验性科学。
从这一定义可以看出,系统仿真包含了三个基本要素:系统、模型、计算机(硬件和软件),联系这三个要素的基本活动是:系统建模、仿真建模和仿真实验。同时,定义中也包含了一个重要的概念:“仿真是一种基于模型的活动”,仿真是通过对模型的实验达到研究系统的目的。
半个多世纪以来,仿真技术作为一门综合性的技术被广泛应用于系统分析与设计、系统理论研究、专职人员培训等领域,并在广泛而深刻的需求中不断深化和发展。尤其是近十几年来,在系统工程、现代数学方法,计算机技术等相关学科技术的推动下,已形成了较完整的专业技术体系,并迅速发展为一项通用性、战略性技术,它与高性能计算一起,正成为继理论研究和实验研究之后认识世界、改造世界的第三种重要手段。现代建模与仿真技术体系已日趋形成。近几年,国内外仿真技术自身研究领域内取得了一些显著的成果,主要表现在如下两个方面:
1.1 仿真支撑系统技术
仿真支撑系统是仿真领域关键的技术之一,它支撑了仿真系统的整个生命周期,包括仿真对象分析、仿真模型的表达、仿真模型的生成和运行、仿真过程的调试和修改、实时运行、仿真数据的存储、恢复及跨平台的联合运行等,将仿真系统开发者和使用者从复杂和繁重的“劳动”中“解放”出来,为实现仿真技术产业化奠定了基础。国内外十分重视对仿真支撑系统的研究,出现了不少成果。从科技进步的角度来分析,主要表现为:
1)提供构件服务,包括构件命名服务(Component Name Services)、构件对象服务(Component Object Services)等。
2)提供通用数据表示方法,集成工具之间可共享信息。
3)支撑范围扩大,包括总体技术、中间件技术、网络技术等方面。
4)支撑多媒体技术的应用,使仿真系统的人机界面更加友好。
1.2 面向对象仿真技术
“面向对象”包含了世界观和方法论两方面的含义。其一,面向对象的观点认为客观世界由许多对象组成,每个对象都有自己的内部状态和运动规律,不同对象间的相互联系和相互作用构成了完整的客观世界;其二,面向对象是模拟客观世界的一种方法。在该方法中,对象是客观事物的抽象表示,是系统的基本构成单位;事物的静态特征用对象的属性描述,动态特征用对象的操作表示;对象的属性和操作结合成一个独立实体,对外屏蔽其细节,称作封装;把具有相似属性和行为的对象归为一类,类是对象的抽象描述,对象是类的实例;继承是自动共享类中数据和方法的机制,可利用现有的类定义新的类;在一般类中定义的属性或操作被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为,称为多态性;对象间的静态关系用关联来表达;对象间的动态联系通过消息传递来实现,这些构成了面向对象最主要的特征。运用面向对象思想构造系统,符合人们认识客观世界的自然思维方式,达到了问题域和求解域在结构上尽可能的一致性。“对象作为软件界70年代以来最激动人心的革新之一”(Maurice Wilkes,1996)给软件业带来了一场全新的技术革命。如今,面向对象已成为开发大型复杂软件系统的主流方法,具有强大的生命力和广泛的应用前景。
将面向对象技术应用于仿真领域就形成了面向对象仿真这一研究分支,它是当前仿真研究领域最为活跃的研究方向之一。它在理论上突破了传统仿真方法的概念,根据组成系统的对象及其相互关系构造仿真模型,且仿真模型的对象表示实际系统中相应的实体,从而拉近了模型与实际系统之间的距离,使建模仿真的思想方法与人们认识客观世界的自然思维方式相一致,极大增强了仿真模型的直观性和易理解性,为仿真大型复杂系统提供了极为方便的手段。其最主要的优点表现为:
1)可理解性。面向对象仿真对于设计者、实现者以及最终用户来说都增强了仿真可理解性。因为仿真系统中的对象往往直接表示现实系统中的真实实体,这些实体在面向对象的仿真中可以用外观上类似于人们熟悉的实际系统的对象的图形或图像来表示,用户可以通过图形界面与仿真模型进行交互,利用图形或图像直接建立仿真模型,利用动画显示仿真模型的运行过程,各种仿真统计数据可以利用图形来表示,这对于用户理解仿真过程和结果都有很大帮助。
2)可重用性和可扩充性。在面向对象的仿真中,可以建立一个模型库来保存以前建立的模型,模型库中模型可以作为建立新模型的可重用构件,通过面向对象技术内在的继承机制可以容易地修改现有的对象(类)以创建新的对象(类),并可加入到现有的类库中。类库提供了仿真建模所需要的一般设施,通过修改现有的类,可以建立各种应用中所需要的特殊对象。
3)模块化。面向对象的仿真是模块化的。对象作为模块,其所有信息都封装在对象内部,这意味着改变一个对象的含义或修改其性能,不会影响其它对象。
4)仿真与人工智能的结合。面向对象的仿真中,对象封装了各自的功能,而功能可以包含智能,因而利用人工智能和专家系统的方法可以在功能中嵌入智能,使对象也具有决策和学习能力。仿真与人工智能的结合要以增强仿真的能力为目标。在基于知识的仿真系统和专家系统方面,许多学者已进行了广泛的研究,表明了人工智能和专家系统在辅助仿真建模、仿真结果的解释和仿真模型灵敏度分析等方面具有重要作用。
5)并行仿真。并行仿真是在多处理器上并行执行的计算机仿真。由于对象封装了自身所有的信息,因而每个对象都能使自己的处理程序执行相应的功能。这样,对象可以在某些程序上相对独立地运行,正是由于对象之间的这种相对独立性,才有了并行仿真执行的可能性。仿真的并行执行可以极大地降低仿真时间,实现更多更详细的仿真。
2 面向对象仿真方法与工具
2.1 RUP统一开发过程
现代软件具有复杂、技术难度大、需求多变、高风险的特点,所以大型软件开发凭个人的随意行为是难以现实的,它应是一项组织良好、管理严密、各类人员协同配合、遵循正确有效的开发模型、采用先进的程序设计技术所共同完成的任务。在过去的软件开发中,常采用增量模型、演化模型、快速原型模型,它们是随结构化软件工程方法发展而来的。现代软件开发多采用面向对象方法,随之一同发展的是统一软件开发过程RUP(Rational Unified Process)。
RUP集成了多种软件开发模型的优点,它给出了软件开发的一个通用模型框架,是面向对象软件工程思想的具体体现者。RUP统一过程将软件开发周期安排为循环,每个循环形成产品的一个新版本。每个循环依次有初始阶段、细化阶段、构造阶段、移交阶段四个连续的阶段,每个阶段都经过需求捕获、分析、设计、实现、测试五个核心工作流的多次迭代而达到预定目的。
RUP一经推出,就得到业界的广泛认同,成为现代软件开发首选的软件开发模型框架,它的特点在于:
1)统一过程是用例驱动的用例是描述从用户的角度所观察到的系统的功能。基于用例模型,开发人员可以创建一系列实现这些用例的设计模型和实现模型,测试人员测试实现模型以确保其中的构件正确实现了用例。所以开发过程中的每个工作流都以实现用例作为最终目标而合为一体。
2)统一过程采用架构优先方法架构是软件系统的框架性结构,它是一组模型的集合,主要刻划系统的组成、整体设计方法及系统主要特征。
3)用例与系统架构协调发展并逐步完善用例与系统功能相对应,架构与表现形式相对应。用例驱动系统架构,但在系统架构稳定下来后,用例在实现时必须适合于架构;架构影响用例的选择,并且应预留空间以备将来所需的用例使用。
4)统一过程是增量和迭代的增量是指在每一次产品中增加一部分用例的实现。迭代是指工作中相同的步骤在不同的时候多次重复,每次重复都会得到比前一次多的结果。一个迭代是一个完整的开发循环,产生一个可执行的产品版本。它增量式地发展,从一个迭代过程到另一个迭代过程,直到成为最终的系统。
5)特别适合现代软件开发用例驱动开发过程,使每一阶段的目标明确,确保最终满足用户需求;以架构为中心使得在开发的早期阶段就建立起指导系统构造的架构模式,确保整个产品的生命期顺利发展,项目风险降低;采用增量和迭代过程,确保系统对需求变化的适应性。
2.2 UML统一建模语言
无论何种复杂程度的工程项目,设计都应从建模开始。设计者通过创建模型,构建系统蓝图,将复杂的问题细化分解、“分而治之”,这是提高软件开发效率和质量的有效途径。在上节曾指出,仿真活动也是围绕一个核心要素模型展开的,如何建立描述系统静态特征、动态行为的仿真模型成为构建系统的关键所在。
自1986年Booch提出面向对象软件工程的概念以来,各种面向对象的方法论应运而生,它们各有千秋,但由于缺乏统一的标准,妨碍了用户间的交流。为了简化和强化现有的大量的面向对象开发方法,Rumbaugh、Booch、Jacobson三位面向对象大师集众家之长,于1995年提出了划时代的统一建模语言UML(Unified Modeling Language),它在1997年被OMG
(Object Management Group)批准为标准。如今,UML已经成为面向对象技术领域内占主导地位的标准建模语言,也是RUP一个不可缺少的组成部分,RUP使用UML完成各个阶段的建模。James Rumbaugh、Ivar Booch、Grady Jacobson三位UML创始人在其著作中对UML做了全面的论述,UML的特点可归纳如下:
1)UML是一种通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统的文档。它记录了与被构建系统有关的决策和理解,可用于对系统的理解、设计、浏览、配置、维护及控制系统的信息。
2)UML包括语义概念、表示法和指导规范,提供了静态、动态、系统环境及组织结构的模型,可被交互式的可视化建模工具支持。
3)UML能够捕捉系统静态结构和动态行为的信息。系统被建模成独立对象的集合,通过交互实现功能,从而最终满足外部用户的需求。静态结构定义了系统中重要对象的属性和操作以及对象间的关系。动态行为定义了对象随时间变化的历史和对象为完成目标进行的相互通信。它们从不同但又相互联系的角度为系统建模,帮助全方位理解系统。
4)UML包括将模型组织成包的结构组件,可把大的系统分解成易于处理的单元,便于理解和控制包之间的依赖。UML还包括用于表达系统实现和组织运行的组件。
5)UML本质上不是一门编程语言,但借助于代码生成器,可将UML模型映射成多种程序设计语言代码,或使用反向生成工具将程序代码转换成UML模型。
6)UML标准没有定义一种标准的开发过程,它适合于各种软件开发方法及软件生命周期的各个阶段,尤其适用于迭代式开发过程。
7)UML是一种离散的建模语言,适合对由计算机软件、固件或数字逻辑构成的离散系统建模。UML用事物、关系和图来描述模型,如图2.5所示。各自的含义在具体的应用会体现出来。
参考文献:
[1]张颖超、李明君,基于面向对象语言的芯便仿真技术的实现,武汉理工大学学报,2003.27(2):205-207.
[2]崔晓峰,面向对象的离散事件仿真建模与实现,计算机工程与应用,1998.9:39-41.
作者简介:
杨彦斌,男,天津人,天津工业大学信息与通信工程学院。
关键词: 面向对象仿真;概念;方法;工具
中图分类号:V249.1 文献标识码:A 文章编号:1671-7597(2011)0310034-02
1 面向对象仿真概念
“面向对象”是软件业界面对日趋复杂的软件需求,为了解决“软件危机”而提出的一种巧妙对策。自20世纪70年代这一概念正式确定以来,因其在复杂系统分析、设计和实现过程中所体现出的先进思想和卓越品质,得到了广大软件开发人员的钟爱。经过几十年的迅猛发展,它已渗透到计算机软件领域的几乎所有分支(面向对象仿真就是一个典型的例子),甚至软件以外的其它领域。
系统仿真是20世纪40年代末出现并逐步发展起来的一门新兴学科,它是建立在控制理论、相似理论、信息处理技术和计算技术等理论基础之上的,以计算机和其他专用物理效应设备为工具,利用系统模型对真实或假想的系统进行实验,并借助专家经验知识、统计数据和信息资料对试验结果进行分析和研究,进而做出决策的一门综合性的试验性科学。
从这一定义可以看出,系统仿真包含了三个基本要素:系统、模型、计算机(硬件和软件),联系这三个要素的基本活动是:系统建模、仿真建模和仿真实验。同时,定义中也包含了一个重要的概念:“仿真是一种基于模型的活动”,仿真是通过对模型的实验达到研究系统的目的。
半个多世纪以来,仿真技术作为一门综合性的技术被广泛应用于系统分析与设计、系统理论研究、专职人员培训等领域,并在广泛而深刻的需求中不断深化和发展。尤其是近十几年来,在系统工程、现代数学方法,计算机技术等相关学科技术的推动下,已形成了较完整的专业技术体系,并迅速发展为一项通用性、战略性技术,它与高性能计算一起,正成为继理论研究和实验研究之后认识世界、改造世界的第三种重要手段。现代建模与仿真技术体系已日趋形成。近几年,国内外仿真技术自身研究领域内取得了一些显著的成果,主要表现在如下两个方面:
1.1 仿真支撑系统技术
仿真支撑系统是仿真领域关键的技术之一,它支撑了仿真系统的整个生命周期,包括仿真对象分析、仿真模型的表达、仿真模型的生成和运行、仿真过程的调试和修改、实时运行、仿真数据的存储、恢复及跨平台的联合运行等,将仿真系统开发者和使用者从复杂和繁重的“劳动”中“解放”出来,为实现仿真技术产业化奠定了基础。国内外十分重视对仿真支撑系统的研究,出现了不少成果。从科技进步的角度来分析,主要表现为:
1)提供构件服务,包括构件命名服务(Component Name Services)、构件对象服务(Component Object Services)等。
2)提供通用数据表示方法,集成工具之间可共享信息。
3)支撑范围扩大,包括总体技术、中间件技术、网络技术等方面。
4)支撑多媒体技术的应用,使仿真系统的人机界面更加友好。
1.2 面向对象仿真技术
“面向对象”包含了世界观和方法论两方面的含义。其一,面向对象的观点认为客观世界由许多对象组成,每个对象都有自己的内部状态和运动规律,不同对象间的相互联系和相互作用构成了完整的客观世界;其二,面向对象是模拟客观世界的一种方法。在该方法中,对象是客观事物的抽象表示,是系统的基本构成单位;事物的静态特征用对象的属性描述,动态特征用对象的操作表示;对象的属性和操作结合成一个独立实体,对外屏蔽其细节,称作封装;把具有相似属性和行为的对象归为一类,类是对象的抽象描述,对象是类的实例;继承是自动共享类中数据和方法的机制,可利用现有的类定义新的类;在一般类中定义的属性或操作被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为,称为多态性;对象间的静态关系用关联来表达;对象间的动态联系通过消息传递来实现,这些构成了面向对象最主要的特征。运用面向对象思想构造系统,符合人们认识客观世界的自然思维方式,达到了问题域和求解域在结构上尽可能的一致性。“对象作为软件界70年代以来最激动人心的革新之一”(Maurice Wilkes,1996)给软件业带来了一场全新的技术革命。如今,面向对象已成为开发大型复杂软件系统的主流方法,具有强大的生命力和广泛的应用前景。
将面向对象技术应用于仿真领域就形成了面向对象仿真这一研究分支,它是当前仿真研究领域最为活跃的研究方向之一。它在理论上突破了传统仿真方法的概念,根据组成系统的对象及其相互关系构造仿真模型,且仿真模型的对象表示实际系统中相应的实体,从而拉近了模型与实际系统之间的距离,使建模仿真的思想方法与人们认识客观世界的自然思维方式相一致,极大增强了仿真模型的直观性和易理解性,为仿真大型复杂系统提供了极为方便的手段。其最主要的优点表现为:
1)可理解性。面向对象仿真对于设计者、实现者以及最终用户来说都增强了仿真可理解性。因为仿真系统中的对象往往直接表示现实系统中的真实实体,这些实体在面向对象的仿真中可以用外观上类似于人们熟悉的实际系统的对象的图形或图像来表示,用户可以通过图形界面与仿真模型进行交互,利用图形或图像直接建立仿真模型,利用动画显示仿真模型的运行过程,各种仿真统计数据可以利用图形来表示,这对于用户理解仿真过程和结果都有很大帮助。
2)可重用性和可扩充性。在面向对象的仿真中,可以建立一个模型库来保存以前建立的模型,模型库中模型可以作为建立新模型的可重用构件,通过面向对象技术内在的继承机制可以容易地修改现有的对象(类)以创建新的对象(类),并可加入到现有的类库中。类库提供了仿真建模所需要的一般设施,通过修改现有的类,可以建立各种应用中所需要的特殊对象。
3)模块化。面向对象的仿真是模块化的。对象作为模块,其所有信息都封装在对象内部,这意味着改变一个对象的含义或修改其性能,不会影响其它对象。
4)仿真与人工智能的结合。面向对象的仿真中,对象封装了各自的功能,而功能可以包含智能,因而利用人工智能和专家系统的方法可以在功能中嵌入智能,使对象也具有决策和学习能力。仿真与人工智能的结合要以增强仿真的能力为目标。在基于知识的仿真系统和专家系统方面,许多学者已进行了广泛的研究,表明了人工智能和专家系统在辅助仿真建模、仿真结果的解释和仿真模型灵敏度分析等方面具有重要作用。
5)并行仿真。并行仿真是在多处理器上并行执行的计算机仿真。由于对象封装了自身所有的信息,因而每个对象都能使自己的处理程序执行相应的功能。这样,对象可以在某些程序上相对独立地运行,正是由于对象之间的这种相对独立性,才有了并行仿真执行的可能性。仿真的并行执行可以极大地降低仿真时间,实现更多更详细的仿真。
2 面向对象仿真方法与工具
2.1 RUP统一开发过程
现代软件具有复杂、技术难度大、需求多变、高风险的特点,所以大型软件开发凭个人的随意行为是难以现实的,它应是一项组织良好、管理严密、各类人员协同配合、遵循正确有效的开发模型、采用先进的程序设计技术所共同完成的任务。在过去的软件开发中,常采用增量模型、演化模型、快速原型模型,它们是随结构化软件工程方法发展而来的。现代软件开发多采用面向对象方法,随之一同发展的是统一软件开发过程RUP(Rational Unified Process)。
RUP集成了多种软件开发模型的优点,它给出了软件开发的一个通用模型框架,是面向对象软件工程思想的具体体现者。RUP统一过程将软件开发周期安排为循环,每个循环形成产品的一个新版本。每个循环依次有初始阶段、细化阶段、构造阶段、移交阶段四个连续的阶段,每个阶段都经过需求捕获、分析、设计、实现、测试五个核心工作流的多次迭代而达到预定目的。
RUP一经推出,就得到业界的广泛认同,成为现代软件开发首选的软件开发模型框架,它的特点在于:
1)统一过程是用例驱动的用例是描述从用户的角度所观察到的系统的功能。基于用例模型,开发人员可以创建一系列实现这些用例的设计模型和实现模型,测试人员测试实现模型以确保其中的构件正确实现了用例。所以开发过程中的每个工作流都以实现用例作为最终目标而合为一体。
2)统一过程采用架构优先方法架构是软件系统的框架性结构,它是一组模型的集合,主要刻划系统的组成、整体设计方法及系统主要特征。
3)用例与系统架构协调发展并逐步完善用例与系统功能相对应,架构与表现形式相对应。用例驱动系统架构,但在系统架构稳定下来后,用例在实现时必须适合于架构;架构影响用例的选择,并且应预留空间以备将来所需的用例使用。
4)统一过程是增量和迭代的增量是指在每一次产品中增加一部分用例的实现。迭代是指工作中相同的步骤在不同的时候多次重复,每次重复都会得到比前一次多的结果。一个迭代是一个完整的开发循环,产生一个可执行的产品版本。它增量式地发展,从一个迭代过程到另一个迭代过程,直到成为最终的系统。
5)特别适合现代软件开发用例驱动开发过程,使每一阶段的目标明确,确保最终满足用户需求;以架构为中心使得在开发的早期阶段就建立起指导系统构造的架构模式,确保整个产品的生命期顺利发展,项目风险降低;采用增量和迭代过程,确保系统对需求变化的适应性。
2.2 UML统一建模语言
无论何种复杂程度的工程项目,设计都应从建模开始。设计者通过创建模型,构建系统蓝图,将复杂的问题细化分解、“分而治之”,这是提高软件开发效率和质量的有效途径。在上节曾指出,仿真活动也是围绕一个核心要素模型展开的,如何建立描述系统静态特征、动态行为的仿真模型成为构建系统的关键所在。
自1986年Booch提出面向对象软件工程的概念以来,各种面向对象的方法论应运而生,它们各有千秋,但由于缺乏统一的标准,妨碍了用户间的交流。为了简化和强化现有的大量的面向对象开发方法,Rumbaugh、Booch、Jacobson三位面向对象大师集众家之长,于1995年提出了划时代的统一建模语言UML(Unified Modeling Language),它在1997年被OMG
(Object Management Group)批准为标准。如今,UML已经成为面向对象技术领域内占主导地位的标准建模语言,也是RUP一个不可缺少的组成部分,RUP使用UML完成各个阶段的建模。James Rumbaugh、Ivar Booch、Grady Jacobson三位UML创始人在其著作中对UML做了全面的论述,UML的特点可归纳如下:
1)UML是一种通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统的文档。它记录了与被构建系统有关的决策和理解,可用于对系统的理解、设计、浏览、配置、维护及控制系统的信息。
2)UML包括语义概念、表示法和指导规范,提供了静态、动态、系统环境及组织结构的模型,可被交互式的可视化建模工具支持。
3)UML能够捕捉系统静态结构和动态行为的信息。系统被建模成独立对象的集合,通过交互实现功能,从而最终满足外部用户的需求。静态结构定义了系统中重要对象的属性和操作以及对象间的关系。动态行为定义了对象随时间变化的历史和对象为完成目标进行的相互通信。它们从不同但又相互联系的角度为系统建模,帮助全方位理解系统。
4)UML包括将模型组织成包的结构组件,可把大的系统分解成易于处理的单元,便于理解和控制包之间的依赖。UML还包括用于表达系统实现和组织运行的组件。
5)UML本质上不是一门编程语言,但借助于代码生成器,可将UML模型映射成多种程序设计语言代码,或使用反向生成工具将程序代码转换成UML模型。
6)UML标准没有定义一种标准的开发过程,它适合于各种软件开发方法及软件生命周期的各个阶段,尤其适用于迭代式开发过程。
7)UML是一种离散的建模语言,适合对由计算机软件、固件或数字逻辑构成的离散系统建模。UML用事物、关系和图来描述模型,如图2.5所示。各自的含义在具体的应用会体现出来。
参考文献:
[1]张颖超、李明君,基于面向对象语言的芯便仿真技术的实现,武汉理工大学学报,2003.27(2):205-207.
[2]崔晓峰,面向对象的离散事件仿真建模与实现,计算机工程与应用,1998.9:39-41.
作者简介:
杨彦斌,男,天津人,天津工业大学信息与通信工程学院。