UML和模式应用5:细化阶段(4)--如何创建领域模型
1.前言
以当前迭代中所要设计的需求为界,创建领域模型的步骤:
1.寻找概念类
2.将其绘制为UML类图中的类
3.添加关联和属性
2.如何寻找概念类
寻找概念类有如下几种方法:
- 重用和修改现有的模型
许多常见领域都存在已发布的、绘制精细的领域模型和数据模型
- 使用分类列表
业务交易 -》 交易项目 -》 与交易项目相关的产品或服务 -》 交易记录何处?。。。。
- 通过识别名词短语寻找概念类
在对领域的文本型描述中识别名词和名词短语,将其作为候选的概念类或属性
3.绘制UML类图中的类
- 规则1:敏捷建模--绘制类图的草图
- 规则2:敏捷建模--如果有人在新发现时想要维护和更新模型,则使用UML工具画类图是可以的
- 规则3:如果某个类在领域模型中没有意义,则排除它
- 规则4:使用领域术语来绘制类图
- 规则5:对于软件领域与自然领域无相似之处,则对常见的非OO设计进行回顾,汲取领域专家使用的核心词汇和概念
- 规则6:创建领域模型最常见错误是把应该是概念类的事物表示为属性
- 规则7:何时需要使用描述类建模
下面的情况下需要增加描述类:
1.在任何商品或服务之外,需要有关商品或服务的描述;
2.删除所描绘事物的实例后,导致信息丢失,而这些信息是需要维护的,但是被错误的与所删除的事物关联起来;
3.减少冗余或重复信息
4. 关联和属性
4.1 关联
关联是类之间的关系,表示有意义和值得关注的连接
- 何时表示关联
领域模型从概念角度出发的,是否需要记录关联,基于现实世界的需要,不是基于软件的需要
- 避免增加大量关联
会产生视觉干扰,要谨慎增加关联,重点关注需要记住的关联
- UML关联表示法
关联表示为类之间的连线,冠以首字母大写的关联名称,关联的末端可包含多重性表达式,关联本质是双向的;
关联以“类名--动词短语--类名”的格式为关联命名
关联名称应该使用首字母大写的形式,因为关联表示的是实例之间链接的类元,UML中类元首字母要大写
关联的每一端称为角色
多重性定义了类A有多少个实例可以和类B的一个实例关联,值取决于我们的观察角度
两个类之间可能有多重关联

图 关联的UML表示法
- 在常见关联列表中找到关联

图 常见关联列表
4.2 属性
- 何时引入属性
当需求(例如用例)建议或暗示需要引入信息时,引入属性,例如处理销售用例中的票据含有日期和时间、店名和地址以及收银员ID等
- UML属性表示法
属性在UML类图的第二框表示,按照惯例,大部分建模者会假设属性的可见性为私有的
- 什么样的属性数据类型是合适的
大部分数据类型是简单数据类型,不应该是复杂的领域概念;把复杂领域概念建模为属性是常见的错误,而应该通过关联进行连接;
- 何时定义新的数据类型类

图 对数据类型建模的准则
- 新的数据类型类应该放到何处
可能放到类图的属性分格中;
如果是具有属性和关联的新类型,则表示为单独的概念类会提供较多信息
- 任何属性都不应该表示外键
属性不应该用于表示概念类的关系

图 不要将属性作为外键
- 对数量和单位建模
一般应该给数量和单位创建单独的类??
5.领域模型是否正确?
所有模型都是对我们试图要理解的领域的近似,主要在特定群体中用于理解和沟通的工具,有效的领域模型捕获了当前需求语境下的本质抽象和理解领域所需要的信息
6. 迭代和进化式领域建模
- 每次迭代大概只会花费30分钟
- 迭代开发中会通过若干迭代对领域模型进行增量的演进
- 每个迭代中领域模型都会现定于之前和当前要考虑的场景
- 避免瀑布思维倾向,为完成详尽正确的领域模型进行大量的工作。
- 每次迭代的领域建模不过几个小时
- UP中的领域建模:
初始阶段不会发起领域建模
领域模型在细化阶段发起创建

