Leo赠书活动-24期 【三大层次学习企业架构框架TOGAF】文末送书

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉
🍎个人主页:Leo的博客
💞当前专栏: 赠书活动专栏
✨特色专栏: MySQL学习
🥭本文内容: Leo赠书活动-24期 【三大层次学习企业架构框架TOGAF】文末送书
📚个人知识库: Leo知识库,欢迎大家访问

目录

    • 1. 前言
    • 2. 掌握TOGAF的三个层次
    • 3. 层次1:怎么学?
    • 4. 层次2:怎么用?
    • 5. 层次3:怎么思?
    • 6. 结束语
    • 7. 直播推荐
    • 8. 总结
    • 9. 🥇赠书活动规则

1. 前言

对于一名架构师来讲,如果说编程语言是知识库层次中的入门石,那么企业架构框架则相当于知识库层次中的金字塔尖。如果想成长为企业级的架构师,企业架构框架是必须要攀登的高塔。

目前国内绝大多数企业采用TOGAF标准,因此我们的讨论主要围绕TOGAF展开,涉及主流版本9.1和9.2。在这个过程中,笔者还会广泛运用摩天轮学习法,以便更清晰地呈现相关内容。

在本文中,笔者将首先讨论企业架构框架TOGAF的学习方法。目前,关于TOGAF的学习材料主要以官方手册为主,网上的资料大多不成体系。然而,官方手册本身存在几个较大缺点可能影响学习质量,以下是笔者总结出来的几个主要缺点:

  1. 作为企业级的架构框架,与企业、企业战略、企业愿景、业务战略等都有很多关联。此外,还有一个重要概念叫做无边界信息流,它源自于无边界组织。这些作为与TOGAF密切相关的外部环境因素,在TOGAF官方手册中仅仅轻描淡写地提及或者根本不提,这会给理解TOGAF带来困惑。例如,如果不了解企业战略和愿景,就很难理解架构愿景;不理解无边界组织就很难理解无边界信息流,同时也难以领会企业基于能力的规划、业务能力、业务价值、业务功能,以及企业为什么要采用SOA、微服务等架构。总之,在TOGAF官方手册中省略了大量关键外部环境知识,而这些知识对于正确理解TOGAF却具有重要价值;

  2. TOGAF官方手册在内容组织上存在不够完善的地方,导致读者难以形成对TOGAF整体性的理解。实际上,在详细介绍TOGAF核心ADM方法之前,应该先对TOGAF进行一个相对全面的概述。尽管有些读者可能认为目前TOGAF标准结构中的六大部分已经提供了概述,但其实这仅仅是技术视角下的整合,并非从企业或架构视角出发进行的整合。因此,在阅读TOGAF手册时,会让人感觉内容比较零散,难以形成一个统一而完整的认知框架;

  3. TOGAF中的核心ADM方法本身是一个具体的指导流程,TOGAF中也花了很大的篇幅来进行介绍。但是,存在的最大问题是学完之后仍然不会用。这里面最主要的原因在于ADM中将太多东西糅杂在一起,没有按照不同场景进行分层或分类。举个简单的例子,在ADM中的业务架构阶段,其中建模可以包括价值流、结构化分析、用例分析、过程建模等方式,这些不同的方式实际上适用于不同的项目的规模或层次。因此,TOGAF在这方面存在问题是内容涵盖太广泛,反而让人难以聚焦;

  4. 初次接触TOGAF时,有人可能觉得它内容繁杂,文字也较为正式晦涩,因此很多人选择放弃学习或者干脆不去了解。然而真实情况是,TOGAF中蕴含着深邃博大的思想。比如说,对于架构而言,其本质在于解决现实世界或系统的复杂性问题。在TOGAF中就明确提到了一些应对复杂性的通用方法,比如分层、迭代、架构连续性、能力增量、模式、互操作性和分区等。总体来说,TOGAF实际上是一个蕴藏着许多重要架构思想的宝库。如果TOGAF手册能够更好地提炼和升华这些思想,将会给读者带来更大的价值。

那么,TOGAF到底应该如何学呢?接下来,首先整体介绍一下学习TOGAF的三个层次。然后,对每个层次的主要内容进行简要讲解。

2. 掌握TOGAF的三个层次

上述TOGAF官方手册的四个缺点实际上可以归纳为三类问题。第一类是如何学习TOGAF,对应于前面提到的问题1和问题2。

第二类是如何应用TOGAF,对应于前面提到的问题3。第三类则是如何思考TOGAF,对应于前面提到的问题4。

