`
softstone
  • 浏览: 478242 次
  • 性别: 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

    面向对象程序设计是一种现代的计算机编程范式,其核心理念是将程序视为相互协作的对象集合。这一技术起源于20世纪60年代,由Simula67语言的诞生奠定基础,该语言引入了数据抽象和类的概念。随后,Smalltalk的出现...

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

    网上购物面向对象分析报告书是软件工程中对网上购物系统进行深入分析的文档,主要涵盖了需求分析、用例图...面向对象分析方法在这里起到了关键作用,它使我们能够从多个维度理解和设计系统,提高软件的质量和可维护性。

    面向对象与UML资料

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

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

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

    面向对象系统建模

    本篇内容将深入探讨面向对象系统建模的基本原理、方法论以及实践技巧,旨在帮助读者更好地理解和应用这一强大的软件设计方法。 ### 一、面向对象建模的基础概念 #### 1. 对象与类 - **对象**:现实世界中的实体...

    构建面向对象的应用软件系统框架

    在第一部分综述中,作者首先介绍了本书将要涵盖的主题,包括面向对象设计的基本理念、系统架构的分层结构以及如何通过这些原则来构建可靠的软件系统。这一部分强调了理解系统各部分如何协同工作的重要性,为后续章节...

    面向对象分析设计与UML》讨论题

    - **系统分析与设计**:学会如何使用面向对象方法进行系统分析与设计。 - **UML的应用**:熟练运用UML来进行系统建模。 - **软件开发能力**:具备开发特定环境下应用问题所需的信息系统的能力。 #### 二、教学组织...

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

    基于深度学习的图像语义分割技术研究综述 本文对基于深度学习的图像语义分割技术进行了详细的研究综述。图像语义分割技术是智能系统理解自然场景的关键技术之一,在计算机视觉领域中具有广阔的应用前景。本文首先对...

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

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

    1-1面向对象技术基础-作业要求[收集].pdf

    学生需要阅读至少3篇关于面向对象(OO)的文章或书籍,然后撰写一篇小论文,可以是对OO技术的综述、对特定问题的研究,或者对OO特点的探讨。论文应包含标题、中英文摘要、概述、正文(1-2章)和结论,且必须注明...

    软件工程需求开发方法综述

    基于UML的面向对象需求分析方法克服了传统需求分析方法的一些缺点,比如对问题领域的时效性限制和对系统功能精确度的把握不足。此外,这种方法还简化了数据流分析的复杂性,并提高了信息模型的映射精度。 #### 领域...

    审计数据处理方法研究综述.pdf

    本文综述了面向数据的计算机审计数据处理方法的重要性、常用方法及应用情况,并探讨了数据处理方法的发展趋势。研究数据处理方法对于理解计算机辅助审计的发展和提高审计工作的质量有重要的理论和实践意义。 首先,...

    面向点云的三维物体识别方法综述

    ### 面向点云的三维物体识别方法综述 #### 一、引言 随着三维成像技术的快速发展,诸如结构光测量与激光扫描等技术已成为获取空间数据的重要手段。这些技术能快速准确地获得被测对象表面的三维坐标数据,即所谓的...

    软件工程与CASE工程综述.doc

    面向对象方法学是软件工程方法学的第二个阶段,面向对象方法学的主要思想是将软件开发和维护过程看作是一个对象的生命周期。面向对象方法学的优点是能够提高软件开发和维护的灵活性和可维护性,提高开发团队的生产...

Global site tag (gtag.js) - Google Analytics