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

4.9 架构模型2——分层图

分层图:将研究对象按照不同内容分成不同逻辑层的方法。

发明者:由本书作者整理、设计。

4.9.1 概念与解读

1.模型概念

分层工作看似非常简单,但它却是分析与设计诸多手法中最为重要的基础技术,掌握分层的方法对于分析和设计师来说既是基础技术,也是最难的能力之一。

在分析复杂对象时,通过前述的分析模型,收集了包含大量的不同目的(业务、管理、…)、不同成分(成本、客商、…)、不同类型(数字、文字、…)的要素,这些要素可能不在同一时间、同一环境、同一条件下发生,因此要在进行架构前,采用拆分的方法,首先减少对象的复杂关系(降低各种要素的耦合程度)。

研究的对象越复杂,构成对象的要素数量就越多,要素的分类也越多,拆分后的要素如何归集才容易理解呢?下面举例说明分层的作用。

【案例1】图书的分类,见图4-28。

图4-28 图书的整理方法

有大量的图书、足够大的场地以及书架,试问以下哪种方式查找效率最高?

(1)摆地摊:把书全部平摊在地上(二维空间)进行归类、查找。

(2)放书架:将书先放到书架上(三维空间)再进行归类、查找。

可以直观地看出,当书的数量不多(如一百册)时,没有大的区别,但是当书的数量很多(如一万册)时,用书架整理比平地更易归类、关联,查找效率高得多。

显而易见,书的数量越多,书的种类越多,用书架进行整理、查找的效率就越高,这与分析简单对象的问题和复杂对象的问题时的思考方式是一样的,面对复杂的分析对象时,首先借助“分层(三维)”的方法化繁为简,之后的整理、归集工作就容易多了。

【案例2】讨论问题。

在某个方案会上,在讨论一个大家都熟知的题目时出现了不同的见解,且讨论双方争论激烈各持己见,长时间达不成一致的结论。相信这样的场面每个人都经历过,为什么对一个双方都很清楚的题目还会出现激烈争执、难以收敛结果呢?很多情况下,都是因为双方各自站在不同的层面(或者看到的是不同的粒度)上对同一题目发表着自己的见解,由于双方之间没有交集,所以讨论不可能收敛,当然也就得不出一致的结论。

可以联想一下相声大师侯宝林先生的相声“关公战秦琼”,相声中评论两个处在不同时代的武将(汉朝的关羽和唐朝的秦琼)谁的武艺更高强,显然这样的争论无论多么有理有据,最终也是得不出有价值的结论来的,因为不在同一年代(相差338年)没有可比性,见图4-29。

图4-29 关公战秦琼

分层的概念,就是要确保我们讨论的问题是在同一个层面上,这是分析工作的最低保证,如果没有分层的概念,可能讨论的结果甚至是讨论的行为都是无意义的。

2.模型解读

分层图可以表达如下的信息,见图4-30。

图4-30 分层图

(1)范围:从全部层的划分可以看出构成对象的内容(对象分为①~⑤共5层)。

(2)层面:每个层里都是“同类”的内容(即内聚,①=业务,②=管理等)。

(3)主次:①~③层为主体,其中①最重要;以④为①~③支持,以⑤为①~④支持。

(4)方向:分层可以有纵向,也可以有横向,怎么表示效果最好主要看设计师想向读者传达什么信息、理念、场景。

分层图中虽然没有看得见的“关联线”以形成“结构”的形式,但是前面已经讲过,有关联的区块之间就一定存在着逻辑,逻辑的表现不一定都是用可见的“线”来表达,区块之间的相对“位置”也是逻辑的表达方式。

4.9.2 画法与场景

1.模型画法

分层图在进行业务架构设计的开始部分,先将分析的成果进行整体的规划、分类归集。

同一“层”内的内容属于同一类,在每一个“层”里的内容具有内聚性,用分层的手法建立一个“功能上相互独立、作用上相互协同”的三维空间。

“分层”的概念,不论是做规划还是设计工作都是第一重要的。用分层进行规划是最大的解耦(分层解耦的力度大于在同层内的分区解耦效果,详见框架图说明)。

选择哪一种形式最为合适需要考虑要传递的重点,下面是几种不同布局的三维分层图表现方式,各个布局都有侧重,见图4-31。

图4-31 不同布局分层图的表达方式

● 布局①:可以看出数据层对上部核心层的支持关系。

● 布局②:注重从上到下的支配关系,架构层>功能层>管理层。

● 布局③:强调不同层的顺序、方向等。

用三维的分层图表现架构,不但易于理解,而且可以训练读者的空间思维能力。关于绘制三维图形的技巧详见附录A。

2.适用场景

对数据进行概要规划、分层后,通过分层可以针对不同层面的数据进行逐一的研究和设计,彼此不会发生相互影响,如图4-32所示,详细说明参见第11章。

在第3章中,对要素的属性说明时,谈到了粒度、黑/白盒、系统/模块等概念,实际上,这些概念都是“分层概念”的不同表达,如图4-33所示。

通常在夸赞一个人口才好时,一般都会说他“说话有层次”,意思是他可以用语言表达出层次感来。那么对设计师来说,就要用图的方式表达出分析和设计成果的层次感。用图形能够表达出层次感之后,说话时自然而然地也就可以表达出层次感了。

图4-32 分层图的应用

图4-33 不同形式分层的表达