软件体系结构基础

halo~我是bay_Tong桐小白
本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言、指点

软件体系结构基础

        • 【更新日志】
  • 软件体系结构基本概念
    • 软件体系结构
    • 体系结构的模式、风格、框架
    • 体系结构的重要作用
  • 通用模型
    • 设计模式概述(更新中……)
    • 典型的体系结构风格
      • 数据流风格
      • 调用/返回风格
      • 仓库风格
    • 体系结构框架
      • 模型-视图-控制器(MVC)
      • J2EE体系结构框架(更新中……)
      • PCMEF与PCBMER框架(更新中……)
  • 特定领域的软件体系结构
    • 类属模型
    • 参考模型
  • 分布式系统结构
    • 多处理器体系结构
    • 客户机/服务器体系结构
      • 两层C/S体系结构
      • 三层C/S体系结构
      • 浏览器/服务器(B/S)体系结构
    • 分布式对象体系结构
    • 代理

【更新日志】

最近更新:

  • 暂无编辑记录,持续更新中……

软件体系结构基本概念

软件体系结构基础
管道/过滤器结构拥有一组被称为过滤器的构件,这些构件通过管道连接,管道将数据从一个构件传送到下一个构件。每个过滤器独立于其上游和下游的构件而工作,过滤器的设计要针对某种形式的数据输入,并且产生某种特定形式的数据输出。过滤器不需要了解与之相邻的过滤器的工作

管道/过滤器风格优点:

  • 使得软构件具有良好的隐蔽性和高内聚、低耦合的特点
  • 允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成
  • 支持软件复用。只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来
  • 系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来;旧的可以被改进的过滤器替换掉
  • 允许对一些如吞吐量、死锁等属性进行分析
  • 支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其他任务并行执行

管道/过滤器风格缺点:

  • 通常导致进程成为批处理的结构。这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换
  • 不适合处理交互的应用。当需要增量地显示改变时,这个问题尤为严重
  • 因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性

批处理序列结构

如果数据流退化成为单线的变换,则成为批处理序列。这种结构接收一批数据,然后应用一系列连续的构件(过滤器)变换它

调用/返回风格

该体系结构风格便于设计出易于修改和扩展的程序结构,此类结构存在3种子风格

主程序/子程序体系结构

这种传统的程序结构将功能分解为一个控制层次,其中“主”程序调用一组程序构件,这些程序构件又去调用别的程序构件。如下图所示,这种结构总体上为树状结构,可以在底层存在公共模块

软件体系结构基础
从外层到内层,每层的操作逐渐接近机器的指令集
  • 在最外层,构建完成界面层的操作;
  • 在最内层,构件完成与操作系统的连接;
  • 中间层提供各种实用程序和应用软件功能

这种风格支持基于抽象程度递增的设计。允许将复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件复用提供了强大的支持

层次结构具有以下优点:

  • 支持基于抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤进行分解
  • 支持功能增强,因为每一层至多和相邻的上下层交互,因此,功能的改变最多影响相邻的内外层
  • 支持复用。只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可以定义一组标准的接口,从而允许各种不同的实现方法

层次结构缺点如下:

  • 并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来
  • 很难找到一个合适的、正确的层次抽象方法

仓库风格

数据库系统、超文本系统和黑板系统都属于仓库风格。在这种风格中,数据仓库(如文件或数据库)位于这种体系结构的中心,其他构件会经常访问该数据仓库,并对仓库中的数据进行增加、修改或删除操作

软件体系结构基础
黑板系统的传统应用是信号处理领域(如语音和模式识别),另一应用是松耦合代理数据共享存取

黑板系统的优点:

  • 对可更改性和可维护性的支持
  • 可复用的知识源
  • 支持容错性和健壮性

黑板系统的不足:

  • 测试困难,黑板系统的计算没有依据确定的算法,其结果常常不可再现,此外,错误假设也是求解过程的组成部分
  • 不能保证有好的求解方案,黑板系统往往只能正确解决所给任务的某一百分比
  • 难以建立好的控制策略,控制策略不能以一种直接方式设计,而需要一种实验的方法
  • 低效,黑板系统在拒绝错误假设中要承受多余的计算开销
  • 昂贵的开发工作,绝大多数黑板系统要花几年时间来进化
  • 缺少对并行机制的支持 ,黑板体系结构不能避免采用了知识源潜在并行机制的控制策略,但它不提供它们的并行执行,对黑板上中心数据的并发访问也必须是同步的

体系结构框架

模型-视图-控制器(MVC)

MVC框架即模型-视图-控制器(model-view-controller)框架,它强调将用户输入、数据模型和数据表示的方式分开设计,一个交互式应用系统由模型(model)、视图(view)和控制器(controller)3个部件组成,分别对应于内部数据、数据表示和输入/输出控制部分

软件体系结构基础

模型是核心数据和功能,视图只关心显示数据,控制只关心用户输入,这种结构由于将数据和业务规则从表示层分开,因此可以最大化地重用代码

J2EE体系结构框架(更新中……)

PCMEF与PCBMER框架(更新中……)

特定领域的软件体系结构

