领域建模有很多种方法,对于同样的问题域使用不同的建模手段得到的模型可能也不尽相同。于是我经常听到这样一个问题:怎么才能保证建模的正确性?
这听起来是个合理的质疑,但实际上却不是那么有道理。首先我们需要明白建模的目的是什么?如果仅仅是为了描画问题,那么并没有什么对错之分——仅仅是立场和角度的差别;而如果是为了企业业务系统而进行建模,那么这个问题应该变为:如何保证模型能够支撑企业的运营?
我想用下面这个例子来简要的回答一下这个问题。
在开始分析和建模之前,我们需要知道企业业务系统的目的是什么;而企业业务系统的目的往往跟决策者或者管理的诉求相关。我们现在需要移情到一位管理者身上,看看他的诉求到底是什么。
现在假想你是一家在线电子书店的COO。突然有一天,有一位顾客向你投诉,说他订购的书少了一本,并且价钱算错了,他多给了钱。在你承诺理赔之前,你需要核对一下这位顾客说的是否属实。那么这个时候你需要知道什么样的信息才能做出准确的判断呢?
简单来说,你需要知道这位顾客订购了那些书籍,付了多少钱以及书店到底为这个顾客递送了那些书籍。不幸的是,由于科技不够发达,你无法直接驾驶时间机器回到从前去亲眼看看发生了那些事。但幸运的是,你并不需要这么做,你只需要看看这位顾客的订单,和网银的支付记录以及你们书店交给EMS的快递单存根,就应该知道这些信息了。
你找到了订单和EMS快递存根。发现这位顾客是在三天前订购的书,而你们在前天就已经将书邮寄出去了。并在订单上看到这位顾客一共订购了7本书,但是在EMS的快递存根上,并没有任何书籍的信息,只有地址,包裹号,邮费和重量什么的信息。这时候你觉得应该去询问一下配送部门,看看他们做了什么。
在配送部门你根据包裹号查到了那个包裹的信息,果然里面只有6本书。同时你在包裹部门发现了一张延期交货单。上面说明由于缺货,这位顾客另外一本书正在等待发货。
那么剩下的问题就是支付问题了,从网银的记录上看,客户不含邮费一共支付了132.5。订单上显示的价钱也是132.5,显然这位顾客并没有多付钱。
为了保证准确,你重新从网站上选了这7本书,想看看是否也会是这个价钱。但你却意外的发现,一共只需要128.3。仔细辨认后,你发现有一本图书现在是促销。那么现在的问题是,促销到底是什么时候开始的?
你到了市场部,市场部给了你一份近期促销计划。你发现那本书是昨天才开始促销的,也就是说在那位顾客在下订单的时候,促销还没有开始。
这个时候,你觉得应该给你的顾客打一个电话致歉,商讨如何后续邮寄的问题,并向他说明促销的事情。
你是否觉得这个COO当得有点累呢?这当然是虚构的。但是从这故事里面我们看到什么呢?
任何的业务事件都会以某种数据的形式留下足迹。我们对于事件的追溯可以通过对数据的追溯来完成。正如上面这个故事里,你无法回到从前去看看到底发生了什么,但是却可以在单据的基础上,一定程度的还原当时事情发生的场景。当我们把这些数据的足迹按照时间顺序排列起来,我们几乎可以清晰的推测出这个在过往的一段时间内到底发生了那些事情。
那么为什么这些数据形成的链条能够成帮助我们追溯业务的营运呢?
因为这些数据并不是随便挑选的。如果我们回顾一下你作为COO检查这个疏漏的过程,你首先选择了订单和EMS快递存根,换句话说,如果订单出现差错,或者EMS快递存根上说明你的确邮寄了7本书,那么这个疏漏的责任并不在你。所以这两个订单实际上这个你这个企业法律责任的起点和终点。
当你确定这个疏漏的责任在你之后,你选择审查一些流程执行的结果,比如包裹存根。从而验证一些主要的业务流程执行的结果是否正确。换句话讲,这些数据是支撑你运营体系的关键流程的执行结果。
正是由于这些数据是流程执行的结果,它们才使我们可以在不了解流程细节的前提下,对某些突发事件进行追述和分析。
除了上面那个极端的例子(投诉),对于任何一笔正常的经济往来,我们都需要知道:
- 如果我付出一笔资金,那么我的权益是什么?
- 如果我收到一笔资金,那么我的义务是什么?
而这些问题都需要业务系统捕捉到相应的足迹才能够回答。所以企业的业务系统主要的目的之一,就是记录这些足迹,并将这些足迹形成一条有效的追溯链。
而作为业务分析师的你,则应该知道那些事件在运营上是需要追溯的,这些事件都留下了什么足迹。
这些足迹通常都具有一个有意思的特性,即它们都是时标性对象(moment-interval)。发现这些时标性对象就是建模的起点。对于这些时标性对象稍加整理,我们就得到了整个领域模型的骨干:
在得到骨干之后,我们需要丰富这个模型,使它可以更好的描述业务概念。这时候,我们需要补充一些实体对象。通常实体对象有三类:人,地点, 物(party/place/thing)。
在这个基础上,我们可以进一步抽象这些实体事如果参与到各种不同的流程中去的,这时候,我们就需要用到角色(role):
最后再把一些需要描述的信息放入描述对象(description)。
我们就得了应用四色建模方法(color modeling)建立的一套领域模型。
简要回顾一下上面的过程,不难发现我们建模的次序和重点:
- 首先以满足管理和运营的需要为前提,寻找需要追溯的事件。
- 根据这些需要追溯,寻找足迹以及相应的时标性对象。
- 寻找时标对象周围的人/事/物
- 从中抽象角色
- 把一些信息用描述对象补足。
由于在第一步中,我们就将管理和运营目标做为建模的出发点。因此,整套模型实际上是围绕这些“如何有效地追踪这些目标”而建立的,这样的模型可以保证模型支撑企业的运营。
附言
几位同事帮我审校这篇文章的时候,有人问了一个很有意思的问题:为什么你会以一个看上去像极端情况的例子来说明这个建模方法? 以我的经验来看,对于业务系统有两个东西是很重要的:可追溯性(traceability)和执行效率(efficiency)。这里的可追溯性是指责任的可追溯性(traceability of liability),而通常都是在一些不太好的事情发生之后,才需要对责任进行追溯。所以想一个相对负面的例子更容易帮助我们找到建模所需要解决的问题。
另外还有位同事说,你的四色方法与Peter Coad的四色法并不完全相同。是的,我所介绍的并不是Peter Coad的四色法, 我不敢说是发展, 仅仅是对于Peter Coad四色的一种变化吧。
转自:http://www.infoq.com/cn/articles/xh-four-color-modeling
分享到:
相关推荐
在这个文档的描述中,通过一个在线电子书店COO处理客户投诉的情景,展示了如何运用四色建模法来追踪和分析业务流程。COO在这个过程中需要处理的订单、支付记录、快递单等,都可视为领域中的关键数据,它们对应着四色...
四色原型是面向对象设计中的一个概念,源自90年代,由Peter Coad和Mark Mayfield提出,并由David North进一步发展。...在软件开发过程中,深入理解并灵活运用四色原型,可以显著提升项目的成功率。
UML,全称Unified Modeling Language,是一种标准化的通用建模语言,用于软件工程领域,特别是系统分析和设计阶段。它提供了一种图形化的方式来描述软件系统的结构和行为,包括用例图、类图、序列图、状态图、活动图...
《数学建模-图论》是一份深入探讨图论在数学建模中的应用的资料,主要针对想要在数学建模领域提升自己技能的学习者。图论是离散数学的一个重要分支,它研究的是点和线的连接关系,这些点称为顶点,线则称为边。在...
为了处理数据一致性问题,他们运用了四色建模法等方法,结合业务评估价值和适应度函数,确保产品交付周期的优化。 总的来说,京东到家在微服务演进过程中,通过不断迭代和优化,实现了从单体应用到分布式微服务架构...
它通过分析业务边界内的业务概念及其关系来建立,常用的方法有名词动词描述词分析法和四色原型分析法。业务模型有助于深入理解业务的本质。 处理方案是指将需求转化为实际系统的过程。在DDD实践中,我们需要将复杂...
这些分析和模型对于理解和优化Ad Hoc网络的性能至关重要,它们不仅涉及到几何优化,还涵盖了通信理论、概率论和网络抗毁性等多个数学和计算机科学领域。解决这些问题需要综合运用数学工具和理论,以实现更高效、稳定...
总的来说,这些课件将带你深入图论的世界,理解并掌握各种图论算法,使你能够在数学建模中运用这些工具解决复杂的问题。通过学习,你将能够分析和构建模型,优化网络设计,处理分配问题,并解决许多其他现实世界的...
它涉及到的概念和方法在解决网络优化、通信网络设计、社会网络分析等诸多领域都有着深远的影响。 在数模竞赛中,图论问题通常涉及以下几个方面: 1. **基本概念**:首先,参赛者需要理解图的基本元素,包括顶点...
在技术层面,设计师可能运用计算机辅助设计软件(如Adobe Illustrator、AutoCAD等)进行包装结构的3D建模,以预览并优化包装的实用性和美观性。同时,还需考虑包装的印刷工艺,如四色印刷、烫金、凹凸等,以增强视觉...
设计师会运用CAD软件进行三维建模,精确计算每个折痕的位置和角度。 2. **材料选择**:包装材料的选择直接影响到包装盒的质量和成本。全开式包装盒通常选用硬纸板或瓦楞纸板,要求材料有良好的耐折性和强度,同时...
4. 四色问题:这是图论中的一个著名问题,证明了任何平面地图都可以用四种颜色进行上色,且相邻区域颜色不同。解决这类问题需要理解图的结构和组合优化。 5. 圆周率:圆周率π是一个无理数,与几何计算、随机过程、...
对于科研工作者来说,计算思维更是不可或缺,它使得研究人员能够通过建模、自动化等方式,超越传统实验和理论分析的限制,预测和创造新的可能。 计算思维的实践不仅限于专业领域,随着科技的不断进步,每个人都有...
本压缩包文件“行业分类-设备装置-包装纸盒的三维设计方法.zip”包含了一个核心文档——“包装纸盒的三维设计方法.pdf”,该文档详细阐述了如何运用现代计算机辅助设计(CAD)技术进行包装纸盒的三维建模与设计。...
这个领域有着广泛的应用,包括网络设计、交通规划、社交网络分析、计算机科学中的算法设计等。本教程将带你深入探索图论的世界,揭示其背后的理论与实际应用。 首先,我们要了解图的基本概念。一个图是由顶点...
它广泛应用于土木工程、建筑设计、机械设计等领域,是工程师和设计师不可或缺的工具之一。AutoCAD快捷键命令大全是帮助用户更高效地使用软件的一系列快捷操作指令。 快捷键命令是AutoCAD中用于简化绘图操作、提高...