zachman架构
Zachman框架起源于John Zachman先生在1987年完成的那篇著名的信息系统架构论文(《A framework for information systems architecture》 ),并一直发展至今。在这篇论文中Zachman先生以修建房屋为例从两个维度将与信息系统架构设计相关的各种元素归纳到如下表格之中:
- 表格中的每一行代表了在信息系统构造过程中所涉及到的某干系人在描述信息系统时所采用的视角,包括:
- 范围/规划师(Planner):包括整个信息系统描述所处的环境上下文、产生于内部与来源于外部的各种约束,以及其他视角下对信息系统的描述所需要考虑的相关构成部分的列表。
- 业务模型/拥有者(Owner):有关最终产品的概念视图,反映了最终产品的使用特性,即用户准备如何对最终产品加以使用。具有此视角的干系人包括最终产品的客户或用户。
- 系统模型/设计师(Designer):有关最终产品的逻辑视图,反映了最终产品的本质规律以及逻辑约束。具有此视角的干系人包括工程师、架构师以及能够将期望所得与现有的物理、技术上的实现联系起来的各种中间人。
- 技术模型/建造者(Builder):反映了在产品构建过程中现有技术的物理约束。具有此视角的干系人包括制造工程师、总承包商以及具有生产最终产品所需的技术能力的组织或人员。
- 详细表述/分包者(Sub-Contractor):关于为了达到生产目的而对复杂对象进行分解的详细描述,这些内容在从设计媒介到最终产品媒介的转换中起着非常重要的作用。例如,用于将技术模型中所阐述的技术约束与供应商为所提供的产品联系在一起的产品规格说明。
- 产品/运行中的企业(Functioning Enterprise):在1987年的论文(《A framework for information systems architecture》)中并没有这一行的内容,实际上此行的内容也并不在架构描述的范畴的之内,不过为了使得架构Zachman框架对于架构的表述更加完备,这一行最终还是被加了进去。这一行的内容代表了最终产品,是架构在客观现实中的实例体现。例如,对信息系统架构来说,此行的内容就是最终产出的信息系统,同理,对于企业架构来说,这一行所代表的就是运行中的企业本身。简而言之,前面五行的内容是对于客观对象的描述,而这最后一行的内容就是客观对象本身了。
- 表格中的每一列代表了用于描述信息系统的某一个方面。在Zachman先生看来,对于任何一个事物只要在几个基本方面对其进行清晰的解释就足将其描述清楚,而且几千年来人类自然语言的特性也证明了这一结论。这些方面包括:
- 数据(What,即什么内容):用于表示客观对象的材料组成,即材料清单。对于企业来说,此部分内容就是组成事物模型(Thing Model,之所以将其称为组成事物模型而不是数据模型是因为由于不同的行代表了不同的视角,而仅在设计师所处的第三行才会关注真正信息化意义上的“数据模型”,因而在此才使用“组成事物”来对所有视角在此列中的描述对象进行指代)。
- 功能(How,即如何工作):用于表示功能和转换行为。对于企业来说,这部分内容就是流程或功能模型等。
- 网络(Where,即何处):用于表示各组成部件的坐落位置以及相互之间的联通关系。对于企业来说,这部分内容就是物流或网络模型等。
- 人(Who,即何人负责):用于描述了何人应该做何事,例如用户手册和操作说明等。对于企业来说,这部分内容就是人力模型或工作流模型等。
- 时间(When,即什么时间):用于描述事物发生的时间以及不同事物之间的相对时间关系,例如生命周期和时序图等。对于企业来说,这部分内容就是时间或动态模型等。
- 原因(Why,即为什么做):用于表示最终结果和意义。对于企业来说,这部分内容就是动机模型等。
- 每行和列相交的单元格表示了各个干系人在各自视角上对于信息系统的某个方面的具体描述。
通过上述关于Zachman框架内容的表述我们可以发现此框架本身并不复杂,不过在实际应用过程中我们还应该遵循下列的使用规则:
- 不能为此框架增加新的行或列。在Zachman框架看来,框架中的六行视角以及六列描述方面构成了系统描述的最基本元语,即为了构建系统而对其架构所做的描述只要能够从六种视角出发,并能为每个视角在六个方面(什么内容(What)、如何工作(How)、何处(Where)、何人负责(Who)、何时(When)和为什么动机(Why))做出解答,那么此架构描述就是完备的,也由此足以成为系统的复杂度管理和变更管理的基础。
- 每一列中的内容都遵从某一通用模型。由于每一列都代表了所描述架构的某一个方面,因而处于同一列的各个描述在本质上应符合某种经过高度抽象的元模型:
- “数据”列(What)应遵从:事物——关系——事物。
- “功能”列(How)应遵从:流程——输入/输出——流程。
- “网络”列(Where)应遵从:节点——连接——节点。
- “人”列(Who)应遵从:人员——工作——人员。
- “时间”列(When)应遵从:事件——周期——时间。其中,“事件”指代某一时间点,而“周期”代表了一段时间区间。
- “原因”列(Why)应遵从:结果——方式——结果。其中,“结果”代表了目标状态,而“方式”则用于表示为了达成目标状态而采用的行为。
- 每个表格单元中的模型应该是其所在列采用的通用模型的具体特化。虽然在前面规则中提到过,每一列中的架构描述都遵循相同的模型,但是由于每一行所代表的视角对于描述所采用的术语、语法以及所受的约束各有不同,因而对于每个具体的单元格来说,其中的架构描述也应该是以该列所采用的通用元模型为基础并受其所在行视角约束的特化。
- 表格单元中架构描述的详细度与其所在的行无关。人们很容易有一种错觉,那就是在同一列中不同行里面架构描述的详细度有一个自上而下越来越详细的趋势,因为好像越是位于上面的行,其所代表的视角就越不关注于最终产品的实现细节,因而其中的架构描述也无需太高的详细度,反之越靠下方的行就需要更高的详细度。从实现的角度来说,这一担心不无道理,不过就架构描述的目标来说,这种详细度自上而下渐渐增高的趋势是有待商榷的。由于框架中的每一行代表了不同的视角,但这并不代表所有的视角都关注于最终产品在实现方面的问题,而正因为每个视角的关注点不同,所以仅从实现细节这个角度来说详细度的差异是有问题的。例如第一行的规划者关注于最终产品的所处的上下文环境,因而对在这一角度所进行的描述来说,其详细度应该根据具备这一视角的干系人的要求而定,而其下各行由于关注点不同,所以他们在描述的详细程度方面不具备可比性。由此我们可以发现,不同行的架构描述是相互独立但又互相联系的,他们之间是转换关系而不是演进关系,
- 不存在可以在不同的表格单元之间共享的元概念元素。由于表格中的每行或每列都是代表着某一视角或基本元语,因而由他们组成的各个表格单元中的架构描述也应该是独一无二的,所以不同表格单元之间的架构描述不应该出现共享元概念元素的情况。
- 不要在对角线方向上对不同的单元格进行直接联系,这样只会增加沟通障碍。每一个单元表格只与同行或者同列中位于其上和其下的单元表格之间有着直接关联,如此才能把沟通障碍和变更管理的难度最小化。
- 不要改变行或列的标头名称。在Zachman框架看来,由于本身逻辑框架已经完备,因而修改行或列的标头名称或含义会对整个逻辑框架产生不利的影响。这里需要注意的是,在图3所示的Zachman框架列表中,其行标头和列表头都含有上下两个名称,例如,第一行的标头就具有“范围”和“规划者”两个名称,而第一列也具有“数据”和“什么(What)”这两个称呼。这两种名称系列(用加粗大号字体标明的名称和采用小号斜体字体的名称)代表着Zachman框架的两种使用情境:
- 通用情景:此种情景下,Zachman框架具有更高的通用性,例如房屋建筑、飞机等。其中各个标头将采用由小号斜体字体标明的名称。
- 企业特定情景:此种情景下,Zachman框架的目标放诸“企业”这一特定的概念之上,而其中各个标头将采用由加粗大号字体标明的名称。
需要注意的是,不论是上述哪种使用情境,按照Zachman框架的使用规则,这些标头名称都不能因为实际情况的不同而进行变 更。
- Zachman框架逻辑具有通用性和迭代性。此框架虽然在企业架构领域名声斐然,不过这并不意味着他只能被应用于这一领域,实际上对于Zachman框架来说,他并不针对于某一具体事物,无论是有形的事物,诸如房屋、飞机等,亦或是抽象的概念实体,例如企业等,都可以是他描述的目标,因而在这一点上其具备普适性,而也正因为这一普适性,其每个单元格中的内容亦可以作为描述目标而被此框架无限迭代描述下去。
综上所述,Zachman框架认为一个关于客观事物(可以是房子或飞机这种有形实体,也可以是诸如企业这样的无形概念对象)的架构描述应包括两个维度,其中,一个维度表示了对架构进行描述所应采用的六种视角,而另一个维度则代表了架构描述所需要回答的六个方面的问题。这两个维度正交交叉,从而形成了36个交汇点,其中的每一个代表了架构描述的某一具体架构制品。举例来说,不论是规划师还是设计师在描述一个系统时,都需要描述系统的数据、功能等方面,但是对于某一个具体方面,例如数据,不同的角色有着不同的理解。对于业务拥有者来说,数据指的是诸如客户、产品这样的业务实体以及他们之间的关系,而对于执行系统设计的设计师来说,数据指代的就是完全信息化意义上的数据信息片段了。除了这些明显的特性之外,Zachman框架还暗含了以下三点意义:
- 每个架构制品仅能存在于一个表格单元中。也就是说,每个架构制品的定义都必须是清晰的,如果某个架构制品可能出现于两个或两个以上的表单元中则表示此架构制品的内容是有问题的。
- 仅当某一个角色针对系统某一方面提供了足够的架构制品才表示与之对应的表单元是完整的,而表中所有的表单元都被填充才表示一个架构是完整的。
- 针对表中每一列的内容必须是相互关联的。例如,在业务拥有者定义的数据必须在设计师的数据库设计中得到映射,并且每个数据库中的数据的定义都可以回溯到某个业务中的数据定义。
Zachman框架从本质上来说是对企业架构描述的一种分类法,其对于如何解决企业信息化发展所面临的问题(系统复杂度管理、业务与信息技术的不协调发展)能够提供如下的帮助:
- 给出了企业架构内容的描述和分类法,从而可以复杂的系统进行分解描述。
- 确保每个干系人的每一个关注点被照顾到。
- 改进每个架构制品使其更加契合目标受众的关注点。
- 确保业务需求可以被映射到技术实现之上,同时每个技术实现也可以被回溯到业务需求之上。
- 加强业务人员与信息技术人员的沟通和交流,减免以前因缺乏沟通而导致的无谓的内耗。
尽管如此,有些学者并不将Zachman看作为一个框架(例如,《Comparison of the Top Four Enterprise Architecture Methodologies》 的作者),而仅仅把其当成企业架构描述的一个内容分类法。这种看法是有其根据的,就其原因还是因为此框架在如下方面无法给予解答:
- 虽然此框架描述了企业架构应该包含哪些内容,但是并没有给出如何创建这些内容,亦即缺乏一种关于架构开发过程的描述。
- 在此框架之下企业架构内容就像一张静态画面一样,而企业架构是应该随着企业的发展而变化的,因而如何在不断地演进过程中对企业架构进行治理也是他缺乏的内容之一。
- 此框架并没有提供一个判别标准,因而无法了解按照此种方式组织的企业架构是否是一个好的架构,也就是说该框架缺乏成熟度框架。
posted on 2019-06-01 19:35 xiaohaigege666 阅读(315) 评论(0) 编辑 收藏 举报