面向对象的分析过程 - 范文中心

面向对象的分析过程

03/23

面向对象的分析过程

摘要

分析了面向对象技术应用于仿真领域的种种优点,亦即我们选择采用面向对 象的方法进行改造的原因。一些面向对象方法存在的不足。

关键词:仿真,面向对象,岸边集装箱起重机,训练器

面向对象的开发方法是以对象作为最基本的元素,它是分析问题、解决问题的核心。 面向对象=对象(Object)

+分类(classification)

+继承(inheritance)

+通过消息的通信(communication with messages)

从下图中我们可以看出,面向对象的开发方法明显不同。

面向对象的仿真为仿真人员提供了开发模块化可重用的仿真模型的工具,它把系统看成由相互作用的对象所组成,而对象则往往表示现实系统中的真实实体。从而提高了仿真模型的可理解性、可扩充性和模块性,并且便于实现仿真与计算机图形和人工智能的结合。 采用面向对象的方法,原因如下:

1. 可理解性

面向对象仿真对设计者、实现者,以及最终用户来说都改进了仿真的可理解性。因为仿真系统中的对象往往直接表示现实系统中的真实实体,这些实体在面向对象的仿真系统中可以用外观上类似于人们熟悉的实际系统的对象的图形或图像来表示,用户可以通过图形界面与仿真模型进行交互,利用图形或图像来直接建立仿真模型,这对于熟悉实际系统的用户来说是很容易理解的。

2. 可重用性和可扩充性

在面向对象的仿真中,可以建立起一个模型库用以保存以前建立的模型,模型库中的模型可以作为建立新模型的可重用构件,通过面向对象技术内在的继承机制可以容易地和系统地修改现有的对象(类) 以创建新的对象。并且可以加入现有的类库中。类库提供了仿真建模所需要的一般设施。通过修改现有的类,可以建立各种应用中所需要的特殊对象。

3. 模块性

面向对象的仿真是模块化,特殊的过程来寻找相应的信息,不会影响其它的对象。

4. 图形用户界面

对象作为模块,对象的所有信息都保存在该对象中,在面向对象的仿真系统中往往表示实际系统中的真实实体,因而在系统中可以用相似的图形或图像来表示,因此更便于建立非常直观的图形用户界面,用户可以直接在屏幕上建立系统的图形概念,直观地构造仿真模型。

5. 仿真与人工智能的结合

在面向对象的仿真中,对象封装了它们的功能,而功能可以包含智能。因而利用人工智能和专家系统的方法可以在功能中嵌入智能,使对象也能具有决策和学习能力。仿真与人工智能的结合可以增强仿真的能力。在基于知识的仿真系统和专家仿真系统方面,许多学者己进行了广泛的研究,表明了人工智能和专家系统在辅助仿真建模、仿真结果的解释和仿真模型灵敏度分析等方面的重要作用。

6. 并行仿真

由于对象封装了所有的信息,因而每个对象都能分配给自己的处理程序执行它的功能。这样,对象在某种程序上可以相对独立的运行。正是由于对象之间的这种相对独立性,产生了并行仿真执行的可能性。仿真的并行执行可以极大的降低仿真时间,允许仿真更多的对象,能够实现更详细的仿真。

3. 2面向对象的方法选择

3. 2. 1方法比较

八十年代末以来,随着面向对象技术成为研究的热点出现了几十种支持软件开发的面向对象方法。下面介绍几种经典的分析和设计方法:

1 .OMT/Rumbaugh

OMT(Object Modeling Technique) 方法最早是由Loomis,Shan 和Rumbaugh 在1987年提出的,曾扩展应用于关系数据库设计。J. Runmbaugh 在1991年正式把OMT 应用于面向对象的分析和设计。这个方法是在实体关系模型上扩展了类、继承和行为而得到的。

OMT 覆盖了分析、设计和实现三个阶段。OMT 包括了一组定义的很好的并且相互关联的概念,他们是类(class)、对象(ob ject) 、一般化(generalization)、继承(inheritance)、链(link)、链属性(link attribute)、聚合(aggregation)、操作(operation)、事件(event)、场景(scene)、属性(attribute)、子系统(subsystem)、模块(module)等。

