一. 系统架构概述系统架构的定义
系统架构(System Architecture)是系统的一种整体的高层次的结构表示,是系统的骨架和根基,支撑和链接各个部分,包括构件、连接件、约束规范以及指导这些内容设计与演化的原理,是刻画系统整体抽象结构的一种手段。
软架构的定义
软件体系结构为软件系统提供了结构、行为和属性的高级抽象,由构成系统的元素描述、元素的外部可见属性、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策和演化的基本原理,是构建于软件系统之上的系统级复用。
信息系统架构的定义
信息系统架构 ISA 是关于软件系统的结构、行为和属性的高级抽象,结构中包括软件的构件、构件的外部可见属性、这些构件之间的相互关系。
在描述阶段,其对象是直接构成系统的抽象组件以及各个组件之间的连接规则,特别是相对细致的描述组件之间的通信。
在实现阶段,这些抽象组件被细化为实际的组件,比如具体的类、对象。
二. 软件架构的生命周期
1. 需求分析阶段
从软件需求模型向SA模型的转换,主要关注两个问题:
(1) 根据需求模型构建架构模型:用例图经过词法分析转换为SA模型(类图)。
(2) 保证模型转换的可追踪性:表格或用例映射。
2. 设计阶段
这个阶段的研究主要包括3个方面:
(1) SA模型的描述
(2) SA模型的设计与分析方法
(3) 对SA设计经验的总结与复用
SA模型描述的三个层次
(1) SA的基本概念:SA描述方法是构件和连接子的建模。
(2) 体系结构描述语言ADL:支持构件、连接子及其配置的描述语言。
(3) SA模型的多视图表示:体现了关注点分离的思想。“4+1”视图模型。
1. 逻辑视图:最终用户关注系统的功能,描述系统的静态结构。表示了设计模型中在架构方面具有重要意义的部分。记录设计元素的功能和概念接口。(类图、对象图)
2. 开发视图:程序员关注系统的实现, 描述系统构件组织和模块之间的依赖。对组成系统的构件进行建模,描述了在开发环境中软件的静态组织结构,代码构件组织、模块、模块之间的依赖关系。(模块结构图、构件图)
3. 过程视图:系统集成人员关注并发和同步特征,描述线程间的并发和同步。可执行线程和进程作为活动类的建模,是逻辑视图的一次执行实例,描述了并发与同步结构。(活动图、状态图)
4. 物理视图:系统工程师关注系统的部署、安装, 定义软硬件的物理体系结构。描述了软件到硬件的映射,主要描述硬件配置,系统中软硬件的物理体系结构及连接。(配置图)
5. 统一场景:分析人员和测试人员关注系统的行为。
用例:描述功能需求。
质量场景:描述质量需求。
3. 实现阶段
这个阶段的研究主要包括3个方面:
(1) 研究基于SA的开发过程支持:项目组织结构、配置管理。
(2) 寻求从SA模型向实现过渡的途径:模型映射、构件组装、复用中间件平台。
(3) 研究基于SA的测试技术。
填补高层SA模型和底层实现的鸿沟的典型方法
(1) 在SA模型中引入实现阶段的概念,如引入程序设计语言元素。
(2) 通过模型转换技术,将高层的SA模型逐步精化成能够支持实现的模型。
(3) 封装底层的实现细节,使之成为较大粒度构件,在SA指导下通过构件组装的方式实现系统,通常需要底层中间件平台的支持。
4. 构件组装阶段
这个阶段的研究主要包括2个方面:
(1) 支持可复用构件的互联,即对SA设计模型中规约的连接子的实现提供支持。
(2) 在组装过程中,检测并消除体系结构失配问题。
对设计阶段连接子的支持:
将连接子转换为具体的程序代码,在工具的支持下,生成连接子的代码。
中间件的基本功能:
提供了构件之间跨平台交互的能力。
提供强大的公共服务能力。
体系结构失配:待复用构件对最终系统的体系结构和环境的假设,与实际状况不同而导致的冲突。
5. 部署阶段
SA对软件部署的作用:
(1) 描述部署阶段的软硬件模型:基于SA提供的高层的体系结构视图。
(2) 分析部署方案的质量属性:基于SA模型分析,选择合理的部署方案。
6. 后开发阶段
这个阶段的研究主要围绕维护、演化、复用来进行,有2个典型的研究方向:
(1) 动态软件体系结构
- 体系结构设计阶段的支持
变化的描述、修改策略、描述修改过程、修改的可行性、修改所带来的影响。
- 运行时刻基础设施的支持
体系结构的维护、保证修改在约束范围内、运行时刻信息、分析修改后的体系结构符合指定的属性、正确映射构造元素的变化到实现模块。
(2) 体系结构恢复与重建
从已实现的系统中获取体系结构的过程,输出一组体系结构视图。
重建的方法分为4类:手工重建、工具支持的手工重建、通过查询语言来自动建立聚集、使用其它技术(数据挖掘)。
三. 基于架构的软件设计ABSD
基于体系结构的软件设计 Architecture-Based Software Design
ABSD方法是体系结构驱动的,指由构成体系结构的商业、质量、功能需求的组合驱动的架构设计。
ABSD方法是一个自顶向下、递归细化的方法,软件系统的体系结构通过该方法得到细化,直到能产生软件构件和类。
ABSD设计活动从项目总体框架明确就开始,此时需求抽取和分析还没完成。
ABSD方法的3个基础
1. 功能的分解。
2. 通过选择体系结构风格来实现质量和商业需求。
3. 软件模板的使用。
视角与视图 — 描述软件架构
用例 — 描述功能需求
质量场景 — 描述质量需求
静态视角:展示功能组织,判断质量特性。
动态视角:展示并发行为,判断行为特性。
- 描述软件架构:视角 + 视图
- 描述需求:用例</