电子科大软件系统架构设计——系统架构设计

news2024/11/19 15:40:40

文章目录

  • 系统架构设计
    • 系统设计概述
      • 系统设计定义
      • 系统设计过程
      • 系统设计活动
      • 系统设计基本方法
      • 系统设计原则
      • 系统设计方法分类
      • 面向对象系统分析与设计建模过程
    • 系统架构基础
      • 系统架构定义
      • 系统架构设计定义
      • 系统架构作用
      • 系统架构类型
      • 系统总体架构
      • 系统拓扑架构
        • 系统拓扑架构类型
        • 系统拓扑架构技术演化阶段
        • 系统拓扑架构案例
      • 系统数据架构
        • 系统数据分层架构设计
        • 系统数据治理架构设计
        • 系统数据存储架构设计
        • 数据架构设计案例——电子政务系统数据架构
      • 系统应用架构
        • 应用架构类型
        • 应用架构层次设计
        • 应用架构设计案例——供应商管理系统应用架构
      • 软件体系架构
        • 软件架构设计定义
        • 软件架构设计目标
        • 软件架构设计案例——电子商务系统软件架构
        • 软件技术架构
    • 软件架构风格
      • 软件架构风格定义
      • 软件架构风格要素
      • 软件架构风格应用意义
      • 软件架构风格分类
      • 分层体系架构
      • 数据共享体系架构
      • 事件驱动体系架构
      • 客户机/服务器软件架构
        • C/S架构原理
        • B/S架构原理
      • 微核体系架构
      • 微服务架构
    • 软件架构模式
      • 软件架构模式定义
      • 软件架构模式意义
      • 软件架构模式应用方式
      • 软件架构模式的描述模板
      • 软件架构结构模式
        • 代理者模式
        • 集中式控制模式
        • 分布式控制模式
        • 多层控制模式
        • 抽象分层模式
        • 多客户/单服务模式
        • 多客户/多服务模式
        • 多层客户/服务模式
      • 软件架构通信模式
        • 调用/返回模式
        • 异步消息通信模式
        • 同步消息通信模式
        • 服务注册、转发、发现通信模式
        • 广播/组播通信模式
      • 软件架构事务模式
        • 两阶段提交协议模式
        • 复合事务模式
        • 长事务模式
    • 软件架构UML建模设计
      • 软件架构的静态结构模型
      • 软件架构的动态交互行为模型
      • 软件架构的物理结构模型
      • 银行ATM系统软件架构设计实践
        • ATM机系统分解设计
        • ATM机系统静态结构类图模型设计
        • ATM机系统动态交互图模型设计
        • ATM系统构件图模型设计
        • ATM系统部署图模型设计
    • 课堂作业与作业练习

系统架构设计

系统设计概述

系统设计定义

系统设计是指在系统需求分析的基础上,运用软件工程的思想与方法,设计出能满足系统需求目标的新系统构造方案的活动。

系统设计过程

image-20230926143302716

系统设计活动

image-20230926143335951

1.系统架构设计

在系统架构设计中,需要对系统的总体架构、网络拓扑结构、软件架构、数据架构和应用架构等方面进行设计。

2.基础设施平台设计

在系统总体设计时,还需考虑信息系统的运行环境设计,即基础设施平台设计。在基础设施平台设计中,除了考虑系统的网络结构、网络结点通信关系、硬件计算资源能力、硬件存储资源能力设计外,还需要考虑系统运行软件环境设计,如操作系统软件、数据库系统软件、应用中间件等。

3.系统构件设计

系统构件设计是对系统的组成构件进行设计,确定出系统构件功能逻辑、构件接口等。

4.系统界面设计

界面设计是对人和外部系统与信息系统之间交互界面设计。它包括操作界面、表单、报表、系统接口等要素设计。

5.系统数据库设计

数据库设计是指根据特定的系统应用需求,设计出合理的系统数据库结构。数据库设计需要经过概念设计、逻辑设计和物理设计等步骤。

6.程序流程设计

程序流程设计是对构件内部功能逻辑进行设计,确定算法程序流程及其数据结构。

7.安全机制设计

安全机制设计是对系统与数据的安全访问、隐私保护等安全措施与手段进行设计。

系统设计基本方法

1.抽象化

  • 抽象是在系统规模大、逻辑复杂的情况下,降低系统设计复杂性的基本策略。
  • 抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象。通过抽象实现系统设计建模。

2.逐步求精

  • 逐步求精,把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接近问题的解法。
  • 抽象使得设计者能在宏观层面描述过程和数据而忽略低层的细节,而求精有助于设计者在微观层面设计低层技术细节。

3.模块化

  • 模块化,即把一个大系统按照特定规则,划分为若干较小的,又相互关联的部件,以便将复杂问题分解为简单问题进行解决。
  • 模块是数据说明、可执行语句等程序对象的集合。它是单独命名的、可以通过名字来访问的功能部件,如程序的过程、函数、子程序、宏等。

4.信息隐藏

  • 每个模块的实现细节对于其它模块来说应该是隐蔽的,模块之间实现松耦合,以便实现软件构件的可复用性。
  • 模块中所包含的信息(包括数据和过程)只能通过接口访问,以便支持模块的可维护性。

5.模块独立

  • 模块完成独立的功能,并且与其他模块通过接口关联,符合信息隐蔽和信息局部化原则,模块间关联和依赖程度尽可能小。
  • 模块独立便于功能被划分,更易于开发和维护。
  • 模块独立性可以由两项指标来衡量:内聚度与耦合度。

