[架构之路-215]- 系统分析-领域建模基本概念

news2024/9/21 10:56:01

目录

1. 什么是领域或问题域

2. 什么面向对象的“类” =》 设计类

3. 什么是概念类 

4. 什么是领域建模

5. 领域建模与DDD(领域驱动架构设计)的关系

6. 领域建模的UML方法

7. 领域建模的案例

其他参考:


1. 什么是领域或问题域

领域,在软件工程中,是相对于计算机域而言的,就是用计算机技术来解决问题的领域,又称为问题域。即问题域是指被开发系统的应用领域,即在客观世界中由该系统处理的业务范围

也就是说,问题域或领域是相对计算机域而言的!!!

2. 什么面向对象的“类” =》 设计类

类是面向对象语言的程序设计中的概念,是面向对象编程的基础。

类的实质是一种引用数据类型,类似于 byte、short、int(char)、long、float、double 等基本数据类型,不同的是它是一种复杂的数据类型。因为它的本质是数据类型,而不是数据,所以不存在于内存中,不能被直接操作,只有被实例化为对象时,才会变得可操作。

类是对现实生活中一类具有共同特征的事物的抽象。如果一个程序里提供的数据类型与应用中的概念有直接的对应,这个程序就会更容易理解,也更容易修改。一组经过很好选择的用户定义的类会使程序更简洁。此外,它还能使各种形式的代码分析更容易进行。特别地,它还会使编译器有可能检查对象的非法使用。 [2] 

类的内部封装了属性和方法,用于操作自身的成员。类是对某种对象的定义,具有行为(behavior),它描述一个对象能够做什么以及做的方法(method),它们是可以对这个对象进行操作的程序和过程。它包含有关对象行为方式的信息,包括它的名称、属性、方法和事件。

类的构成包括成员属性和成员方法(数据成员和成员函数)。数据成员对应类的属性,类的数据成员也是一种数据类型,并不需要分配内存。成员函数则用于操作类的各项属性,是一个类具有的特有的操作,比如“学生”可以“上课”,而“水果”则不能。类和外界发生交互的操作称为接口。

3. 什么是概念类 

计算机领域的“类”称为“设计类”,

与具体编程语言相关的类称为“实现类”

按照类的方法,针对问题领域进行抽象,得到的”类“,称为”概念类“。

概念类,不需要计算机编程的知识和技能,只需要有“类”的思想,对现实世界的某个业务领域进行抽象即可。

4. 什么是领域建模

领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。

它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。

领域建模做两件事:

  1. 发现和构建概念类
  2. 明确和构建各种概念类之间的关系

5. 领域建模与DDD(领域驱动架构设计)的关系

一提到领域建模,就会立即想到DDD,其实,这是两个不完全相同的概念,也并没有包含关系。

领域建模是系统分析师进行需求分析和系统分析中重要的输出之一,是在用户需求分析之后,对问题领域的核心概念进行建模。领域建模为不懂业务领域,只懂计算机语言的程序员提供了一个理解业务领域的手段和桥梁。并非DDD特有的,当然,DDD也注重领域建模。

6. 领域建模的UML方法

UML语言并没有提供领域建模的专有的工具、视图、模型。

在UML语言中,有两种方式可以描述领域模型:类图和状态图。

因此,面向对象构建“类图”的方法,都可以拥有构建领域模型,即概念类图。

不同的是:设计类图使用的计算机领域的知识来描述,而领域建模是用问题领域的语言来描述,这两种并非完全一一对应,架构师和设计师可以基于领域模型进行软件设计上的优化和调整,但都必须能够实现业务领域模型的目标!!!

当然,有时候,设计类图可以完全借用或沿袭领域模型的概念类图作为设计类图。

7. 领域建模是必须的吗?

不是必须的,如果业务领域的知识能够很容易被软件架构师或程序员理解,其实不一定需要构建领域模型,软件架构师可以根据用例图和用例规约直接设计“设计类”。

但是,如果业务领域的知识不是那么容易被软件架构师或程序员理解,且业务系统非常复杂,且分析师与架构师是不同的人,为了能够帮助架构师和程序员更好的理解复杂的业务系统,领域建模就很重要的。

领域模型是分析师或产品经理与用户一起构建的!!!

8. 领域建模的案例

其他参考:

[架构之路-97]:《软件架构设计:程序员向架构师转型必备》-7-业务需求之领域建模_文火冰糖的硅基工坊的博客-CSDN博客

【面向对象分析与设计】 华东师范大学_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/659805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring AOP之MethodInterceptor原理

文章目录 引言Spring AOP组成先看一下Advice 示例提问 原理 引言 之前我们讨论过了HandlerInterceptor,现在我们来看一下MethodInterceptor。 MethodInterceptor是Spring AOP中的一个重要接口,用来拦截方法调用,它只有一个invoke方法。 Spring AOP组成…

Laya3.0游戏框架搭建流程(随时更新)

近两年AI绘图技术有了长足发展,准备把以前玩过的游戏类型重制下,也算是圆了一个情怀梦。 鉴于unity商用水印和启动时间的原因,我决定使用Laya来开发。目前laya已经更新到了3.0以上版本,就用目前比较新的版本。 之后关于开发中遇到…

HashMap学习:1.7 迁移死循环分析(通俗易懂)

前言 JDK1.7由于采用的头插法,所以多线程情况下可能会产生死循环问题。 正文 头插法 就是每次从旧容器中的hash桶中取出数据后,放到新容器的头节点问题,如果此时头结点位置为空,直接放置即可,如果不为空将头节点的数…

