📜  OOAD-功能建模

📅  最后修改于: 2020-12-14 04:09:36             🧑  作者: Mango


功能建模提供了面向对象的分析模型的过程视角,并概述了系统应该做什么。它借助数据流程图(DFD)定义系统中内部流程的函数。它描述了数据值的功能推导,但未指出在计算时如何推导它们,或者为什么需要计算它们。

数据流程图

功能建模通过DFD的层次结构表示。 DFD是系统的图形表示,显示系统的输入,对输入的处理,系统的输出以及内部数据存储。 DFD说明了对对象或系统执行的一系列转换或计算,以及影响转换的外部控件和对象。

Rumbaugh等。将DFD定义为“数据流图是一种图形,它显示了数据值从对象中的源经过通过将数据值转换到其他对象的目的地的过程。”

DFD的四个主要部分是-

  • 流程
  • 数据流
  • 演员,以及
  • 数据存储。

DFD的其他部分是-

  • 约束,以及
  • 控制流。

DFD的功能

工艺流程

流程是转换数据值的计算活动。整个系统可以可视化为一个高级过程。可以将过程进一步划分为较小的组件。最低级别的过程可能是一个简单的函数。

以DFD表示-进程表示为椭圆,其名称写在其中,并包含固定数量的输入和输出数据值。

示例-下图显示了一个过程Compute_HCF_LCM,该过程接受两个整数作为输入并输出其HCF(最高公因子)和LCM(最小公倍数)。

DFD计算HCM和LCM

数据流

数据流表示两个进程之间的数据流。它可以在参与者和流程之间,也可以在数据存储库和流程之间。数据流表示在计算的某个时刻数据项的值。该值不会被数据流更改。

以DFD表示-数据流由有向弧或箭头表示,并用其携带的数据项的名称标记。

在上图中,Integer_a和Integer_b表示流向该进程的输入数据流,而LCM和HCF是输出数据流。

在以下情况下可能会分叉数据流-

  • 输出值被发送到多个位置,如下图所示。此处,输出箭头未标记,因为它们表示相同的值。

  • 数据流包含一个聚合值,每个组件都发送到不同的位置,如下图所示。在此,每个叉状组件均已标记。

分叉数据流

演员们

参与者是通过生成数据并将其输入到系统或使用系统生成的数据来与系统交互的活动对象。换句话说,参与者是数据的源和汇。

DFD中的表示-演员由矩形表示。 Actor连接到输入和输出,并且位于DFD的边界上。

示例-下图显示了参与者,即柜台销售系统中的Customer和Sales_Clerk。

DFD中的演员

资料储存库

数据存储是充当数据存储库的被动对象。与演员不同,他们不能执行任何操作。它们用于存储数据和检索存储的数据。它们代表数据库中的数据结构,磁盘文件或表。

在DFD中的表示-数据存储区由包含数据存储区名称的两条平行线表示。每个数据存储都连接到至少一个进程。输入箭头包含修改数据存储内容的信息,而输出箭头包含从数据存储检索的信息。当要检索部分信息时,将标记输出箭头。未标记的箭头表示完整的数据检索。双向箭头表示检索和更新。

示例-下图显示了一个数据存储Sales_Record,其中存储了所有销售的详细信息。数据存储的输入包含销售明细,例如项目,账单金额,日期等。要查找平均销售量,该过程将检索销售记录并计算平均值。

DFD中的数据存储

约束条件

约束指定随时间推移需要满足的条件或限制。它们允许添加新规则或修改现有规则。约束可以出现在所有三个面向对象分析模型中。

  • 在对象建模中,约束定义对象之间的关系。它们还可以定义对象在不同时间可能采用的不同值之间的关系。

  • 在动态建模中,约束定义了不同对象的状态和事件之间的关系。

  • 在功能建模中,约束定义了对转换和计算的约束。

表示法-约束在大括号内显示为字符串。

示例-下图显示了DFD的一部分,用于计算已决定对销售部门的所有员工进行激励并增加人事部门的所有员工的薪水的公司员工的薪水。可以看出,约束{Dept:Sales}仅在部门为销售部门时才计算激励,约束{Dept:HR}仅在部门为HR时才计算激励。

DFD中的约束

控制流程

一个过程可能与某个布尔值相关联,并且仅在该值是true时才被评估,尽管它不是对该过程的直接输入。这些布尔值称为控制流。

