IEEE Std 1471-2000 — 软件密集型系统架构描述推荐实践
IEEE 软件架构领域的奠基性标准,2000年9月21日批准,定义了架构描述的概念框架、核心术语和实践规范。
一、标准概述
地位
IEEE Std 1471-2000 是软件架构领域第一个国际标准,由 IEEE 软件工程标准委员会(SESC)下属的架构规划组(APG)自1995年8月启动制定,历时5年完成。它为软件密集型系统的架构描述建立了统一的术语体系和概念框架。
后续演进:2007年被 ISO/IEC 42010:2007 采纳为国际标准,2011年更新为 ISO/IEC/IEEE 42010:2011(系统与软件工程——架构描述)。
范围
适用于软件密集型系统——即软件在系统整体的设计、构建、部署和演进中起决定性影响的系统。架构描述(AD)可用于:
- 表达系统及其演进
- 系统利益相关者之间的沟通
- 以一致方式评估和比较架构
- 规划、管理和执行系统开发活动
- 表达系统的持久特性和指导可接受变更的原则
- 验证系统实现是否符合架构描述
- 记录软件密集型系统架构知识体系的贡献
目的
通过标准化架构描述的元素和实践,促进架构的表达与沟通,从而为质量提升和成本降低奠定基础。
标准的核心前提是:架构隐喻——借鉴民用建筑的早期决策模式,在系统开发的最早阶段做出关键设计决策。
目标用户
- 主要用户:系统使用者/获取者、架构师、开发/交付/维护人员、评估/审计人员
- 次要用户:方法学家、流程工程师、研究者、标准制定者、工具开发者、培训师
二、十大核心定义
| 编号 | 术语 | 定义 |
|---|---|---|
| 1 | acquirer(获取方) | 从供应方采购系统、软件产品或服务的组织(买方、客户、所有者、用户、采购方) |
| 2 | architect(架构师) | 对系统架构负责的个人、团队或组织 |
| 3 | architecting(架构活动) | 定义、记录、维护、改进和验证架构正确实现的一系列活动 |
| 4 | architectural description (AD)(架构描述) | 用于记录架构的一组产品的集合 |
| 5 | architecture(架构) | 系统的基本组织,体现为其组件、组件之间及组件与环境之间的关系,以及指导其设计和演进的原则 |
| 6 | life cycle model(生命周期模型) | 包含软件产品开发、运行和维护所需过程、活动和任务的框架,跨越从需求定义到终止使用的整个系统生命期 |
| 7 | system(系统) | 为完成特定功能而组织起来的组件集合 |
| 8 | system stakeholder(系统利益相关者) | 对系统有兴趣或有关注点的个人、团队或组织(或其类别) |
| 9 | view(视图) | 从一组相关关注点的角度对整个系统的表示 |
| 10 | viewpoint(视点) | 构造和使用视图的约定的规范。是开发单个视图的模式或模板,规定了视图的目的、受众以及创建和分析视图的技术 |
三、概念框架
核心概念关系链
使命 (Mission)
↓ 履行
系统 (System) ← 影响 → 环境 (Environment / Context)
↓ 有
架构 (Architecture)
↓ 记录
架构描述 (AD)
↓ 组织为
视图 (View) → 对应 → 视点 (Viewpoint)
↓ 组成
架构模型 (Architectural Model)
关键概念辨析
-
系统与环境:系统存在于环境中,环境决定系统的边界和范围,包括其他交互系统、开发/运行/政治等影响因素。
-
利益相关者与关注点:每个系统有一个或多个利益相关者,每个利益相关者有其关注点(concerns)——涉及系统开发、运行或其他方面的重要利益。关注点包括性能、可靠性、安全性、分布性、可演进性等。
-
架构与架构描述的分离:架构是概念性的,架构描述是具体的制品。每个系统都有架构,无论是否被记录。
-
视图与视点的关系:类比于面向对象中的”类与对象”——viewpoint : view = class : object。视点是模板/约定,视图是特定系统的实际表示。
-
多视图的必要性:单一视角无法覆盖所有利益相关者的所有关注点。标准不规定具体需要哪些视图,而是通过视点机制允许定制和演进。
架构描述的四大用途
- 决策支持:帮助利益相关者理解和评估架构
- 沟通:在利益相关者之间建立共同语言
- 系统构建指南:指导开发、测试和部署
- 演进管理:指导系统变更和维护
四、架构描述实践(六大核心要素)
符合本标准的架构描述必须包含以下六大要素:
5.1 架构文档(AD整体信息)
AD 必须包含以下8项整体信息:
- 发布日期和状态
- 发布组织
- 变更历史
- 摘要
- 范围
- 上下文/环境
- 术语表
- 参考文献
5.2 利益相关者与关注点识别
必须识别架构相关的利益相关者和关注点。
最低要求的利益相关者(4类):
- 系统用户
- 系统获取方/客户
- 系统开发者
- 系统维护者
最低要求的关注点(5类):
- 系统的目的或使命
- 系统完成使命的适当性
- 构建系统的可行性
- 系统开发和运行对用户、获取方和开发者的风险
- 系统的可维护性、可部署性和可演进性
5.3 架构视点选择
AD 必须选择并明确规定所使用的视点。
每个视点必须规定5项内容:
- 视点名称
- 该视点服务的利益相关者
- 该视点解决的关注点
- 构建视图所用的语言、建模技术或分析方法
- 库视点的来源(作者、日期、引用文档)
视点可选补充信息:
- 一致性和完整性测试方法
- 评估或分析技术
- 启发式规则、模式或其他综合指南
关键要求:
- 必须提供每个视点的选择理由
- 理由必须说明视点如何覆盖 5.2 要求的利益相关者和关注点
- 每个利益相关者和每个关注点必须至少被一个视点覆盖
- 标准不强制要求使用任何特定视点
5.4 架构视图
AD 必须包含一个或多个架构视图。
视图规则:
- 每个视图精确对应一个视点
- 每个视图必须符合其对应视点的规范
- 每个视图包含:标识符和介绍信息、系统表示、配置信息
- 一个视图可由一个或多个架构模型组成
5.5 视图间一致性
- 必须记录视图间所有已知的不一致
- 应该包含跨所有视图的一致性分析
5.6 架构基本原理(Rationale)
- 必须包含所选架构概念的理由
- 应该提供对备选架构概念的考虑以及做出选择的理由
- 对于遗留系统的 AD,如果已知,应呈现其架构的历史理由
五、视点深度解析
视点的本质
视点是可复用的视图模板。它独立于具体系统,定义了:
- 针对什么关注点
- 服务哪些利益相关者
- 使用什么建模语言和方法
- 如何分析和验证
视点库(Library Viewpoint)
在别处定义、可被多个 AD 复用的视点称为”库视点”。标准预期各领域将形成自己的视点库:
- 领域特定的架构框架可通过规定一组视点来实现
- 例如 RM-ODP 的5个视点、Zachman 框架、Bass/Clements/Kazman 的视图法
典型视点示例(附录C)
结构视点(Structural Viewpoint)
最常用的软件架构视点,源自 Perry & Wolf (1992) 和 Shaw & Garlan (1996) 的经典工作。
关注点:
- 系统的计算元素及其组织
- 组成系统的软件元素
- 它们的接口
- 它们如何互连
- 互连机制
建模语言:
- 组件(计算单元)及其端口(接口)
- 连接器(组件间通信与协调)及其角色(连接位置)
- 组件和连接器可被类型化
分析方法:
- 接口兼容性检查
- 依赖分析
- 系统结构一致性验证
六、标准的意义与影响
理论贡献
- 首次统一术语:在混乱的架构术语中建立了共识基础
- 视图-视点分离:明确了”视图是实例、视点是模板”的关系,为架构框架的标准化提供了机制
- 架构≠架构描述:区分了概念性的架构和具体的描述制品
- 多视图方法论:将多视图从实践经验提升为标准规范
- 视点可复用:通过视点库机制支持领域特定架构框架
实践价值
- 为架构师提供了描述架构的规范模板
- 为组织建立架构评审和质量保证提供了标准依据
- 为工具开发商提供了功能需求参考框架
- 为不同方法和框架之间的沟通提供了共同语言
历史地位
IEEE 1471 是软件架构领域的里程碑标准,直接影响了:
- ISO/IEC 42010(国际标准版本)
- TOGAF(The Open Group Architecture Framework)
- DoDAF(美国国防部架构框架)
- RM-ODP(开放分布式处理参考模型)
- 各类企业架构框架和方法论
七、与其他知识的关联
- 与 ADD 属性驱动设计方法 - 软件架构课程 Lecture-12 的关系:ADD 是一种架构设计方法,其产出的架构描述应符合 IEEE 1471 规范
- 与 软件体系结构概述-软件架构课程Lecture-1 的关系:Lecture-1 概述了架构的六种经典定义,IEEE 1471 的定义是其中之一(“基本组织”定义)
- 与 KWIC与软件架构案例分析-软件架构课程Lecture-3 的关系:KWIC 四种架构对比是典型的多视点分析案例