首页 小组 文章 相册 留言本 用户 搜索 我的社区 在线学堂 商城 购物车 支付钱包

[打卡]《系统分析师教程》D13-4.23.Chapter 12 软件架构设计

2022-04-23 23:40:51
0
352

软件架构设计,这一章的内容比较多,共7个小节。图文并茂,笔记如下。

1. 软件架构的概念

架构设计就是需求分配,即将满足需求的职责分配到组件上。如下图所示。


  • 软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。架构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包合一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。
  • 软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
  • 软件架构是项目干系人进行交流的手段j明确了对系统实现的约束条件,决定了开发和维护组织的组织结构,制约着系统的质量属性。
  • 软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础。
  • 软件架构是可传递和可复用的模型J通过研究软件架构可能预测软件的质量。

2. 软件架构风格

(1)架构设计的一个核心问题是能否达到架构级的软件复用。

(2)架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个构件有效地组织成一个完整的系统。

(3)架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。

2.1. 经典架构风格

经典架构风格包括以下几种:

  • 数据流风格:批处理序列、管道-过滤器
  • 调用/返回风格:主程序/子程序、面向对象、层次结构
  • 独立构件风格:进程通信、事件驱动系统(隐式调用)
  • 虚拟机风格:解释器、基于规则的系统
  • 仓库风格:数据库系统、超文本系统、黑板系统

2.2. 层次架构风格

层次架构风格包括以下几种:

  • 二层架构
  • 三层C/S架构(包括表示层、功能层和数据层)
  • B/S架构

3. 面向服务的架构(Service-Oriented Architecture,SOA)3.1. SOA概述

SOA是一种在计算环境中设计、开发、部署和管理离散逻辑单元(服务)模型的方法。

典型的SOA的结构如下图所示:

3.2. SOA的设计原则

在SOA架构中,继承了来自对象和构件设计的各种原则,例如,封装和自我包含等。那些保证服务的灵活性、松散稠合和复用能力的设计原则,对SOA架构来说同样是非常重要的。关于服务,一些常见的设计原则如下:

  • 明确定义的接口
  • 自包含和模块化
  • 粗粒度
  • 松耦合
  • 互操作性、兼容和策略声明

3.3. SOA的实现方法3.3.1. Web Service

在Web Service(Web服务)的解决方案中,一共有三种工作角色,其中服务提供者和服务请求者是必须的,服务注册中心是一个可选的角色。它们之间的交互和操作构成了SOA的一种实现架构,如下图所示。


在采用Web Service作为SOA的实现技术时,应用系统大致可以分为六个层次,分别是:

  • 底层传输层
  • 服务通信协议层
  • 服务描述层
  • 服务层
  • 业务流程层
  • 服务注册层

3.3.2. 服务注册表

服务注册表(service registry)虽然也具有运行时的功能但主要在SOA设计时使用。它提供一个策略执行点(Policy Enforcement Point , PEP)在这个点上服务可以在SOA中注册从而可以被发现和使用。

服务注册表可以包括服务注册、服务位置和服务绑定。

3.3.3. 企业服务总线(ESB)

ESB的概念是从SOA发展而来的,它是一种为进行连接服务提供的标准化的通信基础结构,基于开放的标准,为应用提供了一个可靠的、可度量的和高度安全的环境,并可帮助企业对业务流程进行设计和模拟对每个业务流程实施控制和跟踪、分析并改进流程和性能。

ESB是由中间件技术实现并支持SOA的一组基础架构,是传统中间件技术与XML,Web Service等技术结合的产物,是在整个企业集成架构下的面向服务的企业应用集成机制。如下图所示。


具体来说,ESB具有以下功能:

  • 提供位置透明性的消息路由和寻址服务
  • 提供服务注册和命名的管理功能
  • 支持多种的消息传递范型
  • 支持多种可以广泛使用的传输协议
  • 支持多种数据格式及其相互转换
  • 提供日志和监控功能

4. 微服务4.1. 微服务概述

微服务顾名思义,就是很小的服务,所以它属于面向服务架构的一种。

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP协议的RESTfuI API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制。对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。

4.2. 微服务特点

微服务的特点主要如下:

  • 小,且专注于做一件事情
  • 轻量级的通信机制
  • 松耦合、独立部署


微服务架构和单块架构对比如下图所示:

4.3. 微服务的优势和挑战

(1)微服务的优势

  • 技术异构性
  • 弹性
  • 扩展
  • 简化部署
  • 与组织结构相匹配
  • 可组合性
  • 对可替代性的优化


(2)微服务的挑战

  • 分布式系统的复杂度
  • 运维成本
  • 部署自动化
  • DevOps与组织结构
  • 服务间依赖测试
  • 服务间依赖管理

4.4. 微服务和SOA的对比

微服务和SOA的对比如下表所示。

5. 模型驱动架构(Model Driven Architecture,MDA)5.1. 基本概念

一Model?

客观事物的抽象表示

一Architecture?

构成系统的部件、连接件及其约束的规约

一Model Driven?

使用模型完成软件的分析、设计、构建、部署、维护等各开发活动

MDA起源于分离系统规约和平台实现的思想

5.2. MDA的主要目标

  • Portability(可移植性)
  • Interoperability(互通性)
  • Reusability(可重用性)

5.3. MDA的3种核心模型

  • 平台独立模型(PIM):具有高抽象层次、独立于任何实现技术的模型。
  • 平台相关模型(PSM):为某种特定实现技术量身定做,让你用这种技术中可用的实现构造来描述系统的模型。PIM会被变换成一个或多个PSM。
  • 代码Code:用源代码对系统的描述(规约)。每个PSM都将被变换成代码。




评论
此内容暂不接受评论!
意见反馈