架构设计

目录

  1. 软件架构设计
  2. 层次式架构设计
  3. 企业集成架构设计
  4. 面向服务架构设计
  5. 面向构件的架构设计
  6. 系统安全架构设计
  7. 系统可靠性架构设计

1. 软件架构设计

1.1 定义

软件体系结构是指系统的一个或者多个结构,结构中包括软件的构件,构件的外部可见属性以及它们之间的相互关系。数据设计可表示出传统系统中体系结构的数据构件和面向对象系统中类的定义,体系结构设计则主要关注软件构件的结构,属性和交互作用

系统架构师:系统的设计责任人,是一个负责理解和管理并最终确认和评估非功能性系统需求(可维护性,性能,可靠性,测试性)给出开发规范,搭建实现的核心构架,对整个软件架构、关键构件、接口进行总体设计。

1.2 ABSD

ASBD指构成体系结构的商业、质量和功能需求的组合驱动的,设计活动从项目总体功能框架明确就开台,ABSD有三个基础,第一个基础是功能的分解,第二个基础是通过选择体系结构风格来实现质量和商业需求,第三个基础是软件模板的使用。

  1. 概念
    • 设计元素:ABSD方法是一个自顶向下,递归细化的方法,直到能产生软件构件和类。在最顶层,系统被分解为若干概念子系统和一个或多个软件模板
    • 视角与视图:从不同的视角来检查体系结构的不同属性,展示功能组织的静态视角判断质量特性,展示并发行为的动态视角判断系统行为特性,逻辑视图来记录设计元素的功能和接口概念
    • 用例和质量场景:用例用来捕获功能需求,定义特定场景来捕获质量需求(变更,性能,可靠性和交互性),非预期场景可能不能真正实现,但它们在决定设计的边界条件时很有用。
    • 开发过程:体系结构需求,设计,文件化,复审,实现和演化等六个子过程
  2. 体系结构需求
    • 需求过程主要是获取用户需求,标识系统中所要用到的构件
    • 需求来自三方面:系统的质量目标,系统的商业目标和系统开发人员的商业目标
    • 标识构件:大致分三步,1.生成类图,2.对类进行分组,3.把类打包成构件
    • 需求评审:组织分析人员,客户,设计人员,测试人员审查,需求是否真实反映了用户的需求,类的分组是否合理,构件合并是否合理。
  3. 体系结构设计
    • 提出软件体系结构模型
    • 把已标识的构件映射到软件体系结构中,将产生一个中间结构
    • 分析构件之间的相互使用,为把所有标识的构件集成到体系结构做准备
    • 最后就是产生软件体系结构,并邀请独立于系统开发的外部人员对体系结构进行设计评审
  4. 其它
    • 体系结构文档化:输出体系结构规格说明书和测试体系结构需求的质量设计说明书
    • 体系结构的演化:需求变化进行归类,使变化的需求与已有构件对应,制订体系结构演化计划,修改、增加或删除构件,更新构件的相互作用,构件组装与测试

软件体系结构设计的一个核心目标是重复的体系结构模式,即达到体系结构级的软件重用

1.3 软件架构风格

体系结构风格定义一个词汇表和一组约束,词汇表包含一些构件和连接件类型,需约束指出系统是如何将构件和连接件组合起来。体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效组织成一个完整的系统。

1.3.1 数据流风格

  1. 管理和过滤器,良好内聚,低耦合,具有重用性,维护性,并行,并不适合处理交互应用
    • 构件:一组输入与输出的过滤器,数据输入构件,经过内部处理,然后产生数据输出
    • 连接件:数据流传输的管道
  2. 批处理序列,其约束就是数据完整性
    • 构件:固定顺序计算单元
    • 连接件:数据传递

1.3.2 调用/返回风格

  1. 数据抽象和面向对象组织,良好内聚,模块分解 ,但依赖性强且具有传递依赖
    • 构件:对象
    • 连接件:对象的调用
  2. 层次结构:模块分解,影响相邻两层扩展和重用
    • 构件:每层上的应用
    • 连接件:协议
  3. 主程序/子程序:CS架构或三层CS架构,BS风格,调用关系具有层次性,取决于它调用的正确性
    • 构件:主、子程序
    • 连接件:过程调用

