前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

面向对象方法那些你不知道的事(三)

qiguaw 2024-09-18 23:17:39 资源文章 18 ℃ 0 评论

前言

自20世纪80年代以来,面向对象方法已深入到计算机软件领域的几乎所有分支。它不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行问题求解,以及如何进行系统构造的软件方法学。

20世纪90年代,人们推出了许多不同的面向对象设计和分析方法,Booch方法Coad-Yourdon方法Jacobson方法(OOSE)Rumbaugh方法(OMT)是当中最为流行的4种方法。

这些方法概念、表示法、系统模型、开发过程等方面各有差异。随着时间的推移,这些方法之间开始出现了交叉,但它们仍然都拥有自己的独特表示法。这些不同表示法的使用给建模者造成了混乱,因为不同方法中的相同符号的含义可能并不相同。例如,实心小圆圈在OMT方法中是一个多重性指示器,在Booch方法中则是聚合符号。这个阶段就是后来人们所说的方法之战阶段。

UML结束各种方法的概念及表示法不一致的局面,同时也采用了其他许多方法中的优良思想。目前,UML已经成为面向对象分析和设计方法的事实上的标准。

下面我将介绍下这几种流行的面向对象分析方法。

Booch方法

Booch是面向对象方法最早的倡导者之一,他提出了面向对象软件工程的概念。

Booch方法是早期面向对象的软件开发方法的一种,主要分为两个过程 宏过程(macro process)和微过程(micro process)。宏过程是对整个软件生命周期的过程布局,宏过程中的每一个阶段应对软件生命周期的一个开发阶段。

微过程是宏过程驱动的,是在宏过程中的各个阶段反复进行的日常活动。微过程包括4个步骤,分别是标识类和对象、确定类和对象的语义、标识关系、说明每个类的接口和实现。Booch认为软件开发是一个螺旋上升的过程。

Booch方法中常见的一些模型图:

Booch方法 在分析阶段主要有以下活动:

  1. 识别系统基础功能点,并进行分类组织

  2. 对每一个值得考虑的功能点,用用例,行为分析,CRC卡技术编排一个剧本。当剧本清楚时,就建立对象图,用来表示启动或者提供行为并协作完成剧本活动的那些对象。

  3. 如果需要生成剧本,以表示异常情况的行为

  4. 当某些对象的生命周期对剧本很重要,则开发这些对象的状态转换图。

  5. 整理剧本之间的模式,并抽象。可以用类图来表示抽象类和之间的关系。

Booch方法 在设计阶段主要有以下活动:

  1. 体系结构设计:将系统功能划分到不同的层次和部分中去。

  2. 策略设计:针对问题域,列出不同系统采用的共同策略,例如存储管理,异常处理,事务处理等等。

  3. 发布计划:增量地设计和构造每个体系结构发布,根据需要调整增量发布的目标和进度。

缺点:操作性不强,宏过程的介绍过程中没有进一步阐述在分析和设计执行中应该如何应用微过程。


Coad/Yourdon方法

Coad/Yourdon方法由P. Coad和E. Yourdon于1990年推出,该方法主要由面向对象的分析(Object-Oriented Analysis,OOA)和面向对象的设计(Object-Oriented Design,OOD)构成,特别强调OOA和OOD采用完全一致的概念和表示法,使分析和设计之间不需要表示法的转换。

Coad/Yourdon方法的OOA模型由5个层次叠加而成:

OOA模型的5个层次对应如下5个动作:

  1. 发现类和对象,即通过对问题域的分析来发现系统中需要设立的对象

  2. 识别结构,例如整体和部分的结构等

  3. 识别主题,当类的数量较少(少于7)的时候可以忽略

  4. 定义属性:定义对象的数据或状态信息

  5. 定义服务: 即对象的具体行为

Coad/Yourdon方法的OOD以OOA的的模型为输入,根据必要条件对它做必要的调整和补充,此外还需要根据实际条件设计4个横向切面:

  1. 人机交互(HIC):定义人机界面的类和对象的构成

  2. 问题域(PDC): 将OOA结果搬到OOD,根据现实条件(机器性能,编程语言)做补充

  3. 任务管理(TMC):包括识别任务(进程)、任务所提供的服务、 任务的优先级、进程是事件驱动还是时钟驱动、以及任务与其它进程和外界如何通信。

  4. 数据管理(DMC):定义数据存储,检索等


Jacobson方法(OOSE)

Jacobson方法(1992年提出)简称OOSE,它所采用的的面向对象的基本概念和其他方法没有太大的不停,但是它最突出的一点是提出了一个很有用的概念,即用况(use case)。在OOSE之前,大多数的OOA方法关注的主要问题是如何运用面向对象的概念构造满足用户需求的分析模型,对于用户需求本身的分析和描述比较少

OOSE建议系统开发系统开发由分析构造测试3个过程构成。

分析过程

分析过程包含需求分析和健壮分析两个过程。

需求分析:以系统边界之外的参与者(actor)与系统对话的方式,描述每一项系统功能的使用情况。

需求模型:需求分析输出需求模型,其中包括图形方式的用况图和文字方式的描述。

