软件体系风格

  1. 管道/过滤器体系结构风格:构件被称为过滤器,负责对数据进行加工;连接件被称为管道,是输入数据流和输出数据流之间的通路。每个过滤器是一个独立的个体元素,各个过滤器互不相关;每个过滤器独立完成自己的任务,不同过滤器之间不需要交互。数据输出的最终结果与各个过滤器的执行顺序无关。

    优点:简单性、支持复用、系统具有可扩展性和可进化性、系统并发性、便于系统分析

    缺点:系统处理过程时采用批处理方式;不适合用来设计交互式应用系统;因为没有通用的数据传输标准,导致每个过滤器都要花费时间进行添加和去除因解析输入数据和合成数据产生的标记,降低了系统性能,增加了过滤器设计的复杂性;难以进行错误处理

    使用实例:传统的编译器

  2. 面向对象体系结构风格:充分体现了软件工程的模块化、信息隐藏、抽象和重用原则。在这种风格中,对象是一种被称为管理器的构件,负责保持资源的完整性。在对象与对象之间,通过函数调用和过程调用来进行交互。对象抽象可以使构件之间通过黑盒方式进行操作。该结构支持信息隐藏。利用封装技术使对象结构和实现方法对外透明,并将属性和方法包装在一起由对象统一管理

    优点:对象向外界隐藏自己的详细信息,改变一个对象不影响其他部分;

    低耦合高内聚使系统更容易分解既相互作用又相互独立的对象集合

    继承和封装方法为对象复用提供了技术支持

    缺点:一个对象的标识发生改变,必须修改所有显示调用该对象的程序语句;

​ 会因为一个对象的标识发生改变而产生连锁反应

  1. 事件驱动体系结构风格:基本思想是系统对外部的行为表现可以通过它对事件的处理来实现。在这种体系结构中构件不再调用过程,而是声明事件。触发一个事件会引起其他构件的过程调用。

    优点:事件声明者不需要知道哪些构件会响应事件;提高了软件复用能力;

​ 便于系统升级

缺点:构件放弃了对计算的控制权,完全由系统决定;存在数据传输问题;

  1. 解释器体系结构风格:主要用于构建虚拟机,弥合程序语义和计算机硬件之间的缝隙。适用于系统和用户之间的交互非常复杂的情况。解释器结构包括一个执行引擎和三个储存器。即被解释的程序,执行引擎,被解释程序的当前状态和执行引擎的当前状态四部分组成

    优点:能够提高应用程序的移植能力和编程语言的跨平台移植能力。

    实际测试工作可能非常复杂,测试代价高,具有风险性

    缺点:由于使用了特定语言和自定义操作规则,增加了系统运行的开销

​ 难以设计和测试

​ 使用实例:java的编译器;专家系统领域的prolog语言;脚本语言;

  1. 客户机/服务器体系结构风格(C/S)

    优点:客户机构件和服务器构件分别运行在不同的计算机上,利于分布式数据的组织和处理

    构件之间的位置相互透明,不必考虑对方的实际存储位置

    客户机侧重数据的显示和分析,服务器则注重数据的管理

    构件之间彼此独立且隔离,软硬件环境的配置灵活性高

    系统功能扩展性强

    将大规模业务逻辑分布给网络连接的低成本计算机以降低系统开销

    缺点:开发成本较高。

    大部分开发工作都集中在客户机程序的设计,增加了设计的复杂度。

    信息内容和形式单一 ;维护费用高

    两层C/S结构都采用单一服务器,以局域网为中心,数据安全性不高。

  2. 浏览器/服务器体系结构风格:B/S是C/S的一种实现方式,主要包括浏览器、web服务器和数据库服务器。

    优点:客户端只需要安装测览器,操作简单,能发布动态信息和静态信息

    运用HTTP标准协议和统一客户端软件,能够实现跨平台通信。

    开发成本比较低,只需要维护Web服务器程序和中心数据库。

    缺点:个性化程度比较低,所有客户端程序的功能都是一样的

    数据提交一般以页面为单位,动态交互性不强,不利于在线事务处理

    B/S体系结构的可扩展性比较差,系统安全性难以保障。

    B/S结构的应用系统查询中心数据库,其速度要远低于C/S体系结构

    客户端的数据处理能力差,加重了Web服务器的工作负担,影响系统的整体性能

  3. MVC体系结构(模型-视图-控制器):被广泛的应用于用户交互程序的设计中用于开发具有人机界面的软件系统。

    模型:应用程序的核心,封装了问题的核心数据、逻辑关系和计算功能。

    视图:模型的表示,从模型中获取数据并提供交互界面为用户显示模型信息。

    控制器:负责处理用户与系统之间的交互,为用户提供操作接口。

    分离模型、视图和控制器,能够提高设计和使用的灵活性