实际上,这三大类问题恰好对应着学习TOGAF的三个主要层次,具体可参见下图所示。

图片

第一层是“怎么学”?其主要目标是“知识为我所知”,即寻找到好的学习方法或途径,全面理解并掌握TOGAF体系的知识。

**第二层是“怎么用”?**其主要目标是是“知识为我所用”,即不仅能够掌握知识,并且能够根据不同的环境灵活地组合运用。

第三层是“怎么思”?其主要目标是“思想为我所用”。即不仅能将TOGAF知识活灵活用,并且能将其背后蕴含的思想提炼出来,应用于架构设计等其他场景中。

如上所述,这三个层次是一个逐步递进的关系。著名数学家华罗庚曾说过:“先把书读厚,再把书读薄”,这恰好对应着三个层次的递进过程。

首先,第一个层次**“怎么学”类似于“先把书读厚”**的过程。在这一阶段,不仅需要学习TOGAF理论本身的内容,还需要通过大量外部环境知识的学习来全面理解和掌握TOGAF。

其次,第二个层次**“怎么用”和第三个层次“怎么思”则都类似于“再把书读薄”**的过程。

只是相较而言,“怎么用”要求能够在已经掌握知识的基础上提炼出一些通用规则或模式,并在特定环境中灵活组合运用。

而“怎么思”则要求更高一些,要求在“会用”的基础之上,再抽象出一些通用的思维方式出来,并扩展到更广泛的应用场景。

在本篇文章的下面部分,将简要介绍一下三个层次的内容结构框架。

3. 层次1:怎么学?

关于目前TOGAF官方手册的组织方式和问题,在本篇中将略过不提,笔者将在后续系列文章中进行具体介绍。

在“怎么学”部分,大致的内容框架如下图所示,类似于“剥洋葱”的过程,从企业的外部环境开始逐层剥开,最终再深入讲解TOGAF。

图片

从上图中可以发现,企业架构框架TOGAF的直接外部环境就是企业。因此,可以将学习企业架构框架TOGAF的过程分成两大部分:企业和企业架构框架TOGAF。

第一部分先讲企业,这部分又分成三块内容来进行阐述。

**(1)企业外部环境:**将企业视为一个黑盒,并以企业的“有边界组织”到“无边界组织”的演变为轴,探讨无边界组织的含义,最后延伸介绍无边界信息流。

**(2)企业边界:**从某种意义上来讲,企业战略的本质可以理解为是将外部环境与企业内部能力进行匹配的过程。因此,这一部分主要讲解企业战略,包括企业战略的十大学派、三大层次,以及与愿景、使命、文化的关系等。

**(3)企业内部:**即企业通常为了实施战略,内部是如何组织的。在此过程中,会逐步介绍价值系统、价值链、核心流程、组织结构等内容。

**第二部分开始讲企业架构框架TOGAF,**这部分也大致分为三块内容来进行阐述。

**(1)TOGAF的整体性概述:**在这部分内容中,会首先介绍TOGAF官方手册的内容组织方式及存在的主要问题。

针对已有问题,通过构建一个“双飞轮模型”来重新组织内容,如下图所示。

图片

这里需要提醒一下,上图中的组织和工具,其涵盖的范围比TOGAF官方手册中提到的概念要大。

大致来讲,TOGAF官方手册中第二部分(架构开发方法)属于上图中的方法部分;官方手册中的第三(ADM指南和技术)、第四(架构内容框架)和第五部分(企业连续统一体和工具)大体划分到上图中的工具部分;最后,官方手册中的第六部分(架构能力框架)划分到组织部分。

此外,在这一部分中,还会通过多个层次元模型的讲解,以对TOGAF整体有一个清晰的整体性认识。

**(2)TOGAF核心ADM方法介绍:**这部分内容相比TOGAF官方手册中的介绍方式主要有两个区别。

第一个区别是ADM每个阶段的步骤会统一按照摩天轮方法中的目标、环境(含输入和输出)、结构和过程的方式来进行,这样会更加简洁清晰。

**第二个区别是在讲ADM每一个阶段时,会将TOGAF官方手册中二、三、四部分的相关内容一并讲解。**因为这些部分的主要内容已经分解到“双飞轮模型”中的组织和工具的结构中。因此,在介绍ADM的每一个阶段时,会一并介绍方法与组织和工具部分之间的交互。在这种方式下,内容不会像原来那样存在割裂感,而且一个阶段会将所有相关内容都囊括在内。

**(3)TOGAF其他内容专题介绍:**比如架构治理、连续统一体等,这些内容在上面一、二块内容中并没有完全覆盖。

