主要学习软件架构的基本概念、基于架构的软件开发方法、软件架构风格、特定领域软件架构体系方法以及系统架构的评估。
软件架构的概念
1、定义
软件体系结构是指系统的一个或者多个结构,这些结构包括软件的构件(可能是程序模块、类或者中间件)、构件的外部可见属性及其之间的相互关系。系统结构的设计包括数据设计和体系结构设计,后者主要关注软件构建的结构、属性和交互作用。
2、软件架构设计与生命周期
软件架构是贯穿整个生命周期的
- 需求阶段
有利于各阶段参与者的交流,也易于维护各阶段的可追踪性 - 设计阶段
关注的最早和最多的阶段 - 实现阶段
有效实现从软件架构设计向实现的转换 - 构建组装阶段
可复用构建组装的设计能够提高系统实现的效率 - 部署阶段
组织和展示部署阶段的软硬件架构、评估分析部署方案 - 后开发阶段
主要围绕维护、演化、复用进行
体系结构描述语言(ADL)
用于描述软件体系架构的语言,与其他建模语言最大的区别在于其更关注构件间互联机制(连接子),典型的ADL语言包括Union、Rapide、Darwin、Wright、C2SADL、Acme、XADLOL、XYZ/ADL和ABC/ADL等。
多视图
反映的是一组系统的不同方面,体现了关注点分散的思想,通常与ADL结合来描述系统的体系结构。
视图不仅用语描述设计阶段的模型
实现阶段的体系结构研究的内容
- 研究基于SA的开发过程支持
- 寻求从SA向实现过度的途径
- 研究基于SA的测试技术
缩小软件架构设计与底层实现概念差距的手段:
- 模型转换技术、封装底层的实现细节、在SA模型中引入是现阶段的概念(如用程序设计语言描述)
中间件支持的连接子(封装的连接机制)实现具有的优势
- 中间件可有效保证构件之间的通信完整性
- 产品化的中间件能够更好地保证最终系统的质量的属性。
待复用构件(现成的)对最终系统的结构体系和使用限定条件(环境假设)与实际状况不匹配造成的冲突,成为失配。
- 构件本身的失配
- 连接子(互联机制)的失配
- 部分和整体的失配
部署安装后(后开发阶段)的系统架构研究方向
- 动态软件体系结构
- 体系结构恢复与重建
体系结构重建方法
- 手工体系结构重建
- 工具支持的手工重建
- 通过查询语言来自动建立聚集
- 使用其他技术(如数据挖掘)
3、软件架构的重要性
- 软件架构设计是降低成本、改进质量、按时和按需交付产品的关键因素。
- 软件架构的重要性
- 满足系统的品质
- 使受益人达成一致的目标
- 能够支持计划编制过程
- 对系统开发的指导性
- 能够有效地管理复杂性
- 为复用奠定基础
- 降低维护费用
- 能够支持冲突分析
基于架构的软件开发方法
1、体系架构的设计方法概述
- 基于体系结构的软件设计方法(ABSD)从项目总体功能框架明确开始(需求尚未完成)
- ABSD方法的三个基础:功能的分解、通过选择体系结构风格来实现质量和商业需求、软件模板的使用
2、概念与术语
ABSD是自顶向下、递归细化的,迭代的每一都有清晰的定义,有助于降低体系结构设计的随意性
3、基于体系结构的开发模型
体系结构需求
体系结构设计
体系结构文档化
体系结构复审
体系结构实现
体系结构演化
4、体系结构需求
- 体系结构的需求工作包括获取用户需求和标识系统中拟用构件
- 体系结构需求的获取一半来自三个方面:质量目标、系统的商业目标和系统开发人员的商业目标
- 标识构件分三步完成: 生成类图-对类进行分组-把类打包成构件
架构需求评审
5、体系结构设计
软件的体系设计过程
设计评审必须邀请独立于系统开发的外部人员
6、体系结构文档化
主要输出结果:体系结构规格说明、测试体系结构需求的质量设计说明书
7、体系结构复审
主版本软件体系结构分析之后,要安排一次由外部人员参加的复审
复审的目的是表示潜在的风险,及早发现体系结构设计中的缺陷和错误。
8、体系机构实现
分析与设计-构件实现-构件组装-系统测试
体系结构说明书中定义了系统中构件与构件之间的关系
测试包括单个构建的功能性测试及被组装应用的整体功能和性能测试
9、体系结构的演化
体系结构演化史系统演化步骤去修改应用,以满足新的需求
系统演化步骤
需求变化归类
体系结构演化计划
构件变动
更新构件的相互作用
构建组装与测试
技术评审
演化后的体系结构
软件架构风格
软件体系结构设计的核心目标是重复的体系结构模式(软件复用/重用)
1、软件架构风格概述
一个体系结构定义一个词汇表核一组约束
词汇表包含构件和连接件
约束定义构件和连接件的组合方式
2、经典软件体系结构风格
- 管道核过滤器
每个构件都有输入和输出 - 数据抽象核和面向对象组
构件是对象,即抽象数据类型的实例 - 事件驱动系统
构件不直接调用一个过程,而是触发或广播一个或多个事件 - 分层系统
每一层为上层服务,并作为下层的接口。仅相邻层间具有层接口 - 仓库系统级知识库
- C2风格
通过连接件连接构件或者某个构件组,构件与构件之间无连接
3、客户/服务器风格
- 二层C/S模式
优点:
客户应用和服务器构件分别运行在不同的计算机上
缺点:
开发成本高,客户端设计复杂,信息内容和形式单一,不利于推广,软件移植困难、软件维护和升级困难 - 三层C/S模式
瘦客户端模式,应用该功能分为表示层、功能层、数据层
- 表示层
用户接口与应用逻辑层的交互,不影响业务逻辑 - 功能层
处理业务逻辑 - 数据层
读写数据库
4、浏览器/服务器风格
B/S风格是三层应用结构的实现方式:浏览器/Web服务器/数据库服务器
相对于C/S的不足之处
- 缺乏动态页面的支持能力
- 系统拓展能力差
- 安全性难以控制
- 响应速度不足
- 数据交互不强
- 响应速度不足
- 安全性难以控制
- 系统拓展能力差
特定领域软件体系结构
1、DSSA的定义
Domain Specific Software Achitecture
DSSA是在一个特定应用领域中为一组应用提供组织结构参考的标准软件体系结构,即用于某一类特定应用领域的标准软件构件集合
特征
领域性
普遍性
抽象性
可复用性
2、DSSA的基本活动
领域分析
通过分析领域中系统的共性需求,建立领域模型
领域设计
设计DSSA,且DSSA需要具备领域需求变化的适应性
领域发现
获取可重用信息
3、参与DSSA的人员
领域专家
领域分析师
领域设计人员
领域实现人员
4、DSSA的建立过程
过程是并发的、递归的、反复的螺旋结构
-
五个阶段
- 定义领域范围
- 定义领域特定元素
- 定义领域特定的设计和实现约束
- 定义领域模型和体系结构
- 产生、搜集可重用的单元
系统架构的评估
1、系统架构评估概述
2、评估中的重要概念
- 敏感点
实现质量目标时需要注意的点,即构件特性
- 权衡点
影响多个质量属性的敏感点
- 风险承担者或利益相关者
影响体系结构或被体系结构影响的群体
- 场景
确定架构质量评估目标的交互机制,一般采用触发机制、环境和影响三个方面来描述
3、主要评估方法
- SAAM
特定目标
评估技术
质量属性
风险承担者
体系结构描述
方法活动
知识库可复用性
方法验证(应用领域) - ATAM
特定目标
评估技术
质量属性
风险承担者
体系结构描述
方法活动
知识库可复用性
方法验证(应用领域)