在DFD中的表示-控制流用虚线圆弧表示,从产生布尔值的过程到由它们控制的过程。

示例-下图表示用于算术除法的DFD。除数已测试为非零。如果它不为零,则控制流OK的值为True,随后除法过程将计算商和余数。

DFD中的控制流

开发系统的DFD模型

为了开发系统的DFD模型,构建了DFD的层次结构。顶级DFD包含一个流程以及与之交互的参与者。

在每个连续的较低级别,将逐步包含更多详细信息。将流程分解为子流程,确定子流程之间的数据流,确定控制流,并定义数据存储。分解流程时,流入或流出流程的数据流应与DFD下一级别的数据流匹配。

示例-让我们考虑一个自动化批发商店交易的软件系统Wholesaler Software。这家商店批量销售,有一个由商人和零售商店所有者组成的客户群。每个客户都被要求注册其个人资料,并被赋予唯一的客户代码C_Code。销售完成后,商店会记录其详细信息并发送货物以进行分派。商店每年都会向客户分发圣诞节礼物,其中包括银币或金币,具体取决于总销售额和所有者的决定。

批发软件的功能模型如下。下图显示了顶级DFD。它把软件显示为一个单一的过程以及与之交互的参与者。

系统中的参与者是-

  • 顾客
  • 营业员
  • 业主

批发商店的DFD

在下一级DFD中,如下图所示,标识了系统的主要流程,定义了数据存储,并定义了流程与参与者的交互,并建立了数据存储。

在系统中,可以识别三个过程,即-

  • 注册客户
  • 流程销售
  • 确定礼物

所需的数据存储为-

  • 顾客信息
  • 销售明细
  • 礼物详情

批发软件DFD

下图显示了注册客户过程的详细信息。其中包含三个过程:验证详细信息,生成C_Code和更新客户详细信息。输入客户的详细信息时,将对其进行验证。如果数据正确,则生成C_Code并更新数据存储“客户详细信息”。

客户流程的DFD

下图显示了确定礼物过程的扩展。它具有两个过程,即查找总销售额和确定礼品硬币的类型。 “查找总销售额”流程将计算与每个客户相对应的年度总销售额并记录数据。以此记录和所有者的决定作为输入,通过决定礼品硬币类型的过程分配礼品硬币。

礼品流程的DFD

DFD的优缺点

Advantages Disadvantages
DFDs depict the boundaries of a system and hence are helpful in portraying the relationship between the external objects and the processes within the system. DFDs take a long time to create, which may not be feasible for practical purposes.
They help the users to have a knowledge about the system. DFDs do not provide any information about the time-dependent behavior, i.e., they do not specify when the transformations are done.
The graphical representation serves as a blueprint for the programmers to develop a system. They do not throw any light on the frequency of computations or the reasons for computations.
DFDs provide detailed information about the system processes. The preparation of DFDs is a complex process that needs considerable expertise. Also, it is difficult for a non-technical person to understand.
They are used as a part of the system documentation. The method of preparation is subjective and leaves ample scope to be imprecise.

对象,动态和功能模型之间的关系

对象模型,动态模型和功能模型相互补充,以进行完整的面向对象分析。

  • 对象建模根据对象来开发软件系统的静态结构。因此,它显示了系统的“执行者”。

  • 动态建模开发对象响应外部事件的时间行为。它显示了对对象执行的操作序列。

  • 功能模型概述了系统应执行的操作。

功能模型和对象模型

就对象模型而言,功能模型的四个主要部分是-

  • 流程-流程表示需要实现的对象的方法。

  • 角色-角色是对象模型中的对象。

  • 数据存储-这些是对象模型中的对象或对象的属性。

  • 数据流-流入或流出参与者的数据流表示对象上或对象上的操作。往返数据存储的数据流表示查询或更新。

功能模型与动态模型

动态模型说明执行操作的时间,而功能模型说明执行操作的方式以及需要哪些参数。由于角色是活动对象,因此动态模型必须指定它何时起作用。数据存储是被动对象,它们仅响应更新和查询。因此,动态模型无需指定它们何时起作用。

对象模型和动态模型

动态模型显示对象的状态以及事件的发生和状态的后续更改所执行的操作。对象模型中显示了由于更改而导致的对象状态。