文章目录
- 一、核心思想
- 二、软件架构概念:系统设计的高级抽象
- 三、软件架构设计与生命周期:架构在开发流程中的演进
- 四、架构描述语言ADL:架构的标准化表达
- 五、4+1视图:多角度的架构展现
- 六、基于架构的软件开发概念:架构驱动的开发理念:ABSD
- 七、基于架构的软件开发过程:从需求到实现的完整流程
- ABSD开发过程的整体特征
- 架构需求过程:从需求到构件的转换
- 架构设计过程:构建系统蓝图
- 架构实现过程:从设计到可运行系统
- 架构演化过程:适应变化的持续改进
- ABSD方法的核心价值
一、核心思想
软件架构是对复杂软件系统的高级抽象,它通过结构化的方式定义系统的组件、关系和约束;而基于架构的软件开发则是将这种抽象设计转化为可执行软件的系统化方法。
这就像建造一座摩天大楼:
- 软件架构是建筑设计图纸,定义了楼层结构、功能分区和基础设施布局;
- 架构描述语言是绘制图纸的标准规范;
- 4+1视图是从不同专业角度(结构工程师、电气工程师、装修设计师等)审视同一栋建筑;
- 而基于架构的软件开发则是按图施工的完整流程,从地基挖掘到装修交付的全过程管理。
为什么这个体系如此重要?
- 软件系统的复杂性已经超出了人类直接理解和管理的能力。架构提供了必要的抽象层次,让我们能够在宏观层面把握系统全貌,同时为不同角色提供了有效的沟通语言。
- 这个体系建立了从需求到实现的可追溯链条:需求分析确定"要做什么",软件架构回答"怎样组织",详细设计解决"如何实现"。没有这个中间层,复杂系统的开发将陷入混乱。
二、软件架构概念:系统设计的高级抽象
软件架构的概念包括架构的本质、作用和在软件开发中的桥梁位置,是理解整个架构体系的基础。
概念要素 | 定义与特点 | 应用场景 | 重要性说明 |
---|---|---|---|
高级抽象 | 对系统结构、行为、属性的高层概括 不涉及具体实现细节 | 微服务架构抽象出服务边界 分层架构定义层次职责 | 提供宏观视角 降低理解复杂度 |
惯用模式与约束 | 特定领域的常用架构风格 定义专业术语和协作规则 | 互联网应用的微服务模式 企业应用的分层模式 | 提供设计指导 确保架构一致性 |
交流手段 | 不同角色基于架构进行沟通 理解系统整体设计 | 开发、测试、业务团队协作 技术方案评审 | 统一认知基础 提高沟通效率 |
可传递复用模型 | 架构可在项目间传递复用 支持质量预估和问题发现 | 电商平台架构复用 金融系统架构模板 | 降低设计成本 提升系统质量 |
桥梁作用 | 连接需求分析与软件设计 实现需求到组件的分配 | 将用户需求分配到具体组件 确定组件职责和协作关系 | 填补设计鸿沟 确保需求可追溯 |
三、软件架构设计与生命周期:架构在开发流程中的演进
软件架构设计贯穿整个软件生命周期,从需求分析到后开发阶段都发挥着关键作用。
生命周期阶段 | 核心任务 | 关键方法与工具 | 与架构的关系 |
---|---|---|---|
需求分析阶段 | 需求模型到架构模型的转换 确保转换过程可追溯 | 需求建模技术 可追溯性矩阵 | 架构设计的输入基础 确保需求完整覆盖 |
设计阶段 | 使用ADL和4+1视图描述架构 从多视角展现架构设计 | 架构描述语言(ADL) 4+1视图方法 | 架构研究的核心阶段 产生正式架构文档 |
实现阶段 | 依据架构进行代码编写 将设计转化为可运行代码 | 编程语言和框架 代码生成工具 | 架构设计的具体落地 验证架构可行性 |
构件组装阶段 | 在高层次组装已有构件 提高开发效率 | 构件库管理 集成测试工具 | 体现架构组合特性 实现架构复用 |
部署阶段 | 架构提供部署指导 确定系统在硬件环境中的部署 | 容器化技术 自动化部署工具 | 架构的物理实现 保障系统稳定运行 |
后开发阶段 | 动态架构调整 架构恢复与重建 | 架构演化工具 重构技术 | 支持架构持续改进 适应需求变化 |
四、架构描述语言ADL:架构的标准化表达
架构描述语言为软件架构提供形式化的描述方法,确保架构设计的精确性和一致性。
ADL类型 | 核心特点 | 适用场景 | 基本元素 |
---|---|---|---|
C2SADL | 基于组件和消息 聚焦消息传递交互 | 事件驱动系统 消息中间件架构 | 构件:计算或数据存储单元 连接件:构件交互建模 |
Wright | 适用分布、并发系统 关注并发执行逻辑 | 分布式系统 高并发应用 | 架构配置:构件连接关系图 |
ACME | 架构互换语言 强调转换和互操作性 | 架构集成项目 多系统协作 | 支持架构复用和集成 |
UniCon | 基于组件和连接 注重连接关系建模 | 传统企业应用 模块化系统 | 清晰展现架构拓扑结构 |
Rapide | 基于事件驱动 关注事件触发响应机制 | 实时系统 响应式应用 | 以事件为核心的架构描述 |
五、4+1视图:多角度的架构展现
4+1视图方法从不同涉众的关注角度全面展现软件架构,确保架构设计满足各方需求。
视图类型 | 关注者 | 核心关注点 | 描述内容 |
---|---|---|---|
逻辑视图 | 最终用户 | 功能需求实现 系统逻辑结构 | 类与对象层面的系统结构 功能实现方式 |
实现/开发视图 | 程序员 | 配置装配 代码组织结构 | 代码组织和模块划分 编码和集成依据 |
进程视图 | 系统集成人员 | 性能、可伸缩性 并发处理能力 | 运行时进程交互 资源分配方案 |
部署/物理视图 | 系统工程人员 | 发布安装 物理拓扑结构 | 物理环境部署方式 系统部署实施指导 |
用例视图/场景 | 分析人员、测试人员 | 用例场景 用户交互方式 | 系统功能和交互场景 需求分析和测试依据 |
六、基于架构的软件开发概念:架构驱动的开发理念:ABSD
基于架构的软件开发(ABSD)强调架构在软件开发中的核心驱动作用,建立了系统化的开发方法。
核心概念 | 定义与特点 | 实施方法 | 价值体现 |
---|---|---|---|
架构驱动理念 | 架构由业务、质量、功能需求共同驱动 兼顾多维度需求 | 需求分析时同时考虑 业务目标和质量属性 | 确保架构满足 全面的系统需求 |
三个基础 | |||
功能分解 | 运用模块内聚和耦合技术 高内聚低耦合设计 | 模块化设计原则 接口标准化 | 提高系统灵活性 和可扩展性 |
架构风格选择 | 根据需求选择合适架构风格 满足质量和业务需求 | 分层架构、微服务架构 等风格的合理选择 | 架构与需求的 最佳匹配 |
软件模板使用 | 提供通用架构框架 保证架构一致性 | 开源框架模板 企业架构标准 | 提高开发效率 保障质量一致性 |
视角与视图 | |||
多视角需求捕获 | 功能需求用用例捕获 质量需求用场景捕获 | 用例建模 质量场景设计 | 全面准确捕获 各类系统需求 |
七、基于架构的软件开发过程:从需求到实现的完整流程
ABSD开发过程的整体特征
自顶向下的递归细化方法:ABSD方法采用自顶向下、逐步细化的开发策略,从高层架构逐步深入到具体的软件构件和类。这种方法能很好地支持软件重用,通过架构模板和构件库的使用,显著提高开发效率和软件质量。
迭代与反馈机制:整个开发过程具有强烈的迭代特征,每个阶段都包含评审环节(0:N或0:M表示可能的多次迭代),确保质量控制和持续改进。
开发阶段 | 核心活动 | 关键输出 | 质量保障 |
---|---|---|---|
架构需求 | 需求获取、类图生成 构件打包、需求评审 | 构件化的需求模型 需求评审报告 | 多次需求评审(0:N) 确保需求完整性 |
架构设计 | 提出架构模型、构件映射 分析构件交互、产生架构 | 完整软件架构 构件交互模型 | 多次设计评审(0:M) 保证架构质量 |
架构文档化 | 记录架构设计成果 形成多份文档 | 架构设计文档 构件规格说明 | 文档标准化 便于团队协作 |
架构实现 | 构件实现、构件组装 系统测试 | 可运行软件系统 测试报告 | 全面系统测试 验证架构设计 |
架构演化 | 需求变化归类、演化计划 构件变动、技术评审 | 演化后的架构 更新的构件库 | 多次技术评审(0:N) 适应需求变化 |
架构需求过程:从需求到构件的转换
需求分析的系统化方法:
- 需求获取:从需求库中收集各类需求,需求库的存在体现了知识积累和复用的重要性
- 生成类图:将需求转化为面向对象的类图表示,建立系统的静态结构模型
- 对类进行分组:根据功能相关性将类进行逻辑分组,为后续构件化奠定基础
- 把类打包成构件:将分组后的类封装成可独立部署和复用的构件
- 需求评审:通过0:N次评审确保需求的完整性和准确性
核心价值:这个过程实现了从抽象需求到具体构件的可追溯转换,为后续的架构设计提供了结构化的输入。
架构设计过程:构建系统蓝图
架构设计过程,体现了系统化的设计方法:
- 提出架构模型:基于需求分析结果,选择合适的架构风格和基本框架
- 映射构件:将需求阶段产生的构件映射到架构模型中,确定构件在系统中的位置
- 分析构件相互作用:研究构件间的交互方式、依赖关系和协作机制
- 产生架构:综合以上步骤,形成完整的软件架构设计
- 设计评审:通过0:M次评审保证架构的合理性和可行性
关键特点:设计过程强调构件间关系的分析,这是ABSD方法区别于传统开发方法的重要特征。
架构实现过程:从设计到可运行系统
设计到实现的转化:
- 分析与设计:基于复审后的架构文档进行详细分析,可以利用构件库中的已有构件
- 构件实现:编写代码实现各个构件的具体功能
- 构件组装:将实现的构件按照架构设计进行组装,构件库在此阶段发挥重要作用
- 系统测试:对组装后的系统进行全面测试,验证架构设计的正确性
构件库的作用:构件库贯穿整个实现过程,体现了软件重用的核心思想,提高了开发效率并保证了质量一致性。
架构演化过程:适应变化的持续改进
架构演化过程,体现了系统的可持续发展:
- 需求变化归类:对变更需求进行分类分析,明确变化的性质和影响范围
- 架构演化计划:制定有序的演化策略,规划演化步骤和资源配置
- 构件变动:从构件库获取或修改相关构件,实现架构调整
- 更新构件相互作用:调整构件变动后的交互关系,维护系统完整性
- 构件组装与测试:重新组装并测试,验证演化效果
- 技术评审:通过0:N次技术评审确保演化质量
演化特点:演化过程形成闭环,演化后的架构可以继续适应新的需求变化,体现了ABSD方法的可持续性。
ABSD方法的核心价值
通过这三个阶段的有机结合,ABSD方法实现了:
- 系统化的开发流程:从需求到实现再到演化的完整链条
- 强大的复用能力:需求库和构件库支撑的多层次复用
- 质量保障机制:多次评审确保每个阶段的质量
- 持续改进能力:演化过程支持系统的长期发展
这种方法特别适合大型、复杂的软件系统开发,通过架构驱动的方式确保了开发过程的可控性和最终产品的高质量。