OMT 方法包含四个步骤:分析、系统设计、对象设计和实现。OMT 定义有三种模型,这些模型贯穿于每个步骤,在每个步骤中被不断的净化和扩充。这三种模型是:

对象模型,用类和关系来刻画系统的静态结构。

动态模型,用事件和对象刻画系统的动态特性。

功能模型,按照对象的操作来描述如何从输入给出输出结果。

OMT 是一种比较成熟的方法,用几种不同的观念来适应不同的建模场合。但应用所有的OMT 技术来建立一个一致的模型是非常困难的,而且各阶段三个模型之间的关系也不是十分清晰。为建立一个一致的模型,OMT 的许多概念和语义还需要形式的定义。

2. OOD/Booch

OOD(Object Oriented Design)方法是Grady Booch从1983开始研究,1991年后走向成熟的一种方法。Booch 方法在面向对象的设计中主要强调多次重复和开发者的创造性。方法本身是一组启发性的过程式建议。方法并不依从硬性的条件限制,OOD 的一般过程如下:

1) 在一定抽象层次上标识类与对象。

2) 标识类与对象的语义。

3) 标识类与对象之间的关系。

4) 实现类与对象。

这个过程是递归的。设计过程从发现类和对象,形成问题域的字典开始,直到不再发现新的抽象与机制,或者说,所有发现的类和对象己经可以由现有的复用类和对象实现

为止。

OOD 为开发者提供了丰富的图形表示。从不同的侧面观察模型都可以获得模型在某一方面特性的丰富视图。OOD 方法并不是一个开发过程,只是在开发面向对象系统时应遵循的一些技术和原则。OOD 方法是从外部开始,逐步求精每个类直到系统被实现。它的缺点在于不能有效的找出每个对象和类的操作。

3. RDD/Wirfs一Brock

RDD(Responsibility-Driven Design)方法是Wirfs-Brock 在1990年提出的。这是一个按照类、责任以及合作关系对应用进行建模的方法。RDD 方法分为探索阶段和精化阶段。ftDD 的设计规范主要包括:类层次图、合作图、类规范、子系统规范、合同规范。RDD 是一种用非形式的技术和指导原则开发合适的设计方案的设计技术。寻找类及其特性的策略主要依赖设计者的个人技巧。RDD 用交互填写CRC 卡的方法完成设计,这对大型系统设计不太适用。RDD 也引入了一些新的概念和技术,例如合同、子系统等,使得开发过程可以并发完成。

RDD 采用传统的方法确定对象类,有一定的局限性。另外,均匀的把行为分配给类也是十分困难的。

4. GOAD/Coad一Yoordon

OOAD(Object-Oriented Analysis and Design) 方法是由Peter Coad 和Ed Yourdon 在1991年提出的。这是一种逐步进阶的面向对象建模方法。OOA 使用了基本的结构化原则,并把他们同面向对象的观点结合起来。OOA 方法主要包括下面五个步骤:确定类与对象、标识结构、定义主题、定义属性、定义服务。其结果是结构化的图文挡。

模型自顶向下包括五个层次:

主题层(只有主题);

类与对象层(上层中加入类与对象):

结构层(上层中加入结构);

属性层(上层中加入属性);

服务层(上层中加入服务);

OOA 没有特别的支持来刻画对象的动态特性。

OOA 完成系统分析。OOD 负责系统设计。OOD 包括四个步骤:

1) 设计问题域(细化分析结果);

2) 设计人机交互部分(设计用户界面);

3) 设计任务管理部分(确定系统资源的分配):

4) 设计数据管理部分(确定持久对象的存储) 。

OOA 把系统横向划分为五个层次,OOD 把系统纵向划分为四个部分,从而形成一个清晰的系统模型。

5.OOSE/Jacobson

OOSE(Object-Oriented Software Engineering)是Jacobson 在1992年提出的一种用例驱动的面向对象开发方法。

每个用例都是使用系统的一条途径。用例的一个执行过程可以看作是用例的实例。系统开发是一个复杂的任务。通过在不同层次逐步构造模型可以控制这种复杂性。

OOSE 开发过程中有五种模型,这些模型是自然过渡和紧密祸合的。包括:需求模型、分析模型、设计模型、实现模型、测试模型。DOSE 是一种实用的面向对象的系统开发方法。

