当前位置: 首页 > news >正文

重新思考企业架构

29928ad1bbc0e96962064455709a8fea.gif

信息技术行业许多角色的名字都是从建筑行业借鉴而来的。因此,我们有开发高级设计的“架构师”,依据这些设计进行详细技术实施计划开发的“工程师”。

这些详细的设计交给系统“构建者”执行。扩展这一类比,企业架构师的角色更类似于城市规划师:定义组织的目标,与其他高级管理者合作制定实现这些目标的策略,为系统开发人员指定约束条件,监控进度和测量结果。正如城市规划师使用的方法和度量标准不同于建筑师,企业架构师也必须使用不同于系统架构师的方法和度量标准。

要定义适当的企业架构框架,我们必须了解企业架构的适当目的。企业架构的目的不是设计系统,而是帮助企业实现特定的业务目标。这些目标可能包括通过更有效的广告来提高品牌知名度,通过更好的福利管理来提高员工满意度,或者任何对企业重要的事情。

企业架构相关工作的所有内容都应该有助于实现企业的目标,对企业目标没有帮助的任务是对资源的浪费。我们必须明白,最终构建的系统并不是最终目的,它们只是达到目的的手段。最终目的是实现企业的业务目标,在任何企业架构的相关工作中,必须首先记住这一点。

许多业务带头人都不喜欢企业架构,因为他们认为这是一项致力于构建模型和图表的工作,而这些模型和图表只对构建它们的人有意义。在这里不要将企业架构与建模混淆。模型通常是有用的,但企业架构工作常常为了建模而建模。他们变得更关注于提供建模工具,而不是解决企业的核心问题。

此外,建模工具通常很复杂,并且学习如何使用它们并不容易,大型企业架构的模型可能非常复杂且难以理解。这可能导致“模型构建者”的发展,他们的工作是以建模工具为中心的。任何想使用架构做点什么(比如想了解哪些系统与工资系统交换数据)的人,都必须咨询模型构建者,希望他们的模型能够产生预期的结果。

本文介绍的企业架构方法体现了对这个主题的不同思考方式。虽然不可能消除中等及以上规模现代企业的复杂性,但已经开发了一种定义和管理企业架构的方法,这种方法能够更好地适应企业规模系统开发和集成的复杂性。

243e00c23364914a96b64bf8870dfaff.png

| 1 敏捷实现

大多数企业将企业架构工作视为信息系统架构的扩展,范围从单个系统扩展到企业内的所有系统。在30年前,这似乎是一次自然的转变,当时企业信息系统一般都是大型的、定制的事务,开发是集中管理的,只有大型企业或政府机构才有能力承担这样的工作。

但现如今的信息技术领域已经成熟得多,大量的商业性和开源产品可以直接使用,甚至小团队也可以在短时间内开发实现关键任务的应用程序,大型独立系统已经成为过去。如果试图定义企业中所有系统的实现细节,那么企业架构工作常常会陷入细节的泥沼,失去了敏捷性,而敏捷性对21世纪的组织来说是至关重要的。

信息系统架构的要点是逐步将高级需求分解为具有足够细节的规范,以便软件和系统工程师构建符合这些需求的系统。相比之下,企业架构的重点是帮助企业实现其业务目标,而不是设计或构建信息系统。企业可以使用信息系统来实现某一特定目标,也可以不使用。构建一个或多个信息系统可能有助于企业执行某些业务流程,但这是次要目标—子组织的目标,而不是企业的目标。

要实现任何目标,企业都必须有实现该目标的战略,系统可能有助于该战略的实现,但是任何系统都不能弥补不现实的目标或者缺乏实现该目标的连续战略计划。信息系统的存在是为了帮助人类更有效地处理信息,即使有了当今的先进技术,信息系统也无法做人类做不到的事情(尽管系统也许可以做得更快一些)。如果一个企业没有明确的目标和一个可执行的战略,那么再多的系统设计和实现也无法弥补这一不足。

专注于设计信息系统的企业架构工作将忽略最初的业务目标,而这些业务目标才是进行相关工作的目的。正如“企业架构”这个名称所暗示的,重点是解决整个企业的关注点,而单个系统通常只处理特定子组织的关注点。一个成功的企业架构工作必须始终专注于实现企业的目标。系统架构、设计和实现的具体细节超出了企业架构工作的范围。这些细节是单个系统开发工作的关注点。

| 2 指导企业

那么,如果企业架构将单个系统定义和实现的控制权交给较低级别的工作,那么企业架构师如何指导企业实现其目标呢? 答案是利用一个叫作复杂自适应系统的领域的研究成果。

现在,可以说一个复杂的自适应系统是一个独立实体的集合,其中每个元素都按照它们自己的规则和关注点运行,但是当把这些元素看作一个整体时,它们的功能相互协调,其行为有利于整个组织,并快速适应环境的变化,就好像它们是统一协调的。这里举一个简单的例子来对复杂适应系统进行说明,例如一群鸟,它们没有领导者,但这些鸟作为一个群体移动,看起来像是由一个领导者指挥的,这帮助它们有效避免了威胁,并朝着一个共同的目标移动。

