- 大话软件工程:需求分析与软件设计
- 李鸿君
- 4748字
- 2021-09-16 18:26:48
3.3 组合三元素2——逻辑
本节重点介绍组合三元素之二的“逻辑”,包括在业务架构图、功能原型以及数据架构图中的逻辑表达形式。“逻辑”是业务事理用图形的表达形式,是图形中的灵魂。
3.3.1 逻辑的概念
逻辑,指的是思维的规律和规则,是对思维过程的抽象。
在对业务分析与设计中逻辑表达方式的说明之前,先借鉴参考一下不同领域对逻辑的解释,它们可以帮助理解逻辑的概念,例如逻辑定义有:
● 逻辑是思维的规律和规则,是对思维过程的抽象;
● 在广义上逻辑泛指规律,包括思维规律和客观规律;
● 在狭义上逻辑即指思维的规律;
● 逻辑就是事情的因果规律;
● 逻辑表明了规律,事物完成的序列;
● 逻辑表现了事物流动的顺序规则;
● 逻辑是事物传递信息并得到解释的过程。
1.不同行业的逻辑表达
图3-20分别给出了语言文字、数字电路以及软件数据关系三种不同的逻辑表达形式,图3-20(a)是用文字表达的逻辑,它需要通过“阅读”的方式获取逻辑(直接看不出来),图3-20(b)使用图形“符号”表达逻辑,图3-20(c)使用“线条”表达逻辑。
图3-20 不同领域的逻辑表达方式
2.业务设计中的逻辑存在
在软件设计时采用的各类图形中是否存在着逻辑的表达呢?如果有,那么逻辑的表达形式是什么呢?见图3-21。
1)首先将表达对象的图3-21(a)通过拆分得到三个要素A、B、C,如图3-21(b)所示。
2)将A、B、C三个要素,分别画成分层图、分解图、流程图的三种形式。
图3-21 业务设计用图的逻辑表达示意
通过分层、顺序、连线的方法进行关联,虽然三种图形的构成要素是一样的,但是可以看出三个图给出了三种不同含义,说明如下。
(1)分层图:说明A、B、C在不同的层面上,理由可能是粒度不同,也可能是层次不同。
(2)分解图:说明B和C的集成是A,也可以说A的分解是B和C,三者为从属关系。
(3)流程图:说明A、B、C的处理过程,A必须通过B才能够到达C,说明了顺序关系。
如果能解读出上面的含义,那就说明“逻辑”不但是存在的,而且还能“画”出来。
结合逻辑的一般定义以及信息系统的设计方法,对逻辑的概念进行抽提、定义为三个核心内涵,即:规律、顺序、规则。
(1)规律:要素之间内在的、稳定和反复出现的关系。
(2)顺序:要素的位置关系,包括前后、上下、左右。
(3)规则:保证按照规律、顺序运行的约束。
3.3.2 逻辑的作用
有了逻辑的概念,那么逻辑在实际的业务架构中是如何起作用的呢?
从事过管理咨询、业务梳理工作的人都知道业务架构是一门既非常重要又很难掌握的技能,长期以来究竟什么是业务架构、业务架构包含哪些内容和步骤,没有一个规范化的说法(在软件行业中还常常将业务架构与软件的技术架构混同在一起,甚至用技术架构方法来做业务的架构),久而久之,“业务架构”就成为一个似乎大家都知道但又说不太清楚的技术了。究竟是什么原因造成业务架构难以掌握与运用呢?这就是逻辑的影响,特别是业务逻辑的影响,下面试举三例来说明逻辑在图形中所起的作用。
【案例1】逻辑在业务表达中的作用。
题目:做一个有关成本过程控制的方案,已知构成成本的业务模块有5个,成本过程是由“合同管理”模块发起的,见图3-22。
图3-22 成本过程的控制方案
图3-22(a)给出的是业务模块一览,调整这些模块的相对位置进行成本控制过程的架构设计工作,通过调整模块可以得出两个架构方案:
图3-22(b)是架构方案1,图3-22(c)是架构方案2。
由于调整了业务模块的位置关系,相同的业务模块形成了两个不同形式的架构图,而这两种不同的业务架构方案表达了不同的业务含义。下面对这两个架构图进行分析。
1.两个架构方案的相同条件
1)要素
两个方案中各有5个要素:合同管理,人工管理,材料管理,设备管理,成本管理。
2)逻辑
(1)合同管理:主管签订合同,确定合同金额。合同管理是过程的起点。
(2)成本管理:主管核算成本金额,确认最终是否超标。成本管理是过程的终点。
(3)成本合计:是人工管理、材料管理和设备管理三个要素产生数值的合计。
3)模型
两个方案的架构形式,采用的是架构模型中“分解图”的变体图形。
2.两个架构方案的不同结论
从方案1、方案2可以清晰地看出,在方案1中,“合同管理”不与“成本管理”直接接触,但在方案2中两者发生了接触,由此带来了成本的发生路径、要素间的从属关系、收敛方向等的变化;这些变化的本质是什么呢?变化的本质就是逻辑的变化。可以看出,即使要素的内容完全一样,由于存在着不同的逻辑,所以造成了最后架构意图的不同(只谈差异点)。
1)架构方案1的意图
(1)签订合同一事,不需要事前通知成本管理部门或在成本管理部门进行登记。
(2)成本管理对象(人工管理、材料管理和设备管理)的数据汇总到成本管理部门。
2)架构方案2的意图
(1)签订合同一事,必须要在事前知会成本管理部门或在成本管理部门进行登记。
(2)在进行成本管理的计算时,要对合同金额与实际成本(人工、材料和设备)进行比对。
业务架构形态的不同,就是业务逻辑变化造成的,调整要素之间的相对关系,就是改变了业务架构,也就是进行了业务逻辑的再设计。
【案例2】逻辑在学习业务中的作用。
1.场景1——利用逻辑梳理既存业务
企业在进行信息系统开发时,需要聘请软件工程师来做业务梳理,一般来说,软件工程师是不懂业务的(至少不是很懂),但是他们却能在短时间内准确地将现实的业务搬到计算机系统中,并让系统正确地运行,他们是怎么做到的呢?一个重要的理由就是“逻辑”起的作用。
(1)软件工程师虽非业务专家,但他们有“逻辑”的概念,他们是从业务“逻辑”的视角来理解业务的。
(2)掌握了业务逻辑,也就掌握了业务对象的事理、关系、规律等内容,有了这些核心内容就可以建立支持管理信息化的软件设计模型。
可以说,软件工程师虽然掌握的不是体系化的专业业务知识,但由于他们抓住了逻辑这个“主线”,所以可以在短时间内完成分析与架构的工作。
2.场景2——利用逻辑理解新业务
在两名经历不同的架构师面对同一个谁也不熟悉的全新研究对象时,通常旁观的人会预判说:经历丰富的架构师一定会因为他的“经验多”而做得更好,另一名年轻的架构师则会因为“经验不足”而做得差一些。
但是在实践过程中,有5个项目经验的架构师与有20个项目经验的架构师相比,在面对双方都不熟悉的新研究对象时,如果前者掌握了利用逻辑分析问题的能力,其做出来的结果不一定就会比后者差。如果要求的时间短、精度高时,前者的成功概率可能高于后者。因此,从逻辑入手了解业务知识的人上手快,更可能在短时间内掌握业务的关键脉络。
3.场景3——用逻辑实现业务处理信息化
再仔细地观察和思考一下,利用软件是如何实现业务处理的呢?
软件系统就是将业务处理的功能封装成一个个模块,然后利用业务逻辑将这些模块串联起来进行运行,就实现了业务的信息化处理。由于软件工程师抓住了业务功能模块之间的主线、步骤、顺序、流转规则等关键要素,所以才能做到短期内完成任务,这些关键就是业务逻辑。
【案例3】逻辑对结果的强化作用。
可以采用不同的形式来表达同一个结论,例如用语言、表格或是图形,这三者中图形的逻辑表达最为显著,例如,表达“工程质量下降”分析原因的方法,见图3-23。
图3-23 表格与图形在表达逻辑时的差异
图3-23(a)是用“表格”的方式,图3-23(b)是用“图形(鱼骨图)”的方式,两者的内容完全一样,但是哪种方式在表达工程质量下降的因-果效应上更强烈、更具说服力呢?
结论当然是图形的表达最为强烈。图形表达方式之所以比较清晰、强烈,是因为图形直接将“逻辑”显示出来了,读者不需要去通过思考“读”取文字和表格中的逻辑,而只要顺着逻辑线的示意,就可以“看”出图形表达的含义了。
3.3.3 逻辑的分类
在3.3.1节中,对逻辑的含义用三个内涵来定义,即:规律、顺序、规则。由于架构可以分为不同层(架构层、功能层、数据层、管理层等),且不同层的模型表达方式不同,所以它们的逻辑表达方式有相同也有不同。作者根据对大量图形的分析和研究,总结了业务分析和设计用图中常用的逻辑表达方式,见图3-24,对它们的逻辑表达方法详见后续的说明。
图3-24 逻辑的分类与表达方式
下面重点讲述设计工程中不同设计阶段用到的逻辑表达方式,关于设计分层“架构、功能、数据、管理”的内容参考设计工程中的相关章节。
3.3.4 逻辑的表达1——架构
在架构模型中,逻辑表达的是要素之间的业务关联关系,也称为“业务逻辑”。业务逻辑的主要表达形式有三种:关联、位置和包含。常用的业务架构模型如图3-25所示。
图3-25 业务架构模型
1.逻辑形式之一——关联
在几种逻辑的表达方法中,毫无疑问,用线、箭头表达逻辑是最为普遍和直观的方式了。从例图中可以看出,典型的代表就是流程图。在关联这些要素时,不论是用线还是用箭头,心中一定非常地清楚连接两端之间的关系,例如,节点1→节点2、节点1→节点4等,见图3-26。如果采用箭头进行关联,表明两者不仅有关联关系而且有特定的指向,这是最强的逻辑表达方式。
2.逻辑形式之二——位置
在图形表达时,为什么要用“位置”一词来替代逻辑原定义中的“顺序”呢?因为在用语言表达时,“顺序”一词通常含有“线形”的含义,这在一维图形中表达逻辑关系是没有问题的,但在二维、三维的架构图中,实际上要素之间会同时存在着“上下、左右、前后”的空间位置关系,因此,从广义的视角看,“顺序”也是“位置”的一种表达方式,而“位置”的表达具有更为广泛的意义,因此,将逻辑原定义的第二个指标“顺序”改为“位置”,以适合于一维~三维架构图的表达。
分层图就是一个典型的用位置表达逻辑的图形,图中要素之间具有明显的上下、前后关系等,见图3-27。另外,框架图也具有很强的用位置表达逻辑的能力。用位置关系来表达业务逻辑的方法,在任何一种图形表达方法中都存在,因为每一个要素在图形中占据什么位置都是有其背后的逻辑依据的。
图3-26 流程图
图3-27 分层图
3.逻辑形式之三——包含
包含,也是图形逻辑的一个重要的表达方式,包含在一起的要素具有一定的共性。包含逻辑同时也具有从属的意思,表达包含的方式可以用线、背景框等。框架图是一个典型的用背景框表达包含逻辑的方式,见图3-28。背景框内的要素具有共性,不同的背景框中的要素目的不同,从而形成了不同的系统或是模块。
图3-28 框架图
同样,分解图也可以用来表达具有包含关系的图形。
注:架构图与逻辑图
逻辑图采用逻辑要素可以准确地描绘出对象的“事理”。架构图因为是设计用图,所以必须采用逻辑图表达,而不能使用示意类图形表达(示意图说明参见7.4.2节的注)。
在本书中,分析模型与架构模型都属于逻辑图,但后者是强逻辑表达。
3.3.5 逻辑的表达2——功能
这里功能层面的逻辑表达,指的是进行界面/表单的设计时所考虑的逻辑依据,界面上的逻辑主要表现在“位置、包含”上,见图3-29。界面上不同的区域(虚线框)表达了不同的逻辑,合乎逻辑的界面布局可以让读者顺畅地理解界面上的内容。功能的逻辑表达方法详见后续各个功能的设计章节。
图3-29 功能界面要素逻辑的表达(以位置、包含关系为主)
3.3.6 逻辑的表达3——数据
在数据模型中的要素是数据表、数据,因此逻辑表达的是数据表和数据之间的关联关系,也称为“数据逻辑”。由于图形的要素不同,因此数据逻辑表达方式与业务逻辑的表达方式是不同的,见图3-30。数据逻辑的详细说明详见后续各个数据的设计章节。
图3-30 数据逻辑的表达
3.3.7 逻辑的表达4——管理
在管控模型中,此时要素是模型、规则、判断等,逻辑表达的主要是规则之间的作用关系,也称为“管理逻辑”,见图3-31。管理逻辑的表达详见第19章。
管控模型中虽然使用了“线”,但由于管理是看不见的对象,这些线与业务架构图中的“关联线”的含义不同,在这里,线不代表关联,只是说明规则的相互作用关系。例如,“控1”与“①利润控制”之间的线,只说明在合同节点上的控制是利润控制,利润控制是一条“规则(或是算式)”。
图3-31 管理逻辑的表达