一般的需求,我们利用用例图就可以表达清楚了,如果再复杂些,我们可能还得再配合序列图、状态图等加于说明。但是,在非常复杂的业务逻辑中,怎么样才能找出它们的联系?而且还能更好地拥抱OO(面向对象),OO的优点不是我们本文的话题。

这里笔者介绍一种很灵活很实用的分析方法--四色原型图,也叫彩色UML。

(图片引自JDON的BANQ大师之手)

四个元素的介绍:

moment-interval :

粉红色的时刻—时段:一个时刻或一个时段,您需要追踪它或做某事,通俗地说其实就是关键动词,就是服务,很容易在这里面抽象出事物逻辑类。

例如:计算、补偿、结算等。 mi-detail :通常,粉红色的时刻时段会有一些组成部分,称为mi-detail(时

刻时段明细),

role :

黄色的角色,角色不一定是人,这个很重要,可以理解为一些有行为的名词。

catalog-entry-like description :

蓝色的描述(类似产品的目录项),可以在这里找出

值对象,持久化的对象。

party, place or thing :

绿色的参与方—地点—物品,可以从这里找出模型、实体。

总体总结:“时刻时段”发生了,“事物”们扮演不同的“角色”参与进来“事物”变化的规

律和“描述”有关。

主要参考了BANQ的:http://www.jdon.com/mda/archetypes.html

和yananay的:http://www.javaeye.com/topic/399672#1055483

下面说一下最近学习后用到项目中的一个例子:

1、一开始最主要的其实是找出最基本的原型MI,即红色,这里的原型是住院补偿。

2、然后慢慢找出与之相关的一些东西,计算住院补偿是有一个公式的,围绕着公式可以抽象出一些元素、比如总费用。

3、再涉及到的“非基本用药费用”的时候又可以找出一个计算的MI,再围绕MI继续抽取,最终可以抽取出以上详细的流程,也很符合面向对象的思维。

总结:类图可能大家会认为没能表达出状态和时序等时间上的概念,但是四色原型其实是蕴含着时间状态的,所以在设计分析复杂的业务的时候确实是一个好的工具,这里引用一下BANQ大师的另一个图:

我个人看法,四色原型也不是万能药,但是在分析复杂业务的时候他确实很直观,非常容易找出内在的一些需求,所以我个人认为在整个开发的过程中,四色原型用于复杂业务的分析非常有用。

个人写作的水平和能力有限,这里权当抛砖引玉,希望大家对我存在的不足批评指正,谢谢。

以下附上我的部分分析文档:

实体:

实体

描述

参合农民

新农合的主要参与者

病例清单

记录了患者治疗和用药的情况

医疗证

医疗证

家庭

参加新农合的家庭

功能详细说明:

功能序号

功能名称

子功能名称

功能描述

MED_REC_MI_2

住院补偿

参合患者基本信息

§前置条件:参合患者个人编号
§最终结果:查询参合患者个人信息、户信息、医疗证信息。

参合患者基本信息,根据参合患者的个人编号,获取其个人信息、户信息和医疗证信息。

1)获取“参合患者的个人”,根据“参合患者个人编号”读取“农民个人基本数据D401”数据表。

2)获取“户信息”,根据“参合患者个人编号”读取“家庭档案数据D301”。

3)获取“医疗证信息”,根据“参合患者个人编号”读取“农民缴费及家庭帐户管理部分D601”。

§

一般住院补偿

医院总医药费用

  • 前置条件:每一次住院费用清单
  • 最后结果:医院总医药费用

医院总医药费用,根据“病例价格清单”计算总医药费用。

1)读取病例价格清单信息。

2)计算未得到补偿的住院费用。

非基本用药费用

 

  • 前置条件:医院药品价目单,基本用药目录,用药比例。
  • 计算结果:非基本用药费用

非基本用药费用,就医药品价目单,基本用药目录和用药比例计算非基本用药费用。

1)读取病例价格清单信息,获取药品名称、用药数量、药品单价。

2)计算“总药费”,根据药品名称、用药数量和药品单价计算总药费。

3)计算“基本用药费用”,用病例清单的药名和“基本用药目录”进行对比,把匹配的药品费用相加。

4)计算“非基本用药费用”:
“总药费”减去“基本用药费用”。

5)返回“非基本用药费用”,

如果:“用药比例”状态关闭。
则,返回“非基本用药费用”。

如果:“用药比例”状态打开。
则,计算基本用药费用和总用药费用的比值,高于用药比例的,返回“非基本用药费用”。低于用药比例的,返回“总费用”(即全部不予报销,视“总药费”为“非基本用药费用”)。

转载于:https://www.cnblogs.com/greeny/archive/2010/09/16/1828240.html