系统设计原则

  1. 建立良好的系统体系架构,以满足系统的可靠性、安全性、可伸缩性、可维护性等非功能特性需求。
  2. 系统设计应采取模型抽象、模块化设计,将复杂系统分解为较简单的子系统及其构件进行开发。
  3. 采用标准建模语言方式直观、明确地表达设计思路,对系统架构、应用架构、软件架构、数据架构、系统构件、用户界面、程序逻辑等设计内容采用可视化模型表示。

系统设计方法分类

面向对象系统分析与设计建模过程

image-20230926144215305

系统架构基础

系统架构定义

系统架构(又称系统体系架构)是指系统的组成结构模式,它由反映系统部件的关联性、交互性和约束机制进行描述。

系统架构设计定义

系统架构设计根据系统需求,从不同层面、不同视角给出系统总体框架的设计蓝图。

系统架构作用

  • 系统架构反映系统设计总体框架,有利于开发者围绕系统设计进行交流与讨论。
  • 系统架构体现系统设计策略,它对系统开发工作有深远的影响。
  • 系统架构决定了系统非功能特性,如系统可靠性、可用性、安全性、可伸缩性,以及系统性能。

系统架构类型

image-20230926144504992

系统总体架构

系统总体架构是从全局层面给出系统各种组成要素之间结构关系。它通常包括基础设施、运行平台、应用软件、业务部门、信息数据以及用户等。

image-20230926144540116

Power Designer实践练习——证券客户关系管理平台系统总体架构设计

image-20230926144652070

系统拓扑架构

系统拓扑结构是指从系统基础设施平台层面描述节点与节点之间的通信连接关系。节点是指系统中处理逻辑相对独立的物理实体,如PC计算机、服务器、外围设备等。

系统拓扑结构设计是从系统基础设施平台层面给出系统节点在网络环境中的结构关系,包括节点分布、节点类型、节点运行环境以及节点之间的通信联系。

image-20230926144835154

系统拓扑架构类型

image-20230926145025077

系统拓扑架构技术演化阶段

image-20230926145055718

系统拓扑架构案例

image-20230926150002310

建模实践练习——电子政务系统拓扑架构设计

image-20230926150030723

建模实践练习——电子商务系统高可用拓扑架构设计

image-20230926150120891

系统数据架构

系统数据架构是指从数据管理视角所描述的系统架构,它通常用来反映各类数据咨源的组织与存储。

  • 系统数据架构不仅需要反映机构的数据结点分布关系。
  • 还需要考虑数据资源的存储结构与存储方式,如文件存储、数据库存储或数据仓库存储。

image-20230926150607679

系统数据分层架构设计

在大数据应用系统中,按照数据不同处理要求,可以将它们组织到不同层次的数据管理系统进行计算与分析处理。

image-20230926150640785

系统数据治理架构设计

在信息系统中,数据资源结点一般是按照业务管理的需求,将它们部署到不同业务部门服务器进行数据存储与访问管理。系统数据治理架构与组织机构的数据管理职能有直接关系。

image-20230926150718195

系统数据存储架构设计

在信息系统中,一些数据资源需要采用文件系统存储,另外一些数据资源需要采用数据库系统存储,还有一些数据资源则需要数据仓库系统进行数据存储。每类存储系统在设计上需要满足应用需求,如支持高可用、高性能的存取访问。

image-20230926150744313

数据架构设计案例——电子政务系统数据架构

image-20230926150816452

系统应用架构

系统应用架构是指从应用功能视角所描述的系统架构。系统应用架构关注立用功能划分、应用功能配置、服务访问、服务管理等要素。

应用架构类型
  1. 企业级应用架构:在企业信息化全局层面,系统应用架构起到了统一规划、承上启下的作用,向上承接了企业战略发展方向和业务模式,向下规划和指导企业各个IT系统的定位和功能。一般在系统规划阶段设计。
  2. 单个系统的应用架构:在开发单个信息系统时,设计系统的应用功能结构,并考虑系统各个层次的功能结构组成,如前端展示层、业务处理逻辑层、数据访问层的功能模块结构。一般在系统开发阶段设计。
应用架构层次设计

image-20230926150954776

应用架构设计案例——供应商管理系统应用架构

image-20230926151125632

建模实践练习———供应链系统应用架构设计

image-20230926151242317

软件体系架构

软件体系架构(简称软件架构)是一种从软件视角所描述的系统架构,它对软件系统的结构、行为进行高层抽象,一般通过构件、连接件、
配置、端口、角色等图符元素进行描述。

  • 构件(component) :具有特定功能的、可重用的软件模块。
  • 连接件(connector) :用以表示构件之间的交互,如过程调用、事件广播、交互协议等。配置(configuration):用于对构件与连接件的拓扑逻辑、语义约束等说明。
  • 端口(port):表示构件接口与外部环境的交互点。
  • 角色(role) :连接件的参与者,如事件消息的发布者与接受者。

image-20230926151410767

软件架构设计定义

软件架构设计是指基于一定的设计原则和系统需求,从软件角度对组成系统的各部分进行划分和组织,设计系统的构件组成结构及其构件之间的相互关系。

image-20230926151502843

软件架构设计目标

