精华内容
下载资源
问答
  • 10个常见软件体系结构模式

    万次阅读 2018-05-07 14:06:04
    根据维基百科,架构模式是在特定环境下软件体系结构常见问题的通用可重用解决方案。架构模式类似于软件设计模式,但具有更广的范围。在本文中,我将简要地解释以下10种常见架构模式及其用法,优缺点。分层模式...

    有没有想过如何设计大型企业级系统? 在开始主要软件开发之前,我们必须选择一个合适的架构来为我们提供所需的功能和质量属性。 因此,在将它们应用于我们的设计之前,我们应该了解不同的体系结构。

    什么是建筑模式?

    根据维基百科,

    架构模式是在特定环境下软件体系结构中常见问题的通用可重用解决方案。架构模式类似于软件设计模式,但具有更广的范围。

    在本文中,我将简要地解释以下10种常见架构模式及其用法,优缺点。

    1. 分层模式
    2. 客户端 - 服务器模式
    3. 主从模式
    4. 管道过滤器模式
    5. 经纪人模式
    6. 点对点模式
    7. 事件总线模式
    8. 模型 - 视图 - 控制器模式
    9. 黑板模式
    10. 解释器模式

    1.分层模式

    这种模式可以用来构建可以分解为子任务组的程序,每个子任务都处于特定的抽象层次。 每层为下一个更高层提供服务。

    一般信息系统最常见的4层如下。

    • 表示层 (也称为UI层 )
    • 应用程序层 (也称为服务层 )
    • 业务逻辑层 (也称为域层 )
    • 数据访问层 (也称为持久层 )

    用法

    • 一般桌面应用程序
    • 电子商务Web应用程序。
    分层模式

    2.客户端 - 服务器模式

    这种模式由两方组成; 一个服务器和多个客户端 。 服务器组件将向多个客户端组件提供服务。 客户端向服务器请求服务,服务器向这些客户端提供相关服务。 此外,服务器继续侦听客户端请求。

    用法

    • 在线应用程序,如电子邮件,文件共享和银行业务
    客户端 - 服务器模式

    3.主从模式

    这种模式由两方组成; 主人奴隶 。 主组件将工作分配给相同的从组件,并根据从组件返回的结果计算最终结果。

    用法

    • 在数据库复制中,主数据库被视为权威来源,并且从属数据库与其同步。
    • 在计算机系统中连接到总线的外设(主从驱动器)。
    主从模式

    4.管道过滤器模式

    这种模式可以用来构造产生和处理数据流的系统。 每个处理步骤都包含在一个过滤器组件中。 要处理的数据通过管道传递。 这些管道可用于缓冲或同步目的。

    用法

    • 编译器。 连续的过滤器执行词法分析,解析,语义分析和代码生成。
    • 生物信息学工作流程。
    管道过滤器模式

    5.经纪人模式

    这种模式用于构建具有解耦组件的分布式系统。 这些组件可以通过远程服务调用相互交互。 代理组件负责协调组件之间的通信。

    服务器将其功能(服务和特性)发布给代理。 客户向经纪人请求服务,然后经纪人将客户重定向到其注册中心的适当服务。

    用法

    经纪人模式

    6.点对点模式

    在这种模式中,单个组件被称为同级 。 同事可能既作为客户端 ,向其他同行请求服务,又作为服务器向其他同行提供服务。 对等体可以充当客户端或服务器或两者兼而有之,并且可以随着时间动态地改变其角色。

    用法

    点对点模式

    7.事件总线模式

    这种模式主要处理事件,并有四个主要组成部分; 事件源 , 事件监听器 , 通道事件总线 。 信息源将消息发布到事件总线上的特定频道。 听众订阅特定频道。 听众会收到发布到他们之前订阅的频道的消息。

    用法

    • Android开发
    • 通知服务
    事件总线模式

    8.模型 - 视图 - 控制器模式

    这种模式也称为MVC模式,将交互式应用程序分为三部分,

    1. 模型 - 包含核心功能和数据
    2. 视图 - 将信息显示给用户(可以定义多个视图)
    3. 控制器 - 处理来自用户的输入

    这样做是为了将信息的内部表示与信息呈现给用户并从用户接受的方式分开。 它将组件分离并允许有效的代码重用。

    用法

    • 主要编程语言的万维网应用程序体系结构。
    • Web框架,如DjangoRails 。
    模型 - 视图 - 控制器模式

    9.黑板模式

    这种模式对于没有确定性解决策略的问题是有用的。 黑板图案由3个主要组件组成。

    • 黑板 - 包含来自解决方案空间的对象的结构化全局内存
    • 知识源 - 具有自己表示的专用模块
    • 控制组件 - 选择,配置和执行模块。

    所有组件都可以访问黑板。 组件可能产生添加到黑板的新数据对象。 组件在黑板上查找特定类型的数据,并可能通过与现有知识源的模式匹配找到这些数据。

    用法

    • 语音识别
    • 车辆识别和跟踪
    • 蛋白质结构鉴定
    • 声纳信号解释。
    黑板模式

    10.解释器模式

    此模式用于设计解释用专用语言编写的程序的组件。 它主要指定如何评估程序行,称为用特定语言编写的句子或表达式。 基本思想是为语言的每个符号设置一个类。

    用法

    • 数据库查询语言,如SQL。
    • 用于描述通信协议的语言。
    解释器模式

    建筑模式的比较

    下面的表格总结了每种架构模式的优缺点。

    建筑模式的比较

    希望你发现这篇文章有用。

    原文:https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013

    展开全文
  • 软件体系结构表示系统的框架结构,用于从较高的层次上来描述各部分之间的关系和接口,主要包括构件、构件性质和构件之间的关系。 通过使用软件体系结构,可以有效地分析用户需求,方便系统的修改,以及减小程序构造...

    一、概述

    软件体系结构表示系统的框架结构,用于从较高的层次上来描述各部分之间的关系和接口,主要包括构件构件性质构件之间的关系

    通过使用软件体系结构,可以有效地分析用户需求,方便系统的修改,以及减小程序构造风险。

    随着软件规模不断地增大和复杂程度日益增高,系统框架架构的设计变得越来越关键。软件框架设计的核心问题是能否复用已经成型的体系结构方案。由此,产生了软件体系结构风格的概念。

    二、常见风格分类

    体系结构风格的形成是多年探索研究和工程实践的结果。一个良好和通用的体系结构风格往往是工程技术领域成熟的标志。经过多年的发展,已经总结出许多成熟的软件体系结构风格,例如:

    1. 数据流风格:批处理和管道/过滤器。
    2. 调用/返回风格:主程序/子程序、层次结构和C/S。
    3. 面向对象风格。
    4. 独立部件风格:进程通信和事件驱动。
    5. 虚拟机风格:解释器和基于规则的系统。
    6. 数据共享风格:数据库系统和黑板系统。

    三、 体系结构风格

    1.管道/过滤器 体系结构风格

    惯用模式:

    主要包括过滤器和管道两种元素。在这种结构中,构件被称为过滤器,负责对数据进行加工处理。每个过滤器都有一组输入端口和输出端口,从输入端口接收数据,经过内部加工处理之后,传送到输出端口上。数据通过相邻过滤器之间的连接件进行传输,连接件可以看作输入数据流和输出数据流之间的通路,这就是管道。

    原理图:

     

    优点:

    1. 简单性。
    2. 支持复用。
    3. 系统具有可扩展性和可进化型。
    4. 系统并发性(每个过滤器可以独立运行,不同子任务可以并行执行,提高效率)。
    5. 便于系统分析。

    缺点:

    1. 系统处理工程是批处理方式。
    2. 不适合用来设计交互式应用系统。
    3. 由于没有通用的数据传输标准,因此每个过滤器都需要解析输入数据和合成数据。
    4. 难以进行错误处理。

     

    传统的编译器就是管道/过滤器体系结构风格的一个实例。编译器由词法分析、语法分析、语义分析、中间代码生成、中间代码优化和目标代码生成几个模块组成,一个模块的输出是另一个模块的输入。源程序经过各个模块的独立处理之后,最终将产生目标程序。编译器的框架结构如图:

    2.面向对象 体系结构风格

    惯用模式:

    在面向对象体系结构中,软件工程的模块化、信息隐藏、抽象和重用原则得到了充分的体现。在这种体系结构中,数据表示和相关原语操作都被封装在抽象数据类型中。在这种风格中,对象是构件,也成为抽象数据类型的实例。对象与对象之间,通过函数调用和过程调用来进行交互。

    原理图:

    优点:

    1. 一个对象对外隐藏了自己的详细信息
    2. 对象将数据和操作封装在一起
    3. 继承和封装方法为对象服用提供了技术支持

    缺点:

    1. 如果一个对象要调用另一个对象,则必须知道它的标识和名称
    2. 会产生连锁反应

    3.事件驱动 体系结构风格

    惯用模式:

    事件驱动就是在当前系统的基础之上,根据事件声明和发展状况来驱动整个应用程序运行。

    事件驱动体系结构的基本思想是:系统对外部的行为表现可以通过它对事件的处理来实现。在这种体系结构中,构件不再直接调用过程,而是声明事件。系统其他构件的过程可以在这些事件中进行注册。当触发一个事件的时候,系统会自动调用这个事件中注册的所有过程。因此,触发一个事件会引起其他构件的过程调用。

    原理图:

    优点:

    1. 事件声明者不需要知道哪些构件会响应事
    2. 提高了软件复用能力
    3. 便于系统升级

    缺点:

    1. 构件放弃了对计算的控制权,完全由系统来决定
    2. 存在数据·传输问题

    4.分层 体系结构风格

    惯用模式:

    在分层风格中,系统将划分为一个层次结构。

    每一层都具有高度的内聚性,包含抽象程度一致的各种构件,支持信息隐藏。

    分层有助于将复杂系统划分为独立的模块,从而简化程序的设计和实现。

    通过分解,可以将系统功能划分为一些具有明确定义的层,较高层是面对特定问题,较低层具有一般性。

    每层都为上层提供服务,同时又利用了下层的逻辑功能。在分层体系结构中,每一层只对相邻层可见。层次之间的连接件是协议和过程调用。用以实现各层之间的交互。

     

    原理图:

    优点:

    1. 设计者可以将系统分解为一个增量的步骤序列从而完成复杂的业务逻辑。
    2. 每一层之多和相邻的上下两层进行交互。
    3. 只要给相邻层提供相同的接口。

    缺点:

    1. 并非所有系统都能够按照层次来进行划分。
    2. 很难找到一种合适和正确的层次划分方法。
    3. 在传输数据是,需要经过多个层次。
    4. 多层结构难以调试。

    5.C2 体系结构风格

    惯用模式:

    C2结构是一个层次网络,包括构件和连接件两种软件元素。构件和连接键都是包含顶部和底部的软件元素。构件和构件之间只能通过连接件进行连接,而连接件之间则可以直接进行连接。构件的顶部、底部分别与连接件的底部、顶部连接,连接件的顶部、底部也分别与连接件的底部、顶部连接。

    在C2体系结构中,构件之间的所有通信必须使用消息传递机制来实现。构件之间所有传递的信息可以分为两种,一种是向上层构件发出服务请求的请求消息另一种是向下层构件发出指示状态变化的通知消息。连接件负责消息的过滤、路由、广播、通信和相关处理。

    原理图:

    优点:

    1. 可以使用任何编程语言来开发构件,构件重用和替换比较容易实现
    2. 具有一定的扩展能力,可以有多种不同粒度的构件
    3. 构件不需要共享地址空间,避免了共享全局变量所造成的复杂关系
    4. 具有良好的适应性
    5. 在C2体系结构中,可以使用多个工具集和多种媒体类型,能够动态地更新系统的框架结构

    缺点:

    1. 构件和构件之间不允许直接相连
    2. 与某一个连接件相关联的构件和连接件的数目没有限制

    6.数据共享 体系结构风格

    定义:

    数据共享风格也成为仓库风格。

    在这种风格中,有两种不同类型的软件元素:一种是中央数据单元,也成为资源库,用于表示系统的当前状态;另一种是相互依赖的构件组,这些构件可以对中央数据单元实施操作。中央数据单元和构件之间可以进行信息交换,这是数据共享体系结构的技术实现基础。

    根据所使用的控制策略不同,数据共享体系结构可以分为两种类型,一种是传统的数据库,另一种是黑板

    如果由输入流中的事件来驱动系统进行信息处理,把执行结构存储到中央数据单元,则这个系统就是数据库应用系统。

    如果由中央数据单元的当前状态来驱动系统运行,则这个系统就是黑板应用系统。

    黑板是数据共享体系结构的一个特例,用以解决状态冲突并处理可能存在的不确定性知识源

    黑板常用于信号处理,如语音和模式识别,同时在自然语言处理领域中也有广泛的应用,如机器翻译和句法分析。

     

    原理图:

    一个典型的黑板系统主要包括知识源、中央控制单元、控制单元。

    优点:

    1. 便于多客户共享大量数据,而不必关心数据是何时产生的、由谁提供的及通过何种途径来提供
    2. 便于将构件作为知识源添加到系统中来

    缺点:

    1. 对共享数据结构,不同知识源要达成一致
    2. 需要同步机制和加锁机制来保证数据的完整性和一致性,增大了系统设计的复杂度

    7.解释器 体系结构风格

    惯用模式:

    解释器作为一种体系结构,主要用于构建虚拟机,用以弥合程序语义和计算机硬件之间的间隙。实际上,解释器是利用软件来创建的一种虚拟机,因此,解释器风格又被称为虚拟机风格

    原理图:

    优点:

    1. 能够提高应用程序的抑制能力和变成语言的跨平台移植能力。
    2. 实际测试工作可能费城复杂,测试代价极其昂贵,具有一定的风险性。

    缺点:

    1. 由于使用了特定了语言和自定义操作规则,因此增加了系统运行的开销。
    2. 解释器系统难以设计和测试。

    8.反馈控制环 体系结构风格

    定义:

    反馈控制环是一种特定的数据流结构。传统数据流结构是线性的,而控制连续循环过程的体系结构应该是环形的。

    反馈控制环系统主要包括以下三个部分:

    1. 过程,指操纵过程变量的相关机制。
    2. 数据元素,指连续更新的过程变量,包括输入变量、控制变量、操纵变量和相关参考值。
    3. 控制器,通过控制规则来修正变量,收集过程的实际状态和目标状态,调节变量以驱动实际状态朝目标状态前进。

     

    原理图:

    优点:

    1. 过程控制是连续的,可以利用各种构件和相关规则来设计反馈控制环系统,实现各种功能。
    2. 反馈控制环结构能够处理复杂的自适应问题,机器学习就是一个例子。

    缺点:

    9.C/S 体系结构风格

    惯用模式:

    ……

    原理图:

    优点:

    1. 客户机构件和服务器构件分别运行在不同的计算机上,有利于分布式数据的组织和处理。
    2. 构件之间的位置是相互透明的,客户机程序和服务器程序都不必考虑对方的实际存储位置。
    3. 客户机侧重数据的显示和分析,服务器则注重数据的管理。
    4. 构件之间是彼此独立和充分隔离的。
    5. 将大规模的业务逻辑分布到多个通过网络连接的低成本的计算机,降低了系统的整体开销。

    缺点:

    1. 开发成本较高。
    2. 在开发C/S结构系统时,大部分工作都都集中在客户机程序的设计上,增加了设计的复杂度。
    3. 信息内容和形式单一。
    4. 如果对C/S体系结构的系统进行升级,开发人员需要到现场来更新客户机程序,同时需要对运行环境进行重新配置,增加了维护费用。
    5. 两层C/S结构采用了单一的服务器,同时以局域网为中心,因此难以扩展到Intranet和Internet。
    6. 数据安全性不高。

    10.B/S 体系结构风格

    惯用模式:

    B/S结构是三层C/S体系结构的一种实现方式,主要包括浏览器,Web服务器和数据库服务器。B/S结构主要利用不断成熟的WWW技术,结合浏览器的多脚本语言,采用通用浏览器来实现原来需要复杂的专用软件才能实现的强大功能,节约了开发成本。

    B/S体系结构的核心是Web服务器,可以将应用程序以网页的形式存放在Web服务器上。

    当用户运行某个应用程序时,只需要在可以断的浏览器中输入响应的 URL,向 Web 服务器提出 HTTP 请求。

    当Web 服务器接收 HTTP 请求之后,会调用相关的应用程序(Servlets),同时向数据库服务器发送数据操作请求。

    数据库服务器对数据操作请求进行响应,将结果返回给Web服务器的应用程序。

    Web服务器应用程序执行业务处理逻辑,利用 HTML 来封装操作结果,通过浏览器呈现给用户。在B/S结构中,数据请求、王爷生成、数据库访问和应用程序执行全部由Web 服务器来完成。

    原理图:

    优点:

    1. 客户端只需要安装浏览器,操作简单。
    2. 运用HTTP标准协议和统一客户端软件,能够实现跨平台通信。
    3. 开发成本比较低,只需要维护Web服务器程序和中心数据库。

    缺点:

    1. 个性化程度比较低,所有客户端程序的功能都是一样的。
    2. 客户端数据处理能力比较差。
    3. 在B/S结构的系统中,数据提交一般以页面为单位,动态交互性不强,不利于在线事务处理。
    4. B/S体系结构的可扩展性比较差,系统安全性难以保障。
    5. B/S结构的应用系统查询中心数据库,其速度要远低于C/S体系结构。

    11.公共对象请求代理(CORBA)体系结构风格

    惯用模式:

    公共对象请求代理(Common Object Request Broker Architecture,CORBA)是由对象管理组织(Object Management Group,OMG)提出来的,是一套完整的对象技术规范,其核心包括标准语言、接口和协议。

    在异构分布式环境下,可以利用CORBA来实现应用程序之间的交互操作,同时,CORBA也提供了独立于开发平台的编程语言的对象重用方法。

     

    原理图:

    优点:

    1. 实现了客户端程序与服务器程序的分析。
    2. 将分布式计算模式与面向对象技术结合起来,提高了软件复用率。
    3. 提供了软件总线机制,软件总线是指一组定义的完整的接口规范。
    4. CORBA能够支持不同的编程语言和操作系统,在更大的范围内,开发人员能够相互利用已有的开发成果。

    缺点:

    12.正交 体系结构风格

    惯用模式:

    正交体系结构是一种以 垂直线索构件族 为基础的层次化结构,包括组织层线索

    在每一个组织层中,都包含具有相同抽象级别的构件。

    线索是子系统的实例,是由完成不同层次功能的构件通过相互调用而形成的,每一条线索完成系统的一部分相对独立的功能。

    在正交体系结构中,每条线索的实现与其他线索的实现无关或关联很少。在同一层次中,构件之间不存在相互调用关系。

    原理图:

    优点:

    1. 结构清晰。
    2. 便于修改和维护。
    3. 易于重用。

    缺点:

    13.MVC 体系结构风格

    惯用模式:

    模型-视图-控制器(Model-View-Controller,MVC)是一种常见的体系结构风格。MVC被广泛应用与用户交互程序的设计中。

    原理图:

    优点:

    1. 多个视图与一个模型相对应
    2. 具有良好的移植性。
    3. 系统被分割为三个独立的部分,当功能发生变化时,改变其中的一个部分就能够满足要求。

    缺点:

    1. 增加了系统设计和运行复杂性。
    2. 视图与控制器连接过于紧密,妨碍两者的独立复用。
    3. 视图访问模型的效率比较低。
    展开全文
  • 常见结构化存储系统架构

    千次阅读 2019-03-01 22:39:24
    结构化数据一般指存储在数据库中,具有一定逻辑结构和物理结构的数据,最为常见的是存储在关系数据库中的数据;非结构化数据:一般指结构化数据以外的数据,这些数据不存储在数据库中,而是以各种类型的文本形式存放...

    什么是结构化存储系统

    结构化数据一般指存储在数据库中,具有一定逻辑结构和物理结构的数据,最为常见的是存储在关系数据库中的数据;非结构化数据:一般指结构化数据以外的数据,这些数据不存储在数据库中,而是以各种类型的文本形式存放,其中Web上的一些数据(内嵌于HTML或XML标记中)又具有一定的逻辑结构和物理结构,被称为半结构数据。

    目前比较成熟的结构化存储系统有Cassandra、Bigtable、Hadoopdb、Megastore、Dynamo等。

    • 几个较成熟的结构化存储系统

    1. Cassandra

    Cassandra是一个分布式的存储系统,可用来管理分布在大量廉价服务器上的巨量结构化数据,并同时提供没有单点故障的高可用服务。Cassandra的设计目的是运行在由几百个节点(可能分布在多个不同的数据中心)组成的基础设施(infrastructure)上。当节点达到这个规模时,大大小小的组件出现故障就可能经常发生了。Cassandra在管理持久状态时面临这些故障,这种情况也驱动软件系统的可靠性(reliability)与可伸缩性(scalability)会依赖于Cassandra的服务。虽然大部分情况,Cassandra看上去像一个数据库系统, 也与数据库系统共享大量的设计与实现手段,但是Cassandra并不支持完整的关系数据模型;相反,它提供了一个简单数据模型的客户端,支持对数据布局与数据格式的动态控制。设计Cassandra的初衷是,可以运行在廉价硬件上,并能在不牺牲读效率的情况下实现高的写吞吐量。

    Cassandra系统架构:

    一个需要在生产环境运转的存储系统的架构是很复杂的。除了真实的数据持久化组件外,这个系统还需要包含以下特性;可伸缩性与强大负载均衡解决方案、会员与故障检测、故障恢复、副本同步、超负荷处理、状态转移、并发与任务调度、请求编组、请求路由、系统监控与报警以及配置管理。详细描述这里的每一个解决方案超出了本论文的范围,我们将集中介绍Cassandra使用的核心的分布式系统技术:分区、复制、会员、故障处理以及伸缩性。处理读写请求需要所有这些模块的协同处理。通常,一个键的请求可能被路由到Cassandra集群的任何一个节点去处理。这个节点会确定这个特定的键的副本。对于写操作来讲,系统会将请求路由到副本上,并且等待仲裁数量的副本以确认写操作完成。对于读操作来讲,基于客户端要求的一致性保证,系统要么将请求路由到最近的副本,要么将请求路由到所有的副本并等待达到仲裁数量的响应。

    2Bigtable

       Bigtable是一个分布式的结构化数据存储系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的PB级的数据。Google 的很多项目使用Bigtable存储数据,包括Web索引、Google Earth、Google Finance。这些应用对Bigtable提出的要求差异非常大,无论是在数据量上(从URL到网页到卫星图像)还是在响应速度上(从后端的批量处理到实时数据服务)。尽管应用需求差异很大,但是,针对Google的这些产品,Bigtable还是成功的提供了一个灵活的、高性能的解决方案。

    Bigtable数据模型:

     

    3Hadoopdb

    耶鲁大学的Hadoopdb研究项目挺有意思。这是个并行DBMS(PostgreSQL) 技术和MapReduce的结合的产物。MapReduce是Google提出的一个编程模型,用于进行大规模的数据处理。

    Hadoopdb系统架构图:

    上图中的 SMS 是 "SQL to MapReduce to SQL" 的缩写。这是 HadoopDB 的一个设计难点。经过了两层转换,对于 SQL 执行的效率多少会是个问题。

    4Megastore

    Megastore是谷歌一个内部的存储系统,它的底层数据存储依赖Bigtable,也就是基于NoSql实现的,但是和传统的NoSql不同的是,它实现了类似RDBMS的数据模型(便捷性),同时提供数据的强一致性解决方案(同一个datacenter,基于MVCC的事务实现),并且将数据进行细颗粒度的分区(这里的分区是指在同一个datacenter,所有datacenter都有相同的分区数据),然后将数据更新在机房间进行同步复制(这个保证所有datacenter中的数据一致)。

    Megastore数据组织:

    5Dynamo

    Dynamo是面向Amazon自有的电子商务应用的,使用广域分布的大规模集群提供高可靠的对象存储服务,主要存储1M左右甚至更小的内容,如购物车、推荐列表等。由于Dynamo的应用场合,设计上有这么一些“独特”的要求:

    高可靠性与高伸缩性。

    始终可写,写优先于读。

    一致性与写入速度的折衷,不要求同步写入所有副本。

    对称、无中心的构架,支持异构节点。

    Amazon平台的架构图:

    展开全文
  • 1面向方面软件体系结构相关概念 面向方面软件体系结构涉及诸多概念,以下将分别介绍。软件体系结构软件工程领域有着广泛的影响,但当前仍未形成一个统一的、标准的定义。目前国内外普遍认可的看法是软件体系结构...
    1面向方面软件体系结构相关概念
      面向方面软件体系结构涉及诸多概念,以下将分别介绍。软件体系结构在软件工程领域有着广泛的影响,但当前仍未形成一个统一的、标准的定义。目前国内外普遍认可的看法是软件体系结构包含构件、连接件和约束[4]。其中约束描述了体系结构配置和拓扑的要求,确定了体系结构的构件与连接件的连接关系。这样就可以把软件体系结构写成
      软件体系结构(software architecture)=构件(components)+
      连接件(connectors)+约束(constraints)
      构件是软件体系结构的基本元素之一。一般认为,构件是指具有一定功能、可明确辨识的软件单位,并且具备语义完整、语法正确、有可重用价值的特点,然而目前对于构件的具体结构及构成并没有一个统一的标准[5],而且一些主要的构件技术也没有使用相同的构件类型。另外,当前被广泛接受的构件定义并不包含具体的软件构件模型(software component model)。例如,Szyperski等人[6]给出了软件构件一个很有名的定义:软件构件是一个仅带特定契约接口和显式语境依赖的结构单位,它可以独立部署,易于第三方整合。但是关于软件构件模型有一个被普遍接受的观点是:软件构件是一个具有服务提供和服务请求功能的软件单元[7]。
      连接件是软件体系结构另一个基本的构成元素,是用来建立构件间交互以及支配这些交互规则的构造模块。连接件最先是由Shaw[8]提出来的,她建议把连接件作为软件体系结构中第一类实体,用来表示普通构件之间的交互关系。目前对于连接件尚未形成统一的认识,尽管在软件体系结构中强调了连接件存在的必要性,但是关于连接件模型的研究还很少,连接件的实际应用还不成熟。
      面向方面软件体系结构在传统软件体系结构的基础上增加了方面构件单元。通常认为,方面构件是封装了系统横切关注点的一类特殊的构件。目前关于方面构件模型的研究还处于起步阶段。
      2面向方面软件体系结构模型
      由于传统软件体系结构模型包含构件、连接件和约束,而面向方面软件体系结构是在传统软件体系结构的基础之上扩展了方面构件,所以面向方面软件体系模型结构包含构件、连接件、方面构件和约束。其中约束描述了面向方面体系结构配置和拓扑的要求,确定了体系结构的构件、连接件和方面构件之间的连接关系,而构件、连接件、方面构件是它的三个基本的构成单元。以下对这三个构成单元的模型进行详细的设计

    转载于:https://www.cnblogs.com/shenghuizhang/p/9303079.html

    展开全文
  • 常见软件体系结构:B/S 、C/S

    千次阅读 2015-03-13 11:54:38
    l 缺点:软件更新时需要同时更新客户端和服务器端两端,比较麻烦; l 优点:安全性比较好。   2 B/S() l B/S结构即浏览器/服务器(Browser/Server); l 优点:只需要编写服务器端
  • 第二节 操作系统的体系结构 目前流行的操作系统有Windows操作系统、UNIX操作系统、Linux操作系统和Android操作系统等。 一、Windows操作系统的体系结构 Windows体系结构是分层的模块系统,主要层次有硬件抽象层...
  • 软件体系结构基础

    千次阅读 2020-12-27 12:57:33
    体系结构的模式选择设计模式做阐述,风格选择典型的三种体系结构风格做阐述,框架选择MVC、J2EE、PCMEF与PCBMER框架做阐述,同时也对特定领域的软件体系结构的类属模型、参考模型,分布式系统结构的多处理机结构、...
  • 2. 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将...
  • 软件体系结构

    千次阅读 2014-10-30 20:28:50
    软件体系结构笔记 L1.pdf 课程简介源起... 现状系统分析员遇到的困境解决之道 基于软件体系结构的开发 示意图软件体系结构的生命周期 体系结构的非形式化描述 通常使用自然语言描述概念和...
  • 软件体系结构风格整理

    万次阅读 多人点赞 2019-01-06 15:17:36
    软件体系结构风格(Architectural Styles)是描述特定系统组织方式的惯用范例,强调了软件系统中通用的组织结构。 风格这个词是个模糊的概念,不同的人有不同的理解,这有时候就让人很困惑。这时候为了明确这个概念...
  • 操作系统结构

    万次阅读 2018-07-13 12:58:45
    操作系统的内部的六种不同的结构设计:单体系统、层次系统、微内核、客户机-服务器系统、虚拟机和exokernels。 一、单体系统 二、层次式系统 三、微内核 四、客户机-服务器模式 五、虚拟机 六、外核...
  • 软件体系结构》 第四章 软件体系结构描述

    万次阅读 多人点赞 2018-07-03 22:46:07
    一、软件体系结构的描述方法  1、图形表达工具:采用矩形框和有向线段组合,矩形框代表抽象构件、有向线段代表连接件。  2、模块内连接语言:module interconnection language MIL  3、基于软构件的系统描述...
  • Linux 系统结构详解

    万次阅读 2017-04-05 10:49:24
    内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。 1. linux内核 内核是操作系统的核心,具有很多最基本功能,它负责管理系统的...
  • Linux系统结构详解

    万次阅读 多人点赞 2011-01-07 14:14:00
    内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。 1. linux内核 Linux内核是世界上最大的开源项目之一,内核是与计算机...
  • 第1章 计算机系统结构的基本概念 1. 什么是计算机系统的多级层次结构?从计算机语言的角度,把计算机系统按功能划分成以下多级层次结构: 2. 硬件和软件在什么意义上是等效的?在什么意义上是不等效的?硬件和软件...
  • 软件体系结构期末考试总结

    千次阅读 多人点赞 2019-12-30 23:19:35
    今天刚考完软件体系结构,把考前的知识点总结发到群里,仅供自己参考,但是里面的内容确实有用也是面试会问到的基础,所以这门课很重要的还是,只可惜我是预习了一两天就参加考试了 对了我们的教材是《软件工程体系...
  • 软件体系结构期末复习

    千次阅读 多人点赞 2019-12-29 00:08:58
    软件体系结构期末复习 标签(空格分隔): 未分类 ...软件重用:也称为软件复用,就是利用已开发的且对应用有贡献的软件元素来构建新软件系统。 软件重用的基本过程:软件对象的开发、软件对象的理解和软件对象的...
  • 系统软件开发系列文章之二:IA-32体系结构CPU保护模式和32位操作系统常见误区
  • 软件架构的10个常见模式

    万次阅读 多人点赞 2019-04-03 12:18:00
    企业规模的软件系统该如何设计呢?在开始写代码之前,我们需要选择一个合适的架构,这个架构将决定软件实施过程中的功能属性和质量属性。因此,了解软件设计中的不同架构模式对我们的软件设计会有较大的帮助。 ...
  • JavaWeb之软件系统体系架构

    千次阅读 2018-05-27 22:11:25
    1、常见软件系统体系结构B/S、C/S 1.1 C/S  · C/S:即客户端/服务器(Client/Server),例如QQ; ·需要编写服务器端程序,以及客户端程序,例如我们安装的就是QQ的客户端程序; ·缺点:软件更新时需要...
  • USB系统结构

    千次阅读 2013-12-31 20:20:16
    USB系统结构 1.USB系统拓扑结构 这个是USB系统的拓扑图,4个部分构成:USB主机控制器,根集线器,集线器,设备。其中Root Hub与USB主机控制器是绑定在一起的。     Node代表USB设备,广义上讲hub也...
  • 软件系统架构简介

    千次阅读 2012-03-05 16:22:40
     软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。 软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对...
  • Linux文件系统目录结构详解

    万次阅读 2017-10-08 13:09:34
    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面我们就开始了解一下linux...
  • 常见数据结构与算法整理总结

    千次阅读 2020-05-19 16:39:12
    一、前言 数据结构,是指相互之间存在一种或多种特定关系的数据关系的集合,用计算机存储、组织数据的方式。...3、数据结构是其它计算机课程的基础,如操作系统、编程原理、数据库管理系统软件工程、人
  • 软件体系结构设计|描述与架构风格

    千次阅读 2017-05-15 16:16:52
    软件体系结构设计软件体系结构设计 什么是体系结构 架构描述 AD 架构风格计算机硬件系统中包含的两个重要因素: 基本硬件模块:控制器、运算器、内存储器、外存储器、输入设备…… 硬件模块之间的连接关系:总线...
  • Linux系统结构 详解

    万次阅读 多人点赞 2017-03-23 21:52:29
    内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-1所示。 1. linux内核  内核是操作系统的核心,具有很多最基本功能,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 279,466
精华内容 111,786
关键字:

常见的软件系统的结构