3.2 组合三元素1——要素
本节重点介绍组合三元素之一“要素”的来源、属性、表达方式等,“要素”是构成图形内容的主要部分。本节中对要素的属性描述对后续的分析和设计起着非常重要的作用,理解这些属性可以在分析和设计中很容易进行沟通、表达,有了这些属性作为支撑,可以大大地提升工作效率,以及分析与设计成果的质量。
这些描述方法不仅是说明要素的属性,更重要的是它还是一种思考方式,特别是在用语言交流时,如果使用了要素属性进行描述,会明显地提升沟通效率和质量。
3.2.1 对象的概念
对象,是指分析与设计的目标事物。
对象是要素的来源,要素是从对象分解而来的。对象会以多种形态呈现,例如:
● 需要优化的事物:企业管理体系、生产流程、操作程序等。
● 需要分析的问题:产品质量问题、销售业绩下滑问题、成本超标原因等。
● 需要研究的课题:软件的需求规格书、事故调研报告等。
所有需要进行分析并通过设计可以进行优化的目标事物,都可以称为对象。为了保持讲述内容前后的关联性,本书所举案例主要以企业运行中的各种“业务”为主,所以也称之为“业务对象”或“研究对象”。
1.对象的分类
根据研究课题的目的、研究对象包含的内容,以及其所处的环境背景,可以将需要研究的对象分为两种类型:优化类对象,非优化类对象。两者的内容和关系如图3-6所示。
1)优化类对象
优化类对象:已存在并正在运行着的业务体系。
优化类对象的共同特点是:要研究的对象是一个客观上已经存在的真实业务体系,且该体系已经运行了一段时间,已经形成了一定的形式、规律、标准和规则等。所谓的优化就是采用新技术、标准对它们进行升级、改造、完善的工作,这类对象可以是如下的内容。
图3-6 研究对象的分类:优化类与非优化类
● 企业级的业务体系、管理体系,例如,某个企业的运营管理体系。
● 企业内某个领域的业务体系,例如,成本管理、物流管理、销售管理等。
● 某个正在运行的流程,例如,生产加工流程、财务申报流程等。
为企业进行的管理咨询、系统设计等的研究对象都属于优化类对象,因为研究的对象业已存在(不论其是否实现了信息化管理)。所谓的“优化”就是采用信息化方法改进、完善既存的业务,实现效率、效益的提升。
2)非优化类对象
非优化类对象:尚未实现的业务(对尚未实现的事物是不存在优化的)。
非优化类研究对象可以是:一个问题、一个现象、一对因果关系、一个尚没有实践过的课题、一个全新领域的业务等。简而言之,就是“没有做过的事,没有参照的对象”。这类对象不同于对优化类事物的研究,由于没有客观存在的对象,既无法绘制业务现状构成图,也无法直接绘制新的业务架构图。
注:只有对优化类对象才能进行优化
针对非优化类对象的研究成果不能说“优化”,因为“优化”行为必须是针对某个已存在的且已经过时的对象。
非优化类对象的研究需要从理解对象开始,首先要去寻找构成对象的要素、逻辑,然后才能进入与优化类对象相同的阶段,下面试举几例来说明非优化类对象的特点。
【案例1】针对某个问题:如何提升生产效率?
提升生产效率的问题,可能都不是某个单一原因所造成的,不能通过简单地优化某个流程获得解决,而是需要通过大量的、多视角的分析研究,找出造成问题的原因后,再根据原因给出解决方案。
【案例2】针对某种现象:为何年末的客流突然涌向了××地区?
首先要收集客观的现象、建立各种现象之间的关联关系模型,分析造成该现象的原因,然后归集出答案。
【案例3】针对因果关系:共享单车使用效率低是因为投入量太大吗?
题目给出了因果关系的猜测,这就需要收集要素,建立模型,分析使用效率与投入量是否存在着因果关系,最后证明因果关系是否成立等。
可以看出,非优化类对象都是没有可以参考的实际对象的,对这样的对象进行研究就需要从零开始做功课。
2.对象分类概念的作用
首先对比一下优化类对象与非优化类对象的异同,在进行以企业业务为目标的分析与设计研究中,这两类对象都是常见的,两者的差异如图3-6所示。
(1)相同之处:都需要经过分析,给出最佳的设计方案。
(2)不同之处:前者可以直接参考既存对象(业务、系统);后者无可直接参考的对象。
了解了对象分类的异同后,那么,在进行需求调研前首先就要判断该项目是属于哪一类对象,确定了对象的分类后,容易找到最佳的分析和设计理论、方法和路线,假定研究对象的规模是相同的,则,
(1)优化类对象:因为已有实际的参照物(实际业务流程、既存系统、资料等),在调研、分析与设计的各个阶段中都可以与实际的现状进行对比验证,这是一个“创新+完善”的过程,因此,优化类对象信息系统的实现相对比较容易。
(2)非优化类对象:由于没有参照物的存在,所以全部的工作需要从零开始,非优化类对象的信息化实现过程是一个“全面创新”的过程。因此,找对目标、方向,以及要素、逻辑、分析模型等非常重要。进行非优化类对象的研究始终要关注“整体”与“细节”之间的关系,避免出现方向性的错误。
3.2.2 要素的概念
要素,是构成事物必不可少的因素,要素的集合体构成了对象。
1.要素的内容
要素,在表达不同对象的逻辑图中以不同的形式出现,例如:
● 业务架构图:要素表现为系统、子系统、模块、功能。
● 数据架构图:要素表现为数据表、数据。
● 管理架构图:要素表现为标准、规则、判断。
2.要素的描述
要素是构成研究对象的核心内容,要素覆盖的内容包罗万象,在对要素进行表达时需要一套规范的描述方法,用以说明要素的数量、大小以及所处的状态等。本书中给出的描述要素的属性分为4组:①粒度与分层;②黑盒与白盒;③系统与模块;④解耦与内聚。
对上述①~④的详细介绍,参见本章的3.2节的说明。
3.要素的相对性
要素与对象是相对的概念,如图3-7所示。例如,在研究“企业业务”这个对象时,其内部构成中的“财务”要素仅仅是作为对象“企业业务”中诸多要素之一而存在的,企业的业务构成如图3-7(b)所示;但是在聚焦于“财务”的研究时,“财务”就从原来的一个要素,转变为一个对象,财务的构成如图3-7(c)所示;再对财务中的“成本”进行进一步的研究时,则“成本”又成为对象,成本打开后的构成如图3-7(d)所示,以此类推。
图3-7 对象、要素的相对概念
对象不同,拆分出来的要素也就不同,例如:
● 图3-7(a)企业业务:其构成为图3-7(b)——财务、计划、生产、设计、销售、物流等。
● 图3-7(b)财务要素:其构成为图3-7(c)——财务、收入、成本、经费、支出、收入、报销等。
● 图3-7(c)成本要素:其构成为图3-7(d)——预算、合同、定额、计划、目标、核算等。
为了说明这些现象,就需要一套描述这些要素特征的方法。
3.2.3 要素属性1——粒度与分层
粒度与分层,是对要素大小的属性描述。
1.粒度的概念
将研究对象“企业业务”拆分后出现了要素,如果以其中的“财务要素”为对象再度进行拆分后,就会出现更下一层的要素,如此反复可以进行若干次,如何表达这个“对象-要素-对象”循环出现的现象呢?这就需要引入表达要素粗细的概念,将表达要素粗细的尺度称为“粒度”。
粒度,是表达对象中不同要素的“粗细”程度的尺度。
粒度原指球状体的直径大小,比较细小的要素就包含在同类较粗的要素之内,如图3-8(a)所示。也可以将不同粒度的要素,按照从粗到细、从上到下地放置在不同的“层”上,如图3-8(b)所示。
图3-8 粒度与分层的概念
图中标出了对象“财务”中的3个要素的粒度关系,即:财务、财务中的成本、成本中的合同,显然它们由粗到细的包含关系是:财务>成本>合同,这就是所谓的“粒度”不同。
再举一个广义的例子来扩展一下思维,采用分层的方法,对下述12个要素进行梳理:军事领域、经济领域、装甲车、大使馆、广交会、外交领域、陆军、教育领域、商务部、学校、考试、一等秘书。
可以看出这些要素具有不同的类型、粒度,对它们的梳理可以分为以下三步。
步骤1:首先从分类的角度将这些要素进行归类,归集出4个大分类,这4个分类同时也是各类中粒度最大的要素,即:军事领域、外交领域、教育领域、经济领域。
步骤2:根据与各领域的关系,将其余要素归集到各个分类的下面。
A.1军事领域:陆军、装甲车。
B.1外交领域:大使馆、一等秘书。
C.1教育领域:学校、考试。
D.1经济领域:商务部、交易会。
步骤3:对同一分类的要素按照粒度放置在不同的层上。
例如,在同一分类“军事”中,按照粒度可以分出三层,它们之间的大小顺序为军事领域>陆军>装甲车,用层的方式来表达时就形成了:第1层=A.1军事,第2层=A.2陆军,第3层=A.3装甲车,如图3-9所示。
图3-9 要素粒度的应用
从图3-9可以看出,分层的表达方式不但能显示大小(粒度)还能显示顺序(上、下)。
2.粒度的作用
知道了粒度的概念,那么粒度概念在分析和设计时的作用是什么呢?
粒度的概念在进行理解新事物、研究分析时起着非常重要的“划分大小”的作用,特别是在研究不熟悉的事物时尤为重要,它可以指导我们先从顶层、大方向、总目标、核心价值等描述基本构成中的大粒度要素入手。
作为分析师、设计师,在观察繁杂的事物时,是先看整体、大的构成(粗粒度),还是先关注细节(细粒度),往往是关乎分析与设计成败的要因。
在进行比较复杂的业务分析或设计时,一定要注意相关要素之间的粒度对比,也就是通常说的“不要胡子眉毛一把抓”,将不同粒度的要素放在一起进行研究,这样得出的结论可能是混乱的,因为不同粒度的要素之间的逻辑关系、表达方式可能是不一样的。不分粒度、不分层次画出的图形,无论表现得多么漂亮都可能是无价值的。
粒度的概念,是软件分析、设计的常用概念。下面再用业务流程设计说明粒度的概念。
【案例】业务流程图,如图3-10所示。
使用粗粒度的要素形成的最上层的流程图,称为“一级流程”,以此类推,可以有二级流程、三级流程等,由最小粒度(活动)构成的流程图就是可以执行的流程了。
图3-10 要素粒度与业务流程的分级关系
一级流程:由大粒度的要素(如系统)构成。
二级流程:一级流程中的要素“采购(系统)”,是由若干中粒度要素(如模块)构成的,中粒度要素构成了二级流程。
三级流程:二级流程中的要素“签约(模块)”,是由若干小粒度要素(功能)构成的,小粒度要素构成了三级流程。
可以看出,在讨论销售问题时,如果同时掺杂着讨论“验货(模块)”或是“提交(功能)”,那么就有可能发生混乱,最终给不出结论(不收敛)。粒度和分层的概念,是拆分的重要手法,也是分析方法中第一位重要的技术。
3.2.4 要素属性2——黑盒与白盒
黑盒与白盒,是对要素所处状态的描述。
1.黑/白盒的概念
黑盒、白盒是对要素两个相反状态的描述。
前面讲过,要素是可以再拆分的,当讨论的对象由复数的要素构成时,注意讨论要素的粒度要相同,将小粒度的要素暂时隐蔽起来,避免发生因要素的粒度不同而造成讨论结果难以收敛的情况。为了便于解释这个情况,就引入了黑盒/白盒的概念,见图3-11。
图3-11 黑盒/白盒的状态示意图
1)黑盒的概念
黑盒指将盒子盖起来,从外面看不到盒子里面的内容(要素)时的状态参见图3-11(a)。原指一个只知道输入输出关系而不知道内部结构的系统或设备的状态。
在这里的意思是,当研究几个同粒度要素之间的作用关系时,不需要同时关注其中某个要素的内部细节,此时就可以将这些“看不到下一层细节”的要素称为处在“黑盒状态”(因为盒子是盖着的,所以看不见盒子里面的内容)。
例如,从企业管理这个对象中拆分出来了财务、销售、计划等同粒度的要素,在讨论企业级的问题时不必去关注财务中的“收入”和“支出”这样的小粒度业务细节,所以这个时候可以将“财务”看成一个整体(黑盒),专注于财务与销售、设计、生产等具有相同粒度要素之间的关系。
2)白盒的概念
白盒指打开盒子,让盒子里面的内容(要素)暴露出来时的状态,参见图3-11(b)。
白盒与黑盒的定义相反,例如,打开财务这个“黑盒”后,里面小粒度的要素就显示出来了,这时财务就不是处于“黑盒”的状态,而是处于“白盒”的状态了,同时财务也就从要素变为了对象,而白盒中的“收入”“支出”“预算”等内容又成为构成财务对象的要素,此时,财务中的诸要素(预算、支出、收入等)之间又可以彼此看成是黑盒状态了。
图3-11中只有财务盒子被打开处于白盒状态,其余的销售、生产等要素仍处于黑盒状态。
2.黑/白盒概念的作用
黑盒与白盒概念的应用,在分析对象、要素时起着什么作用呢?
试想一下,为什么当遇到复杂的问题时新手会感到束手无策,而经验丰富的老手则可以从容地找到解决问题的路径呢?下面尝试用黑/白盒的概念来解释一下。
1)没有经验的新手
在观察问题时缺乏经验,他们看到问题(对象、要素)的状态,既有呈黑盒状态的,又有呈白盒状态的,结果就是感到问题非常多,盘根错节,一团混乱,问题的原因就是因为新手的眼睛不会“一层一层地去看观察”,而是同时看到了所有不同粒度的问题。
2)有丰富经验的老手
先将拆分出来的要素归集到不同的分类中(黑盒),首先对大分类(粗粒度)的要素进行观察和讨论,摸清情况后,再根据需要将其中一个黑盒打开成为白盒状态,对白盒内的细节问题进行深入的研究,这就避免了同时出现不同分类且大小粒度不同的信息,极大地降低了研究的难度(当然,有经验但缺方法的老手也会犯与新手一样的初级错误)。
要素的粒度越粗理解时需要的业务知识就越少,反之,要素的粒度越细需要的业务知识就越多。不同分类的黑盒同时打开,不但造成了大量的细节同时出现,且如果不同黑盒中的要素之间还存在着复杂关联,这就使得判断的工作量和难度达到了难以控制的程度。
3.黑白盒概念的应用案例
下面举例来说明如何利用黑盒/白盒的方法减少研究难度,同时提升研究的效率。
【案例1】需求调研时的应用。
假定需要调研的客户部门共有10个,调研可以采用两种方式,分别说明如下。
方式一:全部门同时展开调研
以企业为对象,以各个岗位的工作为要素,由10个部门的负责人和其下属各个岗位的担当人轮番讲解各自的工作,这就相当于各个部门没有处于黑盒状态的,全是白盒状态,需求分析师一开始就要面对数十个甚至上百个混在一起的不同层次不同粒度的问题,问题有来自于部门的管理层,也有来自于执行层,例如,交通费报销、质检流程、在库资产的摊销、生产流程的优化、安全管理、收支平衡等。
结论:如果采用方式一进行调研,不单是新手会晕头转向,就是经验丰富的老手也会被搞晕,问题出在没有设置中间的黑盒,一开始就将对象全部都置于“白盒”状态,没有粒度、没有层次。在以新手为主的调研过程中是常见的现象。
方式二:分部门逐层进行调研
第一步:以企业为对象,以部门为要素(部门=中间的黑盒层)讲解企业部门级的工作,即:经营管理部、销售部、采购部、生产部等10个部门,讲解的是这10个部门的主要功能、部门之间的协同关系等内容。
第二步:以部门为对象(部门=处于白盒状态),以部门内部的工作为要素,逐个讲解各个部门内具有的各项工作的作用、工作之间的协同关系等。
第三步:以某个具体工作/功能为对象,讲解该工作/功能的作用、定义、规则等。
按照上述步骤逐层推进,直至完成全部的定义工作。
结论:如果采用方式二调研,就相当于交替式地将要素在“黑盒”与“白盒”间进行转换,这就可以循序渐进地观察对象,比较有层次地了解和收集企业的信息了。所以,什么时候让要素呈现白盒状态,是要根据研究的进展而定的,提前去观察白盒状态的内容,反而会找不到观察的层次、重点和主线,也容易被引入歧途。
【案例2】生产流程分析时的应用。
假定一条生产流程上有6个节点,每个节点为一个要素,即:销售、设计、采购、生产、物流、结算,这6个要素是同一粒度的,见图3-12。案例重点研究节点“4.生产”分别处于黑盒/白盒状态时的不同。
图3-12 生产流程
研究一:将“4.生产”看成是黑盒的场景
研究节点“4.生产”与其他节点的关系,将流程上全部生产节点都看成是处于“黑盒”状态,同粒度各要素之间的“关系”就是“4.生产”节点的“输入”和“输出”与其他上下游节点的相互影响,此时不需要关注“4.生产”节点内部的细节,见图3-13。
(1)“4.生产”节点的输入:上游三个节点提供了①订单、②图纸、③计划。
(2)“4.生产”节点的输出:向下游两个节点输出了④合格单、⑤结算单。
图3-13 “4.生产”节点的输入输出关系
注:流程图中要素可以分为如下的内容
(1)1~6的各个节点都是“活动”。
(2)输入的“订单、图纸、计划”和输出的“合格单、结算单”都是“实体”(表单)。
研究二:将“4.生产”看成是白盒的场景
如果要研究生产流程的上游节点(1、2、3)对“4.生产”节点内部的影响,就要将“4.生产”节点看成是“白盒”,将它的内部细节显示出来,同时要表现从上游的输入(订单、图纸、计划)对节点4的影响,打开了“4.生产”就会发生如下的讨论。
①订单:可能会影响到生产环节的流程、设备、资源等。
②图纸:可能会影响到生产环节的工艺、工法、质量等。
③计划:可能会影响到生产环节的交付时间、产品价格等。
一旦涉及“4.生产”的内部,就会出现很多的要素,不同的要素遵循着不同的技术、不同的标准等,就会使得研究变得非常复杂,因此,分析工作的第一步一定要从大处入手,看清目标、层次、关系等,避免在分析一开始就去关注细节。在讨论问题时,要注意:
● 讨论的所有要素是否是同一粒度,是否都处在黑盒状态上;
● 黑盒之间要研究的内容,与某个黑盒内部要研究的内容是不相同的。
掌握黑/白盒的概念在分析和设计过程中是很重要的,它不但可以帮助工程师清晰地剖析对象,而且还加快了研究和分析的进度。
3.2.5 要素属性3——系统与模块
系统与模块,是要素归集的单位。
1.系统的概念
系统是由一群有相互作用关系的功能要素组成的集合体,如图3-14所示。
图3-14 系统的概念
前面讲的要素粒度、黑/白盒的概念,本质上讲的都是对要素大小的属性描述,而系统不仅表述要素的大小,而且还可以表述它们之间的关联。
系统的概念有以下三层含义。
(1)系统是由若干要素组成的,这些要素必须是功能,如处理业务的功能:合同签订、材料采购等,而不能是“物”(如设备、材料等)。
(2)系统内部的要素要有相互作用关系,并能够形成一定结构体。
(3)同一个系统中的要素合在一起可以具有处理某类业务的能力。
在仅考虑粒度和包含关系时,可以将研究的内容称为对象、要素,在考虑要素之间的相互作用时,要素的集合体一般就要改称为“××系统”了。
系统,作为功能要素集合体的代名称,在不考虑业务属性时,可将要素的集合体称为系统,如果加上了业务属性做前缀就形成了不同的业务系统,例如,财务系统、生产系统、人资系统、物流系统等。
系统也有粒度的概念,小型的集合体称为子系统,大型的集合体称为父系统,或简称为系统。父、子系统是个相对的概念,不同的系统之间不好直接进行大小的比较。
2.模块与模块化设计
1)模块的概念
模块,是由一群可处理某个业务场景的功能要素组成的集合体。
由于系统、模块和功能这三个词在不同的场合、面对不同的描述对象时定义都不同,这样就容易给读者带来困惑,因此在本书中做如下约定。
(1)系统:是具有独立处理某个业务领域工作的完整功能集合体,系统是由模块组成的。
(2)模块:是分担系统中的局部处理工作的,模块是由功能组成的。
(3)功能:是系统中可以完成某个业务处理操作的最小独立单位。
这三者都是由功能构成的,在粒度上的关系为:系统>子系统>模块>功能。
2)模块化设计的概念
模块化设计,就是将具有不同作用的功能进行多种组合,以实现用有限的功能支持多样的业务处理场景。
功能要素按照要求被归集到不同的系统中,每个系统可以独立地处理某个业务领域的工作,且每个系统都具有标准的对外接口。按照需要,可将更多的具有不同功能的系统组合在一起,以完成更加复杂的任务。通常我们做的系统规划都具有这样的特点,下面以企业管理的功能框架图为例来说明模块和模块化的关系。
【案例1】将企业业务划分为三个业务领域,分别命名为:主营区、辅营区和支持区,如图3-15所示。
图3-15 业务功能的组合
(1)主营区:区内的子系统构成了企业业务的主体,它们分别代表了4个主营业务板块,包括:①销售管理、②采购管理、③设计管理、④生产管理,因为它们是企业产生价值和收入的主要来源,所以称为主营业务。
(2)辅营区:区的子系统是用来对主营区的业务进行辅助管理的,包括:财务管理、人资管理、信息中心等,它们不是直接生产价值的,而是为了保证价值顺利产生的功能。
(3)支持区:区内的子系统是为主营区业务提供服务的,包括:后勤管理、物流管理等。
从图中可以看出,如果哪个部分的内容需要调整时,可以遵循规则在该部分内增加或是减少,增减的单位可以是系统、模块或是功能,这就是模块化设计的作用。
【案例2】业务和管理也可以按照不同的模块进行组合。分离原理和组合原理给出了企业管理信息系统的设计方法,业务模块与管理模块各自遵循各自的技术、标准完成各自的架构设计,然后再按照模块化的要求组合到一起,见图3-16。
图3-16 业务功能与管理功能的模块化组合
系统中处理业务用的模块为a,对业务模块进行管理的功能为b。
方案1:将业务模块a和管理模块b进行组合,形成了方案1。
方案2:将业务模块a和管理模块b进行组合,形成另外的方案2。
从图3-16中可以看出,变化的管理模块与不变的业务模块可以给出不同的组合(方案)。当外部市场发生变化时,企业需要调整管理模式,由于业务模块(流程图)与管理模块(PDCA模型)是各自独立的,因此可以不断地更换管理的模型(因为管理易变),而不必改变业务架构(如果业务不需要改变的话)。这就是模块化的设计思想。
3.2.6 要素属性4——解耦与内聚
解耦与内聚,是描述要素归集原则的重要概念。
分层与粒度的概念,说明了要素的粗细;系统与模块的概念,说明了要素的归集单位。将不该放到一起的要素放到了同一个黑盒内,就会造成在讨论黑盒之间的关系时,由于不同黑盒内部的细节相互牵扯,可能无法将盖子盖上形成黑盒状态。那么什么样的要素可以放在一起,什么样的要素不能放在一起呢?解决这个问题需要引入解耦和内聚的概念。
1.解耦的概念
耦合,是指两个或两个以上的系统(要素的集合体)的输入与输出之间存在紧密配合与相互影响,某一方的变动会影响到另一方的变化。
解耦,指的就是解开耦合的状态,去掉两者之间造成耦合的连接关系。
耦合有两种状态:紧耦合,松耦合。下面举例说明两者的概念和关系。
假定某个对象的内部是由4个子系统构成的,分别为系统1、系统2、系统3、系统4,如图3-17所示。
1)紧耦合
从系统1、系统2、系统3这三者之间的关系可以看出,不同系统内部的要素之间发生了密切关联,三个系统之间两两成对地形成了非常复杂的依赖关系,三个系统因“盖不上盖子”都不能形成黑盒,这种状态就是“紧耦合”状态。
图3-17 紧耦合与松耦合的示意
2)松耦合
系统4与其他系统之间的关系是非常清晰、简单的,分别只有一个接口,可以看出系统4内部的要素并不直接与其他系统中的要素关联,而是由统一的接口进行关联,也就是说,系统4和其他系统之间虽然有关联,但不是复杂的依赖关系,这种由唯一或是少量关联形成的关系就是松耦合状态。
解耦,简单地说,就是将上述的“紧耦合”状态解开,形成“松耦合”的状态。
解耦的概念说明,当分析对象内部的系统之间都是紧耦合关系时,那么各个系统就不能在“黑盒状态”下进行讨论了,因为各个系统都存在着系统内要素之间的依赖关系,也不可能在不考虑这些依赖关系的前提下,将各个系统看成是黑盒了。
解耦概念对后续分析与设计有着非常实际的指导意义,例如,某个产品的生产过程在企业内部大都是由多部门协同完成的,业务流程大多要跨部门才能完成,最佳的流程设计是部门之间的交互最少,最大限度地减少不同部门内部工种之间发生的直接依赖。避免由于某个部门内部某个工种的作业内容发生了变化而引起其他部门的连锁反应。
2.内聚的概念
内聚,是说明同一个系统中各个要素之间的关联性。
理想的内聚状态如图3-18所示,对象中的每个系统都可以独立地完成一个业务领域的工作,且各个系统内部要素之间的关系紧密。也就是说,每个系统内所有的要素都是为了完成同一个目标而存在的,例如,对于财务系统来说,既不要把财务系统的功能划分到其他系统中,也不将其他系统中的非财务功能拉入到财务系统中来。
图3-18 内聚概念的示意
内聚的概念说明,各个系统内部的要素要按照“内聚”的标准放在一起,各个系统之间通过一定的接口进行相互调用,而各系统内的要素之间没有直接关联。这样在进行讨论时一个系统就可以用一个黑盒来表示。
内聚的实际意义在于,在设计时让每个系统具有的功能都相对独立、单一,这样就容易进行拆分,并通过不同的组合灵活地满足各种需求。
3.高内聚与松耦合
系统内要素间的内聚程度高就称之为“高内聚”,系统间的关联程度低就称之为“松耦合(或低耦合)”,参见图3-19的对比可以看出来内聚和耦合之间的关系。
图3-19 高内聚与松耦合的示意
1)高内聚
高内聚的系统内的功能要素要做到高度的相似聚合,共同为一个目标服务。图3-19对象1中3个系统没有做到高内聚,而是紧耦合,系统内部之间的交互非常繁杂。而对象2的情况就完全不同了,各个系统的内部都做到了高内聚。
2)松耦合
在同一对象内的各个系统之间要尽量做到松耦合,系统之间具有最小的相关度,图3-19的对象1系统之间没有做到,对象2系统之间实现了松耦合,因此对象2的系统构造看上去就非常舒服。
判断信息系统架构优劣的一个重要的原则就是:系统之间是否进行了松耦合的设计。它关系到系统运行后的维护成本,而且还极大地影响到系统的扩展性、对需求变化的响应能力,甚至是系统的生命周期。
为什么要对从事需求分析、业务设计的读者谈模块化设计、松耦合设计呢?
“功能做到模块化、快速响应客户的需求变化”是软件行业一直追求的目标,但是很多从事软件开发的人并不清楚达成这个目标与业务人员的相关性,不清楚业务人员对系统的模块化设计和结果起着非常重要的作用。因为这些目标的达成都需要一个非常重要的前提,那就是对“业务的拆分”,首先要将研究对象拆分成为若干个小的可以独立的要素,才可能实现“将一个大的系统分解成多个小的、独立的功能/组件,然后通过它们的不同组合来处理复杂的、大型的、多变的问题”。也就是说,业务人员能否将研究对象进行有效的拆分并给出变化的规律是关键,如果业务人员做不到,那么在后续的技术设计和开发时就很难做系统的模块化,更别谈让系统具有强应变能力了。
对于要素属性的描述使用了很多的概念(粒度/分层、黑/白盒、系统/模块、解耦/内聚),这些概念不但可以在架构中得到应用,而且在分析过程中也有着广泛的应用价值,这些概念运用可以让工程师的眼、脑、耳、嘴、手等器官在理解、分析和设计时有了层次感。