什么是模型-视图-控制器 (MVC) 框架?使用 UML 鲁棒性分析模型 MVC

模型-视图-控制器 (MVC)是一种将用户界面逻辑与业务逻辑分离的基本设计模式。模型-视图-控制器 (MVC) 模式是将应用程序划分为三个不同组件的一种方式;模型、视图和控制器。

使用 UML 建模的 MVC 框架

这个模型-视图-控制器可以使用刻板的 UML 表示法中的鲁棒性分析来最好地进行可视化描述,这是由 Ivar Jacobson 在他的获奖著作 Object-Oriented Software Engineering 中首次提出的(参见下面的参考资料),并由 Doug Rosenberg 等人进一步解释. 在他的用例驱动的 UML 对象建模一书中。

如何使用 UML 序列图对 MVC 框架进行建模?

这是一个简单的、假设的 MVC 序列图。您在上图中看到的是,Web 用户启动查询并生成事件,该事件由控制器处理以从模型中获取所需信息、验证信息并将结果集传递回视图。

实体对象(模型)只不过是您的边界对象正在寻找的信息或数据。这些可能是数据库表、Excel 文件或“临时”会话或缓存数据或类似的东西。

  • 描述随着时间的推移而存在并且主要关注持久状态的对象。
  • 通常来自域模型的对象
  • 我们需要跟踪和存储的东西

边界对象(视图)是参与者(例如,用户)在您的软件系统中与之通信的对象。这些对象可以是系统中的任何窗口、屏幕、对话框和菜单或其他用户界面。您可以在分析用例时轻松识别它们。

  • 描述系统和通信环境之间的连接。
  • 参与者在与系统通信时使用
  • 只有实体对象可以发起事件
  • (通常是主要的用户界面元素,例如屏幕)

控制对象(控制器)是业务对象或您的业务 Web 服务。这是您捕获用于过滤出要呈现给用户的数据的业务规则的地方,他要求什么。所以控制器实际上是在控制业务逻辑和数据转换。

  • 描述特定用例中的行为。
  • 边界对象和实体对象之间的“粘合剂”
  • 捕获业务规则和策略
  • (注意:通常作为其他对象的方法实现)

MVC模型中的连接规则

考虑边界对象和实体对象是名词,而控制器是动词。

以下是连接的四个基本规则。

  • Actor 只能与边界对象交互或通信。
  • 边界对象只能与控制器和参与者通信。
  • 实体对象只能与控制器交互。
  • 控制器可以与边界对象和实体对象以及其他控制器进行通信,但不能与参与者通信

请记住,边界对象和实体对象都是名词,而控制器是动词。名词不能与其他名词对话,但动词可以与名词或动词对话。

稳健性分析图一览

假设我们有以下文本格式的简单用例描述:

在学生详情页面,教师点击“添加课程”按钮,系统显示课程列表。教师选择课程名称并按下“注册”按钮。系统为学生注册课程。

现在您可以根据上面的用例创建一个简单的健壮性图:

稳健性分析图

您还可以使用文本标签将用例描述附加到稳健性图的右侧。

创建稳健性分析的五个步骤

  1. 您通过遍历用例文本来执行用例的稳健性分析。
  2. 一次一句话,画出演员、适当的边界、实体对象和控制器,以及图表各个元素之间的联系。
  3. 您应该能够将基础课程和所有替代课程放在一张图表上。
  4. 任何查看健壮性图的人都应该能够阅读用例文本中的操作过程,跟踪他的手指以及图上的关联,并看到文本和图片之间的清晰匹配。

在执行此操作时,您可能必须重写用例文本,以消除歧义并显式引用边界对象和实体对象。大多数人不会在初稿中编写完美的用例文本。因此,我们可以使用稳健性分析来弥合用例文本和图表之间的差距。

稳健性分析图检查

使用 MVC 序列图开发用例场景

基于稳健性分析,我们可以通过使用一组MVC格式的相关序列图来开发用例场景(正常或替代)。同样,MVC序列图有接口对象、控制器对象和实体对象:

  • 实体是表示系统数据的对象:客户、产品、交易、购物车等。
  • 边界是与系统参与者交互的对象:UserInterface、DataBaseGateway、ServerProxy 等。
  • 控件是介于边界和实体之间的对象。

MVC 序列图示例

它们通过边界对象与实体交互来协调来自边界的命令的执行。控制器对象通常对应于用例场景,并且通常由序列图表示。

您可以在 MVC 序列图中为生命线使用构造型,以直观地清楚您在 MVC 中使用的对象类型,就像上面的鲁棒性分析图一样。

鲁棒性序列图

示例 MVC 序列图

假设有一个应用程序可以让您搜索人员。UI 必须有一个文本字段,用户可以在其中输入搜索字符串,并且它可能有一个按钮来开始搜索。最后,它必须有一个显示搜索结果的区域。在我们的例子中,它是用一个列表组件实现的。

“搜索人员”用例场景是:

  • 用户在文本字段中输入搜索字符串
  • 用户单击搜索按钮。
  • 搜索结果显示在结果列表中。

MVC 序列图示例

上面的序列图显示了用户的按钮单击如何在应用程序中移动,直到结果最终显示在列表组件中。

参考

 

Leave a Reply

您的电子邮箱地址不会被公开。