业务领域建模Domain Modeling

以您的工程实践项目为例,在深入理解需求的基础上进行业务领域建模Domain Modeling

♦ 1) Collect application domain information
– focus on the functional requirements – also consider other requirements and documents
♦ 2) Brainstorming
– listing important application domain concepts – listing their properties/attributes – listing their relationships to each other
♦ 3) Classifying the domain concepts into:
– classes – attributes / attribute values – relationships
• association, inheritance, aggregation
♦ 4) Document result using UML class diagram

最终画出业务类图,并说明业务类图中每一个类、属性、方法的来源,对于有关联类Association Class的情况要进一步给出关系数据库的模型。

记住:我们是对业务建模,不是对系统建模!

 

一、什么是业务领域建模?

业务对象模型(也叫领域模型 domain model)是描述业务用例实现的对象模型。它是对业务角色和业务实体之间应该如何联系和协作以执行业务的一种抽象。业务对象模型从业务角色内部的观点定义了业务用例。该模型为产生预期效果确定了业务人员以及他们处理和使用的对象(“业务类和对象”)之间应该具有的静态和动态关系。它注重业务中承担的角色及其当前职责。这些模型类的对象组合在一起可以执行所有的业务用例 。

 

二、为什么要进行领域建模?

  • 领域建模是对业务的抽象,通过封装,继承,组合,分层等各种分析手段,将领域业务理顺,做合理的划分,从而领域建模本身就是将业务清晰的过程。
  • 领域建模中抽象出来的概念名词,以及代表方法的动词,组成词汇表,有利于业务人员与开发人员沟通。
  • 领域建模采用面向对象的方法,有利于逻辑的重用,和新业务的扩展。通过多态,能够通过简单的派生新的类型,使得原有的逻辑自动应用到新的业务。
  • 相比于传统的基于用例的分析,领域建模站在系统本身的内在的角度,而不是系统的外在表象,因而能够分析清楚系统的内在本质,这也是领域建模相比用例驱动的开发扩展性和可维护性更强的原因。

 

三、业务领域建模的基本方法

  1. 收集领域信息:收集应用程序域信息,既要专注于功能要求,还要考虑其他要求和文件
  2. 进行团队头脑风暴和分类:列出重要的应用程序域概念,列出他们的特性/属性,列出彼此的关系,这里,我们将领域概念分为:类、属性/属性值、关系,其中关系主要是三种,分别为关联,继承和聚合。
  3. 使用UML类图可视化领域知识:使用UML类图记录结果

 

三、结合工程实践进行领域建模

我的工程实践项目为行人检测与追踪。

分析其中的程序域和它们的属性和关系,可以确定需要至少这么几个大类:用户类、摄像头类、模型类、数据类、文件处理类、目标检测类。

  • 用户类:用来对应用户实体,其中定义了用户使用的类方法,这些类方法会调用其他类对象的方法。
  • 摄像头类:用来抽象我们工程中的摄像头的功能,主要用来采集和传输实时视频数据。可能会添加流处理(压缩和帧去除)。
  • 模型类:训练目标检测模型,这里会提供多个模型方法,所以有ID进行标识。
  • 数据类:训练集、验证集、测试集划分和处理。
  • 文件处理类:保存系统运行中的行人检测的信息,也提供给用户调用查看。
  • 目标检测类:核心,主要是调用检测模型进行检测和追踪视频中的行人,在此基础上也加入了其他的一些功能(例如行人计数和精度帧率实时监测等)。

具体业务领域建模的UML图如下:

posted @ 2019-11-25 22:50  Jaroo  阅读(353)  评论(0编辑  收藏  举报