其中,Booch, Coad/Yourdon, OMT ,和Jacobson 的方法在面向对象软件开发界得到了广泛的认可。特别值得一提的是统一的建模语言UML (Unified Modeling Language), 该方法结合了Booch, OMT,和Jacobson 方法的优点,统一了符号体系,并从其它的方法和

工程实践中吸收了许多经过实际检验的概念和技术。UML 现在是一个国际标准,它正在对象管理小组(Object Management Group) 的指导下进行修订和扩展。准确的说,UML 是面向对象分析与设计的一种标准表示。

3. 2. 2 UML 及其工具介绍

UML 作为用于创建系统的逻辑模型的一般语法,通常随着在分析和设计期间对各种要点的理解,来描述计算机系统。它独立于其他任何特定的目标语言、软件工程或工具,但它具有充分的一般性和灵活性,用用户定义的扩展能对其进行裁剪,以适合几乎所有的语一言、工具或过程需求。对我们使用者来讲,UML 就是一组标准化了的标记模型、设计的符号。更具体的说,实际上就是一些图。所谓的使用UML 描述设计,展现的就是一系列相互协调的图。UML 共有五类九种图,最重要的就是四种图,也就是UML 语法中最重要的四种模型:

1) 用例图:用用例捕捉用户使用系统的方式。以用户和开发者能理解的方式,用这样的用例形成对计算机系统的需求的外在定义。

2) 类图:用类图定义系统的静态结构模型。静态结构模型识别对象、类以及他们之间的关系。

3) 交互图(通常为顺序图):用交互图捕捉功能需求。把他们用作工具,用以帮助决定怎样在类(对象) 间分布支持用例所必需的功能。他们也可以作为一种机制,用一种方式把必需的系统功能映射到对象上,以产生在功能上的内聚的、可维护的、可复用的和可扩展的类。

4) 状态(动态) 图:用状态图捕获系统的动态视图。构成模型的状态图表示系统状态上的功能性依赖。从以对象为中心的观点(而不是以用例为中心的观点) 来看,他们也表示系统的功能。这有助于进行详细设计,以确保对操作的条件限制进行正确地编码、对封装动态状态的类编码而言,这也体现了可维护性、内聚和健壮性。忽略了这点,整体上就丧失了对各个体的功能项的深入理解。 比较常用的两种UML 工具分别是:Rational公司的Rose ,一种是微软公司的

Vision Rose一度成为UML 的代名词,但由于Visio 和微软的Office 套件的结合比较紧密,便于生成文档报告,后者更为流行。在“岸边集装箱起重机”训练器的仿真建模中我们应用Visio 作为辅助工具。

3. 3用例建模

面向对象分析由三个步骤组成:

用例建模:用一个用例图(use-case diagram)和相关的情景形式表示这个信息。这个步骤有时称为功能建模,他在很大程度上是面向行为的。

类建模:确定类和他们的属性以及类之间的相互关系和交互作用。以类图的形式表示这个信息。这个步骤很大程度上是面向数据的。

动态建模:确定由每个类或子类发出的或对他们进行的行为(动作) 。以状态图的形式表示这个信息。这个步骤是面向行为的。

第一步是收集用户的需求,用用例描述岸边集装箱起重机的工作情景。根据我们对现场的观察,相关资料的查阅,以及与用户的沟通,最终得到系统的用例图。

3.4面向对象的软件过程

软件工程过程规定了在获取、供应、开发、操作和维护软件时,要实施的过程、活动和任务。其目的是为各种人员提供一个公共的框架,以便用相同的语一言进行交流。这框架由几个重要的过程组成,这些主要过程包含获取、供应、开发、操作和维护软件所用的基本的、一致的要求。软件工程的开发过程可分为瀑布模型法、原型法、螺旋模型法、喷泉模型法等。

喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。迭代意味着模型中的开发活动常常需要多次重复,在迭代过程中,相关功能不断的随之加入演化的系统,完善软件系统。无间隙是指在分析、设计、实现等开发活动之间不存在明显的界限。也就是说,它不像瀑布模型那样,需求分析活动结束后刁’开始设计活动,设计活动结束后刁‘开始编码活动,而是允许各开发活动交叉、迭代地进行。这也体现了面向对象开发技术在缩短开发时间、降低开发费用方面的优越性。如图1-3描述了面向对象的开发过程。