通过以上对第一个层次内容的学习,目标是让读者能够清晰地理解并且掌握TOGAF。

4. 层次2:怎么用?

学习TOGAF的一个主要目标是为了能够用于实际架构实践当中。上面提过,TOGAF的核心方法ADM都是将很多内容糅杂在一起全部呈现出来,让读者自己去从中挑选合适的部分。

这种难度主要在于两个地方:一是需要对业务架构、应用架构、数据架构和技术架构等相关方法论非常熟悉,这样才能挑选出适合自身场景的技术;二是各个阶段挑选的部分还需要能够保持前后的连贯一致性。

因此,在“怎么用”的第一部分,笔者将首先对TOGAF核心方法ADM进行一些分析探讨,主要包括两部分内容。

一是探讨企业架构,以及ADM方法中涉及的业务架构、数据架构、应用架构和技术架构的本质是什么。

**二是探讨ADM方法中业务架构、数据架构、应用架构和技术架构中隐含的方法论有哪些?**尤其是业务架构部分,由于业务架构指导数据架构和应用架构的实现,业务架构的方法论是最重要的。

接着,在“怎么用”的第二部分,笔者将详细讲解ADM方法在实际架构实践中的应用。如TOGAF中所说企业架构本身是分层的,如下图所示。

图片

因此,在这部分中,首先将从企业架构整体层面介绍ADM方法的应用。其次,再分别介绍ADM方法在战略架构、分部架构和能力架构三大层次上的应用。在不同层次的架构中,ADM方法每个阶段所要做的工作也有较大差异。

在讲解企业架构整体、战略架构、分部架构和能力架构各个部分内容时,我们也将采用摩天轮学习法中的四要素来进行,如下图所示。

图片

首先,介绍该架构所处的环境,随后介绍该架构的实现目标;接着,在结构部分介绍该架构所涉及的主要模型,包括元模型及其他模型等;最后,在过程环节,则主要按照ADM方法中的业务架构、数据架构、应用架构和技术架构来详细介绍执行过程。并且,在讲解过程中,会列举大量的实践案例来帮助读者掌握。

最后,在“怎么用”的第三部分,还将**讲解企业架构作为一个整体在企业中的应用。**在TOGAF手册中,只讲述了ADM这一个核心过程,这实际上是一个偏技术视角的过程。

在本部分中,笔者将尝试融合企业架构框架与PACE产品开发过程,探讨架构治理等组织方式、工具和方法相互融入的过程。

通过以上对第二个层次内容的学习,读者可以掌握战略、分部和能力三个层级架构的具体落地方法。在这个过程中,读者也会更深入理解一些架构方法论,包括过程驱动方法对象驱动方法数据驱动方法领域驱动方法以及TOGAF中的价值驱动方法等,同时还涉及到需求有效管理、敏捷和DevOps、PACE等相关方法论。

5. 层次3:怎么思?

前两个层次更多是关于TOGAF官方手册纸面上教给我们的东西。然而,笔者认为TOGAF背后所蕴藏的一些思想更为珍贵,比如分层、迭代、能力增量、模式、互操作性、分区、无边界信息流、连续统一体、广度/深度/时间区间、原则、开放性、企业应用综合、透明性等。

然而,单独地逐一对这些概念进行讲解会有些零碎。对架构师来说,架构设计的过程其实就是一个应对复杂性挑战的过程。因此,笔者将以“复杂性”为中心,将与其相关的思想都融入进来。

不过,复杂性这个词本身就非常抽象,也很难以准确解释。在之前的文章《一切系统的本质是什么》中,笔者总结出一切系统的本质是由环境、目标、过程和目标四个核心要素组成的。

基于这一理论,笔者将复杂性也视为一个系统,并将探讨复杂性在结构、过程、环境和目标四个方面存在的问题,例如,结构方面存在元素或实体数量过多,交互混乱等复杂性问题,过程方面存在通信的不确定性、滞后性、动态性等复杂性问题,这些复杂性问题同样是架构设计中常常碰到的。

接下来,笔者将进一步抽象这些TOGAF思想,并提炼出一些通用的思维模式,包括本体思维、还原思维、进化思维、系统思维和管理思维等。举例来说,在进化思维中包含了分层、迭代和开放性等思想。

这些通用的思维模式都是人类文明在发展过程中为解决复杂性问题而演变出来的普适性方法。除了介绍思维模式之外,还会探讨这些模式在架构设计领域的应用。