在软件架构设计中,除了满足系统功能需求外,还应满足系统非功能需求,即达到如下质量目标。

  1. 可靠性(Reliable)——软件系统具有可靠运行的能力。
  2. 安全性(Secure)——软件系统具有安全运行的能力。
  3. 可伸缩性(Scalable)——软件系统具有在用户访问量、并发用户数发生变化情况下,保持合理运行性能和资源利用率的能力。
  4. 定制化(Customizable)——软件系统具有个性化系统功能定制的能力。
  5. 可扩展性(Extensible)——具有对系统进行功能和性能扩展的能力。
  6. 可维护性(Maintainable)——具有进行软件修改或软件进化的能力。
软件架构设计案例——电子商务系统软件架构

image-20230926151940032

软件技术架构

image-20230926152002435

image-20230926152023630

软件架构风格

软件架构风格定义

软件架构风格是指针对不同系统共性问题提供一般性可重用的软件架构解决方案,它反映了领域中众多系统所共有的软件结构及其模式。

软件架构作用:用于指导开发者将软件构件、子系统有效地组织成一个完整的软件系统。

软件架构风格要素

软件架构风格描述了特定应用领域中软件系统构件组成的惯用模式,其要素如下:

  • 软件架构包含哪些类型的构件与连接件?
  • 组成系统的结构模式是什么?
  • 基本的计算模型是什么?
  • 架构的基本特性是什么?
  • 架构应用的场景是什么?
  • 架构的优缺点是什么?

软件架构风格应用意义

  • 定义了一类软件系统架构的要素和一组指导系统架构设计的规则。
  • 可促进软件系统设计的复用,使得一些经过实践验证的软件架构方案能够可靠地解决新问题。
  • 通过对标准软件架构风格的应用可支持不同系统之间互操作性,以便于实现系统集成。
  • 在特定设计空间下,便于对软件系统相关设计作出分析。

软件架构风格分类

风格类型典型风格
数据流风格批处理序列架构、管道/过滤器架构
调用/返回风格主程序/子程序架构、面向对象架构、分层体系架构
独立构件风格进程通讯架构、事件驱动架构
虚拟机风格解释器架构、基于规则的系统架构
客户/服务器风格客户/服务器架构、浏览器/服务器架构
面向服务风格面向服务架构(SOA)、微服务架构
仓库风格数据共享体系架构、黑板系统架构

分层体系架构

分层体系架构采用层次化方式组织功能构件,每一层都是为上一层提供服务,并使用下一层提供的功能服务。

  • 将软件系统分成若干个水平层,每一层都有清晰的功能处理分工,各层不需要知道其他层的细节,层与层之间仅通过接口通信。
  • 用户对软件系统的访问请求将依次通过各层功能逻辑构件进行处理,不允许跳过其中任何一层。

image-20230928143853847

应用案例:Linux系统架构

image-20230928143932651

分层体系架构优点:

  • 便于复杂系统设计,使整体设计更加简洁与清晰。
  • 支持系统功能扩展设计,每层的功能修改最多只影响相邻层。
  • 只要给相邻层提供标准接口,就可实现功能复用。

分层体系架构缺点:

  • 并不是每个系统都可以很容易地划分层次,此外,层次的划分还没有统一的方法。
  • 层次过多,会造成系统性能降低。
  • 当用户请求大量增加时,必须依次扩展每一层处理能力。如果某层的内部是耦合的,系统扩展较困难。

数据共享体系架构

数据共享体系架构是一种以数据存储服务器为中心,为客户软件提供数据共享、数据交换访问的软件架构风格。

  • 在数据共享体系架构中,各个客户软件相互独立,它们通过共享数据存储实现数据交换。
  • 一个客户软件对共享数据进行了修改,其他客户软件可以获得数据变更信息。

image-20230928144212701

应用案例:基于数据共享体系架构的数据挖掘与分析系统

image-20230928144248618

数据共享体系架构优点:

  • 体系架构简单,容易实现软件开发。
  • 可有效地实现大量数据共享,新客户软件加入系统,无须考虑其他客户软件的存在。
  • 只要遵循共享数据访问接口,各个客户软件可以独立执行。

数据共享体系架构缺点:

  • 当共享数据结构发生变化,各客户软件都需要进行数据访问调整,通常比较麻烦。
  • 当客户软件大量增加时,共享数据存储服务器将面临性能压力。
  • 共享数据存储服务器作为系统的中央单元,若没有考虑高可用性方案,它一旦故障将导致整个系统无法运行。
  • 共享数据存储难以实现分布式处理。

事件驱动体系架构

事件驱动体系架构是一种基于事件与消息机制实现软件构件之间进行通信的软件架构。

  • 构件(子系统)之间并不直接交互,而是通过触发一个或多个事件,隐式调用另一构件执行。
  • 系统各构件需要在消息处理器中注册相关事件,一旦事件触发,将隐含调用注册构件进行处理,并将处理结果返回事件发布构件。

image-20230928144408496

应用案例:Windows事件驱动模型

image-20230928144432539

事件驱动体系架构优点:

  • 具有良好的可扩展性。通过注册可引入新的构件,而不影响现有构件。
  • 便于软件维护。只要构件名及其接口不变,可以用一个构件代替另一个构件。
  • 构件之间耦合性低,容易实现软件重用。

事件驱动体系架构缺点:

  • 事件驱动削弱了构件对系统的控制能力。一个构件事件触发时,并不能保证其它构件会对其进行事件响应。
  • 消息传送机制不能很好地解决数据交换问题。

客户机/服务器软件架构