图I-4则更为详细的描述了面向对象软件过程(OOSP)的生命周期,它由一系列过 程模式组成。

1. 4面向对象技术在仿真领域的研究现状与发展

进入90年代以来,面向对象仿真技术的研究和开发有了惊人的进步,目前在许多领域开发的仿真建模语一言和环境大部分支持OOS (Object Oriented Simulation)。在通信系统、计算机系统、电力系统、军事系统、环境和生态系统等领域已经开发出不少面向对象仿真环境,例如:多媒体图形仿真,建立大规模多用户3D 应用的分布式交互仿真环境等。现在许多面向对象语言都支持仿真类库的开发,有时,也可以使用一些特殊的面向对象仿真语一言和仿真环境,这些仿真语启‘和环境还提供了对数据库及其它软件和硬件设备的集成和通信工具。美国Carnegie Mellon大学首先开始研究基于知识的仿真系统(KBS),相继推出了仿真建模专家系统(ESS),自动生成仿真模型的专家系统(MGES)等。近十几年来,我国的面向对象仿真研究、开发和应用也有很大的进展,支撑OOS 的工具己不少实现商品化了。例如:(1)网络仿真技术被用在基于共享的仿真环境,如虚拟工厂教学系统;(2)面向对象仿真在处理复杂系统模型时,是一个极好的工具。将这类模型分成几个子模型,做到仿真程序结构与真实系统结构相似。如解决互相联系的异步电动机组的仿真控制问题等。同时,在科技、生产、社会各方面面向对象仿真技术的应用,使仿真技术的应用能力拓展,渗透性增加,无处不在,无孔不入。

第三章面向对象仿真建模

面向对象的仿真(Object-Oriented Simulation)在理论上突破了传统仿真方法的观念,它根据组成系统的对象及其相互作用关系来构造仿真模型,模型的对象通常表示实际系统中相应的实体,从而弥补了模型和实际系统之间的差距。面向对象的仿真具有内在的可扩充性和可重用性。因而为仿真大规模的复杂系统提供了极为方便的手段。仿真建模的主要任务是构造能够反映系统的结构和行为的模型,构造仿真模型的一种自然的方式是使模型的结构尽可能与实际系统的结构一致,因而要求构造模型的基本模块与实际系统的组成部分相对应,面向对象的仿真提供了实现这种建模方法的途径。

3. 1面向对象的基本概念

面向对象方法是一种运用对象、类、继承、封装、聚合、消息传递、多态性等概念来构造系统的软件开发方法。这种方法是计算机的求解更接近人的思维方式。它使得软件开发的设计阶段更加紧密的与实现阶段相联系。

3.1.1对象

对象是现实世界中一个实际存在的事物,他可以是有形的,也可以是无形的。对象是构成世界的一个独立单位,它具有自己的静态特征和动态特征。静态特征即可以用某种数据来描述的特性,动态特性即对象所表现的行为或对象所具有的功能。

一个对象由一组属性和对这组属性进行操作的一组服务构成。

属性是用来描述对象静态特性的一个数据项。

服务是用来描述对象动态特性的一个操作序列。

一个对象可以有多项属性和多项服务。一个对象的属性和服务被封装成一个整体,对象的属性值只能由这个对象的服务存取。

3. 1 .2类

类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。

在面向对象编程语一言中,类是一个独立的程序单元,它应该有一个类名并包括属性说明和服务说明两个主要部分。类的作用是定义对象。类与对象的关系如同一个模具与用这个模具铸造出来的铸件之间的关系。类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。所以一个对象是一个类的实例。

事物既具有共同性,也有特殊性。运用抽象的原则舍弃对象的特殊性,抽取其共同性,则得到一个适应一批对象的类。

同时,我们也可以这样来理解类与对象的概念。现实世界中的事物可分为两大类,即物质和意识。物质表达的是具体的事物; 意识描述的是某一抽象的概念。例如“自行车”和“这辆白色的自行车”,“这辆白色的自行车”是物质,它是具体的客观存在; “自行车”是意识,它是一个抽象的概念,是对客观存在的事物的一种概括。这些现实世界中的事物可直接映射到面向对象中的“对象”,现实世界中的意识可对应面向对象系统中的抽象概念一一“类”。“自行车”在面向对象系统中可用自行车类来表示,“一辆白色的自行车”在面向对象系统中则是一个具体的对象,是自行车类的一个实例。

