前4 篇介绍完了逻辑图三元素中“要素”的表达方式,下面要介绍逻辑图三元素之二“逻辑”的表达方式。逻辑表达的说明分为两篇,第一篇说明“业务逻辑”的表达方式,第二篇说明“数据逻辑”的表达方式。
在语言、文字和图形这三种表达方式中,前两种表达方式中的逻辑是需要听者/观者用脑去思考、架构,才能知道作者想要表达的逻辑(还不一定正确),但是逻辑图不同,它的逻辑是直接“画”出来的,用眼睛可以“看到逻辑”,对错一目了然。逻辑是逻辑图中的灵魂、主线,从一张逻辑图上可以大概看出作者的逻辑思维水平和逻辑表达能力。
1. 逻辑的概念
■逻辑:指的是思维的规律和规则,是对思维过程的抽象。
在对分析与设计中逻辑表达方式的说明之前,先借鉴参考一下不同的领域对逻辑的解释,它们可以帮助理解逻辑的概念,比如逻辑定义有:
□逻辑是思维的规律和规则,是对思维过程的抽象;
□逻辑表明了规律,事物完成的序列;
□逻辑表现了事物流动的顺序规则;等。
1)不同领域的逻辑表达
图1分别给出了语言文字、数字电路以及软件数据关系三种不同的逻辑表达形式,图(a)是用文字表达的逻辑,它需要通过“阅读”的方式获取逻辑(直接看不出来),图(b)使用图形“符号”表达逻辑,图(c)使用“线条”表达逻辑。
图1 不同领域的逻辑表达方式
2)业务设计中的逻辑表达
在软件设计时采用的各类图形中是否存在着逻辑的表达呢?如果有,那么逻辑的表达形式是什么呢?参见图2,
□首先将表达对象的图(a)通过拆分得到三个要素A、B、C,如图(b)所示;
□将A、B、C三个要素,分别用分层图、分解图、流程图表达它们之间的关系,如图(c)所示;
通过分层、顺序、连线的方法进行关联,虽然构成三种图形的要素是一样的,但是可以看出三个图具有三种不同含义,可以根据三种图形解读如下的信息,
图2 业务设计用图的逻辑表达示意
□分层图:说明A、B、C在不同的层面上,表达了三者的粒度不同、或是层次不同;
□分解图:说明由B和C集成了A,也可以说A的分解是B和C,三者为从属关系;
□流程图:说明A、B、C的处理过程,A必须通过B才能够到达C,说明了顺序关系;
如果能解读出上面的含义,那就说明“逻辑”不仅存在而且还能“画”出来,观者可以通过“观看”逻辑,从而解读出作者要传递的意图。
2 业务逻辑的表达方式
表达业务要素之间关系所用到的逻辑表达形式称之为“业务逻辑”,业务逻辑主要用于绘制业务架构图。在业务架构图中表达逻辑最为常用的形式有三种,即:关联、位置、包含,如图3所示。
图3 业务逻辑的表达方式
其中
□关联:利用关联线、箭头来连接相关的要素块,来表达要素块之间的逻辑关系。
□位置:利用要素块的相对位置,来表达它们内在的逻辑关系。
□包含:利用背景框,表达框内的要素是紧耦合、不同框内要素之间是松耦合关系。
逻辑表达的符号虽然只有三种,但它们却是逻辑图中的“灵魂”存在,起着画龙点睛的作用。不论逻辑图中有多少要素,只要逻辑符号使用正确、准确,图的含义都可以表达得非常清晰。反之,要素的图标符号再少,如果逻辑不正确,也会发生“图不达意”的结果。
注:表达业务逻辑形式当然不止这三种,但根据笔者的经验,如果这三种形式使用得当,基本上就足够表达一般业务架构图的逻辑意图了,相反,如果在表达逻辑上设计出太多的形式,反而会影响逻辑的传递与解读,因为并不是每个逻辑图的观者都了解你的逻辑符号是什么,这样会增加沟通成本。
3. 逻辑的作用-业务逻辑的表达
有了逻辑的概念,那么逻辑在实际的业务架构中是如何起作用的呢?
【案例】做一个有关企业“成本过程控制”的方案,已知:构成成本的业务模块有5个,成本发生过程是由“合同管理”模块发起的,参见图4。
图4 成本过程的控制方案
1)方案的编制方法如下
图(a):给出的是业务模块一览,调整这些模块的相对位置进行成本控制过程的架构设计,通过调整模块可以得出2个架构方案:图(b)是架构方案1、图(c)是架构方案2。
相同的5个业务模块形成了2个不同形式的架构图,下面从逻辑表达方式上(关联、位置和包含)分析这两张图中的不同含义。
2)两个方案的相同处
(1)要素:二个方案中都包含5个相同的要素:合同管理、人工管理、材料管理、设备管理、成本管理;
(2)逻辑:在2个方案中,下面的业务内容都是相同的
□合同管理:作用是签订合同、确定合同金额。合同管理是过程起点;
□成本管理:作用是核算成本、确认最终是否发生了成本超标,成本管理是过程的终点;
□成本合计:作用是对“人工管理、材料管理和设备管理”三个要素的产生的数值进行合计;
3)两个方案的不同结论
从方案1、方案2可以清晰地看出来的是:在方案1中,“合同管理”不与“成本管理”直接接触,但在方案2中两者发生了接触,由此带来了管理要求的变化;这个逻辑的变化的本质是业务事理的不同。前面的已经说明过:即使图中的要素的完全一样,由于逻辑的不同,最后的逻辑图的意图也会不同,这里只解读一下它们的差异点(不限于此):
(1)方案1的解读
□由于合同管理与成本管理不相关,所以签定合同时不向成本管理发送信息(不通知“合同总金额”);
□将成本合计(人工管理、材料管理和设备管理)的数据汇总到成本管理即可;
(2)方案2的意图
□由于合同管理与成本管理相关联,所以签订合时要向成本管理送信(通知“合同总金额”);
□得出的成本合计(人工管理+材料管理+设备管理)的结果,要与存在成本管理的合同总金额进行的对比(在合同签订时,合同管理已经向成本管理送信了),如果有超支,要预警;
图形中代表逻辑图号的使用要非常的谨慎、小心,任何的连接、箭头方向、摆放位置以及背景框使用的微小误差,都可能造成逻辑传递的错误。
■扩展说明
掌握逻辑的概念和方法,在分析工作中也会有非常大的帮助。
举例,两名经历不同的需求分析师面对同一个谁也不熟悉的全新研究对象时,通常大家会预判说:经历丰富的分析师一定会因为他的“经验多”而做得更好,另一名年轻的分析师则会因为“经验不足”而做得差一些。
但是在实践过程中,有3个项目经验的分析师与有10个项目经验的分析师相比,在面对双方都不熟悉的新研究对象时,如果前者具有很强的利用逻辑分析问题的能力,其做出来的结果不一定就会比以经验为主的后者差,特别是在项目的工期短、要求精度高的情况下,前者的成功概率可能会高于后者。也就是说从逻辑入手了解研究对象的人上手更快,更有可能在短时间内给出正确的分析结果。
下一篇介绍“数据逻辑”的表达。
详细的内容说明请参见《大话软件工程—需求分析与软件设计》一书。