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,面向服务架构,粗粒度.开放式.松耦合的服务结构,将应用程序 ...
随机推荐
- linux--磁盘及文件系统管理
磁盘管理 : 主流的磁盘 : 机械式硬盘 常见的有 : U盘, 光盘, 软盘, 硬盘, 磁带机 扇区 : sector 磁道 : track 柱面 : cylinder 磁盘出厂时 : 低级格式化 : ...
- Java 字符串拆分(拆分字符串)
String sourceStr = "1,2,3,4,5"; String[] sourceStrArray = sourceStr.split(","); ...
- html 之 position 绝对定位与相对定位(待补充)
相对定位:对于区块标签而言,占着原有的空间 绝对定位:对于网页而言,不占原来的空间
- c# 进阶之 WebAPI
REST是设计风格而不是标准. webapi有自己的路由. webservice和wcf的协议都是soap协议,数据的序列化和反序列化都是soap的格式.而webapi是Json的数据传递 webap ...
- C# 中2个问号的作用。C#的??代表是什么意思
https://www.cnblogs.com/gggg/p/5867412.html 变量定义中含有一个问号,意思是这个数据类型是NullAble类型的.(NullAble意思是可以为空) 变量定义 ...
- 剥开比原看代码11:比原是如何通过接口/create-account创建帐户的
作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchai ...
- 【译】第43节---EF6-自定义约定
原文:http://www.entityframeworktutorial.net/entityframework6/custom-conventions-codefirst.aspx Code-Fi ...
- 一.移动app测试与质量保证
1.典型的互联网产品的研发流程,及其核心做法.这里并不是简单的套用敏捷等流程方法,而是经过时间摸索和不断调整,找到最适合自己产品的流程做法,这是质量实践质量保证的基础. 2.系统功能测试实践.包涵需求 ...
- C#窗口禁止移动的方法
1,窗口属性中有locked属性,设置为true. (在自己进行编码的时候并没能找到这个属性,貌似只能在窗口设计时进行设置,故此方法无可控性) 2,窗口属性中有FormBorderStyle属性,设置 ...
- CSDN-markdown编辑器语法——字体、字号与颜色
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式.但是它本身是不支持修改字体.字号与颜色等功能的! CSDN-markd ...