健壮分析:独立于现实的环境来构造系统,其焦点是系统的逻辑结构,目标是定义一个健壮,稳定,可扩充,可维护的分析模型。

分析模型:分析模型包含实体对象,界面对象,控制对象,从对象信息,标识和行为三个方面来刻画系统。

构造过程:

构造阶段可分为两步:设计和实现。

设计是根据现实的环境对分析模型进行细化,在此期间精确的定义对象的接口、操作等语义,输出设计模型。

设计分为两步:

  1. 机械的将分析模型转换成设计模型,主要是符号的变化(这个也是被人吐槽的点)

  2. 根据现实环境来补充和细化设计模型

OOSE讨论的现实环境包括:

  • 目标环境:操作系统,处理机,网络,编程语言等

  • 构件及构件库

  • 现有的产品,例如现有数据库,系统界面

  • 将与本系统协作的其他系统。

  • 性能,资金,人员等限制因素

OOSE的分析过程忽略了对象的属性、操作等细节。所以在设计阶段对于对象细化非常重要。对象细化主要通过交互图(定义对象操作以及之间的消息),状态转移图(描述对象行为),以及细化设计内部结构等方式。

测试过程:

Jacobson方法(OOSE)通过用况描述用户需求,但是用况驱动的观点言之有过。


Rumbaugh方法(OMT)

Rumbaugh方法(OMT)方法是1991年由James Rumbaugh等5人提出来的,其经典著作为“面向对象的建模与设计”。OMT目标是支撑整个软件生命周期。

OMT建议从3个不同的视角来分析和设计系统,即对象模型,动态模型以及功能模型。

对象模型:描述系统的静态结构(对象结构),包括对象的标识,之间的关系,对象的属性和操作。强调围绕对象来构建系统,而不是功能。

动态模型:描述系统中与实践有关的方面的操作,执行顺序。包括引起变化的事件,事件状态变化等。它抓住系统中各个操作发生的顺序,对于发生了什么,底层的实现不关心。

功能模型:功能模型描述了系统的所有计算,功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。功能模型由多张数据流图组成。数据流图说明数据流是如何从外部输入,经过操作和内部存储输出到外部的。功能模型也包括对象模型中值的约束条件。

OMT方法建议软件开发过程由分析、系统设计、对象设计和实现4个部分组成。

分析阶段

该阶段涉及对应用领域的理解及问题域建模。目的是确定一个系统“干什么”的模型,该模型通过使用对象、关联、动态控制流和功能变换等来描述。分析过程是一个不断获取需求及不断与用户磋商的过程。

  1. 问题陈述:记下或获取对问题的初步描述。

  2. 构造对象模型

    构造对象模型的步骤如下:

    (1) 确定对象类。

    (2) 编制类、属性及关联描述的数据词典。

    (3) 在类之间加入关联。

    (4) 给对象和链加属性。

    (5) 使用继承构造和简化对象类。

    (6) 将类组合成模块,这种组合在紧耦合和相关功能上进行。

最后得到:对象模型=对象模型图+数据词典。

3. 构造动态模型

构造动态模型的步骤如下:

(1) 准备典型交互序列的脚本。

(2) 确定对象间的事件并为各脚本安排事件跟踪。

(3) 准备系统的事件流图。

(4) 开发具有重要动态行为的各个类的状态图。

(5) 检查状态图中共享事件的一致性和完整性。

最后得到:动态模型 = 状态图 + 全局事件流图。

4. 构造功能模型

构造功能模型的步骤如下:

(1) 确定输入、输出值。

(2) 需要时使用数据流图来表示功能依赖关系。

(3) 描述各功能“干什么”。

(4) 确定约束。

(5) 详细说明优化标准。

最后得到:功能模型 = 数据流图 + 约束。

5. 验证、重复并完善细化 3 种模型

最后得到:分析文档 = 问题陈述 + 对象模型 + 动态模型 + 功能模型。

设计阶段

在系统设计阶段建立系统的高层结构(结构化设计方法),开发步骤如下:

(1) 将系统分解为各子系统。

(2) 确定问题中固有的并发性。

(3) 将各子系统分配给处理器及任务。

(4) 根据数据结构、文件及数据库来选择实现存储的基本策略。

(5) 确定全局资源和制定控制资源访问的机制。

(6) 选择实现软件控制的方法。

(7) 考虑边界条件。

最后得到:系统设计文档 = 系统的基本结构 + 高层次决策策略。

对象设计

对象设计时,对分析模型进行详细分析和阐述并且奠定实现的基础。过程如下

(1)从功能模型和动态模型中得出对象的操作

(2)设计实现操作的算法,优化算法

(3)实现控制策略

(4)调整类的结构加强继承

(5)设计实现关联

(6)定义对象属性的确切标识

(7)类和关联打包

最后得到:对象设计文档 = 细化的对象模型 + 细化的动态模型 + 细化的功能模型

OMT方法特点:概念严谨,阐述清楚,过程具体,可操作性强,包含了许多非OO的内容,但是提出若干扩充概念,偏于复杂

面向对象其他文章推荐:

面向对象方法那些你不知道的事(一)

面向对象方法那些你不知道的事(二)

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表