zoukankan      html  css  js  c++  java
  • zachman框架

    Zachman框架

    全称为企业架构和企业信息系统架构Zachman框架(Zachman Framework for Enterprise Architecture and Information Systems Architecture)。Zachman"框架"实际上是一种组织构架工具(用来设计文档、需求说明和模型的工具)的一种分类学。包括工具的目标(例如,商业拥有者、创建者)是谁,哪些特殊的问题(例如,数据、功能)需要阐明。

     Zachman是这样描述他的杰作的:
      当这个框架应用于企业时,它仅仅是用来分类和组织企业(在这些企业里,企业的管理和企业系统的开发同样重要)的描述形式的逻辑结构。
     许多Zachman框架的支持者认为它是跨学科的,它的影响不仅仅局限于IT行业。例如,一本关于Zachman的书中这样说:
      在适当的时候,你会发现框架不仅仅是存在于IT项目中,它存在于你所做的每一件事情中。当你完全理解了这个框架之后,做任何事情都会变得高效。我指的是任何事情,这个断言并不武断。

    一、框架简介

    Zachman框架是一种逻辑结构,目的是为IT企业提供一种可以理解的信息表述,它对企业信息按照特定的要求进行分类,从不同角度进行描述。

    根据抽象规则,它定义企业信息的一个方面,一个框架采用了一种六行,每行中包含36个子单元的格式。

    六行(即纵向维度)反映了IT架构层次,从上到下(Top-Down)。包括了范围模型、企业模型、系统模型、技术模型、详细模型、功能模型

    如同建筑构架为不同的角色提供不同的材料。每个角色都需要完整的信息,不过对于不同的角色而言,所需的完整信息也是不同的。拥有者感兴趣的完整描述是建筑物的功能和美感。构造者感兴趣的完整描述是建筑材料和构建过程。拥有者并不关心墙里面的螺栓钉在哪儿,构造者也不关心卧室的窗户如何排列,以便在早晨能够迎来第一缕阳光。

    从两个维度将所有IT构件进行分割,可以划分成小的相对独立的模块,便于独立管理。

    六列(即横向维度)采用5W1H(what、how、where、who、when、why)进行组织。即分别为做什么(数据)、如何做,什么地点,谁来做、什么时间、为什么做

    以列描述中的"数据(What)"为例:

    ----从商业拥有者的角度,"数据"意味着商业实体。它可能包括实体本身的信息,如客户和产品,也可能包括实体间关系的信息,如人口群体和库存。如果你打算和一个商业拥有者讨论数据,你应该用到这些语言。
    ----从数据库的实现者的角度来看,"数据"就不是商业实体了,而是保存在数据表中的行和列,还有通过连接(join)和映射(projection)生成的表。如果你在和一个数据库设计者讨论"数据",不要讨论客户的群体,而应该讨论关系数据表。
      并不是从一个角色的角度看就比从另外一个角色的角度看要好,也不是越详细越好,也不是某一个的优先级比其他的更高。作为一个整体,无论是从谁的角度都很重要。正如Zachman说过的:
      我们在信息系统构架方面与另外的构架沟通时有很多困难,因为存在很多构架表现形式,而不是仅仅只有一个构架。其中一个出错了,其他的也跟着出错。构架是不同的。它们是附加的和补充的。选择为开发每个构架表现形式而支出资源是有原因的。如果不开发任何构架表现形式是有风险的。
      正如我前面提到的,Zachman框架由六个功能焦点组成,每个功能焦点都会从一个角色的角度考虑。

    zachman framwork 3.0

     



     

     

    数据(什么?)

    功能(怎样?)

    网络(哪里?)

    角色(谁?)

    时间(何时?)

    动机(为何?)

    目标范围

    列出对业务至关重要的元素(或事件)

    列出业务执行的流程

    列出与业务运营有关的地域分布要求

    列出对业务重要的组织部门

    列出对业务重要的事件及时间周期

    列出企业目标、战略

    业务模型

    实体关系图(包括M: M关系、N-ary关系、归因关系)

    业务流程模型(物理数据流程图)

    物流网络(节点和链接)

    基于角色的组织层次图

    包括相关技能规定、 安全保障问题。

    业务主进度表

    业务计划

    信息系统模型

    数据模型(聚合体、完全规格化)

    关键数据流程图、 应用架构

    分布系统架构

    人机界面架构(角色、数据、入口)

    相依关系图、数据实体生命历程(流程结构)

    业务标准模型

    技术模型

    数据架构(数据库中的表格列表及属性)、 遗产数据图

    系统设计: 结构图、伪代码

    系统架构(硬件、软件类型)

    用户界面(系统如何工作)、 安全设计

    “控制流”图(控制结构)

    业务标准设计

    详细展现

    数据设计(反向规格化)、物理存储器设计

    详细程序设计

    网络架构

    屏显、安全机构(不同种类数据源的开放设定)

    时间、周期定义

    程序逻辑的角色说明

    功能系统

    转化后的数据

    可执行程序

    通信设备

    受训的人员

    企业业务

    强制标准

    这36个方格,每个方格就是一个角色(例如商业拥有者)和每个描述焦点(如数据)的交汇。当我们在表格中水平移动(例如从左到右)时,我们会从同一个角色的角度,看到系统的不同描述。当在表格中竖直移动(例如从上到下)时,我们会看到从不同角色的角度,如何观察同一个焦点。

    二、框架释意

    1、纵向项目

    纵向按企业中不同角色的关注点进行划分:

    范围/规划人员(Planner)

    包括整个信息系统描述所处的环境上下文、产生于内部与来源于外部的各种约束,以及其他视角下对信息系统的描述所需要考虑的相关构成部分的列表。关注范围模型,能够看到企业的发展方向、业务宗旨和系统边界范围。

    业务模型/拥有者(Owner)

    有关最终产品的概念视图,反映了最终产品的使用特性,即用户准备如何对最终产品加以使用。具有此视角的干系人包括最终产品的客户或用户。关注企业模型,能够用企业术语定义企业的本质,看到的是企业的结构、处理、组织等。

    系统模型/设计师(Designer)

    有关最终产品的逻辑视图,反映了最终产品的本质规律以及逻辑约束。具有此视角的干系人包括工程师、架构师以及能够将期望所得与现有的物理、技术上的实现联系起来的各种中间人。关注系统模型,能够用更严格的术语定义企业业务,看到的是每项业务处理所要完成的功能。

    技术模型/建造者(Builder)

    反映了在产品构建过程中现有技术的物理约束。具有此视角的干系人包括制造工程师、总承包商以及具有生产最终产品所需的技术能力的组织或人员。关注技术模型,使用技术模型来解决企业业务的信息处理需求。

    详细表述/分包者(Sub-Contractor)

    关于为了达到生产目的而对复杂对象进行分解的详细描述,这些内容在从设计媒介到最终产品媒介的转换中起着非常重要的作用。例如,用于将技术模型中所阐述的技术约束与供应商为所提供的产品联系在一起的产品规格说明。关注详细模型,需要去解决关于特定语言、数据库存储表格及网络状况等具体细节。

    产品/运行中的企业(Functioning Enterprise)

    在1987年的论文(《A framework for information systems architecture》)中并没有这一行的内容,实际上此行的内容也并不在架构描述的范畴的之内,不过为了使得架构Zachman框架对于架构的表述更加完备,这一行最终还是被加了进去。这一行的内容代表了最终产品,是架构在客观现实中的实例体现。例如,对信息系统架构来说,此行的内容就是最终产出的信息系统,同理,对于企业架构来说,这一行所代表的就是运行中的企业本身。简而言之,前面五行的内容是对于客观对象的描述,而这最后一行的内容就是客观对象本身了。

    关注功能模型,也是系统的最终用户,考虑系统能否支持自身的工作。

    2、框架中的列

    数据(What,即什么内容)

    用于表示客观对象的材料组成,即材料清单。对于企业来说,此部分内容就是组成事物模型(Thing Model,之所以将其称为组成事物模型而不是数据模型是因为由于不同的行代表了不同的视角,而仅在设计师所处的第三行才会关注真正信息化意义上的“数据模型”,因而在此才使用“组成事物”来对所有视角在此列中的描述对象进行指代)。

    功能(How,即如何工作)

    用于表示功能和转换行为。对于企业来说,这部分内容就是流程或功能模型等。

    网络(Where,即何处)

    用于表示各组成部件的坐落位置以及相互之间的联通关系。对于企业来说,这部分内容就是物流或网络模型等。

    人(Who,即何人负责)

    用于描述了什么人应该做什么事,例如用户手册和操作说明等。对于企业来说,这部分内容就是人力模型或工作流模型等。

    时间(When,即什么时间)

    用于描述事物发生的时间以及不同事物之间的相对时间关系,例如生命周期和时序图等。对于企业来说,这部分内容就是时间或动态模型等。

    原因(Why,即为什么做)

    用于表示最终结果和意义。对于企业来说,这部分内容就是动机模型等。

    三、使用规则

    1、不增加新的行或列。
    在Zachman框架看来,框架中的六行视角以及六列描述方面构成了系统描述的最基本元语,即为了构建系统而对其架构所做的描述只要能够从六种视角出发,并能为每个视角在六个方面(什么内容(What)、如何工作(How)、何处(Where)、何人负责(Who)、何时(When)和为什么动机(Why))做出解答,那么此架构描述就是完备的,也由此足以成为系统的复杂度管理和变更管理的基础。

    2、不修改行或列的名称或含义。

       在Zachman框架看来,由于本身逻辑框架已经完备,因而修改行或列的标头名称或含义会对整个逻辑框架产生不利的影响。这里需要注意的是,Zachman框架列表中,其行标头和列表头都含有上下两个名称,例如,第一行的标头就具有“范围”和“规划者”两个名称,而第一列也具有“数据”和“什么(What)”这两个称呼。这两种名称系列(用加粗大号字体标明的名称和采用小号斜体字体的名称)代表着Zachman框架的两种使用情境:

    • 通用情景:此种情景下,Zachman框架具有更高的通用性,例如房屋建筑、飞机等。其中各个标头将采用由小号斜体字体标明的名称。
    • 企业特定情景:此种情景下,Zachman框架的目标放诸“企业”这一特定的概念之上,而其中各个标头将采用由加粗大号字体标明的名称。

            需要注意的是,不论是上述哪种使用情境,按照Zachman框架的使用规则,这些标头名称都不能因为实际情况的不同而进行变更。

    3、每一列中的内容都遵从某一通用模型。

    由于每一列都代表了所描述架构的某一个方面,因而处于同一列的各个描述在本质上应符合某种经过高度抽象的元模型:

    • “数据”列(What)应遵从:事物——关系——事物。
    • “功能”列(How)应遵从:流程——输入/输出——流程。
    • “网络”列(Where)应遵从:节点——连接——节点。
    • “人”列(Who)应遵从:人员——工作——人员。
    • “时间”列(When)应遵从:事件——周期——时间。其中,“事件”指代某一时间点,而“周期”代表了一段时间区间。
    • “原因”列(Why)应遵从:结果——方式——结果。其中,“结果”代表了目标状态,而“方式”则用于表示为了达成目标状态而采用的行为。

    4、表格单元中架构描述的详细度与其所在的行无关。

      人们很容易有一种错觉,那就是在同一列中不同行里面架构描述的详细度有一个自上而下越来越详细的趋势,因为好像越是位于上面的行,其所代表的视角就越不关注于最终产品的实现细节,因而其中的架构描述也无需太高的详细度,反之越靠下方的行就需要更高的详细度。从实现的角度来说,这一担心不无道理,不过就架构描述的目标来说,这种详细度自上而下渐渐增高的趋势是有待商榷的。由于框架中的每一行代表了不同的视角,但这并不代表所有的视角都关注于最终产品在实现方面的问题,而正因为每个视角的关注点不同,所以仅从实现细节这个角度来说详细度的差异是有问题的。例如第一行的规划者关注于最终产品的所处的上下文环境,因而对在这一角度所进行的描述来说,其详细度应该根据具备这一视角的干系人的要求而定,而其下各行由于关注点不同,所以他们在描述的详细程度方面不具备可比性。由此我们可以发现,不同行的架构描述是相互独立但又互相联系的,他们之间是转换关系而不是演进关系

    5、不存在可以在不同的表格单元之间共享的元概念元素。

      由于表格中的每行或每列都是代表着某一视角或基本元语,因而由他们组成的各个表格单元中的架构描述也应该是独一无二的,所以不同表格单元之间的架构描述不应该出现共享元概念元素的情况。

    6、不要在对角线方向上对不同的单元格进行直接联系,这样只会增加沟通障碍。

      每一个单元表格只与同行或者同列中位于其上和其下的单元表格之间有着直接关联,如此才能把沟通障碍和变更管理的难度最小化。

    7、Zachman框架逻辑具有通用性和迭代性。

      此框架虽然在企业架构领域名声斐然,不过这并不意味着他只能被应用于这一领域,实际上对于Zachman框架来说,他并不针对于某一具体事物,无论是有形的事物,诸如房屋、飞机等,亦或是抽象的概念实体,例如企业等,都可以是他描述的目标,因而在这一点上其具备普适性,而也正因为这一普适性,其每个单元格中的内容亦可以作为描述目标而被此框架无限迭代描述下去。

    总结:

    Zachman框架从本质上来说是对企业架构描述的一种分类法,其对于如何解决企业信息化发展所面临的问题(系统复杂度管理、业务与信息技术的不协调发展)能够提供如下的帮助:

    • 给出了企业架构内容的描述和分类法,从而可以复杂的系统进行分解描述。
    • 确保每个干系人的每一个关注点被照顾到。
    • 改进每个架构制品使其更加契合目标受众的关注点。
    • 确保业务需求可以被映射到技术实现之上,同时每个技术实现也可以被回溯到业务需求之上。
    • 加强业务人员与信息技术人员的沟通和交流,减免以前因缺乏沟通而导致的无谓的内耗。

    关于Zachman表格有三条建议,相信它们在企业构架的开发中对我们会有帮助。
      第一条建议就是每一个构架材料应该存在于一个方格中,而且只能存在于一个方格中。在一个构架材料放在哪个方格里不应该含糊不清。如果某个构架材料的确不知道应该放在哪个方格中,问题很有可能处在构架材料本身。
      当组织在开发企业构架中开始积累材料的时候,它可以使用Zachman表格解释每个材料的焦点。例如,面向服务构架相关的材料很有可能就放在第三行(从设计着的角度看)。它们一般不会引起商业拥有者的兴趣。
      第二条建议:仅仅只有当所有的表格都填满了的时候,一个构架才能被称为是完整的构架。当所有的方格都填满了时候,整个表格才有足够的材料定义系统。
      只有当每个方格都填满了材料的时候,才有足够的信息描述系统:从每个角色(我们现在可以称之为"利益相关者",Stakeholder)的角度观察系统的每个可能的视角(描述焦点)。所以一个组织可以使用Zachman表格确保企业构架中的所有重要利益相关者之间的讨论都是合适的。
      第三条建议:表格的每列的方格都是彼此相关的。例如,Zachman表格的数据列(第一列)。从商业拥有者的角度,数据就是关于商业的信息。从数据库管理人员的角度,数据就是数据库中的行和列。
      尽管商业拥有者对数据的看法和数据库管理员不同,但它们应该是有关系的。一个人可以遵循商业需求,并且显示出设计的数据就是被需求驱动的。如果有商业需求并没有追踪到数据库设计,那么就得想想商业需求是否与企业构架相符。另一方面,如果数据库设计的元素没有需求与之对应,我们就应该问问自己,在数据库层面是否存在不必要的设计。
      Zachman表格可以从以下五个方面帮助我们开发企业构架:
      确保每个利益相关着能够从描述的焦点考虑。
      通过把每个焦点精简到每个特殊观众涉及的焦点来提升构架材料的质量。
      确保每个商业需求能够追踪到技术实现。
      确保商业方面不会规划出多余没用的功能。
      确保技术组包含在商业组的规划中。
      但是Zachman本身并不是一个完整的解决方案。有太多的问题它都没有描述。例如,Zachman没有给出一步一步构造一个构架的过程。在决定我们将要构建的构架是否是最好的时候,Zachman没有提供更多的信息帮助我们作出决定。就此而言,Zachman也没有给出一种途径展示将来构架的需求。最重要的,从我们的角度,尽管Zachman表格可以帮助组织构架材料,但是它在描述企业复杂性方面几乎什么都没做。

    采用Zachman框架进行IT规划的一般步骤:

    (1)确定组织的愿景和原则

    • 确定IT架构业务、组织与IT系统范围,识别业务驱动力;
    • 确定IT架构愿景和目标;
    • 制定IT架构定义的原则;
    • 识别IT架构相关需求;
    • 业界IT架构最佳实践研究与学习。

    (2)现状描述分析

    • 搜集现有IT系统现状资料;
    • 业务现状分析,识别现有IT系统对业务支撑上存在的问题。
    • 引入最佳实践,并结合企业实际,定义目标IT架构,包括:数据、应用、基础设施架构。
    • 目标架构与现状的差距与改进点分析;
    • 把具体IT需求纳入目标架构框架。
    • 对IT架构的改进点,以及具体需求进行优先级排序。

    (3)制定IT架构的实施计划

    • 确定向目标IT架构迁移的具体实施计划;
    • 确定目标IT架构实施的推行组织。优化

    (4)持续改进IT架构规划过程中,各个环节不断优化;

    • 制定目标IT架构的持续改进计划;
    • 制定IT架构的管理维护机制。
  • 相关阅读:
    day28 粘包, 合法性连接
    day27 网络通信协议, tcp和udp, 缓冲区, subprocess
    day 26 C/S架构, 网络通信流程, 初识socket
    day25 包语法
    Python9-From-CSS-day48
    Python9-前端基础知识-day47
    Python9-MySQL-MySQL-ORM框架-day48
    Python9-MySQL-MySQL存储过程-视图-触发器-函数-day45
    Python9-MySQL-pymysql模块-day44
    Python9-MySQL-Homework-day43
  • 原文地址:https://www.cnblogs.com/kelite/p/3013984.html
Copyright © 2011-2022 走看看