流行软件架构模型的优缺点


多年来,软件架构模型和框架已经取得了长足的进步,不断发展以应对软件开发领域的挑战和复杂性。从早期的Zachman框架开始,到更全面的TOGAF,再到4+1架构视图模型,最后到最近的C4模型,进步是显着的。这些模型都为架构师和开发人员提供了新的方法来进行软件设计并满足行业不断变化的需求。

然而,有些事情仍然不太正确,我们已经着手解决这个问题。

尽管这些框架不断发展,但它们在复杂数字化转型中的实际应用一直是一项具有挑战性的工作。TOGAF 和 Zachman 等高级框架虽然提供了全面且结构化的软件架构方法,但在实际情况中可能很难有效实施。

这些框架的绝对复杂性有时会让架构师和开发人员很难从中获得有形的价值,特别是在处理大规模、复杂的数字化转型项目时。

在这篇博文中,我们将探讨软件架构模型的演变、它们的优点和局限性,以及 C4 这样的新模型如何旨在在复杂性和实用性之间取得平衡,从而在软件架构领域产生真正的变化。

我们更进一步认为,我们应该通过开源项目围绕创建新的、更合适的软件架构模型进行实验和协作。我们链接到一个这样的项目,该项目目前提供 C4 和一个名为 C5 的修订模型:
https://github.com/Sprinting-Software/software-architecture-models

企业和软件架构框架简史
让我们对一些选定的企业和/或软件架构框架的历史进行简要概述。

扎克曼Zachman框架:

  • 由 John A. Zachman 在 20 世纪 80 年代提出,作为企业架构的一种方法。
  • 提供本体,即可用于组织软件架构制品(文档)的分类系统
  • 基于 6×6 矩阵,其中每个单元格代表视角(谁、什么、何时、何地、为什么、如何)和受众视角(规划者、所有者、设计者、构建者、实施者、用户)之间的交集。
  • 被认为是企业架构领域最早、最有影响力的框架之一。
  • 主要关注组织架构的整体表示,而不是专门针对软件系统进行定制。
  • 我们链接到Zachman 框架的官方来源

TOGAF(开放组架构框架):TOGAF(开放组架构框架):

  • 由国际组织联盟 The Open Group 于 20 世纪 90 年代开发。
  • 一个全面的、行业标准的企业架构框架,可指导组织完成创建、维护和管理其架构的整个过程。
  • 包含称为架构开发方法 (ADM) 的详细方法,它提供了设计和实现企业架构的分步方法。
  • 提供广泛的工具、技术、概念模型和参考模型来支持架构师和开发人员。
  • 虽然非常彻底,但实施起来可能很复杂且耗时,特别是对于较小的组织或项目。

4+1架构模型:

  • 由五个标准图(也称为视图)组成,称为逻辑视图、开发视图、过程视图和物理视图以及场景。
  • 逻辑视图以面向对象的抽象形式表示主要功能元素、它们的关系和交互。
  • 进程视图重点关注系统的并发和同步方面,而物理视图则处理系统的部署和分发方面。
  • 开发视图以模块和组件的形式说明了软件的组织,而场景视图(也称为用例视图)捕获最终用户的功能和交互。
  • 该模型的关键概念包括组件、连接器、模块、子系统、层、流程、消息、事件等。
  • 我们链接到原始文章以供参考

C4模型:

比较
让我们通过简洁的比较来总结本概述,重点介绍每个模型与其他模型的明显不同之处:

  • Zachman 框架为企业架构制品提供了通用且抽象的本体(分类系统)。Zachman 框架为企业架构制品提供了通用且抽象的本体(分类系统)。
  • TOGAF是一个广泛而完整的企业架构框架,提供了围绕企业架构的精心设计的概念模型、架构制品的结构、架构师的方法、工具、指南和技术。TOGAF是一个广泛而完整的企业架构框架,提供了围绕企业架构的精心设计的概念模型、架构制品的结构、架构师的方法、工具、指南和技术。
  • 4+1 模型为基于一组特定概念、符号和图表约定的五种特定架构图提供了标准。4+1 模型为基于一组特定概念、符号和图表约定的五种特定架构图提供了标准。
  • C4 模型围绕用于描述软件系统静态结构的四个关键概念提供了简洁的术语,以及灵活的符号指南和一些架构图示例来指导软件架构。C4 模型围绕用于描述软件系统静态结构的四个关键概念提供了简洁的术语,以及灵活的符号指南和一些架构图示例来指导软件架构。

更简单地说,我们可以说:

  • Zachman 框架为企业架构制品(文档)提供了通用和抽象的结构Zachman 框架为企业架构制品(文档)提供了通用和抽象的结构
  • TOGAF为企业架构提供了一个包罗万象的框架
  • 4+1模型提供了5种软件架构图的标准4+1模型提供了5种软件架构图的标准
  • C4 模型提供了一种简单的方法来描述软件系统的静态结构C4 模型提供了一种简单的方法来描述软件系统的静态结构