正如没有详细的计划来指导鸟群中的每只鸟飞向何处一样,企业架构不需要指定或记录每个系统是如何实现的。规范和文档需要留给每个系统的架构师来实现。通过从企业架构中消除该级别的指导,企业架构变得更小、更集中、更容易理解。这使得企业架构师能够集中精力监督企业实现其目标的进度,并确保支持这些目标的系统能够在需要时进行互操作和共享数据。

这种企业架构的方法将详细的系统设计和文档委托给更接近实际工作、更熟悉系统预期用户需求的系统实现团队。将这项工作委托给系统实现人员,通过实现更新企业架构的过程,并在进行更改之前获得企业架构师的批准,使他们能够更快地适应不断变化的条件。这种方法更适合当今的敏捷开发实践,并且反映了大多数系统开发工作的实际操作方式。

与传统企业架构相比,以这种方式约束的企业架构更小、更简单。它不试图指定单个系统的实现细节:它指导和约束系统的设计和开发,以确保系统开发工作与企业目标一致并支持企业目标。在大型企业中,这意味着企业架构师必须放弃一定程度的控制,以实现组织的敏捷性。

企业架构规模的缩小并不等同于重要性的降低或对架构准确度需求的减少。相反,企业架构规模缩小了,但是它需要进行更加仔细的定义和约束,管理者可以使用它来管理企业。企业架构成为指导企业成功实现其目标的手段之一。这将企业架构从文档和图表的编译转换为可用于主动管理企业的操作工具。

与其他架构框架相比,这样的企业架构需要更少的构件,并且可以使用简单的建模工具来进行开发。传统的企业架构需要记录每个系统的所有实现细节,需要由团队在专用工具中维护复杂的模型,该团队的工作就是维护模型。这种“模型构建者”成为所有系统开发的核心,因为只有少数人了解模型,所有的更改或添加都需要他们的参与。这就形成了瓶颈,减慢了开发速度并限制了企业的敏捷性。缩小企业架构的范围可以大大减少记录企业架构所需模型的数量和复杂性。虽然这可能不会完全消除模型构建者的角色,但它将模型构建者从定义架构的中心角色中移除,并使企业的管理回归到关注业务目标、实现这些目标的策略和度量进度指标的角色。

| 3 与系统架构的关系

试图将企业架构进行分解,使其包含具体的实现细节,会在对企业层面价值最小的任务上花费大量精力,只有实现团队需要这些细节,而企业管理层不需要。成功的企业架构的关键是记录特定系统对实现每个业务目标的贡献。但是,该系统对目标的贡献(即系统的实现细节)超出了企业架构的范围。实际上,系统实现细节甚至不应该在企业层面直接可见。

解决方案架构应该显式地由企业架构派生,但是这种派生应该是企业和解决方案架构之间唯一的直接联系。企业架构只需定义一个系统,包括该系统对给定业务策略的支持、该系统的输入和输出以及该系统对企业的影响(即它是否执行了外部观察者可以检测到的任何功能)。任何额外的细节都是多余的,并且在每次更新单个系统时都可能过时。花费精力维护更详细的映射很少会带来等价的好处。

《现代企业架构:基于复杂适应系统的架构模式》一书中解释了企业架构应该构建什么,而不是如何建模(尽管我提供了一些示例)。企业架构应该如何构建取决于企业特定的需求和目标。然而,有一个重要的因素必须考虑,特别是对于大型企业:架构必须作为正式的模型进行记录,这意味着架构是一个可以由计算机分析和评估的数学表示。

像Visio这样的绘图工具可以生成漂亮的图片,但它们是图片,而不是模型。必须使用适当的架构工具,如Sparx Enterprise Architect、NoMagic的MagicDraw或类似的工具。如果工具支持行业标准建模语言和数据交换格式(使用非标准建模语言和数据交换格式会导致供应商锁定,这是有风险的),那么使用哪一个工具都可以。

避免使用图表工具来支持架构工具并不意味着模型是不可见的。可视化建模语言,如系统建模语言(SysML)是构建在支持自动处理和评估的数学基础上的。这是至关重要的,这使得架构不仅仅是书架上一堆满是灰尘的文件。通过使企业架构成为正式的模型,我们可以利用自动化处理能力。

手动比较不同系统的图和文档以理解它们的关系并衡量它们是否符合企业的指导方针,是一项困难而耗时的任务。使用正式模型就可以应用自动化工具将解决方案架构模型与企业模型进行比较,还可以更容易地将企业活动的结果与企业架构中记录的目标进行比较。这将企业架构从一堆晦涩难懂的文件转变为一个有价值的、积极的管理工具。

| 小结