3. 1. 3封装、信息隐藏

封装是面向对象方法的一个重要原则。它有两个含义:第一,把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象); 第二个涵义也称作“信息隐藏”,即尽可能隐藏对象的内部细节,对外形成一个边界(或者说形成一道屏障) ,只保留有限的对外接口使之与外部发生联系。这主要是指对象的外部不能直接的存取对象的属性,只能通过几个允许外部使用的服务与对象发生联系。确切的说,封装就是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。

3. 1. 4消息

消息就是向对象发出的服务请求。当一个对象给另一个对象发送消息时,发送者请求消息接受者执行指定的操作,并(有可能) 返回信息。当接受者接收消息时,它以它所知道的方式执行被请求的操作。这样的请求不规定如何执行一个操作。来自发送者的这种信息总是被隐藏的。

3. 1. 5继承、泛化

继承是面向对象的一个重要特色,是代码重用的重要方法。继承关系是子对象可以完全或部分的复用父对象的属性和操作。子对象可以用自己的操作替代父对象的操作。继承可能会带来另一个问题一一多态,这在下面阐述。

泛化是较通用的类和较具体的类之间的一种关系,子类是超类的一个种类,子类的一个对象可以在超类被允许的任何地方时用。

泛化是“is a ”关系。泛化使得重新陈述已经定义的特性变得不必要了,为超类定义的属性和操作可以在子类中重用,子类被成为继承了他的父类的属性和方法。

聚合和组合