通过以上对第三个层次内容的学习,读者相当于掌握了一套解决通用复杂性问题的通用思维方式,也可以将这些从TOGAF抽象提炼出来的思想,应用于更广泛的架构设计中。

6. 结束语

在本篇关于企业架构框架TOGAF的第一篇文章中,我们简要介绍了目前TOGAF官方手册存在的三大类问题,并针对这些问题提出了一种三个层次学习TOGAF的方法。随后,我们简要介绍了每个层次下的主要内容框架。

可以看出,不论是第一个层次“怎么学”中对于ADM方法每个阶段的介绍,还是第二个层次“怎么用”中对于各个层级架构内容的介绍,或者是第三个层次“怎么思”中对于思维本质的探讨,基本都采用了摩天轮学习法中的框架进行讲解。

通过本次课程,可以加深大家对摩天轮学习法的理解,它不仅可以讲解Java语言这种简单的技术,也可以用于拆解像企业架构框架这种处于金字塔尖的技术。

后续,我们也将陆续推出更多运用摩天轮学习法的系列课程,包括设计模式、开发框架、各类中间件、架构、大模型技术等,希望大家持续关注。

另外,笔者前期编写的**《架构师启示录》**已由机械工业出版社最近出版。书中主要介绍了一个架构师能力模型,涵盖架构知识模型、架构落地方法、架构思维模式三大维度,是一本非常实用的架构学习书籍,欢迎大家订阅。

7. 直播推荐

图片

8. 总结

以上便是本文的全部内容,本人才疏学浅,文章有什么错误的地方,欢迎大佬们批评指正!我是Leo,一个在互联网行业的小白,立志成为更好的自己。

如果你想了解更多关于Leo,可以关注公众号-程序员Leo,后面文章会首先同步至公众号。

公众号封面

9. 🥇赠书活动规则

🌟关注我的博客:关注我的博客,所有新鲜的博客文章和活动信息都不会错过。
📲添加博主wx:添加Leocisyam,如果添加不了,请私信博主。
💬参与方式:关注公众号程序员Leo或者文末扫码关注,回复抽奖,即可参与抽奖,记住要加Leo哥微信哈,方便通知,记得备注抽奖,否则抽奖无效
🎁公布结果:2024年4月20日晚,我会亲自抽取2名幸运读者,并在微信私信通知,请大家注意查收哈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/555332.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【网站项目】自习室预约系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

基于Springboot+Vue的Java项目-企业客户管理系统开发实战(附演示视频+源码+LW)

大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &am…

【Python】OPC UA模拟服务器实现

目录 服务器模拟1. 环境准备2. 服务器设置3. 服务器初始化4. 节点操作5. 读取CSV文件6. 运行服务器 查看服务器客户端总结 在工业自动化和物联网(IoT)领域,OPC UA(开放平台通信统一架构)已经成为一种广泛采用的数据交换…

如何使用Docker部署WPS Office服务并实现无公网IP远程处理文档表格

文章目录 1. 拉取WPS Office镜像2. 运行WPS Office镜像容器3. 本地访问WPS Office4. 群晖安装Cpolar5. 配置WPS Office远程地址6. 远程访问WPS Office小结 7. 固定公网地址 wps-office是一个在Linux服务器上部署WPS Office的镜像。它基于WPS Office的Linux版本,通过…

【深入解析spring cloud gateway】13 Reactive Feign的使用

问题引入 在gateway中如果使用feignClient的话,会报如下错误 java.lang.IllegalStateException: block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-nio-3at reactor.core.publisher.BlockingSingleSubscriber.bloc…

合并区间详解

题目: 大体思路: 先排序,设置一个新数组,将原数组遍历的第一位添加到新数组,之后不断的将遍历原数组后的起始位置和新数组的终止位置进行比较,大于,则添加到新数组,不大于&#xff…

OpenHarmony轻量系统开发【13】鸿蒙小车开发

13.1 小车介绍 基于鸿蒙系统 Hi3861 的WiFi小车 首先,我们得有一套WiFi小车套件,其实也是Hi3861 加上电机、循迹模块、超声波等模块。 小车安装完大概是这样: 13.2 电机驱动 我们这里先只做最简单的,驱动小车的电机&#xff…

Simlab python二次开发1-将所有缸套内表面半径加大1mm

Simlab python二次开发1-将所有缸套内表面半径加大1mm 1、打开模型文件2、getBodiesWithSubString()从名字得到Bodies3、建Body类Group3.1、定义放入Group中的Bodies3.2、建Group 4、将缸套内表面建组,并扩半径1mm4.1、simlab.getBodiesFromG…