企业架构与软件架构以及框架与模型
在上一节中,我们回顾了企业和软件架构方面四个最有影响力的模型/框架。然而,我们还没有真正弄清楚企业架构和软件架构之间有什么区别。现在让我们澄清这一点。

企业架构和软件架构是相关学科,重点关注系统的设计、组织和管理。然而,它们的范围、目标和解决的问题类型有所不同。

企业架构的特点如下:

  • 范围:EA涵盖整个组织,包括其战略和战术目标、业务流程、组织结构、治理、信息系统、数据、应用程序、系统环境、技术和基础设施。它涵盖了业务架构、数据架构、应用架构、技术架构等各个领域。
  • 目标: EA 旨在使组织的 IT 资源和能力与其业务目标保持一致,确保效率、可扩展性和适应性。它应该有助于管理复杂性、降低风险并促进整个组织的决策。目标: EA 旨在使组织的 IT 资源和能力与其业务目标保持一致,确保效率、可扩展性和适应性。它应该有助于管理复杂性、降低风险并促进整个组织的决策。

软件架构特点如下:

  • 范围:软件架构应涵盖软件系统的设计和实现,包括其组件、模块、接口、交互和行为。它包括各种视图或视角,例如逻辑架构、物理架构、部署架构和操作架构。它还解决了各种问题,例如功能需求、质量属性、约束和权衡。
  • 目标:软件架构旨在满足系统的功能和非功能需求,例如性能、可扩展性、安全性、可维护性和可用性。它有助于管理复杂性、最大限度地降低风险并确保系统的质量和可靠性。目标:软件架构旨在满足系统的功能和非功能需求,例如性能、可扩展性、安全性、可维护性和可用性。它有助于管理复杂性、最大限度地降低风险并确保系统的质量和可靠性。

另一件没有明确定义的事情是模型和框架之间的区别。两者都用于企业架构和软件架构领域,指导系统的设计、开发和管理。然而,它们的范围、目的和抽象级别有所不同。

简而言之,我们可以说框架大于模型。我们也可以说框架是模型+方法论。

更准确地说,我们可以说架构框架提供了用于开发和管理架构的标准化结构、方法和工具集。它通常包括一组指导架构工件(例如模型、图表和规范)创建的原则、概念和实践。更准确地说,我们可以说架构框架提供了用于开发和管理架构的标准化结构、方法和工具集。它通常包括一组指导工件(例如创建模型、图表和规范)的原则、概念和实践。

另一方面,架构模型可能有两个相互矛盾的含义,读者应该认识到其中的区别。

  1. 模型可以指描述具体企业或系统环境的一组具体视图(或图表)。这样的模型可以包括上下文视图、数据模型视图、组件视图、集成视图和部署视图。
  2. 模型可以指模型的模型,也称为元模型。当我们提到C4模型时,它实际上是一个元模型,而不是一个模型。模型可以指模型的模型,也称为元模型。当我们提到C4模型时,它实际上是一个元模型,而不是一个模型。

对于本文的范围,每当我们使用“模型”这个词时,我们真正的意思是“元模型”,如项目符号2中所示,与C通常称为模型的含义相同,尽管它确实是一个元模型。如果我们确实想引用第 1 条相同的模型,我们将其称为模型实例。

有了这样的理解,现在应该清楚了:

  • Zachman 是一个企业架构模型
  • TOGAF是一个企业架构框架
  • 4+1是一个软件架构框架
  • C4是软件架构模型

开源软件架构模型
由于多种原因,软件架构模型对于软件行业至关重要。首先,它们为开发人员、架构和业务利益相关者提供了一种共享语言,用于在复杂的数字化转型中推理 AS-IS 和 TO-其次,他们使软件架构师能够向利益相关者(例如开发人员、经理和客户)清楚地传达他们的愿景和决策。最后,他们通过将系统环境分层为更小、更易于管理的组件允许帮助管理复杂性,从而规划和执行数字化转型计划。

尽管软件架构模型很,但很漂亮,但它们很难正确。

在我的大多数企业中,一组人对 TOGAF 的使用过于复杂,而另一组人对 C4 的重要轮胎使用则混合在一起。

这是一个问题,因为TOGAF实际上与C4完全完全重叠,而且重叠是重叠的。

如果您研究TOGAF的架构域,您会发现应用程序域的用途与C4类似,但它使用不同的概念,例如信息系统服务、逻辑应用程序组件和物理应用程序组件。

我还没有遇到过能够在应用程序域中可靠地映射C4图和TOGAF图之间的架构师。

由于这些原因,我相信我们作为一个行业需要进行实验和协作,以围绕软件架构模型达成我们未来的共识。我认为我们应该关注模型,而不是框架,换句话说,应该关注内核,即由概念我希望我们通过建立共识和标准化能够帮助建立最佳实践和指南,以创建更好的架构模型,提高不同系统之间的质量、一致性和互操作性。