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的更多相关文章

  1. 核心概念 —— 契约(Contracts)

    1.简介 Laravel中的契约是指框架提供的一系列定义核心服务的接口. 例如 ,Illuminate\Contracts\Queue\Queue契约定义了队列任务需要实现的方法,Illuminate ...

  2. UML和模式应用5:细化阶段(6)---操作契约

    1.前言 操作契约使用前置和后置条件,描述领域模型里对象的详细变化,作为系统操作的结果. 操作契约可以作为有用的OOA相关的制品. 操作契约可以视为UP用例模型的一部分,它是对用例之处的系统操作的效用 ...

  3. UML-如何画操作契约?

    1.在编写契约过程中,发现之前的领域模型不对,此时是否需要修改? 需要修改.包括:概念类.属性.关联.这就是不断迭代和进化 2.用例中复杂场景里的状态变化细节,描述过多导致用例臃肿,让人看不下去,因此 ...

  4. 各种操作中心Operation Center一览

    Operation Center在中国可能有很多种名称,例如指挥中心.运维室.总控中心等等,国外可能也有很多名称,不管名称如何,任何一个上规模得数据总心或者运维单位一般都有一个这样得中心,来负责所管理 ...

  5. PythonStudy——文件操作 File operation

    # 文件:就是硬盘的一块存储空间 # 1.使用文件的三步骤: # 打开文件- 得到文件对象:找到数据存放在硬盘的位置,让操作系统持有该空间,具有操作权# 硬盘空间 被 操作系统持有# 文件对象f 被 ...

  6. PythonStudy——字典的操作 Dictionary operation

    dic = {'a': 1, 'b': 2} print(dic) # 增: 字典名[key] = 值 => key已存在就是修改值,不存在就是新增值 dic['c'] = 3 print(di ...

  7. [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 ...

  8. deferred.promise.then().then()异步链式操作(Chain operation)

    //deferred.promise.then().then() deferred.promise.then(function () { console.log('1 resolve'); retur ...

  9. WCF基础

    初入职场,开始接触C#,开始接触WCF,那么从头开始学习吧,边学边补充. SOA Service-Oriented Architecture,面向服务架构,粗粒度.开放式.松耦合的服务结构,将应用程序 ...

随机推荐

  1. Python数据类型补充2

    四.列表 常用操作+内置的方法: 1.按索引存取值(正向存取+反向存取):即可存也可以取 # li=['a','b','c','d'] # print(li[-1]) # li[-1]='D' # p ...

  2. .Net ASP.NET 打开指定文件夹

    比如要打开指定的文件夹,而不是弹出对话框 System.Diagnostics.Process.Start(@"D:\"); 这样就打开了D盘,和正常打开D盘是一样的.

  3. Spring-json依赖

    <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jacks ...

  4. C#:CsvReader读取.CSV文件(转换成DataTable)

    原文引用:https://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader using LumenWorks.Framework.IO.Csv; ...

  5. logback的使用

    一.logback与log4j的比较(摘自他人博客):     1.更快的实现  Logback的内核重写了,在一些关键执行路径上性能提升10倍以上.而且logback不仅性能提升了,初始化内存加载也 ...

  6. Qt5.WebView.添加节点的测试代码

    1.代码: #include "mainwindow.h" #include "ui_mainwindow.h" #include <QWebFrame& ...

  7. [osg]osg绘制动态改变顶点的几何体

    最简单的顶点数据更新方法是预先获取setVertexArray()所用的数组数据,并对其进行更新.但是对于开启显示列表支持的几何体(这是默认的情况)来说,有一个问题需要特别需要引起注意,即显示列表中的 ...

  8. IPC 之 Binder 初识

    概述 最近在看Android 的 IPC 机制,想要系统的研究一下,然后就走到了 Binder 这里,发现这个东西真是复杂,查看了一下些文章想要记录下.想要自己写但是发现一篇文章已经写的非常好了,就转 ...

  9. SpringBoot整合Graylog3.0

    Graylog简介 Graylog是一个开源的完整的日志管理工具,功能和ELK类似,安装部署更方便. 官方网站 https://www.graylog.org 搭建 使用docker快速搭建 参考 h ...

  10. Qt网络应用开发初步

      应用层的网络协议,如HTTP/FTP/SMTP等简称"应用协议",他们运行在TCP/UDP之上,从Qt5开始,已经不再分别提供QHttp类,QFtp类,应用层的编程使用QNet ...