客户机/服务器软件架构是一种典型的分布系统体系架构,其软件分为客户端构件和服务端构件,客户端构件通常在客户机上运行,服务端构件在服务器上运行。

  • 客户机/服务器架构采用分布式系统模式,它通常将界面展示、应用逻辑与数据存取构件分布在多个节点机上进行处理。
  • 客户端构件为完成特定功能,需要向服务端构件发出请求。服务端构件接收客户端构件请求进行处理,并将结果返回请求者。
  • 客户端与服务端构件一般是分别部署在客户机和服务器中,通过网络连接进行通信,也可以将它们部署在同一物理机器内部。

image-20230928144633704

C/S架构原理

image-20230928144704812

应用案例:基于C/S架构的企业固定资产管理平台

image-20230928144729520

C/S架构优点:

  • 可实现分布式计算处理,有利于系统负载分担。
  • 交互性强、具有安全的存取模式、响应速度快、利于处理大量数据。

C/S架构缺点:

  • 缺少通用性,系统维护、升级需要重新安装部署,增加了维护和管理的难度。
  • 只限于小型的局域网应用。
B/S架构原理

image-20230928144850687

应用案例:基于B/S架构的物流管控系统平台

image-20230928144914963

B/S架构优点:

  • 分布性强——服务器可以在任何地点运行。
  • 访问方便——只要有网络、浏览器,就可以对系统应用进行访问。
  • 系统处理负载能力强——可以将负载分布在Web服务器、应用服务器、数据库服务器处理。此外,通过负载均衡、集群技术可以支持更大负载处理。
  • 系统运维方便——只需要在服务器进行功能修改与发布,即可实现所有用户访问的同步更新。
  • 用户共享性强——可以支持不同地点用户共享访问系统。

B/S架构缺点:

  • 个性化处理、人机交互性能不如C/S架构软件。
  • 在系统安全性设计需要考虑更多内容。

微核体系架构

微核体系架构又称为“插件架构”,系统基本核心功能在软件内核中实现,其功能较少,系统大部分功能和业务逻辑都通过插件实现。

  • 微核体系架构将待开发的目标软件分为软件内核和插件两个部分。
  • 内核实现软件的基本核心功能和插件管理功能。
  • 插件实现软件功能的运行时扩展与补充。它是一种按照统一插件接口规范实现的功能程序。

image-20230928145129360

应用案例:Eclipse开发平台

image-20230928145202370

微核体系架构优点:

  • 良好的功能扩展性,需要什么功能,开发一个插件即可。
  • 插件之间是隔离的,可以独立的加载和卸载,使得它比较容易部署。
  • 可定制性高,适应不同的开发需要。
  • 可以渐进式地开发,逐步增加功能插件。

微核体系架构缺点:

  • 伸缩性差,内核通常是一个独立单元,不容易做成分布式。
  • 开发难度相对较高,因为涉及到插件与内核的通信,以及内部的插件登记机制。

微服务架构

微服务架构(microservices architecture)是面向服务架构( service-oriented architecture,SOA)的轻量级实现版本。

  • 将应用软件划分成一组小型服务,服务之间相互协调与配合,为用户提供功能服务。
  • 每个服务运行在独立的进程中,服务之间采用轻量级通信机制进行消息交互。
  • 每个服务都围绕业务进行构建,并且能够独立部署到运行环境。
  • 这些服务都是分布式的,互相解耦,通过标准通信协议(如REST、SOAP)进行交互。

image-20230928145349181

应用案例:淘宝开放平台

image-20230928145431491

微服务架构优点:

  • 扩展性好,各个服务之间低耦合。
  • 容易部署,软件从整体部署拆分成多个独立功能服务进行部署,可以分别进行服务部署。
  • 容易开发,每个服务都可以进行持续迭代开发,可以做到实时部署,不间断地升级。
  • 易于测试,每个服务可以单独测试。

微服务架构缺点:

  • 由于强调互相独立和低耦合,服务可能会拆分得很细。这导致系统依赖大量的微服务,变得凌乱和笨重,性能也会不佳。
  • 分布式处理使得微服务较难实现原子性操作,交易回滚会比较困难。

软件架构模式

软件架构模式定义

软件架构模式就是针对特定需求问题及其环境,所给出通用的软件架构设计解决方案。软件架构模式相对软件架构风格,所涉及范围要窄些,解决更具体问题。

image-20230928145637497

软件架构风格软件架构模式
分层架构风格代理者模式
数据共享架构风格发布/订阅模式
事件驱动架构风格多客户/单服务模式
客户/服务器风格多客户/多服务模式
微核架构风格多层客户/服务器模式
面向服务风格异步消息通信模式、同步消息通信模式
数据流风格服务代理转发通信模式
虚拟机风格复合事务模式
异构风格MVC模式、MVP模式、MVVM模式

image-20231007143825654

软件架构模式意义

  1. 使得软件工程成熟的架构设计方案可以被复用,避免重复“发明车轮”

    的设计工作。

  2. 为软件系统重构提供架构模式支持,从而完善原软件系统架构。

  3. 基于架构模式方法设计软件系统,可以节省开发成本,提高软件开发效率。

  4. 在软件系统设计中,使用架构模式方法,还可以提高系统设计质量。

软件架构模式应用方式

image-20231007144007504

软件架构模式的描述模板

模板项目内容描述
模式名称每一个模式都有自己的名字,以简短的、明确含义的名称描述架构模式本质
解决问题描述该模式需要解决的设计问题
环境描述问题所在环境,包括应用领域
解决方案提供问题解决方案的详细说明
优缺点描述本架构方案的优缺点
适用性描述本架构模式的适用场景
相关模式相关架构模式说明