​ 优点:多个视图与一个模型相对应。变化一传播机制确保了所有相关视图都能及时的获取模型变化信息,从而使所有视图和控制器同步,便于为维护。

​ 良好的移植性。模型独立于视图,可以方便的实现不同部分的移植

​ 系统被分割为独立的三部分,功能发生变化时,改变任意一部分就能满足要求。

​ 缺点:增加了系统设计和运行的复杂性;

​ 视图与控制器过于紧密,妨碍了两者的独立重用;

​ 视图访问模型效率比较低;

  1. 分层体系结构风格:将系统划分层次结构,每一层都具有高耦合低内聚的性质。上层通过下层的接口使用下层的功能,下层不能使用上层的功能。利用接口隐藏下层实现细节,有助于抽象设计

    优点:可以通过将系统分解为一个增量的步骤序列来完成复杂的业务逻辑;

    每一层的交互和功能影响只存在于上下两层,便于系统功能的扩展;

​ 可以通过相邻层的相同接口用不同的方法实现每一层,支持软件资源的复用

缺点:并非所有系统都能按照层次进行划分;

​ 很难找到一种合适和正确的层次划分方法;

​ 传输数据时需要经过多个层次导致系统性能下降

​ 多层结构难以调试,往往需要通过一系列的跨层次调用来实现

使用实例:分层通信协议、计算机网络协议TCP/IP、操作系统和数据库系统

  1. C2体系结构风格:基于构件和消息的体系结构风格,包括构件和连接件两种元素,构件之间只能通过连接件相连。核心思想是有限可视化,即构件只能使用上层构件提供的服务而不能感知下层构件的存在。消息只能单项传递,这样有利于系统的维护和发展

    优点:可以使用任何编程语言来开发构件;具有一定的扩展能力;

​ 构件不需要共享地址空间,避免了共享全局变量造成的复杂关系; 具有良好的适应性;能够动态的更新系统的框架设计

  1. 基于层次消息总线的体系结构风格(HMB):构件之间通过消息总线进行通信,支持构建的分布式存储和并发运行。包括构建件和消息总线两种软件元素。消息总线包括消息登记、消息分派和传递及消息过滤。

    HMB体系风格结构支持运行时的系统演化,体现在动态删除和删除构件;动态改变构件所响应的消息;消息过滤

  2. 正交体系结构风格:以垂直线索构件为基础的层次化结构,包括组织和线索。基本思想:按照功能的正交相关性,将系统垂直划分为若干个子系统,每个子系统用一条线索表示,每条线索由多个具有不同层次功能和抽象级别的构件组成。

    优点:结构清晰、便于修改与维护、易于重用

    实例:汽修服务管理的设计方案

  3. 公共对象请求代理体系结构风格(CORBA):由对象管理组织提出,是一套完整的对象技术规范,其核心包括标准语言、接口和协议。在异构分布式环境下,可以实现应用程序之间的交互操作

    优点:实现了客户端程序与服务器程序的分离;

    将分布式计算模式与面向对象技术结合起来,提高软件复用率;

    提供了软件总线机制;

    支持各种编程语言和操作系统,在开发时能更好利用已有的开发成果

  4. 数据共享体系结构风格(仓库风格):有两种软件元素:一种是中央数据单元(
    资源库),用于表示系统的当前状态;另一种是相互依赖的构建组,用于对中央数据单元实施操作。两者可以进行信息交互。

    数据共享体系结构可以分为传统的数据库和黑板。

​ 黑板是数据共享体系结构的一个特例,用以解决状态冲突并处理可能存在的不确定性知识源,经常被用于信号处理(语音和模式识别),在自然语言处理领域也有广泛应用(机器翻译和句法分析)

​ 一个典型的黑板系统包括三个部分:

​ 知识源:系统设计的关键,主要的信息来源

​ 中央数据单元:黑板系统的运行完全依赖与中央数据单元的状态变化。

​ 控制单元:控制单元是由中央数据单元的状态驱动的

​ 优点:便于多客户共享大量数据

​ 便于将构建作为知识源添加到系统中来

​ 缺点:对共享数据结构,不同知识源要达成一致

​ 需要同步机制和枷锁机制来保证数据的完整性和统一性,增大了系统设计的复杂度。

  1. 反馈控制环体系结构风格:反馈控制环是一种特定的数据流结构,包括过程,数据元素,控制器。过程控制是连续的,可以利用各种构件和相关规则来设计反馈控制系统,实现各种功能

    典型实例:机器学习

转载请注明出处!!!

如果有写的不对或者不全面的地方 可通过主页的联系方式进行指正,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值