领域建模的方法有很多,在相同的领域问题上使用不同建模方法可以产出不同的模型。我经常听到这样的问题:如果确保建模流程的正确性?
这是一个很直观的问题,不过实际上它比我们所认为的要复杂得多。首先,我们要搞清楚建模的目的是什么。如果只是为了描述问题,那么就无所谓对错,只有从不同的角度获得的不同结果。不过,如果是为企业业务系统建模,那么问题应该变成:我们该如何保证模型能够支持企业的运营?
我将通过以下的例子来简要地解答这个问题。
在进行分析和建模前,我们要知道构建企业业务系统的目的是什么。企业业务系统一般是为决策者或管理层提供支持,然后从管理者的角度考虑问题,帮助他们理清真正的需求。
假设你是一个在线电子书店的COO。有一天,客户向你投诉,他买的书少了一本,而且书的总价算错了,他为这些书多付了费用。在你着手去解决这个投诉之前,你要先确认这个客户说的是否是事实。你该怎么办?
简单地说,你需要知道客户的订单里有哪些书、客户付了多少钱,还要知道有哪些书被快递出去。不幸的是,因为受限于技术手段,你看不到过去都发生了什么。你不可能驾驶时间机器回到过去。不过,你也没必要这么做。你可以检查客户的订单,检查你的电子银行交易记录和快递发货单。
在检查了订单和发货单之后,你发现客户是在三天前下的订单,书店在昨天把这些书快递出去了。从订单上看,客户总共买了七本书,但是发货单上面只有送货地址、包裹编号、快递费和重量,没有任何与书有关的信息。于是,你认为应该找发货部门的人问问情况。
你根据包裹编号找到有关包裹的细节,确定了包裹里确实只有六本书。同时,你还发现,因为缺货,有一个延期的订单,也就是那个客户买的第七本书,正准备发货。
现在还剩下书的总价问题。从电子银行记录来看,除了快递费之外,客户总共支付了132.5元,而订单上的总价也是132.5元,说明客户并没有多付费用。
为了验证价格的准确性,你在网站上重新挑选了这七本书,看看总价是不是一样。让人感到吃惊的是,显示的总价为128.3元。经过一番仔细的盘查,你发现有一本书属于促销商品。那么现在的问题是,促销活动是从什么时候开始的?
市场部门向你出示了近期的促销计划,你发现那本书的促销是从昨天开始的。也就是说,客户是在促销之前下的单。
也许你觉得现在应该打电话给客户,向他道歉,跟他说明书的价格问题和促销活动的事情。
你不会觉得这些事情对于一个COO来说太繁琐了吗?当然,这只是个虚构的例子。但我们能够从中学到什么呢?
任何业务事件都应该保留某种形式的追踪数据。追踪数据可以用于追踪事件。正如上面的例子那样,你无法回到过去,但在某种程度上,你可以通过那些票据了解过去发生了什么。如果我们根据时间对数据进行排序,我们或许可以推断在过去一段时间内所发生的事情。