【嵌入式之中断】

Cortex-M4集成了嵌套式矢量型中断控制器(Nested Vectored Interrupt Controller (NVIC))来实现高效的异常和中断处理。NVIC实现了低延迟的异常和中断处理,以及电源管理控制。它和内核是紧密耦合的。 凡是打断程序顺序执行的事件都称为异常(exception&am…

Gitlab: Python项目CI/CD实践

目录 1. 说明 2. 准备工作 2.1 服务器 2.2 开发机hosts文件 2.3 项目 3. 步骤过程 3.1 建仓Fastapi T1 3.2 开发机测试构建与推送 ​编辑 3.3 在工作站添加gitlab-runner 3.4 提交代码,查看Pipelines结果 3.5 观察部署情况 4. 参考 1. 说明 分别以一个…

线程互斥及基于线程锁的抢票程序

我们实现一个简单的多线程抢票程序。 #include<iostream> #include<thread> #include<unistd.h> #include<functional> #include<vector> using namespace std; template<class T> using func_tfunction<void(T)>;//返回值为void,…

leetcode刷题(python)——(四)

01.02.03 练习题目&#xff08;第 04 天&#xff09; 1. 0048. 旋转图像 1.1 题目大意 描述&#xff1a;给定一个 n n n \times n nn 大小的二维矩阵&#xff08;代表图像&#xff09; m a t r i x matrix matrix。 要求&#xff1a;将二维矩阵 m a t r i x matrix matr…

点云的投影------PCL

点云的投影 /// <summary> /// 参数化模型投影点云 /// </summary> /// <param name"cloud">点云</param> /// <param name"x">投影平面x面的系数</param> /// <param name"y"></param> /// &…

【Qt-Qt Creator使用技巧】

工具-Qt Creator ■ 使用技巧■ 定义触发片段■ Qt Creator 行编辑■ 代码注释■ 代码补全■ 快速给函数添加定义■ 创建书签■ 同步列输入■ 局部替换■ 源代码阅读■ 源码调试■ 使用技巧 ■ 定义触发片段 ■ Qt Creator 行编辑 shift + alt + up / down来获得多个游标。 …

第二部分 Python提高—GUI图形用户界面编程(三)

简单组件学习 Radiobutton 单选按钮、Checkbutton 复选按钮和canvas 画布 文章目录 Radiobutton 单选按钮Checkbutton 复选按钮canvas 画布 Radiobutton 单选按钮 Radiobutton 控件用于选择同一组单选按钮中的一个。Radiobutton 可以显示文本&#xff0c;也可以显示图像。 f…

CUDA编程---线程束洗牌指令

从Kepler系列的GPU&#xff08;计算能力为3.0或更高&#xff09;开始&#xff0c;洗牌指令&#xff08;shuffle instruction&#xff09;作为一种机制被加入其中&#xff0c;只要两个线程在相同的线程束中&#xff0c;那么就允许这两个线程直接读取另一个线程的寄存器。 洗牌指…

程序员购车指南

哈喽大家好&#xff0c;我是咸鱼。 爱车可以说是大部分男人的天性&#xff0c;而我对汽车的热情却远不及对手表的钟爱&#xff08;痴迷劳力士&#xff09;。以至于我的朋友掏出车钥匙指着上面的苹果树标志跟我介绍奔驰 AMG 系列的强劲性能和马力时&#xff0c;我只能尽量假装自…

C++的继承

目录 前言 继承的概念和定义 访问权限表 基类和派生类对象的赋值转换 继承中的作用域 派生类的默认成员函数 继承与友元 继承与静态成员 复杂的菱形继承和菱形虚拟继承 菱形虚拟继承 观察内存 注意事项&#xff1a;对象在内存中的存储顺序是按声明的顺序存储的 …

Python分析之3 种空间插值方法

插值是一个非常常见的数学概念,不仅数据科学家使用它,而且各个领域的人们也使用它。然而,在处理地理空间数据时,插值变得更加复杂,因为您需要基于几个通常稀疏的观测值创建代表性网格。 在深入研究地理空间部分之前,让我们简要回顾一下线性插值。 为了演示的目的,我将使…

ansible模块实战-部署rsync服务端

目录 1、根据部署流程所用到的命令找出模块 2.实战部署 2.1 服务部署&#xff1a;yum 安装 2.2 准备好rsync服务的配置文件 &#xff0c;并将配置文件通过copy模块分发给192.168.81.136这台受控主机 2.3 创建虚拟机用户 2.4 创建密码文件和改权限 2.5 模块对应目录&…