代理者模式的描述模板

模板项目内容描述
模式名称代理者
解决问题在分布式应用的多个客户端与多个服务通信中,客户端不知道服务的位置。
环境分布式系统
解决方案服务构件向代理者注册,客户端发送服务请求给代理者,代理者扮演客户端和服务的中介。
优缺点优点: 客户端可以不需要知道服务位置,服务可以透明在系统中更新、加入。 缺点: 客户端与服务通信涉及了代理者的额外开销。如果代理者有高负载,代理者将成为系统性能瓶颈。
适用性分布式环境中,有多个服务的客户/服务器应用。
相关模式代理者转发

软件架构结构模式

在软件架构模式中,反映软件构件组成及其控制关系的结构模式主要有如下几种:

代理者模式
  • 在代理者模式的软件架构中,需要使用代理者扮演客户端和服务端的中介角色。
  • 代理者使得客户端不再需要知道某个服务在哪里,就可以获得这个服务,从而使得客户端可以方便地定位服务。

image-20231007144408737

案例:客户client对象在访问一个业务服务(EJBService、JMSService)时,并不知道该服务位置,可通过业务代理(BusinessDelegate)进行查找,然后可以定位该服务,并对该服务进行请求访问。

image-20231007144446025

集中式控制模式
  • 在集中式控制模式的软件架构中,中央控制构件按照特定对象状态机逻辑对系统全局行为进行控制操作。
  • 中央控制构件接收输入构件或用户界面构件的输入操作。
  • 中央控制构件根据输入事件引发的系统状态变迁,对相关部件实施操作控制,从而实现系统功能控制。

image-20231007144529521

案例:在微波炉控制系统中,设备的中央控制构件采用集中式控制模式对各个执行部件进行控制操作。

image-20231007144554775

分布式控制模式
  • 在分布式控制模式的软件架构中,系统控制分布在多个控制构件之中,不存在总控全局的单一构件。
  • 每个控制构件按照特定对象状态机逻辑对系统特定部分的行为进行控制操作。
  • 多个控制构件通过消息通信协作完成整个系统的控制处理。

image-20231007144637804

案例:在一个植物工厂控制系统中,其控制系统对植物生长所需要的光照、温度、湿度等参数进行控制,其控制方式采用分布式控制体系架构模式对各个执行部件进行控制操作。

image-20231007144708444

多层控制模式
  • 在多层控制模式的软件架构中,系统控制分布在多个控制构件之中,此外,通过协调者构件控制所有控制构件实现整个系统的控制。
  • 协调者构件提供全局控制,而每个控制构件按照特定对象状态机逻辑对系统特定部分的行为进行控制操作。
  • 协调者控件发布命令到各个控制构件执行控制操作,同时协调者控件也从控制构件接收状态消息。

image-20231007144800609

案例:在一个植物工厂控制系统中,其控制系统对植物生长所需要的光照、温度、湿度等参数进行控制,其控制方式也可采用多层控制体系架构模式对各个执行部件进行控制操作。

image-20231007144844820

抽象分层模式
  • 在抽象分层模式的软件架构中,复杂的软件构件关系被抽象到不同的功能层次。
  • 每个层次构件只能访问它的相邻下层服务同时也只对相邻的上层提供服务。
  • 相邻上下层次构件之间通过请求调用访问、返回响应消息方式进行交互实现系统功能处理。

image-20231007144952888

案例:在一个Unix系统中,软件系统采用分层架构组成,分别由内核、系统调用、shell/实用程序/公共函数库、应用程序层次组成。

image-20231007145019843

多客户/单服务模式
  • 在多客户/单服务模式的软件架构中,软件构件被部署到多个客户端结点和一个服务端结点。
  • 各客户端结点的软件构件通过网络连接访问服务端结点上运行的服务。
  • 在本模式下,多个客户端构件可并发向一个服务端构件提出服务请求,服务端构件一次将处理结果返回给请求的客户端构件。

image-20231007145100508

案例:在银行ATM系统中,每个银行网点都有多台ATM客户端结点通过网络连接银行业务系统,其软件系统采用多客户/单服务模式体系架构。

image-20231007145123197

多客户/多服务模式
  • 在多客户/多服务模式的软件架构中,软件构件被部署到多个客户端结点和多个服务端结点上运行。
  • 客户端构件通过网络连接访问多个服务器结点上运行的服务。
  • 在本模式下,多个客户端构件可并发向多个服务端构件提出服务请求,服务端构件各自将处理结果返回给请求的客户端构件。

image-20231007145223204

案例:在一个支持多家银行互联互通的ATM系统中,每个银行网点都有多台ATM客户端结点通过网络连接银行业务系统,它们的软件系统采用多客户/多服务模式体系架构。

image-20231007145244885

多层客户/服务模式
  • 在多层客户/服务模式的软件架构中,除了基本的客户端层次和服务端层次外,还有一个同时扮演客户端角色和服务端角色的中间层。
  • 中间层对于它的服务层而言是一个客户端,但对其他客户端而言又是一个服务端。
  • 客户端、中间层、服务端的结点通过网络进行通信,支持多个客户端构件向服务端构件提出服务请求,服务端构件将处理结果返回给请求的客户端构件。

image-20231007145323485

案例:在一个具有三层客户/服务模式架构的银行ATM系统中,“银行服务”层向“客户端”层提供服务,同时它又是“数据库服务”层的一个客户端。

image-20231007145344875

软件架构通信模式

