前言

简单整理一下领域模型。

正文

领域模型是对领域内的概念类或现实中的对象的可视化表示

领域模型也称概念模型、领域对象模型和分析对象模型

领域模型是可以在业务建模科目中创建的制品之一

领域模型是up业务对象模型的特化。

领域模型在软件设计图的关系:

一开始是梳理需求,写出用例文本,建立用例模型。

然后领域模型是业务模型的一环,领域模型通过用例模型抽取出概念类、术语、概念、属性、关联。

当在业务模型中建立了领域模型之后,反过来丰富了用例模型,多了些操作契约。多了契约操作的话,那么可以以此来编写顺序图。

在uml中,领域模型被描述为一组没有定义操作的类图。

值得注意的是领域模型不是在设计阶段,不要带软件中的设计或者数据库设计。

现实中的思想,事务或者对象。关注现实世界,而非软件对象。

领域模型创建的步骤:

  1. 寻找概念类
  2. 绘制UML类图
  3. 加关联属性

如果寻找概念类?

  1. 重用修改现在的模型
  2. 常见分类列表
  3. 名词短语(从详述用例)

什么是概念类:

概念类是思想、事物或对象。更正正式地讲,概念类可以从其符号、内涵和外延来考虑。

举个例子:

领域模型和数据模型是一回事吗?

  1. 领域模型不是数据模型(持续化数据)
  2. 在领域模型中不会排除没有明确要求记录其相关信息的类,也不会排除没有属性的概念类
  3. 在领域内充当纯行为角色,而不是信息角色的概念类也是有效的

动机: 降低与oo建模之间的表示差异

例如:

面向对象开发者在创建类时收到真实世界领域的启发

因此,涉众所设想的领域与其在在在软件的表示之间的表示差异被降低。

准则: 像地图绘制者一样思考:使用领域术语

  1. 使用地域中现有的名称。在图书馆模型中,将顾客命名为"借书者"、"赞助者"等,这是图书管理员使用的术语
  2. 排除无关或超出范围的特性
  3. 不要凭空增加事物

准则: 如何对非现实世界建模

  1. 有些软件系统的领域与自然领域或业务领域几乎没有类似指出,例如:电信软件
  2. 此时需要高度的抽象,对常见的非00设计进行回顾,并认真汲取领域专家所使用的核心词汇和概念
  3. 例如,电信软件的候选概念类:消息、连接、端口、会话、路由、协议

准则: 属性与类的常见错误

常见错误: 把应该是概念类的事务表示属性

判别准则: 如果我们认为某概念X不是现实中的数字或者文本,那么x可能是概念类而不是属性。

准则: 何时使用"描述"类建模

描述包含描述事物的信息:如productDescription 记录Item的价格、图片和文字描述。

命名方式:项目-描述符

  1. 描述有关商品或服务的描述,独立于任何商务或服务现有实例
  2. 删除所描述事物的实例后,导致信息丢失,而这些信息是需要维护的,但是被错误低于所删除的事务关联起来
  3. 减少冗余或重复信息

关联:

关联是类之间的关系,表示有意义和值得关注的连接。

在uml中,关联被定义为"两个或多个类之间的语义联系",涉及这些类元实例之间的连接。

观点:关联是否在软件中实现

  1. 在领域建模中,关联不是关于数据流、数据库外键的联系、实例变量或软件方案的对象连接语句;

    关联声明是针对现实领域从纯概念角度看有意义的关系
  2. 这些关系的大部分作为导航(设计模型和数据模型中的)和可见性路径再软件中加以实现。

下一节顺序图

