软件架构概述
概述
软件架构是从需求分析到软件设计之间的过渡过程,只要架构设计好,整个软件就不会出现坍塌性的错误。
- 架构设计就是需求分配,将满足需求的职责分配到组件上。
- 软件架构为系统提供了结构、行为和属性的高级抽象,由构件的描述、构件的相互作用(连接件)、指导构件集成的模式以及这些模式的约束组成。
- 软件架构不仅规定了系统的组织结构和拓扑结构,还显示了系统需求和构件之间的对应关系,提供了设计决策的基本原理。
- 解决好软件的复用、质量和维护问题,是研究软件架构的根本目的。
软件架构设计的核心要点
- 包括提出架构模型、产生架构设计、进行设计评审等活动,是一个迭代的过程。
- 架构设计主要关注软件组件的结构、属性和交互作用,并通过多种视图全面描述系统的架构。
- 架构能在设计变更相对容易的阶段,为技术人员与非技术人员就软件设计进行交流,能展现软件结构、属性与内部交互关系。
- 架构是项目干系人进行交流的手段,明确了对系统实现的约束条件,决定了开发和维护组织的结构,制约系统质量属性。
- 架构使推理和控制的更改更加简单,有助于原型设计和培训。
- 架构是可传递和可复用的模型,通过研究架构可预测软件质量。
软件架构设计与生命周期
软件架构设计贯穿于软件开发的各个阶段,每个阶段关注点不同,整体流程可总结为"需设实组部后"。
需求分析阶段
- 关注对象:问题空间(需求本身)与解空间(架构方案)。
- 重点:如何根据需求模型构建SA模型,如何保证模型转换的可追踪性。
设计阶段
- 这是SA研究关注最早和最多的阶段。
- 主要内容:
- SA模型的描述(如构件、连接子等基本概念)
- SA模型的设计与分析方法
- SA设计经验的总结与复用
- 研究层次:基本概念、体系结构描述语言(ADL)、多视图表示。
实现阶段
- 关注SA设计向实现的转换。
- 主要内容:
- 开发过程支持(如项目组织、配置管理)
- 模型映射与组装(如将设计语言元素引入SA阶段、复用中间件平台)
- 基于SA的测试技术
构件组装阶段
- 目标:高效组装可复用构件,实现系统蓝图。
- 关注点:
- 支持构件互联(连接子实现)
- 检测并消除体系结构失配(如接口、连接子、全局假设冲突等)
部署阶段
- 作用:
- 提供高层体系结构视图,描述软硬件模型
- 分析部署方案的质量属性,选择合理部署方案
后开发阶段
- 关注:维护、演化、复用等。
- 研究方向:
- 动态软件体系结构(运行时结构变化、重配置)
- 体系结构恢复与重建(如手工重建、工具支持、数据挖掘等)
记忆口诀:需设实组部后(需求、设计、实现、组装、部署、后开发)
每个阶段都有其独特的关注点和方法,掌握各阶段的核心任务和常见问题,有助于系统性理解软件架构设计全流程。
构件
构件是软件架构的核心单元,理解其本质、特性和相关技术是考试与实际开发的重点。