6.4 操作契约 Operation Contracts
4、操作契约 Operation Contracts
“用例描述”的补充
强调: 用例中重要的动作,其开始与结束是需要一些约束
4.5 操作契约的后置条件
定义Definition
后置条件描述了领域对象状态的变化 describe changes in the state of objects in the domain model
状态变化包括
是否创建、删除了对象?instances created / deleted
对象间的关系是否发生变化?associations formed or broken
有对象的属性变化了吗?and attributes changed
为什么要后置条件? Why post-condition
也不是始终都需要的 they aren't always necessary
如果开发人员很容易明白该如何去做,就不用写操作契约了
If developers can comfortably understand what to do without them, then avoid writing contracts 操作契约比较细节地、精确地定义了一个操作应该承担的职责
契约,是面向对象分析过程中非常有用的工具
把问题说清楚、无歧义
先不考虑设计,集中于分析 what must happen 而不是how it is to be accomplished
4.6 创建后置条件
建议 Apply the following advice to create contracts
Identify system operations from the SSDs .
For system operations that are complex and perhaps subtle in their results,
or which are not clear in the use case, build a contract
To describe the postconditions, use the following categories:
instance creation and deletion
attribute modification
associations formed and broken
常见错误
描述契约
(better) A SalesLineItem was created
(worse) A SalesLineItem is created; or Create a SalesLineItem
忘记对象之间的关系发生了变化
The SalesLineItem was associated with the Sale (association formed)
4.7 后置条件 & 领域模型
后置条件体现在领域模型的对象 postconditions are expressed in the context of the Domain Model objects What instances can be created?
those from the Domain Model
What associations can be formed?
those in the Domain Model
and so on
在定义契约的过程中,经常触发对领域模型的修改
记录新的概念类、属性 ?
领域模型是否有新的关系 ?
4.8 对领域模型的修改
6.4 操作契约 Operation Contracts的更多相关文章
- 核心概念 —— 契约(Contracts)
1.简介 Laravel中的契约是指框架提供的一系列定义核心服务的接口. 例如 ,Illuminate\Contracts\Queue\Queue契约定义了队列任务需要实现的方法,Illuminate ...
- UML和模式应用5:细化阶段(6)---操作契约
1.前言 操作契约使用前置和后置条件,描述领域模型里对象的详细变化,作为系统操作的结果. 操作契约可以作为有用的OOA相关的制品. 操作契约可以视为UP用例模型的一部分,它是对用例之处的系统操作的效用 ...
- UML-如何画操作契约?
1.在编写契约过程中,发现之前的领域模型不对,此时是否需要修改? 需要修改.包括:概念类.属性.关联.这就是不断迭代和进化 2.用例中复杂场景里的状态变化细节,描述过多导致用例臃肿,让人看不下去,因此 ...
- 各种操作中心Operation Center一览
Operation Center在中国可能有很多种名称,例如指挥中心.运维室.总控中心等等,国外可能也有很多名称,不管名称如何,任何一个上规模得数据总心或者运维单位一般都有一个这样得中心,来负责所管理 ...
- PythonStudy——文件操作 File operation
# 文件:就是硬盘的一块存储空间 # 1.使用文件的三步骤: # 打开文件- 得到文件对象:找到数据存放在硬盘的位置,让操作系统持有该空间,具有操作权# 硬盘空间 被 操作系统持有# 文件对象f 被 ...
- PythonStudy——字典的操作 Dictionary operation
dic = {'a': 1, 'b': 2} print(dic) # 增: 字典名[key] = 值 => key已存在就是修改值,不存在就是新增值 dic['c'] = 3 print(di ...
- [Swift]LeetCode583. 两个字符串的删除操作 | Delete Operation for Two Strings
Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 t ...
- deferred.promise.then().then()异步链式操作(Chain operation)
//deferred.promise.then().then() deferred.promise.then(function () { console.log('1 resolve'); retur ...
- WCF基础
初入职场,开始接触C#,开始接触WCF,那么从头开始学习吧,边学边补充. SOA Service-Oriented Architecture,面向服务架构,粗粒度.开放式.松耦合的服务结构,将应用程序 ...
随机推荐
- MongoDB ReplicaSet 集群搭建
说明 本文创建的集群的名字为test,在同一台机器上创建了三个mongo实例,端口不同即可. 安装mongodb的教程,之前总结过,请参考:CentOS安装MongoDB笔记 创建实例 # 本机默认原 ...
- 思维|蚂蚁感冒|2014年蓝桥杯A组题解析第七题-fishers
标题:蚂蚁感冒 长100厘米的细长直杆子上有n只蚂蚁.它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒. 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行. 这些蚂蚁中,有 ...
- IDEA新建一个Project和Module的问题
- 论文笔记之:Heterogeneous Face Attribute Estimation: A Deep Multi-Task Learning Approach
Heterogeneous Face Attribute Estimation: A Deep Multi-Task Learning Approach 2017.11.28 Introductio ...
- 深度学习课程笔记(四)Gradient Descent 梯度下降算法
深度学习课程笔记(四)Gradient Descent 梯度下降算法 2017.10.06 材料来自:http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS1 ...
- dataTable表头未对其解决方法
本文为博主原创,未经允许不得转载: 在tab页中使用dataTable时,默认显示的dataTable表头与数据显示正常,另一个的datatable则表头与数据未对其. 检查元素发现,datatabl ...
- 一个 xxx is not defined 引发的爬坑之路
出处 https://www.cnblogs.com/daysme/ - 2018-01-06 昨晚找了一个代码解决了我对配置的需求.高兴的拿到手机上测试却发现点击没有效果,电脑上是可以的呀,电脑上的 ...
- nsswitch & pam
nsswitch & pam nsswitch是名称解析框架服务,pam是认证框架服务 对主机来说,有两个功能可能用到框架性服务 1.名称解析: name: id 2.认证服务:验证当前请求获 ...
- 最受欢迎的前端框架 —— Bootstrap学习
Bootstrap是Twitter的Mark Otto和Jacob Thornton开发的,是目前最受欢迎的前端框架,它简单灵活,使得Web前端开发更加快捷方便. 首先,要基本掌握Bootstrap框 ...
- Oracle DBHelper 第二版
public static class OracleDBHelper { public static OracleCommand cmd = null; public static OracleCon ...