除通用模型外,对于特别的应用还需要特别的体系结构模型,虽然这些系统实例的细节会有所不同,但共同的体系结构在开发新系统时是能够复用的,这些体系结构模型称为领域相关的体系结构

类属模型

概念: 类属模型是从许多实际系统中抽象出来的一般模型,它封装了这些系统的主要特征

简单说可以理解为,类属模型将各种已经完成好的一般模型(也就是具有某一种小功能的组件)组合在一起,利用其它不同的结构进行联系和组织,完成具有某一特定领域的系统功能的实现,是一种综合性质的体系结构

典型用例: 类属模型的一个最著名的例子是编译器模型,由这个模型已开发出了数以千计的编译器。编译器一般包括以下模块:

  • 词法分析器:将输入的语言符号转换成相应的内部形式
  • 符号表:由词法分析器建立,保留程序中出现的名字及其类型信息
  • 语法分析器:检查正被编译的语言语法。它使用该语言定义的文法来建立一棵语法树
  • 语法树:是正被编译的程序在机器内部的结构表示
  • 语义分析器:使用来自语法树和符号表的信息检查这个输入程序的语义正确性
  • 代码生成器:遍历语法树并生成机器代码

软件体系结构基础

参考模型

概念: 参考模型源于对应用领域的研究,它描述了一个理想化的包含了系统应具有的所有特征的软件体系结构。它是更抽象且是描述一大类系统的模型,并且也是对设计者有关某类系统的一般结构的指导

典型用例: 典型的例子由国际化标准组织(ISO)与1978年提出的计算机网络结构模型——开放式系统互连参考模型(OSI)参考模型。它描述了开放系统互连的标准,如果系统遵从这个标准,就可以与其它遵从该标准的系统互连

软件体系结构基础
二层C/S体系结构可以有两种形态:
  • 瘦客户机模型。即数据管理部分和应用逻辑部分都在服务器上执行,客户机只负责表示部分
  • 胖客户机模型。服务器只负责对数据的管理,客户机实现应用逻辑和与系统用户的交互

胖客户机模型能够利用客户机的处理能力,比瘦客户机模型在分布处理上更有效。胖客户机的数据处理流程如下:

软件体系结构基础
三层C/S体系结构在系统上与逻辑结构上相似,被划分为表示层、应用逻辑层、数据层三个部分
  • 表示层:是应用程序的用户界面部分,担负着用户与应用程序之间的对话功能。它用于检查用户从键盘等输入的数据,显示应用程序输出的数据,一般采用图形用户界面(GUI)
  • 应用逻辑层:应用逻辑层为应用系统的主体部分,包含具体的业务处理逻辑。通常在功能层中包含有确认用户对应用和数据库存取权限的功能以及记录系统处理日志的功能
  • 数据层:数据层主要包括数据的存储及对数据的存取操作,一般选择关系型数据库管理系统(RDBMS)

三层C/S体系结构数据处理流程如下:

软件体系结构基础
B/S体系结构主要利用WWW浏览器技术,结合浏览器的多种脚本语言,用通用浏览器实现了原来需要复杂的专用软件才能实现的强大功能,并节约了开发成本。从某种程度上说B/S结构是一种全新的软件体系结构

B/S体系结构工作原理:

软件体系结构基础

分布式对象体系结构

在B/S模型中客户机和服务器的地位是不同的,客户机必须要知道服务器的存在及其所提供的服务,而服务器则不需要知道客户机的存在,设计者必须决定服务在哪里提供,要规划系统的伸缩性,当有较多客户机增加到系统中时需要考虑如何将服务器上的负载分布开来。分布式系统设计旨在去掉客户机与服务器之间的差别。

分布式环境下,构件是一些灵活的软件模块,它们可以位置透明、语言独立和平台独立地互相发送消息,实现请求服务。构件之间并不存在客户机与服务器的界限,接受服务者扮演客户机的角色,提供服务者就是服务器

分布式对象的实质是在分布式异构环境下建立应用系统框架和对象构件,它将应用服务分割成具有完整逻辑含义的独立子模块(称为构件),各个子模块可放在同一台服务器或分布在多台服务器上运行,模块之间通过中间件互相通信

软件体系结构基础
其中ORB是一个关键的通信机制,它以实现互操性为主要目标,处理对象之间的消息分布,在ORB之上有4个对象接口:
  • 对象服务:定义加入ORB的系统级服务,如安全性、命名和事务处理,它们是与应用领域无关的
  • 公共设施:水平级的服务,定义应用程序级服务
  • 领域接口:面向特定的领域
  • 应用接口:面向指定的现实世界应用。是指供应商或用户借助于ORB、公共对象服务及公共设施而开发的特定产品

CORBA有很广泛的应用,它易于集成各厂商的不同计算机,从大型机一直到微型内嵌式系统的终端桌面,是针对大中型企业应用的优秀的中间件。最重要的是,它使服务器真正能够实现高速度、高稳定性处理大量用户的访问

持续更新中……
我是桐小白,一个摸爬滚打的计算机小白

来源:bay_Tong桐小白

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年11月23日
下一篇 2020年11月23日

相关推荐