1.3.3 独立构件风格

  1. 事件驱动,软件重用性,方便事件注册和维护;缺点是放弃计算控制,数据交换,和上下文约束
    • 构件:事件
    • 连接件:事件触发
  2. 进程通信
    • 构件:进程
    • 连接件:消息传递

1.3.4 虚拟机风格

  1. 解释器
    • 构件:解释引擎
    • 连接件:解释代码存储区
  2. 基于规则,主要应用于人工智能
    • 构件:规则集,解释器,选择器
    • 连接件:工作内存

1.3.5 仓库风格

  1. 黑板系统,中央数据结构的当前状态触发进程执行的选择;缺点是没有确定性算法的软件
    • 构件:中央仓库
    • 连接件:
  2. 数据库系统,构件控制共享数据
    • 构件:中央仓库,多个独立处理单元
    • 连接件:
  3. 超文本系统,构件以网状链接方式连接用户任意跳转相关构件
    • 构件:
    • 连接件:

1.4 特定领域软件体系结构

DSSA是专用于一类特定类型的任务的,在整个领域中能有效地使用的,为成功构造应用系统限定了标准的组合结构的软件构件的集合

  1. DSSA特征有:一个严格定义的问题域和问题解域,具有普遍性,对整个领域的构件组织模型的恰当抽象,具备领域固定的、典型的在开发过程中可重用元素
  2. 基本活动:领域分析,领域设计,领域实现
  3. 角色:
    • 领域专家:提供关于领域中系统的需求规约和实现的知识,领域字典,选择样本系统
    • 领域分析师:由具有知识工具背景的分析员担任,任务有控制领域分析过程,进行知识获取,并组织到领域模型中
    • 领域设计人员:由有经验的软件设计人员来担任,任务有控制整个软件设计过程,根据领域模型和现有的系统开发出DSSA
    • 领域实现人员
  4. 建立过程:定义领域范围,定义领域特定的元素,定义领域特定的设计和实现需求约束,定义领域模型和体系结构,产生或搜集可重用的产品单元

1.5 系统架构的评估

质量属性

  1. 性能,系统的响应能力,常指单位事件内处理事务的数量或所需时间
  2. 可靠性,在意外或错误使用的情况下维护软件系统的功能特性的基本能力,包含容错和健壮性
  3. 可用性,正常运行的时间比例
  4. 安全性,向合法用户提供服务同阻止非授权用户使用
  5. 可修改性:较高的性能价格对系统进行变更的能力,包含可维护性,可扩展性,结构重组及可移植性
  6. 功能性:完成期望工作的能力
  7. 可变性:体系结构经扩充或变更而成为新体系结构的能力
  8. 互操作性:为外部功能提供软件入口

概念
1.敏感点:构件的特性,实现质量目标时应关注什么
2.权衡点:影响多个质量属性的特性,是多个质量属性的敏感点
3.场景:在进行体系结构评估时,首先要精确地得出具体的质量目标,为得出这些目标而采用的机制叫做和场景,一般从风险承担者的角度对与系统的交互的简短描述,采用刺激,环境,响应三方面描述

方法
1.SAAM,采用场景技术,把任何形式的质量属性都具体化为场景,分5个步骤:场景开发,体系结构描述,单个场景评估,场景交互和总体评估
2.ATAM,

2.层次式架构设计

2.1 表现层框架设计

处理用户接口部分,担负用户与系统对话功能,检查,控制,转换

  1. MVC,把一个应用的输入,处理,输出流程按照视图、控制、模型的方式进行分离,形成了控制器、模型、视图三个核心模块
    mvc
  2. 使用XML设计表现层,整个xml表现层解析的机制是一种策略模式,XML标记用于定义数据本身的结构和数据类型,在调用显示 GUI时,不直接的调用特定的表现技术的API,而是装载GUI对应的XML配置文件,再根据特定的表现技术的解析器解析xml,得到GUI视图实现对象
  3. UIP,分UIC,UIPC两层,UIP管理经过UIC的信息流,管理UIP中各个事件之间的事务,修改用户过程的流程以响应异常;将概念上的用户交互流程从实现 或者涉及的设备上分离出来,保持内部的事务关联状态,通常是持有一个或者多个的与用户交互的事务实体。

2.2 业务逻辑层框架设计

