【软件系统架构】系列十三:系统架构设计——软件架构概念

一、软件架构概念
1.定义
-
软件架构是软件系统的高层抽象,描述系统的结构、行为和属性。
-
架构由构件(组件)、连接子(组件间的交互)、设计模式及约束组成。
-
作用:
-
指定系统组织结构和拓扑。
-
显示系统需求与构件之间的对应关系。
-
为设计决策提供基本原则。
-
目标:解决软件复用、质量、可维护性问题。
2.架构设计本质
-
是需求分配过程:将满足需求的职责分配到组件上。 -
是从需求分析到设计实现的桥梁。 -
不同于可运行软件,是分析、选择和推理设计的表达工具。
3.软件架构层次
-
数据设计:定义数据构件或类,封装属性与操作。 -
体系结构设计:关注构件的结构、属性和交互。
二、软件架构设计的作用
-
提供系统结构的可选方案,便于技术与非技术人员交流。 -
决定开发和维护的组织结构。 -
约束系统质量属性(性能、可靠性、安全等)。 -
便于原型开发、设计变更和知识传递。 -
支持软件复用和质量预测软件。
# 三、软件架构与生命周期
1.需求分析阶段
核心目标
-
从问题空间到解空间的过渡:把用户需求、业务流程和功能需求转化为可实现的架构设计模型。
关键活动
-
识别系统需求与质量属性(性能、可用性、安全性等)。 -
构建初步的架构视图,标识关键构件及其交互关系。 -
进行需求与架构模型的可追踪性映射,确保设计决策可验证。
关注点与价值
-
架构设计早期介入可降低后续系统风险。 -
便于多方沟通:技术人员、产品经理和用户理解系统结构。 -
形成初步蓝图,为后续设计提供方向。
2.设计阶段
核心目标
-
将架构思想具体化,形成可分析、可复用的架构模型。
关键活动
-
构件与连接子设计:定义组件功能和接口,明确组件间交互方式。 -
架构描述语言(ADL)使用:标准化描述系统的构件、连接关系和约束。 -
多视图建模:通过逻辑视图、部署视图、模块视图等全面展示系统结构。
关注点与价值
-
架构决策记录:哪些构件承担哪些职责,如何互相通信。 -
支持架构分析(性能、安全性、可维护性)。 -
为实现阶段提供清晰设计蓝图,并便于复用设计经验。
3.实现阶段
核心目标
-
将架构模型转化为可运行的系统。
关键活动
-
基于架构的开发支持:项目组织、配置管理、版本控制策略。 -
架构到实现映射:将构件映射到具体代码模块、服务或中间件平台。 -
架构驱动测试:通过架构模型指导单元测试、集成测试和性能验证。
关注点与价值
-
保证架构决策在实现中落地,避免”架构漂移”。 -
提高开发效率和一致性,减少重复开发。 -
支持质量属性验证,确保系统性能和可靠性符合预期。
4.构件组装阶段
核心目标
-
在架构模型指导下,将可复用构件组装为完整系统。
关键活动
-
构件互联和连接子实现:保证组件间通信正确。 -
构件失配检测与修复:处理接口不兼容、功能冲突或全局假设冲突。 -
构件部署策略优化:确保部署过程高效、安全。
关注点与价值
-
提升复用性:构件可以在不同系统中重复使用。 -
减少集成风险:架构模型作为蓝图降低组装错误。 -
确保系统整体一致性和可维护性。
5.部署阶段
核心目标
-
将系统安装到软硬件环境,并确保其稳定运行。
关键活动
-
架构视图指导部署方案:逻辑视图、组件依赖关系、运行环境需求。 -
分析部署方案质量属性:负载均衡、容错性、安全性。 -
优化部署策略:物理服务器/虚拟机分布、容器化方案、云平台资源分配。
关注点与价值
-
提前发现潜在性能瓶颈或安全隐患。 -
支持系统扩展与运维规划。 -
提供清晰的部署文档,减少部署错误。
6.后开发阶段(维护与演化)
核心目标
-
确保系统长期稳定运行,支持演化和复用。
关键活动
-
动态软件体系结构:支持运行时重配置和系统自适应调整。 -
例:根据业务负载自动调整服务实例数量。 -
架构恢复与重建:对未按架构设计开发的系统进行架构分析和重建。 -
方法包括手工分析、工具辅助、查询语言提取或数据挖掘。
关注点与价值
-
提升系统灵活性与可维护性。 -
支持持续演化,满足新业务需求。 -
为系统迁移、升级和复用提供基础。
7.软件架构与生命周期

四、构件(Component)
1.构件的定义
-
构件是独立可交付的功能单元,外界通过接口访问其提供的服务。 -
可以由一组原子构件组成,原子构件是部署、版本控制和替换的最小单位。 -
构件强调可复用性、独立部署性,适合系统级组件化设计。
2.构件的特性
(1)独立部署单元
-
构件可单独部署或与同类构件一起部署。 -
便于版本管理、替换和升级。
(2)接口驱动
-
外部只能通过公开接口访问构件功能,不直接依赖内部实现。 -
强调封装性和模块化。
(3)无外部可见状态
-
构件内部状态对外不可见,保证组件间低耦合。
(4)复用性
-
构件可在不同系统中重复使用,减少开发成本。
(5)组装单元
-
构件可以作为第三方可组装单元,支持大型系统集成。
3.构件的分类
| 类型 | 定义 | 特点 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
区别:原子构件强调部署单元,模块强调逻辑组织,构件家族强调组合与整体管理。
4.构件与对象的区别
| 特性 | 构件 | 对象 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5.构件的部署与复用策略
(1)独立部署
-
构件可单独升级或替换,降低系统维护风险。
(2)组装复用
-
通过统一接口和协议,构件可以在不同系统中复用。
(3)版本管理
-
每个构件维护独立版本,支持依赖管理。
(4)连接与互操作
-
构件之间通过连接子(Connector)通信,实现低耦合集成。
(5)失配检测
-
在组装阶段,需要检查接口、协议或全局假设是否失配,并修复。
6.构件设计原则
-
单一职责原则:每个构件承担单一功能。 -
高内聚、低耦合:构件内部功能紧密相关,外部依赖最小。 -
接口隔离:提供清晰、简洁、稳定的接口。 -
可替换性:可在不影响其他系统的情况下替换构件。 -
复用优先:构件设计时考虑跨项目复用。
7.构件生命周期

说明:
-
左侧展示系统中已部署的构件(v1),右侧展示运行时升级或重配置的构件(v2)。 -
使用箭头表示部署、替换与重配置关系。 -
注释标明构件版本、状态和功能,便于理解动态演化。 -
展示了构件支持的长期演化与运行时适应性,贴合后开发阶段(动态软件体系结构)的概念。
五、总结
-
软件架构是系统设计的核心桥梁,是分析、沟通、决策的工具。 -
架构设计贯穿软件生命周期,从需求分析到维护。 -
构件是架构的基本单位,区分于对象和模块,强调复用、部署独立性与接口服务。
夜雨聆风