1、企业架构描述语言ArchiMate v1.01. 架构语言 ArchiMate 架构视角(Viewpoint)分类框架实现和维护一个一致的架构是一件非常复杂的任务,因为架构会涉及到很多不同背景的人员,他们使用不同的标记。为了处理这种复杂性,研究人员开始关注如何为不同的涉众定义清晰的架构描述,本章介绍一下架构视角和视图的一些概念,在大家理解了这些基本概念之后,下一章我将会对 ArchiMate 中的基本视角进行介绍。2. 架构描述概念模型大家都知道的有 4+1 视图模型,业界还有其他一些软件体系结构表示方法,如 ISO 的一个标准 RM-ODP, 还有 MDA 中的 Platform-Indep
2、endent Model(PIM) and Platform-Specific Model (PSM),从这些模型来看,我们可以推断,在软件架构方面,通过视角(ViewPoint)和架构视图进行架构的描述已经是被大家接受的一个概念。在 企业架 构 如何描述企业架构中对视角和视图也进行了一些描述。下图为架构描述的概念模型,图中列出了主要的一些概念: 系统(System):一套满足特定功能的组件 架构(Architecture):系统的基本组织结构,包含组件以及它们之间的关系和环境,架构将指导系统的设计和演进 架构描述(Architecture Description):一套描述架构的工件。在TO
3、GAF 中,架构视图是架构描述的主要工件。 涉众(Stakeholder):在系统中承担角色,或者关注系统某方面的人,例如用户、开发人员、管理人员等。不同涉众有不同的关注点,涉众可以是个人、团队或者组织。 关注点(Concern): 涉众对系统感兴趣的地方,是决定系统是否被接受的重要因素。关注点可以是系统功能、开发、操作、性能、安全等各个方面。 视角(Viewpoint):定义企业架构表现的抽象模型,每个模型针对的是特定类型涉众的特定关注点。 视图(View):视角的一个具体表现,它是有目的的传递架构信息的一种很好的方法。3. 架构视角分类框架架构视角分类框架主要是围绕视角、视图和涉众进行。在
4、开始讲了架构描述的复杂性来自于不同的涉众要求,ArchiMate 是一个灵活的架构描述语言,它提倡架构师和其他涉众可以定义自己的企业架构视图,它介绍了一个对视角和视图的定义和分类框架。这个框架基于两个维度:目的( purpose)和内容( content)。下图把目的和内容维度和示例涉众在一张图上表示出来如下,下一 blog 中大家会常看到这个图: 目的( purpose)1. 设计(Designing): 支持架构师和设计师从概要设计到详细设计,UML就是常用的一种设计描述语言2. 决策(Deciding): 帮助管理者作出决策3. 通知(Informing): 为了获得认可、同意,与涉众沟
5、通企业架构 内容( content)1. 详细(Details): 考虑 ArchiMate 框架的一层或者一层的一个方面2. 一致(Coherence): 考虑 ArchiMate 框架的多层或多个方面,支持负责IT 服务和业务流程的中层管理员3. 概括(Overview): 考虑 ArchiMate 框架的多层和多个方面,可以支持CEOs 和 CIOs 进行决策4. 分类示例 目的典型涉众 目的 示例Designing架构师、软件开发人员、业务流程设计人员navigate, design, support design decisions, compare alternativesUML、
6、BPMN 、flowchart、ERDeciding 高层管理者 决策 cross-reference table, landscape map, list, reportInforming职工、客户 讲解、达成一致和认同animation, cartoon, process illustration, chart 内容典型涉众 目的 示例Details 软件工程师、流程负责人设计、管理 UML class diagram, BPMN process diagramCoherence中层管理者 分析依赖性 views expressing relations like “use”, “real
7、ize”, and “assign”Overview 企业架构师、高层管理者变更管理 landscape map5. 架构语 言 ArchiMate 语言结构(Language Structure) 在 ArchiMate 开篇:企业架构语言 ArchiMate 介绍中对企业架构语言ArchiMate 进行了总体介绍,本篇将介绍一下 ArchiMate 的语言结构。6. 元模型级别 知道 OO 的都知道,任何东西都是对象,在元模型的语言最抽象级别就是对象(Object)和关系(Relation) 对于企业架构来说,重要的概念就是产品(业务流程)和实现(应用) 开发架构时,需要对特定领域进行描述
8、,比如流程图、领域模型图等7. 核心概念区分内部和外部概念,有点类似 SOA 的架构概念 外部是暴露给客户的产品和服务,如 Service 和 Interface 内部是具体行为和相关结构元素8. 协作与交互(Collaboration and Interaction) 协助包含多个结构元素 交互是一种行为9. 关系(Relationships)10. The ArchiMate FrameworkArchiMate 是一种集成多种架构的一种可视化业务分析模型语言,它从下图业务、应用和技术三个层次(Layer),对象、行为和主体三个方面(Aspect)以及产品、组织、流程、信息、数据、应用、技
9、术领域(Domain)来进行描述:1. 业务层( Business) :提供对外部客户的产品和服务 ,这些服务由组织内的业务角色通过业务流程来实现 2. 应用层( Application) :支持业务服务的应用3. 技术层(Technology):通过硬件和软件的交互来运行应用程序除了以上这些核心方面之外,还有其它一些重要的领域概念,如:目标(Goals)、安全 (Security)、治理(Governance)、费用(Costs)、性能( Performance)、 时间(Timing)、计划和演进(Planning and evolution)等。11. 架构语言 ArchiMate 业务
10、层(Business Layer) 在 架构语言 ArchiMate 语言结构(Language Structure)中对语言结构进行了介绍,最后列出下面的 ArchiMate 框架图:业务、应用和技术三个层次(Layer),对象、行为和主体三个方面(Aspect),本篇介绍 一下ArchiMate 在业务层的概念、描述和图例。12. 业务层总体说明概念 描述 图例业务参与者Business actor一个有能力执行行为的组织实体业务角色Business role执行特定行为的一个组织分工业务协作角色Business collaboration两个或多个角色(临时)组成的一个协作角色业务接口B
11、usiness interface业务角色与系统的连接方式业务对象Business object一个信息单元概念 描述 图例业务流程Business process表示包含更多小流程/功能的一个工作流或者价值链,一般有一个或多个清晰的开始和结束。业务功能Business function提供对一个或多个业务流程有用的功能。它是基于行为来分组的,如需要的技能、能力、资源等,有时叫它为业务能力( business capability),业务功能由单一角色来执行。业务交互Business interaction由两个或多个角色交互的行为单元业务事件Business event触发流程发生的事件业务
12、服务Business service外部可见得功能单元展现Representation业务对象承载的信息的被理解的方式含义Meaning在特定环境下业务对象展现的意义价值Value为产品或服务增值的地方产品Product具 有契约、协议的一套提供给客户的服务集合。契约Contract正式或非正式的协议,规定产品关联的责任和义务13. 业务层元模型(Business Layer Metamodel)下图为业务层的元模型,左边绿色为对象,中间黄色为行为,右边为主体。它们分别属于不同的概念(结构概念、行为概念和信息概念)之下,下面会对这些概念分别进行详细介绍。14. 结构概念(Structural
13、Concepts) Active Subject(主体):执行业务流程和功能的参与者或角色(业务角色(Role)可以是一个人(Actor),也可以是一组人(Collaboration)和机构单元)和接口(同样的一个服务可以使用不同的接口,如 mail, 电话或者网络等) Passive Objects(对象): 被业务流程和功能使用的对象(领域内的重要概念)以及相关静态信息。15. 业务参与者(Business Actor) 业务参与者是有能力执行行为的一个组织实体,它的名 称应该为一个名词。业务参与者有人,部门或者业务单元,一个业务参与者属于一个或多个角色来执行行为。 图例 示例ArchiS
14、urance 公司由两个部门组成,行李保险部门和旅行保险部门。旅 行保险部门属于旅行保险销售员角色,这个角色可以执行邀请保险流程。这个流程提供了一个可以由接口来访问的一个服务(提供旅游保险服务)。16. 业务角色(Business Role)执行特定行为的一个组织分工,它的名称应该为一个名 词。业务角色根据责任和技能来执行或使用业务流程或业务功能,一个业务参与者属于业务角色来执行相应的行为。 图例 示例行李保险销售员和旅行保险销售员两个业务角色合为一个协作角色来使用一个合并保 险销售服务17. 业务协作角色(Business Collaboration)两个或多个角色(临时)组成的一个协作角色
15、,它的名称应该为一个名词或者不命名。协作只是用在一个特定的交互关联的角色上,不像多个角色组成的部门一样,业务协作没有一个永久的状态,我们可以把业务协作看成是一个“虚拟角色”,它由多个业务角色组成,执行一个或多个业务交互(business interaction)。 图例 示例销售一个保险产品时经常要涉及到销售部门和特定保险类型的部门协作18. 业务接口(Business Interface)业务角色与系统的连接方式,它的名称应该为一个名词。业务接口表明一个业务服务的环境暴露方式,同一个业务服务可以使用不同接口样式,如 email、网络等。业务接口可以被业务角色使用来调用服务。 图例 示例行李保
16、险销售员通过 Webform 来调用行李报销销售服务,医疗保险和行李保险 的协作角色通过 call center 来调用组合保险销售服务19. 业务对象(Business Object)一个信息单元,它的名称应该为一个名词。业务对象是领域中重要的信息或者概念元素,业务对象不能触发和执行流程。业务流程、功能、业务交互、业务事件和业务服务 可以访问(生成、读取、写)业务对象。业务对象有关联、聚合、实现等关系。业务对象可以通过一个展现(representation )或一个应用层的数据对象(data object)来实现。20. 架构语言 ArchiMate 应用层(Application Laye
17、r) 在 架构语言 ArchiMate 语言结构(Language Structure)中对语言结构进行了介绍,最后列出下面的 ArchiMate 框架图:业务、应用和技术三个层次(Layer),对象、行为和主体三个方面(Aspect),在 架构 语言 ArchiMate 业务层(Business Layer)中介绍了业务层,本篇将继续介绍一下 ArchiMate在应用层的概念、描述和图例。21. 应用层(Application Layer)总体说明概念 描述 图例应用组件Application component通过一套接口暴露功能的模块化、可部署、可替换的系统的一部分概念 描述 图例应用协
18、作组件Application collaboration两个或多个组件临时组织成协作组件来协同执行一部分功能应用接口Application interface组件连接环境的应用接口,包含提供接口以及要求接口。数据对象Data object适合自动流程处理的一致的、自包含的信息块应用功能Application function一组一致的内部行为应用交互Application interaction由应用协作组件执行的交互应用服务Application service通过定义良好的接口由一个或多个组件提供的外部可见功能22. 应用层元模型(Application Layer Metamodel)2
19、3. 结构概念(Structural Concepts)24. 应用组件(Application Component)通过一套接口暴露功能的模块化、可部署、可替换的系统的一部分。1. 应用组件是一个自包含的功能单元,它可以独立部署、重用和替换,它执行一个或多个应用功能。2. 只能通过应用接口(application interfaces)来访问应用组件。 3. 一个应用组件可以与一个或多个应用功能关联,它提供一个或多个应用接口暴露功能。 图例 示例财务应用组件(financial application)包含两个子协作应用组件:accounting 和 billing25. 应用协作组件(Ap
20、plication Collaboration)两个或多个组件临时组织成协作组件来协同执行一部分 功能。1. 应用协作组件是应用组件的一个子类型组件,它聚合两个或更多的应用组件2. 它可以与一个或多个应用接口或应用交互关联。 图例 示例Accounting 和 Billing 两个应用组件协作为一个 transaction administration组件,这个协作组件执行应用交互 Administrate transactions。26. 应用接口(Application Interface)组件连接环境的应用接口,包含提供接口以及要求接 口。接口包含两种类型的接口:1. 提供接口(prov
21、ided interface):应用接口指明外部组件如何访问一个组件的功能2. 要求接口(required interface):为了实现组件功能,需要由外部提供给组件本身的功能接口应用接口就像应用组件的一种契约,它规定了组件对外部环境提供的功能,可能包含参数、执行前后条件和数据格式等。 图例 示例组件 Accounting提供了接口 Transaction data exchange,而组件 Billing需要外部提供这个接口供自身调用27. 数据对象(Data Object)适合自动流程处理的一致的、自包含的信息块。1. 数据对象可以在交互过程中用来传递信息和沟通,也可以是应用服务使用和生
22、成出来的2. 它是一个具有业务含义而不只是应用级别的信息。典型的数据对象如客户记录或者一个保单。数据对象可以实现一个业务对象,而自身又可以由工件 (artifact)来实现。3. 数据对象之间有关联、聚合、组合、继承等关系。 图例 示例事物处理服务使用事物数据对象来进行交互28. 行为概念(Behavioral Concepts)应用层的行为概念有点类似于业务层概念,也区分内部行为和外部行为。应用服务( application service)是一个外部可见的功能单元,由一个或多个组件通过定义好的接口暴露出来。应用功能( application function)描述组件需要实现一个或多个应用
23、服务的内部行为。29. 应用功能(Application Function)一组一致的内部行为,我觉得以前写的功能规范需求说明书的大功能就有点类似这个。名称最好为正在进行时动词,如 accounting1. 应用功能对外部是不可见的,如果需要暴露给外部,则必须通过一个或多个服务提供给外界。2. 应用功能可以实现应用服务,也可以使用其他应用功能提供的应用服务。3. 应用功能可以访问数据对象。4. 应用组件可以与应用功能关联,表示应用组件执行这个应用功能 图例 示例Financial application提供【财务管理】功能,这个 功能由两个子功能组成:Accounting 和 Billing3
24、0. 应用交互(Application Interaction)由应用协作组件执行的交互。名称最好为动词。1. 可以实现应用服务2. 由应用协作组件执行 图例 示例协作组件 administrate transactions 执行 administratre transactions 应用交互31. 应用服务(Application Service)通过定义良好的接口由一个或多个组件提供的外部可见 功能。1. 由一个或多个应用功能实现2. 它需要、使用或者产生数据对象3. 应用服务从外界环境角度来看需要有明确含义,提供的功能对用户有价值。4. 应用服务可以被业务流程、业务功能、业务交互或者应用
25、功能使用5. 应用接口可以关联一个应用服务 图例 示例Transaction processing 服务由 Accounting功 能实现,又被 Billing 功能使用,这个服务可以通过 application interface 接口访问。32. 架构语言 ArchiMate 技术层(Technology Layer) 在 架构语言 ArchiMate 语言结构(Language Structure)中对语言结构进行了介绍,最后列出下面的 ArchiMate 框架图:业务、应用和技术三个层次(Layer),对象、行为和主体三个方面(Aspect),在 架构语言 ArchiMate 应用层(
26、Application Layer)中介绍了应用层概念,本篇将继续介绍一下 ArchiMate 在技术层的概念、描述和图例。33. 技术层(Technology Layer)总体说明概念 描述 图例节点Node部署工件的可执行计算逻辑资源设备Device部署工件的可执行计算物理资源网络Network两个或多个设备间的物理沟通媒介 通信路径Communication path联接两个或多个节点的连接点,通过这个路径能够交互信息技术设施接口Infrastructure interface另外一个节点或者应用组件访问节点提供的功能的接口系统软件System software组件和对象部署的特定软件执
27、行环境 基础设施服务Infrastructure service由一个或多个节点,通过定义好的接口,外部可见的功能的单元工件Artifact软件开发过程、部署或系统操作过程中使用或者产生的物理信息工作单元34. 技术层元模型(Technology Layer Metamodel)35. 结构概念(Structural Concepts)36. 节点(Node)部署工件的可执行计算逻辑资源1. 结构概念中主要的是节点( node),它与 UML 2.0 的 node 概念一样。2. 节点是执行和处理工件的活动处理元素,它是组件和数据对象的展现,如应用服务器(application servers
28、),数据库服务器(database servers)或者客户端(client workstations)3. 它们可以由表示物理设备和工件执行环境等子节点组成4. 节点能通过通信路径连接起来5. 工件可以与节点关联,如部署在节点上 图例 示例Application Server 节点包含一个 Sun Blade 设备和一个 JBoss J2EE Server application 系统软件(System software)37. 设备(Device)部署工件的可执行计算物理资源。名称最好为硬件类型的名词,如 IBM System zmainframe1. 设备(device)是节点(node
29、)的继承元素,它表示拥有处理能力的物理资源2. 通常用来对硬件建模,如主机(mainframes)、PCs 或者路由器3. 通常与系统软件一起使用4. 设备能够由子设备组成5. 设备能够通过网路相连,工件能够与设备、系统软件关联6. 一个节点(node)可以包含一个或多个设备(devices) 图例 示例DB2 部署在一台 IBM Systems z设 备中38. 基础设施接口(Infrastructure Interface)另外一个节点或者应用组件访问节点提供的功能的接口1. 指定节点的基础设施服务如何被其他节点访问(provided interface)2. 需要环境的其他节点提供什么服
30、务(required interface) 图例 示例Sybase 系统软件提供 Sybase Open Client 基础设施接口供外部使用 39. 网络(Network)两个或多个设备间的物理沟通媒介1. 网络代表一种物理的沟通基础设施,它可以由一个或多个有线或无线网络连接起来2. 网络有带宽和响应时间等属性3. 网络连接两个或多个设备,它实现了一个或多个通迅路径4. 网络可以包含子网络 图例 示例100 Mb/s 的局域网连接一台主机和一个 PC 机40. 通讯路径(Communication Path)联接两个或多个节点的连接点,通过这个路径能够交互信息1. 一个通讯路径由一个或多个网
31、路实现2. 通讯路径是原子的(atomic) 图例 示例在 Application Server 和 Client 之间通过 message queuing 通讯路径传递信息41. 行为概念(Behavioral Concepts)42. 基础设施服务(Infrastructure Service)由一个或多个节点,通过定义好的接口,外部可见的功能的单元1. 暴露一个节点的功能,外部环境通过基础设施接口(infrastructure interfaces)进行访问2. 可以要求、使用和产生工件3. 典型的基础设施服务有 messaging、storage、naming 和 directory
32、services 图例 示例Websphere MQ 系统软件实现了一个 Messaging service 服务43. 系统软件(System Software)组件和对象部署的特定软件执行环境1. 系统软件是节点的一个继承类,用来对工件运行的软件环境建模2. 可以是一个操作系统,一个 J2EE 应用服务器,或者一个 CORBA、数据库系统、工作流引擎或者一个 ERP、CRM 系统、中间件等 图例 示例DB2 系统软件部署在一台 OS/390 主机中44. 信息概念(Informational Concepts)45. Artifact软件开发过程、部署或系统操作过程中使用或者产生的物理信息
33、工作单元。它的名称可以带文件后缀名 工件代表物理存在的具体展现元素,如元文件、可执行程序、脚本、数据表、消息、文档等 工件可以部属在一个节点上 一个应用组件可以由一个或多个工件实现 图例 示例工件 Risk management EJB部属在一台 J2EE 应用服务器 上46. 架构语 言 ArchiMate 关系(Relationships) 在 架构语言 ArchiMate 语言结构(Language Structure)中对语言结构进行了介绍,最后列出下面的 ArchiMate 框架图:业务、应用和技术三个层次(Layer),对象、行为和主体三个方面(Aspect),在 架构语言 ArchiMate 业务层(Business Layer)、 架构 语言 ArchiMate 应用层(Application Layer)、 架 构语言 ArchiMate 技术层(Technology Layer)中分别介绍了这三层的概念,在之前的介绍中都出 现过各个元素间的关系,本篇将专门介绍一下 ArchiMate 在这些层次中使用到的关系。