如同世间万物存在着千丝万缕的联系,作为现实世界的反映,对象相互之间也存在着相互关联的关系。聚合是关联的“一部分”关系(即“is part of" )。表示超集类和子集类之间的全体与部分关系。一个超集类包含一个自己类(或一组类) 。

这个包含特性可以是强的(值聚合) 或弱的(引用聚合) ,在UML 中,值聚合成为组合,而引用聚合成为聚合。

从系统建模的观点看,聚合是一种特殊的并含有其他语义的关联。特别地,聚合是传递的和反对称的。

组合有另外一个存在依赖特性,一个子集类的对象不能在没有被连接到其他超类对象的情况下存在,这就意味着如果一个超集对象被删除,则他的自己对象也必须被删除。多态

多态:不同的对象可以以不同的方式响应同一消息,是对象间可以交互而不需要知道他们的确切类型。

表现在程序实现上,就是不同的对象可以调用相同名称的函数,并可导致完全不同的行为的现象,称之为多态。这大大提高了我们解决复杂问题的能力。在代码实现时,它

常用虚函数来实现。

继承带来多态,绑定操作的工作必须延迟到运行是进行,这就是动态绑定。多态是通过动态绑定实现的。

3. 4类建模

在这个步骤,提取类和他们的属性。确定类的一个方法是从用例推断他们,即仔细研究全部情景,不管是正常的还是异常的,并确定在用例中发挥的作用。它属于系统的静态特征。我们在找到了类之后,要确定其属性、操作,以及类之间的关系。在面向对象建模中,这是非常重要、非常关键的一步。类的提取,类之间关系的确定,将直接影响后面代码的实现。

3. 4. 1类提取

识别对象是任何面向对象方法中最重要也是最困难的一步。通过同问题域专家的交互式对话在问题域中识别所有的“潜在对象”。在寻找对象的尝试中,正确的运用抽象原则,舍弃那些与系统责任无关的事务,同时,对于与系统责任有关的事务,并不是把他们的任何特征都在相应的对象中表达出来。发现对象以后,经过分析,我们提取出有用的属性,以及相关的方法,将其封装在一个类中。

在类提取时,我们要按照一定的原则,选取合适的粒度和层次。根据类描述的抽象层次的不同,它们的粒度是不同的。简而言之,避免大类长方法,也就是说要避免包含许多方法、许多属性的大类。最重要的是要有一个良好的类层次结构。

3. 4. 2聚合

图。-4中,菱形实心箭头个表示的是类之间的聚合关系。箭头指向整体类,另-端则是部分类。聚合关系也称为整体一部分关系,组装一部分关系。识别聚合关系的常用方法是寻找“由„构成”,“包含”,“是„的一部分”等词句。聚合减少了复杂性。

我们可以看出,在岸边集装箱起重机系统中存在的聚合关系有:

1. 训练系统由装卸设备和装卸设备组成;

2. 岸边集装箱起重机是由大车、小车、吊具、大梁俯仰、指示灯组成的:

3. 大车运行机构和夹轨器是大车的一部分;

4. 吊具是由旋锁、导板、钢丝绳组成的。

3. 4. 3继承

一个类是可以独立的,也可以位于一个继承层次,继承层次由一些具有父子关系的类组成。继承是一种非常方便高效的机制,通过创建子类,对父类进行特化或扩展。图中,空心三角形箭头则表示泛化/特化关系,即继承关系,继承允许类之间共享同一代码。

在图3-4中,泛化被画成连接到父类伤得连线端点上的一个空心三角形。也就是说,带空心三角形的箭伞示继承关系。箭头指向父类,另一端指向子类。子类继承了父类的属性和操作。值得注意的是,继承作用到类上而不是对象上,而且它作用到类型上而不是值上。在“岸边集装箱起重机”系统中的泛化特化:

1. 装卸设备父类有岸边集装箱起重机类和龙门起重机类两个子类; 装卸工具类的子类一龙门起重机类,在此处设置该子类,是为了今后开发“龙门起重机仿真训练器”留下接口,在以后的开发中,利用代码重用,可以大大降低开发成本,缩短开发时间,充分体现面向对象研究方法的优越性。

2. 船舶类、集卡类、集装箱类继承了装卸工具类中承载能力属性、位置属性等,在子类中不需要再对这些属性进行定义;

3. 集装箱类根据编号方法不同又有板上集装箱类,板下集装箱类,以及一种特殊的舱盖板类;

4. 指示灯父类有着箱灯类,开锁灯类,闭锁灯类三个子类。着箱灯类、开锁灯类、闭锁

灯类中无需再对状态属性进行定义,因为他们继承自指示灯类,在指示灯类中已经做了定义。

3. 4. 4封装和数据隐藏

面向对象编程中模块的基本单元是类,通过类这种机制,我们将数据和处理这些数据的过程封装为一个有机的整体一一类。

在类图中,每个类单元中间为他们的属性,第三栏为他们的处理属性及操作。如大梁俯仰类,我们将其运动速度属性、俯仰角度属性以及拉起大梁操作、放下大量操作封装在一个单元中,封装在其中的属性是隐藏的,并对不隐藏的封装成员函数提供支持。前面的“#”表示protected, “一”表示private, “+”表示publico public即对用户是可见的。private 对用户是不可见的。接口暴露给用户,而实现对用户隐藏。面向对象语言中的类是支持信息隐藏的模块。c++语言使用关键字public 和private 来对类的属性和操作进行存取访问控制,其中public 用于显示类的接口,private 关键字用于隐藏类的实现。

3. 4. 5多态

多态意为拥有多种形态。在面向对象语言中,多个不同的函数可以具有现同的函数名。在继承层次结构中,所有的类,包括父类及其一切子类,提供他们自己的适当版本的多态方法是常见。多态使得共享的代码可以被剪裁,以适应每一单个类的特殊情况。

如图3-4类图中所示,装卸工具类的移动处理,与其子类船舶类、集卡类、集装箱类的移动处理都是各不相同的,所以在装卸工具类中我们仅定义出该函数,而是在其子类中以相同的函数名、不同的方法实现。

6. 2面向对象方法的不足

在开发中,我们发现面向对象模型比以往的模型有了很大的进步,显示出了种种优越性,面向对象的仿真更趋方便,逼真度高。虽然避免了结构化法方法的缺陷,但也带来了一些新的问题:

1. 对象之间的联系是一种点对点的直接联系,当系统中对象数目增加时,通讯链接数将以平方级激增。也就是说抽象类时,类的数目不能过多,在构造类图时,层次不能过多,要控制好粒度。同时,类实例化时要控制好数目,以减少系统的复杂度及冗余度。例如:根据原型系统,最初分为前大梁类与后大梁类,但是我们发现,这增加了设计的复杂性,带来了许多开销,同时在使用CRC 卡进行排列模拟时发现,前大梁类与后大梁类使用的频度不高,而且与其他类的联系也比较相似,于是将其合并为大梁类。

2. 为支持通讯,每个对象实体都要维护一个包含所有对象实体功能服务信息的功能服务信息库,这部分信息不但重复,而且还要保证其一致性。这些开销都损害了系统的效率。例如:在吊具对象中要包含大车对象、小车对象、大梁对象等等的功能服务的信息库,而小车对象中同样也要包含这些。

3. 更大的问题是对象的接口没有一致的标准,造成向系统中扩充对象时的随意与不规范,不利于系统的维护以及对象的复用。例如:整个系统是由一个个开发小组进行的,虽然大家采用的是同一开发语言,遵循同一个系统分析、系统设计文档,但是大家的编程习惯不同、造成编码也会有所不同。

4. 对象方法项目管理存在一定困难。在通过“逐步精化”的对象开发中,各开发阶段之间没有清晰的边界,而且项目文档也是连续进行的。所以对进行分工与任务划分带来一定的麻烦。

6. 3未来发展方向

面向对象的仿真是计算机仿真领域中热点。而且,国内外学者对计算机仿真技术的研究正方兴未艾,不断有新的仿真技术思想和研究成果被提出。分布式仿真的加入,专家系统的引进,都将使仿真系统的功能更为强大,与现实世界的相似度越高。可以预见,随着

现代科技的发展,计算机仿真技术必将获得更大的发展和应用。


相关内容

  • 软件工程方法学的学习总结
    软件工程方法学学习总结 • 软件工程方法学是研究软件设计方法论及工程开发技术的一门学科,主要研究的是:模型.方法.过程.工具.理念/原则.文档, 甚至相应的开发语言.随着软件工程的发展,形成了不同的软件工程方法:结构化.面向对象.敏捷方法. ...
  • 软件评测师教程考点梳理(一)
    软件评测师教程考点梳理(一) 软件评测师考试属于全国计算机技术与软件专业技术资格考试中的一个中级考试.希赛小编为大家整理了软件评测师教程中几个重要的知识点精讲,希望对大家2017年备考能有所帮助. 面向对象软件的集成测试 (1)传统的自顶向 ...
  • 软件工程期末试卷答案
    软件工程试题一 一.单项选择题 1. 以下不是软件危机的典型表现的是: ( D ) . A. 对软件开发成本和进度的估计常常很不准确 B. 用户对"已完成的"软件系统不满意的现象经常发生 C. 软件产品的质量往往靠不住 ...
  • 基于UML的搜索雷达仿真系统建模与实现
    第44卷第4期(总第174期) 2015年12月 火控雷达技术 FireControlRadarTechnology V01.44 No.4(Series174) Dec.2015 基于UML的搜索雷达仿真系统建模与实现 邓东旭 王学智 徐 ...
  • 软件工程期末考试试题
    一,单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项 前的字母填在题后的横线上. 1.可行性研究要进行一次_____需求分析. A.详细的 B.全面的 C.简化的.压缩 ...
  • 软件体系结构试题免费版本
    软件体系结构考试试题 1.设计模式一般用来解决什么样的问题( a) A.同一问题的不同表相 B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 2.下列属于面向对象基本原则的是( c ) A.继承 B.封装 C.里氏代换 D都不是 ...
  • 可视化配电网潮流计算软件设计
    第37卷第3期2009年3月 林业机械与木工设备 FORESTRY MACHINERY &WOODWORKING EQUIPMENT Vo137No.3Mar. 2009 可视化配电网潮流计算软件设计 唐文秀,赵志江 (东北林业大学 ...
  • [软件工程]优秀课程建设总结报告
    <软件工程>优秀课程建设总结报告 在德州学院<软件工程>优质课程建设的工作中,我们课程组全体成员认识到<软件工程>是计算机软件专业的一门核心基础课程,搞好这门课程的建设,对于提高计算机科学与技术专业学生的 ...
  • 什么是运维
    什么是运维?给你一个标准答案 吞拿鱼手卷 于 7 月前 发表在 运维经验 这篇文章的标题确实有点high,但对于从事运维及其相关开发的你来说,当告诉别人你从事的是运维领域的工作,对方的回复是"哦"时,你又该怎么解释呢?那 ...