UML 哲学之道——领域模型[四]的更多相关文章

  1. 敏捷开发之道(四)Scrum概述

    上次的博文敏捷开发之道(二)极限编程XP和敏捷开发之道(三)极限编程XP续中,我们介绍了一下敏捷开发中的XP开发方法,今天咱们来了解另一个比较流行的敏捷开发方法--Scrum. 1.Scrum简介 S ...

  2. java中文乱码解决之道(四)-----java编码转换过程

    前面三篇博客侧重介绍字符.编码问题,通过这三篇博客各位博友对各种字符编码有了一个初步的了解,要了解java的中文问题这是必须要了解的.但是了解这些仅仅只是一个开始,以下博客将侧重介绍java乱码是如何 ...

  3. HT图形组件设计之道(四)

    在<HT图形组件设计之道(二)>我们展示了HT在2D图形矢量的数据绑定功能,这种机制不仅可用于2D图形,HT的通用组件甚至3D引擎都具备这种数据绑定机制,此篇我们将构建一个3D飞机模型,展 ...

  4. java中文乱码解决之道(四)—–java编码转换过程

    原文出处:http://cmsblogs.com/?p=1475 前面三篇博客侧重介绍字符.编码问题,通过这三篇博客各位博友对各种字符编码有了一个初步的了解,要了解java的中文问题这是必须要了解的. ...

  5. codeforces水题100道 第四题 Codeforces Round #105 (Div. 2) A. Insomnia cure (math)

    题目链接:http://www.codeforces.com/problemset/problem/148/A题意:求1到d中有多少个数能被k,l,m,n中的至少一个数整出.C++代码: #inclu ...

  6. 编写高质量代码:Web前端开发修炼之道(四)

    这一节是继上一节高质量的Javascript 7)编程实用技巧 1:弹性 从 一个标签区和内容区的实例(就是点击不同的标签菜单显示不同的内容块)来说明不需要每个tabmenu都设置onclick事件, ...

  7. UML和模式应用5:细化阶段(2)--细化阶段制品之领域模型

    1.前言 领域模型是OO分析中最重要和经典的模型.它阐述了领域中的重要概念: 领域模型作为设计某些软件对象的重要来源,也作为案例研究中探讨的几个制品的输入: 领域模型的范围限定于当前迭代开发的用例场景 ...

  8. 2019年北航OO第四单元(UML任务)及学期总结

    第四单元两次作业总结 第十三次作业 需求分析 本次作业需要完成一个UML类图解析器,所需要解析的只有符合UML标准和能够在Java 8中复现的UML类图.查询指令存在两种:仅与所查对象有关的指令,以及 ...

  9. <..................> 哈佛大学哲学系 && 历史哲学笔记文献集

    哈佛大学哲学系课程表            (一)概况    (1)哈佛大学哲学系现有教师21人,其中访问教授7人,教师流动性较大,每年有一定的变化.以下为现任教师:Richard Moran(系主任 ...

  10. UML期末复习题——2.4:Domain Model

    第四题:领域模型 重要概念: 1. 领域模型:是对领域内的概念类或现实世界中对象的可视化表示.领域模型也称为概念模型,领域对象模型和分析对象模型. 2. 应用UML表示法,领域模型被描述为一组没有定义 ...

随机推荐

  1. C++ //栈 stack 容器 先进后出 不允许遍历

    1 //栈 stack 容器 先进后出 不允许遍历 2 3 4 #include<iostream> 5 #include<stack> 6 7 using namespace ...

  2. 泰凌微TLSR825x智能照明解决方案开发之实例解析

    一 前记 前几天,看到了一个笑话,一个朋友在群里吼道,老婆送的皮带,用了半年之后,怎么里面掉出来一个电路板,这个是是啥? 笔者看了回复道,哥们,老婆不放心你啊. 在这个万物都可智能的时代,产品不加上智 ...

  3. java线程池知识整理

    参考,欢迎点击原文:https://www.jianshu.com/p/246021d04310(java多线程那点事) https://blog.csdn.net/fanrenxiang/artic ...

  4. HISI3520DV300 折腾记录(二)之《内存映射、存储(DDRC,FMC)、启动模式分析》

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  5. Serverless学习笔记

    Serverless 闲言碎语 前段时间看了一些Serverless的文章,恰好最近又听了一门Serverless的应用实践课程,就把笔记拿出来和大家分享一下,如表述有误还请各位斧正 大家关心的问题 ...

  6. 记录--vue3函数式弹窗

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 最近接到一个需求,需要在一些敏感操作进行前要求输入账号和密码,然后将输入的账号和密码加到接口请求的header里面.如果每个页面都去 ...

  7. 记录--盘点 TypeScript 那些奇怪的符号

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和 ...

  8. 记录--vue中封装一个右键菜单组件(复制粘贴即可使用)

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 组件介绍 关于web端的右键功能常用的地方有表格的右键,或者tab标签的右键等,本文记录一下封装一个右键菜单组件的思路步骤代码. 程序员除 ...

  9. Python 如何通过网易163邮箱自动发送邮件

    一.发送邮件的前提是必须开通发件服务器获取对应授权密码. 二.对应代码如下所示 import smtplib from email.mime.text import MIMEText from ema ...

  10. MySQL报语法错误,排查竟然花了一个钟!!!!

    背景:最近协助远程同事开发一个功能,我调用同事写的接口,出现报错,影响和前端联调,同事正在处理其他事情,暂时无暇顾及.遂自行解决.查看日志现发一个inser语句报语法错误. 异常日志: bad SQL ...