一般分为接口和实现两部分

  • 接口用于定义业务逻辑组件,定义业务逻辑组件必须实现的方法是整个系统运行核心,通常按模块来设计业务逻辑组件,每个模块设计一个业务逻辑组件,并且每个业务逻辑组件以多个DAO组件作为基础。
  • 业务逻辑组件以DAO组件为基础,实现所有的业务逻辑,并且向外提供了统一的Facade接口,前台WEB仅仅依赖这个Facade接口

2.3 数据访问层框架设计

  1. 在线访问,基于数据库连接,读取数据等操作不断与后端数据源交互
  2. Data Access Object,数据库访问对象,主要的功能就是用于进行数据操作的,在程序的标准开发架构中属于数据层的操作,定义一系列数据库的原子性操作
  3. Data Transfer Object,经典EJB模式,DTO是一组对象或数据容器,跨不同的进程或网络的边界来传输数据
  4. 离线数据模式,以数据为中心,数据从数据源获取之后,将按照某种预定义的结构存放在系统中,成为应用的中心。
  5. O/R Mapping,领域模型与ER模型转换

相关概念

  • 工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类
  • Hibernate:本质上是一个提供数据库服务的中间件,对JDBC轻量级的对象封装,可使用对象编程思维操纵数据库
  • 事务处理:ACID原则,atomicity,consistency,isolation,durabiltyp0
    petshop体系架构petshop

3.企业集成架构设计

  1. 是什么
    • 是一个支持复杂信息环境下信息系统开发、集成和协同运行的软件支撑环境
  2. 做什么
    • 通信服务,提供分布环境下透明的同步/异步通信服务功能
    • 信息集成服务,实现异种数据库系统之间数据的交换,互操作,分布数据管理和共享信息模型定义
    • 应用集成服务,通过高层应用编程接口来实现对相应应用程序的访问
    • 二次开发工具
    • 平台运行管理工具
  3. 怎么做
    • 网络集成:语法互联
    • 数据集成:语义互联
      解决不同应用和系统间的数据共享和交换需求,包括共享信息管理,共享模型管理,共享信息访问机制;主要有三种模式:数据联绑,数据复制,适配器
    • 应用集成:语用互操作
      指多个应用系统根据业务逻辑的需要而进行的功能之间的相互调用和互操作。
      包括集成适配器,集成信使,集成面板,集成代理4种。
      • 信使集成:系统这间的通信和数据交换通过消息代理来实现 ,每个应用需要建立与集成信使之间的接口连接
      • 集成面板:从应用交互实现的层面来描述客户端应用和服务器端应用集成的方法,对服务器应用功能的抽象和简化,为客户端应用调用服务器应用提供了一种简化的公共接口。
      • 代理集成:装待集成的应用间的交互逻辑从应用中分离出来,并对应用间的交互逻辑进行封装,进而由集成代理来引导多个应用之间的交互。
    • 会聚集成:集成化运行
  4. 集成技术
    • EDI:用一种国际公认的标准格式进行数据交换与处理
    • xml
    • step:一个描述如何表达和交换数字化产品信息的ISO标准

4. 面向服务架构设计

4.1 概念(what)

4.2 参考架构、主要技术、实施过程(how)

4.3 设计原则与模式(why)

5. 面向构件的架构设计

5.1 概念(what)

  1. 构件:是一种组装单元,具有规范的接口规约和显示的语境依赖
    • 独立部署单元:封装全部内部特征,具有原子性,外部不能访问构件内部细节信息
    • 作为第三方的组装单元:通过良好定义的接口与外部环境交互
    • 没有外部的可见状态:一般只有一个实例,构件与其拷贝无区别
  2. 对象:一个实例单元,具有唯一标志,可具有外部可见状态,封装了自已的状态和行为。对象必然属性一个构件,构件可以有对象或其它过程体。
  3. 模块:
  4. 接口:一个已命名的一组操作的集合

5.2 构件标准(how)

5.3 构件结构(why)

5.4 典型架构

6. 系统安全架构设计

7. 系统可靠性架构设计


附录 名词

1.ASBD-Architecture Based Software Design 基于体系结构的软件设计
2.DSSA-Domian Specific Software Architecture 特定领域软件体系结构
3.SAAM-Scenarios-based Architecture Analysis Method
4.ATAM-Architecture Tradeoff Analysis Method 体系结构权衡分析方法