飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • UEditor使用文档
  • AngularJS教程
  • ThinkPHP5.0教程

.NET 云原生架构师训练营(对象过程建模)--学习笔记

时间:2021-12-24  作者:MingsonZheng  

目录

  • UML
  • OPM
  • OPM优化

UML

1997年发布UML标准

主要域 视图 主要概念
结构 静态视图 类图 类、关联、泛化、依赖关系、实现、接口
用例视图 用例图 用例、参与者、关联、扩展、包括、用例泛化
实现视图 构件图 构件、接口、依赖关系、实现
部署视图 部署图 节点、构件、依赖关系、位置
动态 状态机视图 状态机图 状态、事件、转换、动作
活动视图 活动图 状态、活动、完成转换、分叉、结合
交互图 顺序图 交互、对象、消息、激活
协作图 协作、交互、协作角色、消息

UML 用例建模

图中有多个用例,每个用例有一个参与者,以及一个用例名称

用例是一个站在使用者的角度,他会在这个系统上做什么事情,这个事情可以称为一个用例

用户通过这个系统做成了一件事情,这是以目标为导向的,比如用户通过ATM机取钱,那么取钱就称为一个用例

用例更多的是涉及到用户和系统之间的交互

为了后期更加详细的设计,需要将用例图拆分为文档

内容 描述
用例名称 报名活动
用例编号
行为角色 访客、会员
简要说明 访客只能查看、会员可报名
前置条件 用户已经通过活动列表进入具体活动介绍页面;用户已经登录
后置条件 报名按钮显示为:已报名
流程图

UML 会使用多种图来展示用例内部详细的过程,但是没办法进行层次缩放,这是使用 UML 做系统设计会存在的问题

OPM

Object Process Methodology

  • 系统视角
  • 概念建模
  • 系统分解

系统视角

任何系统都可以从两方面来看

  • 结构(静态)
  • 行为(动态)

概念建模

在对象和对象之间建立抽象的关系

过程影响对象

系统分解

  • 从对象和功能开始建模
  • 对象的状态
  • 用过程链接联系对象

从对象和功能开始建模

对象是存在或可能存在的事物

过程是变换对象的事物

对象或过程都是一个事物

举一个导购分享的例子,首先导购生成分享链接会产生一条分享链接,这就是我们所说的对象

接着点击分享链接,分享链接作为这个过程的输入,点击链接会创建分享关系

抽取对象的过程中需要注意正方形填的是名词,是一个对象;圆形填的是动词,是一个过程

过程一定会影响对象,使得对象的状态发生一些改变,或者包括创建和销毁这个对象,同样的,一个对象会作为另外一个过程的输入

对象的状态

一段时间内对象可能处于一种状态或者情形

状态使用圆角矩形,分享链接有两种状态,有效的和无效的,通过状态与过程进行交互,只有链接是有效的才可以点击,如果是无效的需要重新生成

这个时候我们需要多一个请求分享链接的过程,这个过程与生成分享链接的过程是不可以连接的

过程与过程之间不可以连接,连接只能发生在一个对象与一个过程之间,所以这个图可能画错了,我们需要调整如下

状态的检查应该放到点击链接的时候,链接如果是有效的,才会生成分享关系

链接状态是分享链接的一个属性,通过属性连接(两个三角形中间实心的图标)

请求分享链接的时候一定有一个导购的对象,分享链接属于导购的一个属性

分享链接的状态分为已生成和未生成,请求分享链接如果未生成,则需要生成分享链接,双向的

用过程链接联系对象

  • 过程链接
  • 结构链接
  • 事件链接
  • 行为控制

过程链接:将一个对象(或其状态)与一个过程联系起来,比如分享链接与请求分享链接的联系

结构链接:将一个对象与另一个对象(或者一个过程与另一个过程联系起来),比如请求分享链接与点击链接的联系

过程链接

主体链接:系统的参与者,用户主导了整个过程,比如导购和请求分享链接的联系,客户和点击链接的联系

手段(支持)链接:提供手段和支持,比如链接提供器和生成链接的联系

两者的区别是一类是主体对象,一类是支持对象

变换链接:过程就是用来改变对象的状态,影响一个对象的状态或者吸收一个对象,比如分享链接和生成链接的联系

过程链接只能建立再对象和过程上

结构链接

结构链接是建立在对象与对象之间,过程与过程之间,它们之间往往拥有一种持久的关系,属性、继承、组成等等

  • 结构关系
  • 组成关系

属性:分享链接是导购的属性,链接状态是分享链接的属性,通过属性连接建立联系

继承:零售客户和分销商客户继承客户,浏览器点击和APP点击继承点击链接

事件链接

在结构/过程链接之上添加 e 标注,代表是偶发的

Server 支持请求响应这件事情是偶发的,并不是一直有的,所以可以加上e标注

行为控制
  • 布尔对象
  • 条件 if
  • 或(OR)/ 与(XOR)

布尔对象:建立在支持对象之上,但是会有一个判断,比如我们获取链接的时候会有一个判断,如果没有链接则生成链接,有链接则返回

条件 if:和事件链接相似,比如在链接状态有效的时候创建分享关系,添加 c 标注,无效的时候异常退出

或(OR)/ 与(XOR):或表示走一个或者多个都可以,亦或表示只能走一个,比如在是否有链接的两个选项中间加两条弧线,表示只能选一个;如果是或则画一条弧线

过程链接与结构链接集合

OPM优化

  • 抽象与细化
  • 过程与判定
  • 复杂度管理

抽象与细化

抽象与细节之间会有一个继承关系,导购继承用户,分享链接抽象为推广

员工,客户也可以导购;展示二维码也可以作为一种分享链接

过程与判定

很多时候没办法确定是一个对象还是一个过程,最简单的方式就是根据是动词还是名词判断,以及根据过程有没有改变对象的状态判断

复杂度管理

  • 状态显示与状态隐藏
  • 展开与折叠(放大与缩小)
  • 端口折叠

状态显示与状态隐藏

人为的控制是否要显示状态,比如链接状态

展开与折叠(放大与缩小)

把图画的层次高一点则简单易懂,画的层次毕竟低一点则复杂一些,但是表现会更加清晰,可以对它们进行切割

如果把分享放大,则可以在里面画更加细节的过程,同时可以在获取链接里面再画更加细节的过程

我们也可以在多张图中进行缩放,比如获取链接放到第二个图中

端口折叠

比如在是否有链接的条件 if 可以折叠起来,直接在外部通过两个端口有和无来和其他对象过程建立链接

作业

尝试把自己之前那个系统架构图里面的过程进入展下,一直向下到不可分割的原子级别(可以到某个类级别)

课程链接

https://域名域名/v1/course/video/v_5f39bdb8e4b01187873136cf?type=2

知识共享许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://域名/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

如有任何疑问,请与我联系 (MingsonZheng@域名) 。

标签:编程
湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。