C语言strncpy的使用缺陷和实现,strncat的使用缺陷和实现,strncmp的使用和实现。

1.strncpy 函数原型: char *strncpy( char *strDest, const char *strSource, size_t count );char *strDest 目标字符串首元素地址const char *strSource 源字符串(需要拷贝过去的字符串)size_t count 拷贝字符的个数char *strncpy 拷贝结束后,返回目…

Micormeter实战

Micrometer 为基于 JVM 的应用程序的性能监测数据收集提供了一个通用的 API,支持多种度量指标类型,这些指标可以用于观察、警报以及对应用程序当前状态做出响应。 前言 可接入监控系统 监控系统的三个重要特征: 维度(Dimensio…

[保姆教程] Windows平台OpenCV以及它的Golang实现gocv安装与测试(亲测通过)

一、MinGW & CMake 预备步骤 首先打开cmd: c: md mingw-w64 md cmake下载安装MinGW-W64 访问: https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/7.3.0/ 下载: MinGW-W64 GCC-8…

一文详解Softmax的性质与Self-Attention初步解析

概述 最近研究超平面排列(Hyperplane Arrangement)问题的时候,发现ReLU有其缺陷,即举例来说,ReLU 无法使用单一的超平面将分离的所有数据,完整的输出,即只会输出半个空间映射的数据,而另一半空间的数据被置…

面试---简历

项目 1.1、商品管理 新增商品 同时插入商品对应的使用时间数据,需要操作两张表:product,product_usetime。在productService接口中定义save方法,该方法接受一张Dto对象,dto对象继承自product类,并将prod…

学习open62541 --- [78] 单线程和多线程的使用场景

open62541提供多线程功能,默认不开启,即单线程, 把UA_MULTITHREADING的值设置为 > 100就可以开启多线程了。 这里单线程/多线程的意思是基于open62541运行的server内部是否使用锁去保护数据。只要server运行后还有读写操作需要做&#x…

从源码全面解析 dubbo 消费端服务调用的来龙去脉

👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主📕系列专栏:Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码…

3D 顶点着色与Phong 反射模型

Phong 反射模型有时被称为“Phong 照明”或“Phong 照明”。它由环境光照、漫反射(朗伯反射)、镜面反射三部分组成。 Phong 反射模型提供了一个方程式,用于计算表面上每个点的光照,I_p: 第一部分代表环境光项。在GLSL代…

X书hmac参数

被删重新发送 全文可以查看: 上面一遍unidbg解密shield文章 unidbg - 》 callObjectMethodV方法填写你的小红书路径下s.xml里的值: 或者在抓包响应头中: 查找xy-ter-str hmac 结果都是在,响应头里,所以 hmac 是服务器下发给客户端的. Over…

黑马头条.

文章目录 前言一、项目概述1.1 能收获什么1.2 项目概述1.3 项目术语1.4 业务说明 二、技术栈2.1技术栈整体框架图2.2技术栈简介 三、nacos环境搭建3.1 虚拟机镜像准备3.2 nacos的安装 四、初始工程搭建4.1 开发环境准备 五、实现登录功能5.1 需求分析5.2 表结构分析5.3 思路分析…

22道常见RocketMQ面试题以及答案

面试宝典到手,搞定面试,不再是难题,系列文章传送地址,请点击本链接。 1、RocketMQ是什么? 2、RocketMQ有什么作用? 3、RoctetMQ的架构 4、RoctetMQ的优缺点 8、消息过滤,如何实现? 9、消息去重,如果…

Elasticsearch 基本使用(四)聚合查询

聚合查询 概述单字段聚合查询统计分组后的数量非文档字段分组文档字段分组 其他聚合运算统计平均值统计总金额统计最大值自定义聚合结果排序简单聚合小结 多字段聚合查询 概述 说到聚合查询,马上会想到 SQL 中的 group by,ES中也有类似的功能&#xff0…

编程语言发展历史

文章目录 语言的发展时间轴语言世代时间轴1940年前-机器语言时代1940年后-汇编语言时代1950年-高级语言的初生1960年-高级语言的进一步成熟1980年-各大语言的进一步增强1990年代-飞速发展时代2000年-新时代 高级编程语言的分类解释型与编译型面向过程与面向对象 对语言的评价Ti…

【学习学习】NLP理解层次模型

NLP(Neuro-Linguistic Programming,神经语言程序学),由两位美国人理查得.班德勒(Richard Bandler)与约翰.葛瑞德(John Grinder)于1976年创办,并在企业培训中广泛使用。美…

PyTorch 深度学习 || 4. 自编码网络 | Ch4.3 卷积自编码网络图像去噪

卷积自编码网络图像去噪 1. 数据的准备 先简单介绍一下训练网络使用到的图像数据集——STL10,该数据集可以通过torchvision.datasets模块中的STL10()函数进行下载,该数据集共包含三种类型数据,分别是带有标签的训练集和验证集,分别包含5000…

Cookie增删改查方法封装(低内存开销版)

本文章中的低内存开销是指在获取cookie的时候不进行字符串—>数组的转变,全程使用sliceindexOf切割字符串,不创建和操作数组,节约内存,本文代码已存放到github中,后续会持续完善功能,传送门:…

二进制方式部署kubernetes集群

二进制方式部署kubernetes集群 1、部署k8s常见的几种方式 1.1 kubeadm Kubeadm 是一个 k8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部署 Kubernetes 集群。 Kubeadm 降低部署门槛,但屏蔽了很多细节,遇到问题很难…