面向对象分析 - OOAD



在软件开发的系统分析或面向对象分析阶段,确定系统需求,识别类并识别类之间的关系。

三种用于面向对象分析的分析技术相互结合使用,它们是对象建模、动态建模和功能建模。

对象建模

对象建模以对象的形式开发软件系统的静态结构。它识别对象、对象可以分组成的类以及对象之间的关系。它还识别表征每个类的主要属性和操作。

对象建模的过程可以可视化为以下步骤:

  • 识别对象并将其分组为类
  • 识别类之间的关系
  • 创建用户对象模型图
  • 定义用户对象属性
  • 定义应该对类执行的操作
  • 审查词汇表

动态建模

在分析了系统的静态行为之后,需要检查其相对于时间和外部变化的行为。这是动态建模的目的。

动态建模可以定义为“描述单个对象如何响应事件的方式,无论是其他对象触发的内部事件,还是外部世界触发的外部事件”。

动态建模的过程可以可视化为以下步骤:

  • 识别每个对象的状态
  • 识别事件并分析操作的适用性
  • 构建动态模型图,包括状态转换图
  • 用对象属性表示每个状态
  • 验证绘制的状态转换图

功能建模

功能建模是面向对象分析的最后一个组成部分。功能模型显示在对象内执行的过程以及数据在方法之间移动时如何发生变化。它指定对象建模的操作和动态建模的动作的含义。功能模型对应于传统结构化分析的数据流图。

功能建模的过程可以可视化为以下步骤:

  • 识别所有输入和输出
  • 构建显示功能依赖关系的数据流图
  • 说明每个功能的目的
  • 识别约束
  • 指定优化标准

结构化分析与面向对象分析

结构化分析/结构化设计 (SASD) 方法是基于瀑布模型的传统软件开发方法。使用 SASD 开发系统的阶段为:

  • 可行性研究
  • 需求分析与规格说明
  • 系统设计
  • 实施
  • 实施后审查

现在,我们将看看结构化分析方法和面向对象分析方法的相对优势和劣势。

面向对象分析的优势/劣势

优势 劣势
关注数据而不是像结构化分析那样的过程。 功能在对象内受到限制。这可能对本质上是过程性的或计算性的系统造成问题。
封装和数据隐藏原则帮助开发人员开发无法被系统其他部分篡改的系统。 它无法识别哪些对象会生成最佳的系统设计。
封装和数据隐藏原则帮助开发人员开发无法被系统其他部分篡改的系统。 面向对象模型不容易显示系统中对象之间的通信。
它通过模块化有效地管理软件复杂性。 无法在一个图中表示对象之间所有接口。
与遵循结构化分析的系统相比,它可以更容易地从小型系统升级到大型系统。

结构化分析的优势/劣势

优势 劣势
由于它遵循自顶向下的方法,与面向对象分析的自底向上方法相反,因此它比 OOA 更易于理解。 在传统的结构化分析模型中,一个阶段应在下一个阶段开始之前完成。这在设计中提出了一个问题,特别是在出现错误或需求发生变化时。
它基于功能。识别总体目的,然后进行功能分解以开发软件。这种强调不仅使人们更好地理解系统,而且产生了更完整的系统。 构建系统的初始成本很高,因为需要一次性设计整个系统,几乎没有后期添加功能的选项。
其中的规范是用简单的英语编写的,因此非技术人员更容易分析。 它不支持代码重用。因此,开发时间和成本固有地较高。
广告