四色原型图进行业务建模的思考相关推荐

  1. 四色原型(转自banq大师)

    我们搞技术的有很多误区,比如经常陷入纯技术钻牛角尖的争辩,而全然不顾业务场景,技术活做太多,经验一箩筐,但是有时会疑惑,这些经验是否适合其他自己没有经历过的新系统呢?我们在技术设计路线上走得太久,容易 ...

  2. DDD领域驱动设计---战略设计(包括四色原型建模)

          相当于策略设计,从宏观角度着眼于领域的分析设计,属于系统分析阶段,注重如何从有界上下文中寻找领域模型,战略模式由有界上下文.无所不在的语言和上下文映射组成. 在战略设计前首先要了解下领域知 ...

  3. 四色原型的学习心得分享

    在讨论四色原型之前,我想先狗胆讨论下什么是我所认识的"世界"? 我觉得世界由物质及其相互作用组成."物质"是不以人的意识为转移的客观存在:而"相互作用 ...

  4. DDD:用 “四色原型” 进行 “聚合设计”

    四色原型 在企业应用的上下文中,四色原型是领域模型的一种原型,原型的意思是指领域中的任何模型及其关系都可以抽象为"四色原型". 四色原型可以用这句话进行描述:某个人(Party)的 ...

  5. DDD:四色原型、DDD、DCI之间的关系

    PPT对应某个聚合. Des对应某个聚合或其它聚合内的实体或值对象. MI对应某个聚合. Role对应PPT(Data)在某个上下文(Context)执行某些交互(Interactive)的代理或装饰 ...

  6. 地图四色着图的C语言实现

    四色问题又称四色猜想.四色定理,是世界三大数学猜想之一.四色定理是一个著名的数学定理,通俗的说法是:每个平面地图都可以只用四种颜色来染色,而且没有两个邻接的区域颜色相同.1976年借助电子计算机证明了 ...

  7. c语言电子地图程序,地图四色着图的C语言实现

    四色问题又称四色猜想.四色定理,是世界三大数学猜想之一.四色定理是一个著名的数学定理,通俗的说法是:每个平面地图都可以只用四种颜色来染色,而且没有两个邻接的区域颜色相同.1976年借助电子计算机证明了 ...

  8. 【实践】多业务建模在美团搜索排序中的实践

    美团搜索排序是一个典型的多业务混合排序建模问题,这种多业务场景搜索存在很多挑战.本文聚焦到店商家多业务场景的多业务排序建模优化工作,希望能对从事相关工作的同学有帮助. 引言 排序流程简介 多业务建模实 ...

  9. 架构师之路(五)如何做好业务建模?

    "我深怕自己本非美玉,故而不敢加以刻苦琢磨,却又半信自己是块美玉,故又不肯庸庸碌碌,与瓦砾为伍." 现实生活中的我们不都是这样吗?明明庸庸碌碌,却又不甘庸碌一生. - 中岛敦(日) ...

最新文章

  1. 从零开始学习springboot之springboot搭建
  2. ZJU-java进阶笔记 第四周(继承与多态)
  3. pat天梯赛L1-055. 谁是赢家
  4. mactex中文配置
  5. 教程:Hibernate,JPA –第1部分
  6. 达尔豪斯大学计算机科学世界排名,达尔豪斯大学成了全加最好,这又是个什么排名?...
  7. LeetCode 697. 数组的度
  8. opencv有基于c语言的教程吗_VS2019配置opencv详细图文教程和测试代码的实现
  9. 《黑马QT视频教程》2020.7.31学习日记
  10. wincc7.5系统语言切换功能(C脚本)
  11. 宇视EZVMS系统通过GB28181协议接入EasyGBS的步骤说明
  12. App 快捷方式——创建快捷方式
  13. mysql创建视图步骤_MySQL创建视图的详细步骤
  14. for..in loops iterate over the entire prototype chain
  15. Hybrid Trajectory Planning for Autonomous Driving in On-Road Dynamic Scenarios文章解读
  16. unity构建游戏场景
  17. matlab实现序列卷积和运算,用matlab计算序列卷积和并绘图
  18. 计算机cpu风扇不转怎么办,计算机CPU风扇不转怎么办
  19. 三星s8怎么分屏操作_三星Z Fold 2 5G体验:用过才明白,这就是理想中的可折叠屏手机...
  20. Hyperledger Fabric 网络环境的一点理解

热门文章

  1. php class使用方法,php的类使用方法问题
  2. 什么是ACID理论(二阶段、三阶段提交、TCC)
  3. 《MySQL——关于grant赋权以及flush privileges》
  4. 形态学操作——开闭运算、顶帽底(黑)帽变换
  5. pfa是什么意思_PFA的完整形式是什么?
  6. tolowercase_JavaScript中的String toLowerCase()方法与示例
  7. rtmp流\http流测试地址
  8. Centos7 开启网卡配置IP并连接xshell——转
  9. hadoop put命令的格式_HDFS常用命令
  10. 215. 数组中的第K个最大元素 golang