软件体系结构1-2章

软件体系结构1-2章

往年考试题(大概):根据一个场景来选择自己认为合适的模式进行设计,画出UML类图(也可能是2个模式最多两个连用\textcolor{red}{也可能是2个模式 \longrightarrow最多两个连用}

第一章==(6分)==

MVC是架构模式,不是设计模型

第一章教学内容

  1. 引言

  2. 软件体系结构的意义

  3. 软件体系结构的定义

  4. 软件体系结构的发展

  5. 软件体系结构的优势

软件体系结构的定义

国内普遍接受的定义:软件体系结构包括构件、连接件和约束,它是可预制可重构的软件框架结构。

  • 构件可预制和可重用的软件部件,是组成体系结构基本计算单元数据存储单元

  • 连接件也是可预制和可重用的软件部件,是构件之间连接单元

  • 构件和连接件之间的关系约束来描述

软件体系结构 = 构件 + 连接件 + 约束

软件体系结构包括三大要素:
  • 构件(Component)——项目文件也可以是构件,可简单可复杂,从文件系统能成为构件框架也可以是一种构件

  • 连接件(Connector)

    • 连接件是体系结构的一个元素,它可以用于建模:
      • 构件之间的相互作用
      • 控制这些相互作用的规则
    • 简单相互作用:
      • 过程的调用
      • 访问共享变量
    • 复杂和语义相关的相互作用:
      • 客户端-服务器协议
      • 数据库访问协议
      • 异步事件的多点传送
      • 管道数据流
  • 约束(Constraint)或配置(Configuration)

    • 正确的连接性
    • 并发和分布性
    • 符合设计的启发式和风格规则

在类图中,就是构件类与类之间的关系就是连接件,绘制UML类图的规则以及java类的语法规则就是约束

同比,在包图中,包就是构件(component),包与包之间的关系就是连接件,包的规则就是约束。

连接件

构件之间的连接件详细参考:(77条消息) UML类图几种关系的总结_挨踢大侠的博客-CSDN博客_类图的六种关系

各种关系的强弱程度:

泛化(继承)=实现>组合>聚合>关联>依赖

image-20220610183303978

泛化就是继承

软件体系结构具有四个角度

概念角度:描述系统的主要构件及它们之间的关系

模块角度:包含功能分解与层次结构;

运行角度:描述了一个系统的动态结构

代码角度:描述了各种代码和库函数在开发环境中的组织

==(考过)==软件体系结构的优势

  1. 容易理解

    • 它从一个高层设计的抽象层次来表征一个系统
    • 简化了我们理解庞大系统的能力
  2. 重用

    • 重用大的构件
    • 重用一些集成构件框架
    • 特定领域的软件体系结构
    • 设计模式
  3. 控制成本

    • 系统维护者可以更好的理解变更带来的影响,因而可以更加精确的估算变更所需的成本
  4. 可分析性

    • 对系统的**一致性检查**提供高层次的视图
    • 研究系统是否与某种体系结构风格相符合
    • 对符合特定风格的特定领域系统体系结构分析
    • 分析依赖于其中的构件

第二章

第二章教学内容==(16分)==

  1. 定义

  2. 管道和过滤器

  3. 数据抽象和面向对象组织

  4. 基于事件的隐式调用

  5. 分层系统

  6. 仓库系统

  7. 过程控制环路

  8. C/S风格

  9. 三层C/S风格

  10. B/S风格

经典的体系结构风格

  • 数据流风格\textcolor{red}{数据流风格}: 批处理序列; 管道/过滤器。

  • 调用/返回风格:主程序/子程序;面向对象风格;层次结构。

  • 独立构件风格:进程通讯;事件系统。

  • 虚拟机风格:解释器;基于规则的系统。

  • 仓库风格:数据库系统;超文本系统;黑板系统。

  • 过程控制环路

  • C/S风格——客户端\longrightarrow服务器

  • B/S风格——零客户端

管道和过滤器

编译器的组成:语法检查器,目标代码生成器,

在某些语言中,函数是指有返回类型的方法,过程是指没有返回类型的方法,java中两者之间并无严格区分,统称为方法

概述:

每个构件都有一组输入和输出,构件输入的数据流,经过内部处理,然后产生输出数据流

过滤器风格连接件就像数据流传输的管道,将一个过滤器的输出传到另一个过滤器的输入

不变量:

过滤器虽然可以增量式地处理数据,但是它们是独立的

管道和过滤器的正确输出不依赖其顺序

实例:

编译器,功能程序,并行程序

image-20220921201159798

数据抽象和面向对象组织
概述:
  • 数据表示方法和它们的相应操作封装在一个抽象数据类型对象

  • 这种风格的构件是**对象或者说是抽象数据类型的实例**

  • 对象通过函数和过程的调用来进行交互

基于事件的隐式调用

事件源(Event Source)和事件处理(Event Handler)

事件源(Event Source)与事件处理(Event Handler)两者之间通过注册进行连接,注册就是两个构件之间的连接件。

隐式调用:事件源没有直接与事件处理绑定,而是通过接口实现进行联系,故为隐式

里氏代换原则:父类都可以被子类替代

概述:
  • 构件不直接调用一个过程,而是触发或广播一个或多个事件

  • 系统中的其他构件中的过程在一个或多个事件中注册当一个事件被触发,系统自动调用在这个事件中注册的所有过程

  • 这种风格的构件是一个模块,这些模块可以是一些过程,又可以是一些事件的集合。

不变量:

事件的触发者并不知道哪些构件会被这些事件影响(观察者模式-Observer)

实例:

数据库管理系统,用户界面

image-20220921203433739
分层系统
概述:
  • 组织成一个层次结构

  • 每一层都为上一层**提供**了相应的服务,并且接受下一层提供的服务

  • 在分层系统的一些层次中构件实现了虚拟机的功能

实例:
  • 分层的通信协议

最经典的分层就是OSI七层结构

image-20220921203652505
仓库系统

概述:

  • 构件:中心数据结构(仓库)\textcolor{red}{中心数据结构(仓库)}和一些独立构件的集合

  • 仓库和在系统中很重要的外部构件之间的相互作用

  • 实例:需要使用一些复杂表征的信号处理系统

image-20220921203825894
过程控制环路
概述:

源自于控制理论中的模型框架,将事务处理看成输入、加工、输出、反馈、再输入\textcolor{red}{输入、加工、输出、反馈、再输入}的一个持续的过程模型。

通过持续性的加工处理过程将输入数据转换成既定属性的“产品”\textcolor{red}{持续性的加工处理过程将输入数据转换成既定属性的“产品”},在工控系统、供电、水利甚至可以推广到商务软件体现的管理模型中。

image-20220921204205374
C/S风格

C/S体系结构有三个主要组成部分:数据库服务器客户应用程序网络

服务器主要任务:
  • 数据库安全性的要求;

  • 数据库访问并发性的控制;

  • 数据库前端的客户应用程序的全局数据完整性规则

  • 数据库的备份和恢复

客户应用程序主要任务:
  • 提供**用户与数据库**交互的界面

  • 向数据库服务器提交用户请求接收来自数据库服务器的信息

  • 利用客户应用程序对存在于客户端的数据执行应用逻辑要求。

三层C/S风格
优点:
  • 允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能提高系统和软件的可维护性和可扩展性

  • 允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性。

  • 应用的各层可以并行开发,可以选择各自最适合的开发语言。

  • 利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,为严格的安全管理奠定了坚实的基础。

注意点:
  • 三层C/S结构各层间的通信效率不高

  • 设计时必须慎重考虑三层间的通信方法、通信频率及数据量

image-20220926200351945
B/S风格

B/S体系结构具体为:浏览器、Web服务器、数据库服务器。

image-20220926200214748
优点:
  • 基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级

  • B/S体系结构还提供了异种机、异种网、异种应用服务器的联机、联网、统一服务的最现实的开放性基础

  • 降低开发成本

缺点:
  • B/S体系结构==缺乏对动态页面的支持能力==,没有集成有效的数据库处理功能

  • B/S体系结构的系统扩展能力差安全性难以控制

  • 采用B/S体系结构的应用系统,数据查询响应速度上,要远远低于C/S体系结构。

  • B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。

交互性强的软件并不适合B/S,应该做成C/S。

考虑安全性和更新便利可以设置为:内网(局域网)B/S外网则设计为C/S\longrightarrow除此之外还有其它的混合方式。

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2023-2024 Guijie Wang
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信