`
softstone
  • 浏览: 461644 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多

面向对象方法综述

陈小群

(本文转载自软件工程专家网www.21cmm.com,不代表gigix观点)

 

  八十年代末以来,随着面向对象技术成为研究的热点出现了几十种支持软件开发的面向对象方法。其中,Booch, Coad/Yourdon, OMT, 和Jacobson的方法在面向对象软件开发界得到了广泛的认可。特别值得一提的是统一的建模语言UML(Unified Modeling Language),该方法结合了Booch, OMT, 和Jacobson方法的优点,统一了符号体系,并从其它的方法和工程实践中吸收了许多经过实际检验的概念和技术。UML方法自去年提出后到现在已发展到1.1版,并已提交给对象管理集团OMG,申请成为面向对象方法的标准。

  面向对象方法都支持三种基本的活动:识别对象和类,描述对象和类之间的关系,以及通过描述每个类的功能定义对象的行为。   为了发现对象和类,开发人员要在系统需求和系统分析的文档中查找名词和名词短语,包括可感知的事物(汽车、压力、传感器);角色(母亲、教师、政治家);事件(着陆、中断、请求);互相作用(借贷、开会、交叉);人员;场所;组织;设备;和地点。通过浏览使用系统的脚本发现重要的对象和其责任,是面向对象分析和设计过程的初期重要的技术。

  当重要的对象被发现后,通过一组互相关联的模型详细表示类之间的关系和对象的行为,这些模型从四个不同的侧面表示了软件的体系结构:静态逻辑、动态逻辑、静态物理和动态物理。   静态逻辑模型描述实例化(类成员关系)、关联、聚集(整体/部分)、和一般化(继承)等关系。这被称为对象模型。一般化关系表示属性和方法的继承关系。定义对象模型的图形符号体系通常是从用于数据建模的实体关系图导出的。对设计十分重要的约束,如基数(一对一、一对多、多对多),也在对象模型中表示。

Booch方法

  动态逻辑模型描述对象之间的互相作用。互相作用通过一组协同的对象,对象之间消息的有序的序列,参与对象的可见性定义,来定义系统运行时的行为。Booch方法中的对象交互作用图被用来描述重要的互相作用,显示参与的对象和对象之间按时间排序的消息。可见性图用来描述互相作用中对象的可见性。对象的可见性定义了一个对象如何处于向它发送消息的方法的作用域之中。例如,它可以是方法的参数、局部变量、新的对象、或当前执行方法的对象的部分。   静态物理模型通过模块描述代码的布局。动态物理模型描述软件的进程和线程体系结构。

  Booch方法的过程包括以下步骤:
  . 在给定的抽象层次上识别类和对象
  . 识别这些对象和类的语义
  . 识别这些类和对象之间的关系
  . 实现类和对象

  这四种活动不仅仅是一个简单的步骤序列,而是对系统的逻辑和物理视图不断细化的迭代和渐增的开发过程。

  类和对象的识别包括找出问题空间中关键的抽象和产生动态行为的重要机制。开发人员可以通过研究问题域的术语发现关键的抽象。语义的识别主要是建立前一阶段识别出的类和对象的含义。开发人员确定类的行为(即方法)和类及对象之间的互相作用(即行为的规范描述)。该阶段利用状态转移图描述对象的状态的模型,利用时态图(系统中的时态约束)和对象图(对象之间的互相作用)描述行为模型。

  在关系识别阶段描述静态和动态关系模型。这些关系包括使用、实例化、继承、关联和聚集等。类和对象之间的可见性也在此时确定。

  在类和对象的实现阶段要考虑如何用选定的编程语言实现,如何将类和对象组织成模块。

  在面向对象的设计方法中,Booch强调基于类和对象的系统逻辑视图与基于模块和进程的系统物理视图之间的区别。他还区别了系统的静态和动态模型。然而,他的方法偏向于系统的静态描述,对动态描述支持较少。

  Booch方法的力量在于其丰富的符号体系,包括:
  . 类图(类结构-静态视图)
  . 对象图(对象结构-静态视图)
  . 状态转移图(类结构-动态视图)
  . 时态图(对象结构-动态视图)
  . 模块图(模块体系结构)
  . 进程图(进程体系结构)

  用于类和对象建模的符号体系使用注释和不同的图符(如不同的箭头)表达详细的信息。Booch建议在设计的初期可以用符号体系的一个子集,随后不断添加细节。对每一个符号体系还有一个文本的形式,由每一个主要结构的描述模板组成。符号体系由大量的图符定义,但是,其语法和语义并没有严格地定义。

Rumbaugh的OMT方法

  Rumbaugh的OMT方法从三个视角描述系统,相应地提供了三种模型,对象模型,动态模型和功能模型。对象模型描述对象的静态结构和它们之间的关系。主要的概念包括:
  . 类
  . 属性
  . 操作
  . 继承
  . 关联(即关系)
  . 聚集

  动态模型描述系统那些随时间变化的方面,其主要概念有:
  . 状态
  . 子状态和超状态
  . 事件
  . 行为
  . 活动

  功能模型描述系统内部数据值的转换,其主要概念有:
  . 加工
  . 数据存储
  . 数据流
  . 控制流
  . 角色(源/潭)

  该方法将开发过程分为四个阶段:
1 分析
  基于问题和用户需求的描述,建立现实世界的模型。分析阶段的产物有:
  . 问题描述
  . 对象模型=对象图+数据词典
  . 动态模型=状态图+全局事件流图
  . 功能模型=数据流图+约束

2 系统设计
  结合问题域的知识和目标系统的体系结构(求解域),将目标系统分解为子系统。

3 对象设计
  基于分析模型和求解域中的体系结构等添加的实现细节,完成系统设计。主要产物包括:
  . 细化的对象模型
  . 细化的动态模型
  . 细化的功能模型

4 实现
  将设计转换为特定的编程语言或硬件,同时保持可追踪性、灵活性和可扩展性。

Coad/Yourdon方法

  Coad/Yourdon方法严格区分了面向对象分析OOA和面向对象设计OOD。该方法利用五个层次和活动定义和记录系统行为,输入和输出。这五个层次的活动包括:
  . 发现类及对象。描述如何发现类及对象。从应用领域开始识别类及对象,形成整个应用的基础,然后,据此分析系统的责任。
  . 识别结构。该阶段分为两个步骤。第一,识别一般-特殊结构,该结构捕获了识别出的类的层次结构;第二,识别整体-部分结构,该结构用来表示一个对象如何成为另一个对象的一部分,以及多个对象如何组装成更大的对象。
  . 定义主题。主题由一组类及对象组成,用于将类及对象模型划分为更大的单位,便于理解。
  . 定义属性。其中包括定义类的实例(对象)之间的实例连接。
  . 定义服务。其中包括定义对象之间的消息连接。

  在面向对象分析阶段,经过五个层次的活动后的结果是一个分成五个层次的问题域模型,包括主题、类及对象、结构、属性和服务五个层次,由类及对象图表示。五个层次活动的顺序并不重要。

  面向对象设计模型需要进一步区分以下四个部分:
  .问题域部分(PDC)。面向对象分析的结果直接放入该部分。
  .人机交互部分(HIC)。这部分的活动包括对用户分类,描述人机交互的脚本,设计命令层次结构,设计详细的交互,生成用户界面的原型,定义HIC类。
  .任务管理部分(TMC)这部分的活动包括识别任务(进程)、任务所提供的服务、任务的优先级、进程是事件驱动还是时钟驱动、以及任务与其它进程和外界如何通信。
  .数据管理部分(DMC)。这一部分依赖于存储技术,是文件系统,还是关系数据库管理系统,还是面向对象数据库管理系统。

Jacobson方法

  Jacobson方法与上述三种方法有所不同,它涉及到整个软件生命周期,包括需求分析、设计、实现和测试等四个阶段。需求分析和设计密切相关。需求分析阶段的活动包括定义潜在的角色(角色指使用系统的人和与系统互相作用的软、硬件环境),识别问题域中的对象和关系,基于需求规范说明和角色的需要发现use case,详细描述use case。设计阶段包括两个主要活动,从需求分析模型中发现设计对象,以及针对实现环境调整设计模型。第一个活动包括从use case的描述发现设计对象,并描述对象的属性、行为和关联。在这里还要把use case的行为分派给对象。

  在需求分析阶段的识别领域对象和关系的活动中,开发人员识别类、属性和关系。关系包括继承、熟悉(关联)、组成(聚集)和通信关联。定义use case的活动和识别设计对象的活动,两个活动共同完成行为的描述。Jacobson方法还将对象区分为语义对象(领域对象)、界面对象(如用户界面对象)和控制对象(处理界面对象和领域对象之间的控制)。

  在该方法中的一个关键概念就是use case。use case是指行为相关的事务(transaction)序列,该序列将由用户在与系统对话中执行。因此,每一个use case就是一个使用系统的方式,当用户给定一个输入,就执行一个use case的实例并引发执行属于该use case的一个事务。基于这种系统视图,Jacobson将use case模型与其它五种系统模型关联:
  . 领域对象模型。use case模型根据领域来表示。
  . 分析模型。use case模型通过分析来构造。
  . 设计模型。use case模型通过设计来具体化。
  . 实现模型。该模型依据具体化的设计来实现use case模型。
  . 测试模型。用来测试具体化的use case模型。

分享到:
评论

相关推荐

    面向对象软件测试综述

    是收集各种资源写的一篇面向对象软件测试的综述性的文章

    面向对象软件测试方法综述

    关于面向对象软件测试方法方面权威的内容总结

    面向对象程序设计综述 .doc

    面向对象程序设计综述 

    网上购物面向对象分析报告书

    软件工程课程:网上购物系统的面向对象分析 包括了:需求分析 用例图 顺序图 实体类图等   目录 1. 文档说明 3 1.1. 编写目的 3 1.2. 定义 3 1.3. 参考资料 3 2. 需求获取 4 2.1. 系统部署图 4 2.2. 需求描述: 4 3...

    面向对象数据库系统论文

    关于面向对象数据库的论文,综述型的阐述了面向对象数据库的原理。

    第1章 面向对象技术概述.ppt

    程序设计的目的是设计出可以使用的软件系统。为了设计出高质量的软件系统就需要研究程序设计中涉及的基本概念、描述工具和所采用的方法。至今为止,常见的有结构化程序设计方法和面向对象程序设计方法。

    面向对象系统分析与设计规范

    面向对象系统分析与设计规范 系统综述 系统的项目背景、目标、意义、应用范围

    面向对象与UML资料

    第一节 面向对象方法概述 18 对象与面向对象 18 面向对象技术产生的原因 19 面向对象方法的基本思想 19 概念 19 面向对象技术的特点 19 面向对象语言及系统 19 第二节 面向对象的分析 20 OOA分析的任务 20 OOA分析的...

    北京中科信软 面向对象设计模式培训

    1. 面向对象综述 2. UML2综述 3. 核心目标: 4. 深刻理解UML的四种关系 5. 面向对象的分析和设计、MDA 6. 设计模式简介 7. 面向对象设计原理 8. 重构简介 9. 核心目标: 10. 深刻理解OOD原理,它是理解设计模式最...

    论文研究-面向对象的电子政务系统模型研究与设计.pdf

    在对电子政务系统模型综述的基础上,提出并构建了面向对象的电子政务系统模型。该模型中将电子政务系统分解为三个对象,即政府、企(事)业单位和公民,建立了面向对象电子政务系统模型中各对象之间直接和间接的互动...

    面向对象系统建模

    帮助你如何进行面向对象的系统建模,更好的开发,更有建模思想,编程人员必备

    基于深度学习的图像语义分割技术研究综述.pdf

    基于深度学习的图像语义分割技术研究综述.pdf

    高光谱遥感影像分类方法综述.pdf

    主要有监督分类与非监督分类,基于分类判据的实现策略 划分,硬分类和软分类,基于像素的分类和基于对象的分类。...的分类方法、人工神经网络分类法、支持向量机分类、决策树分类、面向对象分类和非监督分类。

    面向大数据处理框架的JVM优化技术综述

    当前,以Hadoop、Spark为...这些大数据处理框架采用分布式架构,使用Java、Scala等面向对象语言编写,在集群节点上以Java虚拟机(JVM)为运行时环境执行计算任务,因此依赖JVM的自动内存管理机制来分配和回收数据对象.

    面向对象的电子政务系统模型研究与设计* (2009年)

    在对电子政务系统模型综述的基础上,提出并构建了面向对象的电子政务系统模型。该模型中将电子政务系统分解为三个对象,即政府、企(事)业单位和公民,建立了面向对象电子政务系统模型中各对象之间直接和间接的互动...

    论文研究-面向事实的概念建模方法研究综述.pdf

    面向事实的信息建模(FOM)是一种完全面向自然语言交流的领域概念知识建模方法,是一种理想的概念建模和本体工程辅助工具。简要分析了概念建模过程,比较了不同概念建模方法,介绍了FOM的技术演化过程,从业务规则、...

    面向主动对象数据库系统综述* (2001年)

    面向对象系统的开发在语义上大大缩小了数据库存储对象和真实世界对象之间的差距。但面向对象数据库系统是被动的,主动数据库系统提供一种机制监视数据库的状态。能够主动对数据库内部的值或外部条件变化作出反应。...

    基于JAVA的模拟ATM系统的设计与实现【文献综述】.pdf

    二、ATM 系统使用的开发语言 人们在 ATM 系统的开发时,使用了各种不同的计算机语言,本系统采用 Java 语言作 为开发语言,因为 Java 语言是一个具有简单、面向对象、多线程、分布性、体系结构中 立、安全性等方面...

    软件构件技术综述

    软件构件技术综述 面向对象到构件技术 公共对象请求中介结构CORBA 构件对象模型COM和构件对象模型DCOM JAVA 和JAVA2 环境平台企业版J2EE

    《UML建模实例教程》【PPT】

    2.1.1面向对象方法的基本思想 2.1.2面向对象方法的发展 2.2面向对象的基本概念与特征 2.2.1面向对象的基本概念 2.2.2面向对象的主要特征 2.3面向对象分析 .2.3.1处理复杂问题的原则 2.3.200A方法的基本步骤 ...

Global site tag (gtag.js) - Google Analytics