🎨 一、概述:给软件系统"画像"
软件架构描述与表示是指用特定的语言、图形或文档,将软件架构的设计结果显式地表达出来的过程。它是架构成败的关键一环------再好的设计,如果无法清晰传达,也只是空中楼阁。
对于系统分析师而言,架构描述是你的"沟通工具"和"设计凭证":
· 沟通工具:让用户、管理者、开发人员、测试人员等不同角色理解系统结构
· 设计凭证:记录架构决策和权衡,为后续维护和演化提供依据
· 分析基础:为架构评估、质量属性分析提供输入
架构描述要回答的核心问题:如何让不同角色的人,都能从各自关心的角度理解系统?
本节的知识框架:
· 架构描述的基本方式(图形、UML、MIL、ADL)
· 4+1视图模型
· C4模型
· 架构描述语言
🏗️ 二、详细讲解:四大核心内容
1️⃣ 架构描述的基本方式
架构描述主要有四种方式,各有优劣:
描述方式 核心特点 优点 缺点 适用场景
非标准化图形 矩形框+有向线段 直观形象、简单易用 语义不精确、易不一致 商业展示、设计草图
UML 面向对象的标准化建模语言 语义丰富、相对精确、有少量形式化基础 学习成本高、复杂度高 需求分析、OO设计、行为分析
MIL 模块接口语言,如IDL 语义精确、与实现语言无关 层次较低,关注接口而非高层结构 构件接口定义、跨语言交互
ADL 体系结构描述语言,如ACME、Wright 形式化程度高、支持精确分析和验证 学习曲线陡峭、工具支持有限 高可信系统、形式化验证
非标准化图形是最常见的"草图"方式,用矩形框代表抽象构件,有向线段代表连接件。优点是直观,缺点是术语和表达语义不规范,在不同文档间可能存在不一致甚至矛盾。
UML是当前最主流的架构建模语言,提供了丰富的图形化建模元素,能够表达系统的静态结构和动态行为。UML分为结构型图形(如类图、组件图、部署图)和行为型图形(如用例图、序列图、活动图、状态图)。
MIL(模块接口语言)是将一种或多种传统程序设计语言模块连接起来描述软件体系结构的方法,如Microsoft COM IDL、OMG CORBA IDL。其优点是有严格的语义基础,支持较大的软件单元进行定义/使用、接口定义等操作。
ADL是在吸收传统程序设计语言语义严格精确特点的基础上,针对软件体系结构的整体性和抽象性而定义的形式化描述语言。典型的ADL有ACME、Wright、Darwin、C2等。ADL包含三个基本元素:构件(计算或数据存储单元)、连接件(构件间的交互建模)和配置(构件与连接件的连接图)。
📌 速记口诀:"图形UML MIL,ADL形式化齐;直观精确各不同,场景选择要适宜"。
2️⃣ 4+1视图模型
4+1视图模型是由Philippe Kruchten于1995年提出的经典架构描述框架,从不同角度反映不同利益干系人的关注点。
视图 关注点 主要涉众 描述内容 常用UML图
逻辑视图 功能需求 最终用户、领域专家 系统的功能分解、关键抽象、对象模型 类图、状态图
开发视图 模块组织 程序员、项目经理 软件模块的组织、分层、包结构 组件图、包图
进程视图 运行特性 集成人员、系统工程师 并发、同步、性能、容错 序列图、活动图
物理视图 硬件映射 系统工程人员、运维 软件到硬件的映射、部署拓扑 部署图
场景(+1) 系统活动抽象 所有涉众 重要用例的交互序列,驱动和验证其他视图 用例图、序列图
逻辑视图主要支持功能性需求------系统应该为用户提供哪些服务。它将系统分解为一系列的关键抽象,表现为对象或对象类的形式,采用抽象、封装和继承的原理。
开发视图关注软件开发环境下实际模块的组织。软件打包成程序库或子系统,可以组织成分层结构,每个层为上一层提供良好定义的接口。
进程视图考虑性能和可用性等非功能性需求。它解决并发性、分布性、系统完整性、容错性等问题,以及逻辑视图的主要抽象如何与过程结构相配合。
物理视图描述软件到硬件的映射,反映分布式特性。它主要考虑如何把软件映射到硬件上,解决系统拓扑结构、系统安装和通信等问题。
场景是第五个视图,它起到了两个作用:
· 作为驱动因素,发现架构设计过程中的架构元素
· 作为验证和说明功能,验证其他视图的设计
4+1视图的核心价值在于"关注点分离"------让不同角色的人只看他们关心的部分,而不被其他细节干扰。
📌 速记口诀:"逻辑开发进程物,场景贯穿联四者;关注分离各视角,架构描述有章法"。
3️⃣ C4模型
C4模型是由Simon Brown创建的一种以层级方式呈现软件架构的可视化方法。它将复杂系统分解为四个抽象层级,从宏观到微观逐层细化:
层级 英文 描述 目标受众 类比
C1:系统上下文图 System Context Diagram 展示系统与外部环境的交互及边界 所有人(含非技术) 城市地图
C2:容器图 Container Diagram 展示系统的组成容器(应用、数据存储)及技术选型 技术人员 城区规划
C3:组件图 Component Diagram 展示容器内部的组件组成及交互 开发人员、架构师 街区详图
C4:代码图 Code Diagram 展示组件内部的类、接口等实现细节(可选) 开发人员 房屋蓝图
系统上下文图位于C4模型的顶层,是软件系统架构图的起点。它展示了系统与用户、外部依赖系统的交互,非常适合非技术利益相关者,因为不涉及技术细节。
容器图是系统上下文图的放大和补充,显示了系统的物理结构。每个容器代表一个可单独运行/可部署的单元,如Web服务器、应用服务器、数据库等。容器图也显示了系统的主要技术选型以及容器间的通信和交互。
组件图深入容器内部,展示了容器包含的组件以及组件之间的关系。组件通常代表系统的主要业务功能,如用户界面、业务逻辑、数据处理等。
代码图展示组件内部的类和它们的交互,是最详细的层次。在敏捷开发中,一般不建议产出代码图,除非是非常重要且尚未写出的组件。
C4模型的优势:
· 统一抽象层级:在不同级别提供统一的抽象,便于团队沟通
· 渐进式细化:从宏观到微观,逐层深入,避免信息过载
· 灵活表达:不绑定特定图形或建模语言,可以使用UML、线框图等
📌 速记口诀:"C4四层递进看,上下文容器组件码;宏观到微观逐步细,沟通设计都不差"。
4️⃣ 架构建模的三个层次
软件体系结构建模可以在三个层次上进行:
层次 描述 代表方法 用途
图形化模型 多视图表示,从不同视角描述系统 4+1视图、C4模型 交流、理解、设计
形式化模型 使用ADL进行精确描述 ACME、Wright、Darwin 分析、验证、推理
文档化模型 记录设计细节 架构文档、设计说明书 维护、传承、知识管理
图形化模型是最常用的形式,通过多个视图从不同角度建立系统的模型,分别刻画某一方面的性质。多视图体现了"关注点分离"的思想,使系统更易于理解。
形式化模型使用ADL进行描述,具有严格的语义基础,能够支持对体系结构的精确分析和验证。
文档化模型记录和整理软件体系结构设计方案的各类细节,是知识传承和系统维护的重要资产。
📝 三、重点总结与速记方法
✅ 核心重点
-
架构描述的四种方式:非标准化图形、UML、MIL、ADL,各有优劣,需根据场景选择。
-
4+1视图模型:逻辑、开发、进程、物理、场景------从不同视角描述架构,场景驱动并验证其他视图。
-
C4模型:上下文、容器、组件、代码四个层级,从宏观到微观逐层细化系统静态结构。
-
架构建模三层次:图形化、形式化、文档化,分别满足不同需求。
-
ADL三要素:构件、连接件、配置,是形式化架构描述的基础。
⚡ 速记口诀大全
1️⃣ 四种描述方式"一字诀"
"图、U、M、A"(非标准化图形、UML、MIL、ADL)
2️⃣ 4+1视图"五视图"口诀
"逻辑开发进程物,场景贯穿联四者"
3️⃣ 4+1视图各视图关注点口诀
"逻辑看功能,开发看模块,进程看并发,物理看部署,场景做驱动"
4️⃣ C4模型"四层递进"口诀
"C1上下文看边界,C2容器看组成,C3组件看内部,C4代码看细节"
5️⃣ 架构建模"三层次"口诀
"图形化交流,形式化分析,文档化传承"
6️⃣ ADL"三要素"口诀
"构件连接件,配置定关系,ADL三要素"
7️⃣ 一句话总纲
软件架构描述与表示 = (4+1视图多角度 + C4模型分层级 + UML/ADL等工具),是让架构设计"看得见、说得清、传得远"的关键手段。
掌握12.3节,意味着你能够熟练运用4+1视图、C4模型等框架来描述和表达软件架构,让不同角色的干系人都能理解你的设计意图。这是系统分析师从"设计者"向"沟通者"跃升的重要能力。