软件架构通信模式关注构件之间通信的方式。典型的软件架构通信模式如下:

  • 调用/返回模式
  • 异步消息通信模式、同步消息通信模式
  • 服务注册、转发、发现模式
  • 广播/组播模式
调用/返回模式
  • 在软件构件之间的通信交互中,一种常见的交互模式就是调用/返回模式。
  • 一个客户构件对象的操作方法去调用服务构件对象的操作方法。
  • 当服务构件对象的操作方法执行后,将处理结果返回客户构件对象。

image-20231007145527404

案例:银行服务子系统的软件架构由储蓄账户构件(SavingsAccount)、支票账户构件(CheckingAccount)、转账功能构件(TransferTransactionManager)和取款功能构件(WithdrawalTransactionManager)所组成。构件对象之间的通信方式如下图所示。

image-20231007145640247

异步消息通信模式
  • 在软件构件的对象交互通信中,生产者构件进程可以独立于消费者构件运行。
  • 一个构件中对象发送一个消息给另一个构件的对象,其发送者不需要等待对方回复,可以继续执行其他操作。

image-20231007145731796

案例:在一个汽车自动泊车控制系统的软件架构中,其中“运行监控(operationSupervisory)”构件、“到位传感器(( arrivalSensor)钩什“车辆控制(vehicleControl )”构件之间进行交互通信。

image-20231007145806272

同步消息通信模式
  • 一个构件中对象发送一个消息给另一个构件的对象,需要等待对方回复,才可继续执行其他操作。
  • 若发送消息的构件对象没有收到接收构件对象的回复消息,其进程将会挂起。

image-20231007145839111

案例:在银行服务系统的软件架构中,其中“ATM机客户(ATM Client)构件”、 “GUI用户客户(GUl UserClient)构件”与“银行服务(BankingService)”构件之间进行消息通信。

image-20231007145903457

服务注册、转发、发现通信模式
  • 服务注册、转发、发现通信模式应用于面向服务的软件架构中,各个服务构件能够分布在多个节点上运行。
  • 这些服务构件在代理构件的协助下能够被客户构件所访问。
  • 代理构件扮演客户构件和服务构件的中介,它使客户构件不需要知道某个服务在哪里提供,而是通过代理构件便能获得服务构件的位置信息。

image-20231007145945894

案例:在基于Web服务实现的软件架构中,Web服务代理者使用统一描述、发现、集成框架(Universal Description, Discovery and Integration,
UDDI)为客户端提供一种在Web上动态发现服务的机制。

image-20231007150016394

广播/组播通信模式

广播/组播消息通信模式适合于分布式应用,将一个构件消息同时发送到多个构件处理。

image-20231007150049621

案例:一个视频监控跟踪系统有三个卡口视频监控跟踪构件(videoTrace1\videoTrace2\ videoTrace3)、视频监控事件服务(alarmHandingService)构件、视频监测构件(eventMonitor)组成。它们之间的通信交互关系如下图所示。

image-20231007150123283

软件架构事务模式

软件架构事务模式关注构件之间的事务处理,以确保业务数据完整性。典型的软件架构事务模式如下:

  • 两阶段提交协议模式
  • 复合事务模式
  • 长事务模式
两阶段提交协议模式

两阶段提交协议模式用于分布式系统中原子事务处理,即确保事务所封装的服务请求操作是不可分割的,它们要么都完成,要么都取消。

image-20231007150231058

在两阶段提交协议模式中,通过一个提交协调构件(commitCoordinator)与多个服务构件进行通信协调,实现事务处理。

案例:在从银行A的一个账户转账到银行B的一个账户中,可以采用两阶段提交协议模式实现转账事务处理,以确保银行数据的一致性。

image-20231007151452664

复合事务模式

在复杂业务处理中,当一个事务可以被分解为若干更小的、独立的处理单元时,这种事务就是复合事务

例:一个旅游团的出行预订业务,由机票预订、酒店预订和租车预订组成。这些构件服务之间的事务通信关系如下图模型所示。

image-20231007151558504

长事务模式

在业务处理中,若需要用户参与决策操作,则会出现较长时间的数据资源锁定处理,这样的事务称为长事务

例一个航班预订功能由“航班1预订”、“航班2预订”、“航班3预订”等功能构件协作完成,它们之间的事务通信关系如下图模型所示。

image-20231007151928630

软件架构UML建模设计

软件架构的静态结构模型

软件架构的静态结构模型(如UML类图、UML包图等)用于描述软件系统的静态逻辑结构。在面向对象系统设计中,采用UML设计类图模型将软件系统的类程序组成静态结构可视化呈现出来。

  • 类图(Class Diagram)描述一个软件的类程序静态逻辑组成结构。
  • 表示软件中类与类之间的关系,以及各个类的属性与操作组成。

image-20231007155729952

案例:在一个销售订单子系统的软件设计中,其系统架构的静态结构模型如图所示。
image-20231007155818182

在一个复杂系统的软件设计中,仅采用一个类图来反映系统的软件静态结构是不现实的。需要将复杂系统划分设计为相互联系的若干子系统。针对各个子系统,分别给出它们的类图设计,但在高层设计中采用UML包图对系统的软件静态结构进行抽象设计。

  • 包图( Package Diagram )是采用类似文件夹的包符号表示模型元素的组织结构模型图。
  • 包被描述成文件夹,可以应用在任何一种UML图上。
  • 系统中的每个元素都只能为一个包所有,一个包可嵌套在另一个包中。

image-20231007155857947

软件架构的动态交互行为模型

软件架构的动态交互行为模型用于反映软件系统的对象之间交互行为。在UML软件建模设计中,可以采用交互图(通信图顺序图)描述软件对象之间的协作通信,从而反映对象之间通过动态消息交互行为实现系统功能。

  • 通信图(CommunicationDiagram)是表现对象间直接交互关系的模型图。
  • 它展现了多个对象在协同工作达成共同目标的过程中互相通信的情况。
  • 通过对象和对象之间的链接、发送的消息来显示对象之间的交互关系。

image-20231007160013694

案例:在一个图书商品销售系统的软件设计中,采用如下通信图反映该系统的各个子系统之间的动态交互行为模型。

image-20231008095826420

软件架构的物理结构模型

软件架构的物理结构模型用于反映软件系统架构的实现方案。在面向对象系统设计中,软件架构采用UML构件图UML部署图表示系统物理结构实现方案。

  • 构件图(Component Diagram )是描述系统的构件结构及其关系的模型图。
  • 描述软件的物理结构,从而支持基于构件的软件实现。

image-20231008100153557

  • 部署图( DeploymentDiagram)是表示系统构件在环境节点中的部署方案。
  • 从部署图还可以获知软件和硬件组件之间的物理拓扑、连接关系以及处理节点的分布情况。

image-20231008100239255

案例:在一个商品销售系统的物理结构模型设计中,采用如下构件图反映该系统架构的物理结构模型。

image-20231008100304338

案例:在一个商品销售系统的物理结构模型设计中,采用如下部署图反映该系统架构的物理结构模型。

image-20231008100334334

银行ATM系统软件架构设计实践

案例:ATM(自助取款机)系统是银行为客户提供方便自助业务的信息系统。它由ATM前端硬件设备及其软件系统组成,并通过网络连接到银行服务系统,为客户提供取款、转账、查询等银行业务服务。

在ATM系统软件架构设计中,依据银行领域需求,采用客户机/服务器架构模式设计软件架构。以下将给出系统分解设计、系统静态结构设计、系统对象交互结构设计、系统构件结构设计、系统部署结构设计。

ATM机系统分解设计

image-20231008100443052

ATM机系统静态结构类图模型设计

image-20231008100508241

ATM机系统动态交互图模型设计

image-20231008100534348

ATM系统构件图模型设计

image-20231008100557628

image-20231008100616410

ATM系统部署图模型设计

image-20231008100702580

课堂作业与作业练习

1.高质量的信息系统主要由下面哪项工作决定?(A)

A.系统设计

B.软件编程

C.软件测试

D.软件运维

2.下面哪种设计方法只应用在面向对象系统设计中?(D)

A.抽象设计

B.逐步求精

C.模块化设计

D.信息隐蔽

3.下面哪种UML模型图只用于系统总体设计建模?(D)

A.系统类图

B.顺序图

C.通信图

D..系统部署图

4.用户最关心下面哪种架构?(A)

A.应用架构

B.软件架构

C.数据架构

D.拓扑架构

5.下面哪种软件架构风格最适合复杂软件系统?(A)

A.分层体系架构

B.客户机/服务器体系架构

C.微核体系架构

D.数据共享体系架构

二、判断题

1.类图模型在系统设计各阶段都需要涉及。(√)

2.系统数据架构是一类数据库模型。(×)

3.系统架构的核心视图就是软件架构。(√)

4.客户机/服务器体系架构适合Web应用。(√)

5.异步消息通信模式适合银行转账业务。(×)

系统架构通常包括系统拓扑架构、系统数据架构、系统软件架构和(系统应用架构)等。

典型软件系统一般被划分为表示层、业务逻辑层、(数据存取访问层)和数据存储层。

客户/服务模式可以细分为(多客户/单服务模式)、多客户/多服务模式、多层客户/服务模式。

在面向服务的软件架构中,其通信模式主要有服务注册通信模式、(服务代理转发通信模式)、服务句柄代理转发通信模式、服务发现通信模式。

软件对象之间的消息通信模式主要有同步消息通信模式和(异步消息通信模式)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1081300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络原理~初识

今天开始介绍的是网络,这是最核心最重要的板块之一~ 目录 网络互连 局域网 LAN 广域网WAN 网络通信基础 IP地址 端口号 协议 发送方的工作 应用层 传输层 网络层 数据链路层 物理层 接收方的工作 网络互连 随着时代的发展,越来越需要计算…

C语言-贪吃蛇 1.输入控制ncurse

一、为什么要用nurse C语言中的gets()、scanf()、getchar()等函数是在用户输入后需要按下Enter键才能执行代码,而贪吃蛇要求按下按键后立即对蛇的方向进行操作,所以根据贪吃蛇功能的需求引入ncurse,让用户输入后就能让蛇进行对应的行动。 二、…

C#和JS交互之Microsoft.ClearScript.V8(V8引擎)

之前测试了很多JS引擎,都只支持es5语法,不支持执行es6,测试了下微软的V8反正能跑通,应该是支持的。还得是微软呀。 如图:安装相关包: 这是参考的官方V8代码 using Microsoft.ClearScript.JavaScript; us…

STM32使用HAL库驱动DS3231

1、STM32通讯口配置 启动IIC,默认配置即可。 2、头文件 #ifndef __DS3231_H #define __DS3231_H#include "main.h"#define DS3231_COM_PORT hi2c1 /*通讯端口*//**************************** defines *******************************/ #define DS3231…

什么是UI自动化测试工具?

UI自动化测试工具有着AI技术驱动,零代码开启自动化测试,集设备管理与自动化能力于一身的组织级自动化测试管理平台。基于计算机视觉技术,可跨平台、跨载体执行脚本,脚本开发和维护效率提升至少50%;多端融合统一用户使用体验&#…

淘宝天猫店铺所有商品数据接口,淘宝API接口

获取淘宝店铺所有商品数据接口的步骤如下: 获取授权:使用 OAuth 2.0 协议对应用进行授权,以便能够访问店铺的商品信息。获取店铺信息:使用淘宝 API 的 taobao.shop.get 接口,传入店铺的 user_id 参数,获取…

Ghidra101再入门(上?)-Ghidra架构介绍

Ghidra101再入门(上?)-Ghidra架构介绍 最近有群友问我,说:“用了很多年的IDA,最近想看看Ghidra,这应该怎么进行入门?“这可难到我了。。 我发现,市面上虽然介绍Ghidra怎么用的文章和书籍很多&…

ASEMI整流桥GBU810参数,GBU810封装

编辑-Z GBU810参数描述: 型号:GBU810 最大直流反向电压VR:1000V 最大工作峰值反向电压VRWM:700V 最大平均正向电流IF:8A 非重复正向浪涌电流IFSM:200A 操作和储存温度范围TJ ,TSTG:-55 t…

Ubuntu18.04下载安装基于使用QT的pcl1.13+vtk8.2,以及卸载

一、QVTKWidget、QVTKWidget2、QVTKOpenGLWidget、QVTKOpenGLNativeWidget 区别 1.Qt版本 Qt5.4以前版本:QVTKWidget2/QVTKWidget。 Qt5.4以后版本:QVTKOpenGLWidget/QVTKOpenGLWidget。 2.VTK版本(Qt版本为5.4之后) 在VTK8.2以前的版本:QVT…

企业如何使用CRM客户管理系统全面了解客户

B2B业务由于决策链长,涉及的部门和人员多,购买周期短则2、3个月,长则一年半载的原因一直被大家痛呼难做。B2B业务要求企业去认识客户,更要深入地了解客户。基于这种需求,使用CRM客户管理系统是企业全面了解客户的重要手…

C++入门之命名空间详解

一、为什么要使用命名空间 命名空间的功能就是区分不同的代码段,避免使用不同代码时带来变量名冲突的问题。 在写C语言代码时,常常回面临命名冲突的问题。例如: 可以成功运行。 但是如果要使用 time.h 头文件时,就会与库发生冲突…

C++primer 第二章 变量和基本类型

昨天思考了一下,感觉明白了。于是报名了软考,还有挑战z杯,想着四级还要不要报,毕竟我也不是有天赋的人,就只能努力去做个努力的人。加油!!! 不知道未来怎么样,那就走好现在吧!!&…

Tableau:商业智能(BI)工具

Tableau入门 1、Tableau概述2、Tableau DesktopTableau保存文件类型和文件夹 1、Tableau概述 Tableau 成立于 2003 年,Tableau于2019年被 Salesforce 收购,是斯坦福大学一个计算机科学项目的成果,该项目旨在改善分析流程并让人们能够通过可视…

重新定义公共厕所,智慧公厕最新解决方案与推广路径

随着科技的进步,现代城市管理的智慧化解决方案在不断挑战传统的管理方式,而在智慧城市领域有一个热点的物联网应用解决方案——智慧公厕。智慧公厕不仅仅是公共厕所的升级版,它也是城市文明,高效,环保和科技的体现。本…

echarts实现圆柱体 渐变柱体

const weatherIcons [ { lable: ‘寿险’, id: 2, img: require(/assets/images/customerModule/title-action.png) }, { lable: ‘重疾’, id: 3, img: require(/assets/images/customerModule/title-action.png) }, { lable: ‘医疗’, id: 4, img: require(/assets/images/…

区块链跨链技术

区块链跨链技术 背景 近年来,随着区块链技术的不断发展,区块链的应用场景逐渐从最初的加密货币领域扩展到金融、物流、医疗、公共服务等各个领域。随着区块链的应用场景不断增多,区块链的“数据孤岛”问题日益突出,不同场景下的…

yolov8剪枝实践

本文使用的剪枝库是torch-pruning ,实验了该库的三个剪枝算法GroupNormPruner、BNScalePruner和GrowingRegPruner。 安装使用 安装依赖库 pip install torch-pruning 把 https://github.com/VainF/Torch-Pruning/blob/master/examples/yolov8/yolov8_pruning.py&…

Mac系统清理工具BuhoCleaner

BuhoCleaner是一款在Mac电脑上运行的清洁软件。它的界面简洁,易于使用,能够快速扫描Mac电脑上的垃圾文件、重复文件、大型文件等,帮助用户清理不需要的文件,释放磁盘空间。 该软件的主要功能包括: 垃圾文件清理&…

哈希桶封装unordered set和map

目录 进一步实现哈希桶 引入 keyofValue 迭代器 insert返回值 operator[ ] key不能修改 模拟实现 keyofValue 代码 迭代器 谁在前 普通迭代器转换为const迭代器 const *this 问题 代码 insert和erase const迭代器转换为普通迭代器 key不能修改 完整版代码 …

前端axios发送请求,在请求头添加参数

1.在封装接口传参时,定义形参,params是正常传参,name则是我想要在请求头传参 export function getCurlList (params, name) {return request({url: ********,method: get,params,name}) } 2.接口调用 const res await getCurlList(params,…