大话软件工程:需求分析与软件设计
上QQ阅读APP看书,第一时间看更新

2.1 基本概念

2.1.1 定义与作用

1.定义

分离原理,将研究对象中符合相同设计方法的同类项进行分离、归集。这种分离方式为在软件工程中建立具有普遍意义的分析与设计模型奠定了基础。

注:关于设计模式

从业务知识上看,“营销”与“采购”是不同的两个业务领域,但是它们在设计方法(架构设计、功能设计)上是一样的,因此它们被划分在同一个分类中。

2.作用

每个企业都从事着不同类型的业务,不同的业务各自又都遵循不同的技术、规则、标准。对于来自于外部的软件工程师来说,要想在短时间内用信息化方法重构企业的业务运行体系,首先要解决的问题就是如何理解企业的构成。方法就是要先将企业的运行体系进行拆分,在露出运行体系内部的要素、关系后才容易理解和分析它们。分离原理的主要作用有以下两点。

(1)作用1:提出了对企业构成内容按照设计方法进行分离和归集。

(2)作用2:分离原理为建立具有普遍意义的分析与设计模型奠定了基础。

不论研究对象的粒度是一个企业、一个部门或是一个业务活动(销售、采购等),这个对象的内部都是由复数的、具有不同目的和功能的要素构成的,例如,采购活动就要包括如下要素:采购流程(业务)、约束采购过程的规则(管理)、采购涉及的部门(组织)、采购物的相关标准(物品)等。因此,要想研究好采购活动,不能一开始就对采购做整体研究,而是应该先将采购的过程拆开,对构成采购活动中的每个要素的任务、目的、标准、规则等进行逐一的研究,这样做分析不但可以大幅度地降低研究对象的复杂度,而且可以提升研究的精准度及工作效率。

分离原理不但适用于对业务的分析工作,同时也是架构设计所用组合原理的基础,只有先对研究对象进行了合理、合适的分离,后续的架构设计才会顺利进行。例如,在对采购系统进行设计时就对业务和管理进行分离,先做业务流程的设计,然后再根据流程上每个节点的业务目的,进行管理的设计。

分离原理虽然分离出了诸如“业务”和“管理”的要素,但分离原理研究的是业务与管理的“信息化处理方式”,而不是“业务”或“管理”本身,例如分离原理不回答“为什么业务流程是这样?”“为什么管理采用A模式而不是B模式?”这样的问题。

分离原理要解决的是:如何拆分研究对象中包含的各类要素(如业务、管理),拆分的逻辑是否合理、粒度是否合适。分离原理大幅度降低了需求分析与软件设计的复杂程度。

2.1.2 分离原理模型

在研究一个企业时,通常会采用以企业组织结构为切入点的观察方法,通过介绍不同的部门、各部门的工作内容和产出物来理解企业的构成。图2-2为企业的构成图,在企业组织结构下标出了各个部门、各部门的管理对象、各部门的业务工作以及各部门的产出物,这4个分类覆盖了整个企业方方面面的内容。

图2-2 企业组织结构与分离方式

下面对这些内容进行分离,并用分离后的要素建立分离模型。分离从两个维度进行,即纵向分离和横向分离。

1.分离方法

1)纵向分离(按照部门进行纵向切分)

因为存在着不同的行业,不同行业中还存在着不同的企业,即使是在同类行业内的企业各自的部门设置和名称也不尽相同,所以如果按照纵向进行分离,以部门为边界进行的分离会得到数量繁多的分类,如销售、设计、采购、生产等,难以用一个标准的模型涵盖所有的要素,如图2-2(a)所示的切分方向。

造成这种结果的原因是:按照组织结构的分离触及各个部门内部的业务和管理,不同的企业由于经营理念的不同,即使是相同的业务也会因企业不同而被划分到不同的部门中,如此一来,由于按照组织结构进行分离而获得的要素不收敛(即接触的企业越多,部门分类就越多),如此就难以获得由有限要素构成的且能够获得普遍认同的模型。

2)横向分离(按照分离原理)

按照横向进行分离,如图2-2(b)所示的切分方向,切分出来的要素分类数量是有限的,只有4种:业务、管理、组织、物品。不论是什么行业、企业,且不论企业内部有什么部门、从事什么业务,其构成都可以用这4类要素来表达,因此横向切分得到的4类要素对了解企业构成的共性、建立具有普遍意义的模型具有重要意义。此时的企业构成要素与企业从事的业务和管理方法无关,这样就为下一步建立具有普遍意义的各类模型奠定了基础。

3)不同切分方向的意义

两种不同方向的切分结果,带来了完全不同的含义。

(1)纵向分离:按照组织部门的划分方向进行切分,得到的是无限多的要素分类(由于有不同的行业、企业、业务,以及作业形式等,造成了组织划分与称呼的不同)。

(2)横向分离:按照横向切分,因为只有4层,所以获得了4种分类:组织、管理、业务和物品,这4类要素合起来可以覆盖所有的企业,它们与企业的特性脱离了关联。

纵向分离方式是常见的,横向分离是作者根据常年做企业信息化分析与设计得到的一种有效的分离方法,在抽提对象的共性时,由于横向切分的分类数量少,所以建模的覆盖范围广。

这种分离方式给后续的需求分析、业务设计、技术设计以及系统的开发带来了很多的益处。本书的分析与设计的核心思想就是在这种分离的结果之上展开的。这种分类方式是在表达了业务对象的业务特征的同时也符合了软件系统的分析、设计和开发的特点。

2.分离4要素之间的关系

企业构成4要素之间的关系如图2-3所示。

图2-3 分离4要素的关系图

● 企业构成[图2-3(a)]:企业的原始状态,4类要素尚未分离,还处在业务与管理等的混合状态中。