目前使用的大多数企业架构框架都源于Zachman框架,这种方法在30多年前就已经被首次描述过。从那时起,系统变得更加复杂和相互关联,软件开发实践已经从构建和部署过程演变为在操作过程中不断更新软件的过程。

这些系统复杂性和开发实践的变化暴露了传统企业架构框架的弱点。传统框架的产品既复杂又笨拙。企业架构不是作为操作管理工具,而是常常成为阻碍企业敏捷性的瓶颈。因此,许多企业认为企业架构已经失败了。

传统的企业架构框架侧重于开发一个或多个系统,本书描述了一个专注于实现业务目标的新框架,系统开发被降级到适当的次要角色,作为达到目的的手段,而不是目的本身。

采用这种新方法能够将企业架构从静态的、以文档为中心的资源使用者转变为活动的、可操作的管理工具。将企业架构的重点从定义系统细节转变为实现业务目标,将企业架构置于其适当的位置上,作为帮助实现业务目标的手段。

| 推荐阅读

想更多了解关于企业架构不同思考方式和企业架构不同建模方法,欢迎阅读《现代企业架构:基于复杂适应系统的架构模式》一书。

75dd916c9ef45c2ca093e26a4fbdc656.pnga321b749983dd080abe7005df290cfa5.png

大多数企业架构倡导使用现有的系统架构框架,如Zachman或The Open Group架构框架,但它们对于现代社会中基于敏捷开发的企业架构来说并不合适。本书中的新方法是作者结合在大型企业架构开发中的工作经验,基于对复杂适应系统和涌现行为的研究而提出的,它能够通过一些简单的规则产生复杂和高效的企业行为。


简化企业架构的构建和维护工作,可以降低构建和维护架构的成本,并将这些资源释放出来用于追求更高的目标。系统实现人员可以快速适应不断变化的用户需求,无须担心烦琐的企业建模任务。架构从静态模型和文档转化为可以用于主动管理企业资源的运营框架,能够更好地实现业务目标。企业架构师可以不再专注于构建和维护模型,而是专注于实现业务目标。

通过阅读本书,你将学习:

  • 通过消除大多数企业级模型,重新将企业架构的重点放在业务需求上。

  • 将任务委派给负责系统实现的开发团队。

  • 记录业务目标,制定实现这些目标的策略,并衡量这些目标的进展情况。

  • 衡量结果并判断企业架构是否正在实现其目标。

  • 利用企业架构中有效的建模技术。

79e16d63b198909a3b4450d6a0d78c6f.gif

更多精彩回顾

书讯 | 4月书讯(上)|  上新了,华章

书讯 | 4月书讯(下)| 上新了,华章

资讯 | 视频时代的大数据:问题、挑战与解决方案

书单 | 金三银四求职季,十道腾讯算法真题解析!

干货 | TypeScript 中的“类型”到底是个啥?

收藏 | 终于有人把Scrapy爬虫框架讲明白了

上新 | NLP大牛菲利普•科恩机器翻译权威著作

赠书 | 【第99期】边缘计算比云计算强在哪里?终于有人讲明白了

83d1d8eccb221e8e7d9781412dabe52b.gif

12a3b7351f4cc9222752a3895d5da2eb.gif

点击阅读全文购买

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 概率为何反直觉?
  • 手把手教你用Pandas 合并两行为一行并调整行顺序
  • C++20 用微软的提案进入协程时代!
  • 构建系统软件三步走,这些书你不可错过!
  • 数字经济下半场中,金融企业应该如何进行数字化经营呢?
  • ClickHouse为啥在字节跳动能这么火?
  • 计算机如何大规模协作?
  • 终于有人把元数据讲明白了
  • Go语言精进之路:你知道什么是Go语言编程思维吗?
  • Java冷启动慢?不存在的!
  • 分布式系统一致性的本质,看这篇秒懂
  • 如何应对数字化转型这个大命题,这些书给你答案
  • 俩人同样写代码,我拿七千他咋五万八...
  • 通往Electron高手之路
  • 终于有人把隐私计算讲明白了
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • CentOS从零开始部署Nodejs项目
  • ECS应用管理最佳实践
  • ES6--对象的扩展
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • leetcode388. Longest Absolute File Path
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • SQLServer之创建数据库快照
  • 从重复到重用
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 记一次用 NodeJs 实现模拟登录的思路
  • 力扣(LeetCode)965
  • 马上搞懂 GeoJSON
  • 如何在 Tornado 中实现 Middleware
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 手写双向链表LinkedList的几个常用功能
  • 用jquery写贪吃蛇
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 通过调用文摘列表API获取文摘
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • "无招胜有招"nbsp;史上最全的互…
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #{}和${}的区别?
  • #100天计划# 2013年9月29日
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • #宝哥教你#查看jquery绑定的事件函数
  • (39)STM32——FLASH闪存
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (六)DockerCompose安装与配置
  • (十六)串口UART
  • (五)c52学习之旅-静态数码管
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转)linux下的时间函数使用
  • (转)重识new
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET 快速重构概要1