软件工程中的行为模型

2025年3月17日 | 阅读 7 分钟

本文将讨论软件工程中的行为模型。

行为模型用于说明系统在模型执行时期的动态行为。行为模型描述了当系统对环境的刺激做出反应时,会发生什么或应该发生什么。

行为模型主要有两种刺激:数据和事件。

  • 数据: 系统接收需要处理的数据。
  • 事件: 当发生特定事件时,系统处理会被触发。

两种行为模型可以解释软件工程中的系统行为。这两种模型是数据处理模型和状态机模型。

  • 数据处理模型: 在此模型中,数据流图 (DFD) 表示系统的 DFD。
  • 状态机模型: 在此模型中,状态图表示系统对外部事件的响应。

数据流图 (DFD)

这些图也称为气泡图。它用于表示数据在系统中的流动。它是一种用于与用户、经理等沟通的图形工具。它是一种简单的技术,有助于分析拟议的系统。它说明了外部实体与进程之间以及数据库与进程之间的数据移动。

您使用的任何软件都有许多页面,例如登录页面、主页等。当用户从一个页面移动到另一个页面时,不仅是用户在移动,数据也在从一个模块流向另一个模块。当所有这些事物都以图形方式表示时,就称为数据流图。

DFD 元素

  1. 源/汇(外部实体): 这是一个对象,并且该对象由矩形表示。源向系统提供数据,而汇从系统接收数据。源和汇不用于处理数据。
  2. 数据流: 管道传输数据并显示数据流的方向。它通过带注释的箭头表示。它连接外部实体、进程和数据库。它们通常是单向的,但如果相同的数据在两个方向上流动,则由双向箭头表示。
  3. 进程: 指正在发生的事件。进程由圆圈表示。如果数据流向对象,则由进入箭头表示;如果数据流离对象,则由离开箭头表示。
  4. 数据存储: 数据库存储数据,并由平行线表示。当数据写入或更新到数据库时,由进入箭头表示。当数据从数据库读取时,由离开箭头表示。

DFD 中使用的符号如下表所示

Behavioural Model in Software Engineering

数据流规则

  • 数据应从外部实体流向进程。
  • 数据应从进程流向外部实体。
  • 数据应从进程流向存储,然后再回来。
  • 数据应从进程流向进程。
  • 数据不应从外部实体流向外部实体。
  • 数据不应从外部实体流向存储。
  • 数据不应从存储流向外部实体。
  • 数据不应从存储流向存储。

DFD 中的分层

DFD 可以绘制以在不同级别上显示系统。初始或更高级别被划分为包含更多信息和功能细节的较低级别。

0 级 DFD

它也称为基本系统模型或上下文图。它将整个系统显示为一个单独的气泡,输入和输出数据由进入和离开的箭头符号化。

0 级 DFD 被划分为多个气泡,然后每个气泡又被划分为更详细的 DFD。

示例

您可以在下图中看到显示航空公司预订系统 0 级 DFD 的图。

Behavioural Model in Software Engineering

它用一个单独的气泡表示整个预订系统。随着我们继续前进,我们将细化此 DFD,并且单个气泡将被分成多个气泡。每个气泡将代表一个单独的模块;这些气泡将转换数据。

1 级 DFD

当 0 级被细化时,单个气泡被分成多个气泡。

示例

您可以在下图看到航空公司预订系统中一个气泡被分成多个气泡。

Behavioural Model in Software Engineering

首先,数据从航班数据库接收并显示给外部实体客户。有一个取消模块,在此模块中输入取消详细信息,并获得取消确认。座位预订模块显示客户正在预订座位。座位预订模块与总成本计算模块交互,在该模块中向客户显示机票的总成本。支付完成后,机票生成模块生成机票。座位分配模块显示登机牌的生成。这些是 1 级 DFD 中的主要进程。

2 级 DFD

每个进程或模块在此级别上被细化。

示例

我们可以细化航空公司预订系统的每个模块,但在本例中,我们将细化“预订模块”。

Behavioural Model in Software Engineering

您可以在上图中看到,外部实体“客户”将检查座位可用性。如果座位不可用,则向客户发送否定确认,并且进程结束。如果座位可用,则将客户输入的乘客人数发送到后续模块以收集乘客信息。“收集乘客信息”模块将用户详细信息存储在数据库中,并将用户详细信息传递给“付款流程”模块。付款流程告知客户票价,然后客户付款。付款后,“付款流程”向“出票”模块发送付款确认,并为电子机票生成登机牌。

状态图

它用于捕获系统的行为特征。系统的动态方面通过状态图来表示。

状态图元素

  • 状态:它是对象生命周期中的一个移动。使用带圆角的矩形来表示状态。
  • 事件:它是从一个状态移动到另一个状态的触发器。
  • 转换:它表示从一个状态到另一个状态的移动方向。带注释的箭头用于表示转换。转换时的事件名称会显示在箭头上传。
  • 初始状态是开始状态,实心圆表示初始状态。
  • 最终状态:它是结束状态,实心圆套在轮廓圆上表示最终状态。
  • 决策框:它用于做出决策。使用菱形来表示决策框。

状态图中使用的符号如下表所示

Behavioural Model in Software Engineering

状态图示例

示例 1

您可以看到以下“订单管理系统”状态图,其中“订单”对象有初始状态和最终状态。第一个状态是空闲状态,在此状态下开始处理。下一个状态是诸如发送请求、确认请求和发货等事件。

Behavioural Model in Software Engineering

在对象的生命周期中,您可以看到一些异常退出,它们也可能由于系统中的某些问题而发生。“发送订单请求”事件发生在中间状态。从此事件开始,发生“选择普通订单或特殊订单”事件,这是一个转换。之后,发生“订单确认”和“发货订单”事件。当整个生命周期完成时,就被认为是一个完整的事务。

示例 2

您可以在下面看到“大学填表系统”状态图。

Behavioural Model in Software Engineering

开始符号显示在开头,第一个状态“注册”允许学生注册姓名。学生在“登录”状态下提供 ID 和密码。如果在登录过程中 ID 或密码不正确,则登录取消,并且登录页面重新出现。

下一个阶段是“填表”状态,学生在此填写表格。学生填完表格后提交表格,然后学生被要求支付注册费。付款将在下一个状态“付款”中完成。付款详细信息被发送到后续状态“打印”,在此状态下可以打印或下载表格。如果付款不成功,则会再次打开“付款”页面。下一个状态是“注销”状态,学生在打印或下载表格后在此状态下注销。在所有状态完成后,将使用结束状态符号。

数据驱动建模

它是第一个成为数据驱动模型的图形模型。这些模型表示处理输入数据并生成相关输出的步骤。它们在演示系统中的端到端处理方面很有用,这有助于需求分析。数据驱动模型是通过我们已经讨论过的数据流图来显示的。

事件驱动建模

它是说明系统对内部和外部事件响应的建模。它用于描述状态机模型。

事件驱动模型通过我们已经讨论过的状态图来显示。

结论

我们在本文中掌握了软件工程中的行为模型,并得出了以下几点。

  • 数据和事件是行为模型中的两种刺激。
  • 数据处理模型和状态机模型是两种类型的行为模型。
  • 数据处理使用流程图显示,对事件的响应使用状态图显示。
  • DFD 描绘了外部实体与进程之间以及进程与数据库之间的数据流。
  • 状态图用于描绘系统的行为。
  • 这些图用于开发者、利益相关者和客户之间的沟通。