图 UP制品及创建时限
UML和模式应用5:细化阶段(4)--如何创建领域模型的更多相关文章
- UML和模式应用4:初始阶段(1)--概述
1.前言 UP开发包括四个阶段:初始阶段.细化阶段.构建阶段.移交阶段: 初始阶段是项目比较简短的起始步骤,主要目的是收集足够的信息来建立共同设想,调查项目的总体目标和可行性,确定是否值得进一步深入. ...
- UML和模式应用5:细化阶段(5)---系统顺序图
1.前言 系统顺序图(SSD)是为阐述系统相关的输入和输出事件而快速.简单的创建的制品,它们是操作契约和对象设计的输入. SSD展示了直接与系统交互的外部参与者.系统(作为黑盒)以及由参与者发起的系统 ...
- UML和模式应用5:细化阶段(1)--第1次迭代
1.前言 从本文开始进入细化阶段,讨论迭代技术的基础,本次讨论将着重讨论第一次迭代,以POS机为例. 2. 第一次迭代处理的需求(以NextGen POS项目处理销售用例) 实现 处理销售 用例中基本 ...
- UML和模式应用5:细化阶段(2)--细化阶段制品之领域模型
1.前言 领域模型是OO分析中最重要和经典的模型.它阐述了领域中的重要概念: 领域模型作为设计某些软件对象的重要来源,也作为案例研究中探讨的几个制品的输入: 领域模型的范围限定于当前迭代开发的用例场景 ...
- UML和模式应用4:初始阶段(6)--迭代方法中如何使用用例
1.前言 用例是UP和其他众多迭代方法的核心.UP提倡用例驱动开发. 2. 迭代方法中如何使用用例 功能需求首先定义在用例中 用例是迭代计划的重要部分,迭代是通过选择一些用例场景或整个用例来定义的 用 ...
- UML和模式应用4:初始阶段(4)--需求制品之用例模型模板示例
1. 前言 UP开发包括四个阶段:初始阶段.细化阶段.构建阶段.移交阶段: UP每个阶段包括 业务建模.需求.设计等科目: 其中需求科目对应的需求制品包括:设想.业务规则.用例模型.补充性规格说明.词 ...
- UML和模式应用4:初始阶段(3)--需求制品之用例模型
1. 前言 UP开发包括四个阶段:初始阶段.细化阶段.构建阶段.移交阶段: UP每个阶段包括 业务建模.需求.设计等科目: 其中需求科目对应的需求制品包括:设想.业务规则.用例模型.补充性规格说明.词 ...
- UML和模式应用4:初始阶段(2)--需求科目之进化式需求
1. 前言 UP开发包括四个阶段:初始阶段.细化阶段.构建阶段.移交阶段: UP每个阶段包括 业务建模.需求.设计等科目: 需求是UP科目之一,在初始阶段需求科目的工作量占据较大的部分.但是初始阶段的 ...
- UML和模式应用
引言 Applying UML and Patterns,以一个商店POS系统NextGen和一个掷骰子游戏Monopoly为例,围绕OOA/D的基本原则GRASP,以迭代作为基本方法.以UML为表达 ...
随机推荐
- 19+ JavaScript 常用的简写技巧
博主说:对于任何基于 JavaScript 的开发人员来说,这绝对是一篇必读的文章,乃提升开发效率之神器也. 正文 js 1. 三元运算符 当你想用一行代码来写if...else语句的时候,使用三元操 ...
- 【转】STC51单片机下载程序的时候不要在VCC端接DHT11
今天使用51单片机学习板调试DHT11湿度传感器,下载程序的时候把DHT11烧掉了. 一开始我使用杜邦线把DHT11的VCC引脚接到学习板上的VCC端,GND接GND,数据端口接51单片机的P0.0. ...
- Elasticsearch中使用groovy脚本处理boolean字段的一个问题
Elasticsearch中使用groovy脚本获取文档的bool字段值时,得到的值是字符的 'T' 或者 'F' ,而不是bool值 true 和 false . 比如文档中有一个字段是 { &qu ...
- 【codeforces 103E】 Buying Sets
http://codeforces.com/problemset/problem/103/E (题目链接) 题意 给出$n$个数,每个数与一个集合相关联.从其中选出最小的若干个数,选出的数的个数与这些 ...
- Solr各个版本重大变化之安装方式【请别违背规律】
这里主要讲安装方式的变化 4.x~5.x的变化 这是4.x的安装方式,大家都熟知,在我看来未免繁琐了一点. 或许官方也感觉繁琐了,于是5.x有个最大的改变.↓ 现在Solr是一个独立的服务器 什么叫S ...
- Adobe Premiere Pro CC ------ 快捷键
ctrl + ~:全屏 Esc:退出全屏
- 继承的方式完成包装__attr__
__getattr__ 当实例要调用的属性不存在的时候会触发 __setattr__ 当实例要设置属性的时候会触发 __delattr__ 当实例要删除属性的时候会触发 这三个方法是 ...
- Scala进阶之路-Scala中的Ordered--Ordering
Scala进阶之路-Scala中的Ordered--Ordering 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 说道对象的比较,在Java中大家最熟悉不过的就是实现类本身实 ...
- Vagrant工具的安装
Vagrant工具的安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 这篇博客源于我的北京一位好友:崔佳.在此,为了感激崔佳的帮助,特意写下这篇博客.希望对一些开发的小伙伴有些帮 ...
- 面向对象【day08】:问答式面相对象(四)
本节内容 1.什么是面向对象编程 2.什么是市类?什么是对象?又有什么关系? 3.什么时候适用面向对象? 4.self就是调用当前方法的对象 5.封装.继承.多态 6.字段方法 1.什么是面向对象编程 ...