● 要素分离[图2-3(b)]:对企业构成进行分离,获得4类要素(业务、管理、组织和物品)。

● 要素关系[图2-3(c)]:建立4类要素之间的关系,可以看出业务要素是4类要素的核心,其他3类要素都是围绕着业务要素的,例如,管理要素是对业务要素的运行状态进行监控,组织要素是对执行管理和业务的人力资源进行保障,物品要素是业务要素的产出物或是生产工具。图2-3的示意可以帮助分析者理解4类要素各自的作用、协同顺序、相互关系。

3.分离原理模型

企业构成的内容按照这4类进行划分后得到的模型,基本上可以覆盖一般企业的全部业务(不论该企业从事何种业务),因此用这4类要素就可以建立具有普遍意义的企业构成模型。图2-3(c)的4要素构成了分离原理模型,这个分离原理模型不但表现了企业构成的要素,而且还将要素之间的协同关系表达出来了。将图2-3(c)分离原理模型中的各类要素展开,可以看到每类要素内部的细节内容,各要素细节如图2-4所示。

图2-4 分离原理模型与各要素的构成

分离原理模型中各个要素的构成如下。

①业务:是进行生产的内容,包括需要导入信息化处理的全部业务对象。

②管理:与业务相关的管理内容、控制规则、评估指标等。

③组织:支持业务、管理的人力资源的安排,包括组织结构、岗位等。

④物品:所有的生产资料,包括业务运行产生的产品,以及生产产品所需要的设备等。

这4种分类在业务架构时都可以直接区分出来,特别是识别出哪些是在“做事(业务)”的内容对后续的分析与设计工作很重要。业务确定之后,其次要确定的是针对这个业务处理的“管事(管理)方法”,当“做事”和“管事”的内容都确定之后,第三步要确定的是做事和管事所需要的人力资源,也就是“管人”。最后要决定的是“管物”,因为它是被动的、静止的对象,因此对这个部分的分析和研究不论是放在第几位,实际上它都不影响其他三个要素,也不对其他三个要素的设计产生影响。在管理信息系统中,物品分类的作用通常是在建立企业基础数据时使用。分离模型中各个分类的说明归集到图2-5中。

图2-5 分离原理的内容

从这个企业构成的分类方式上也可以看出,“管理咨询”与“管理信息化咨询”的重点是不一样的,前者的重点在于对“管理”本身进行的专业咨询(对象为人资、财务、资产、生产、销售、库存等内容),后者的重点在于对管理采用的“信息化”的方式进行咨询(对象为业务、管理、组织和物品),所以,这两者的专业不同,知识构成不同,作用也不同。

分离原理的使用带来了对需求分析与软件设计工作的简化,并为建立具有普遍意义的模型提供了思路,分离原理带来的益处读者可以在后续的需求分析和软件设计过程中感受到。

2.1.3 思路与理解

为什么要提出分离原理呢?企业管理信息系统上线使用后,通常会随着企业的需求变化而不断地对系统进行维护(修改),造成系统上线后需求变化的原因很大一部分来自于企业管理者和管理规则的制定者,管理需求的变化是由于“领导的管理方式不同、企业为了适应市场变化进行的规则改变等”多种原因带来的,如果在软件的设计阶段进行了4要素的分类,特别是业务与管理的分离设计,则当管理方式发生变化时仅需要改动相关的管理规则就可以了。但如果没有进行业务与管理的分离设计,则会由于业务与管理在系统中处于紧耦合状态的原因,造成改变管理规则的同时相关联的业务部分也不得不随之变动。

很多软件工程师在做业务需求分析和设计时,通常都会将客户的企业行为笼统地看成是“业务”,而没有特别地在意企业内部做事与管事的不同,例如,在企业的运行中,业务与管理各自的作用与采用的技术是完全不同的,但从软件工程师的视角看,客户做的事情都是属于“业务”范畴,因此在功能设计时就不去区分哪些是业务功能、哪些是管理功能,其结果就形成了业务和管理两种功能的高度耦合,由于业务功能的数量要远远地多于管理功能的数量,这就使得系统上线后当管理需求发生变化时,在修改少数管理部分的同时也不得不对多数的业务部分进行修改,而且频繁的修改使得系统变得不好改、不能改,甚至是出现牵一发而动全身的现象。

图2-6是业务&管理分离设计的示意图,在业务流程上有一连串的业务活动,业务活动在遵守业务的相关标准(工艺工法)的同时,还要接受相应的企业管理规则的约束,这就是分离原理要寻找的理想状态,按照这个方式进行设计,则业务或管理在发生变化时就不会相互影响了。

图2-6 软件设计中业务与管理的关系

分离原理的概念,适用于任何需要信息化的研究对象,当读者从事的领域不是企业信息管理系统时,需要利用分离原理的思想和方法,寻找并建立适合于该领域的分离模型。

本书中给出的分离模型,适用于表达企业管理类研究对象的构成要素。

分享

只有理解业务和管理的区别,才能做好功能的分析与设计

对于区分业务和管理的必要性,老师和学员们进行了一次对话。

老师问:你们在需求调研和分析过程中是否区分过业务和管理?

学员答:基本上不做这个区分,只要获得了功能需求就可以了。

老师问:你们在公司有意识到领导和员工的区别吗?如果有,区别在哪里?

学员答:当然有呀,领导是管人的,员工是干活的,没有区别那不就乱套了吗(笑)?

老师问:那么为什么到了客户那里就不区分领导和员工了呢?

学员答:?

老师接着讲,领导采用的是“管理的知识和技术”在做管理,员工用的是“生产的知识和技术”在做生产,因为他们的工作不同,他们各自需要的功能也就不同,所以在调研、设计时就必须要注意到“业务”和“管理”的不同。