精华内容
下载资源
问答
  • 软件体系结构风格

    千次阅读 2017-09-19 09:15:20
    软件体系结构风格的定义: 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。经典的软件体系结构风格: ◎ 数据流风格:批处理序列;管道/过滤器。◎ 调用/返回风格:主程序/子程序;面向对象...

    软件体系结构风格的定义:
    软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。

    经典的软件体系结构风格:
    ◎ 数据流风格:批处理序列;管道/过滤器。

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

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

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

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

    管道与过滤器:
    每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常通过对输入流的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。
    这里的构件被称为过滤器,这种风格的连接件就象是数据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。

    数据抽象和面向对象组织:
    这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。这种风格的构件是对象,或者说是抽象数据类型的实例。对象是一种被称作管理者的构件,因为它负责保持资源的完整性。对象是通过函数和过程的调用来交互的。

    基于事件的隐式调用 :

    • 构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其它构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。
    • 这种风格的构件是一些模块,模块既可以是一些过程,又可以是一些事件的集合。过程可以用通用的方式调用,也可以在系统事件中注册一些过程,当发生这些事件时,过程被调用。
    • 这种风格的主要特点是事件的触发者并不知道哪些构件会被这些事件影响。这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用,因此,许多隐式调用的系统也包含显式调用作为构件交互的补充形式。

    分层系统:

    • 层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束。
    • 这种风格支持基于可增加抽象层的设计。允许将一个复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件重用提供了强大的支持。

    仓库系统:

    • 在仓库风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存贮上执行,仓库与外构件间的相互作用在系统中会有大的变化。
    • 控制原则的选取产生两个主要的子类。若输入流中某类时间触发进程执行的选择,则仓库是一传统型数据库;另一方面,若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统。

    C2风格:

    • 系统中的构件和连接件都有一个顶部和一个底部;
    • 构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的;
    • 一个连接件可以和任意数目的其它构件和连接件连接;
    • 当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。

    C/S风格:

    • 数据库服务器
    • 客户应用程序
    • 网络

    三层B/S风格:

    • 浏览器
    • Web服务器
    • 数据库服务器

    CORBA – 对象管理结构:
    技术规范:
    ◎ 接口定义语言(IDL)

    ◎ 接口池(IR)

    ◎ 动态调用接口(DII)

    ◎ 对象适配器(OA)

    正交软件体系结构 :

    • 正交软件体系结构由组织层和线索的构件构成。层是由一组具有相同抽象级别的构件构成。线索是子系统的特例,它是由完成不同层次功能的构件组成(通过相互调用来关联),每一条线索完成整个系统中相对独立的一部分功能。每一条线索的实现与其他线索的实现无关或关联很少,在同一层中的构件之间是不存在相互调用的。
    • 如果线索是相互独立的,即不同线索中的构件之间没有相互调用,那么这个结构就是完全正交的。

    HMB风格 – 系统模型:
    这里写图片描述
    HMB风格 – 构件模型:
    这里写图片描述

    异构风格 :

    • 不同的结构有不同的处理能力的强项和弱点,一个系统的体系结构应该根据实际需要进行选择,以解决实际问题。

    • 关于软件包、框架、通信以及其他一些体系结构上的问题,目前存在多种标准。即使在某段时间内某一种标准占统治地位,但变动最终是绝对的。

    • 实际工作中,我们总会遇到一些遗留下来的代码,它们仍有效用,但是却与新系统有某种程度上的不协调。然而在许多场合,将技术与经济综合进行考虑时,总是决定不再重写它们。

    • 即使在某一单位中,规定了共享共同的软件包或相互关系的一些标准,仍会存在解释或表示习惯上的不同。

    互连系统构成的系统 :
    这里写图片描述

    领域特定的软件体系结构:

    • Hayes-Roth:DSSA就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合。
    • Tracz:DSSA就是一个特定的问题领域中支持一组应用的领域模型、参考需求、参考体系结构等组成的开发基础,其目标就是支持在一个特定领域中多个应用的生成。
    • 垂直域:定义了一个特定的系统族,包含整个系统族内的多个系统,结果是在该领域中可作为系统的可行解决方案的一个通用软件体系结构。
    • 水平域:定义了在多个系统和多个系统族中功能区域的共有部分,在子系统级上涵盖多个系统族的特定部分功能,无法为系统提供完整的通用体系结构。

    领域特定的软件体系结构 – 与体系结构风格的比较:

    • DSSA以问题域为出发点,体系结构风格以解决域为出发点。

    • DSSA只对某一个领域进行设计专家知识的提取、存储和组织,但可以同时使用多种体系结构风格;而在某个体系结构风格中进行体系结构设计专家知识的组织时,可以将提取的公共结构和设计方法扩展到多个应用领域。

    • DSSA通常选用一个或多个适合所研究领域的体系结构风格,并设计一个该领域专用的体系结构分析设计工具。

    • 体系结构风格的定义和该风格应用的领域是直交的,提取的设计知识比用DSSA提取的设计专家知识的应用范围要广。

    • DSSA和体系结构风格是互为补充的两种技术。

    展开全文
  • 软件体系结构风格 文章目录软件体系结构风格1.软件体系结构定义2.常见软件体系结构风格2.1管道和过滤器2.2数据抽象和面向对象组织2.3基于事件的隐式调用2.4分层系统2.5仓库系统2.6C/S风格2.7B/S风格3.总结   软件...

    软件体系结构风格

      软件体系结构的学习第二篇,软件体系结构风格。

    1.软件体系结构定义

      软件体系结构的定义:某一特定软件领域的系统组织方式的惯用方式。通俗来讲就是某一类软件的体系结构的特性抽象,它还是由3C构成(Component,Connector,Constraint)。软件体系结构与不同的软件体系结构风格的关系就好比人与黄种人,白种人,黄种人的关系。


    2.常见软件体系结构风格

      下文的每个软件体系结构风格会从Component,Connector来讲述,一些会附有例子辅助理解。

    2.1管道和过滤器

    构件:过滤器,输入一组数据,经过处理,并输出一组数据。(IPO)

    连接件:管道,将一个构件的输出作为另一个构件的输入。


    e.g Linux的管道命令,编译器,Java8特性Stream


    2.2数据抽象和面向对象组织

    构件:对象

    连接件:函数或过程(通过它们实现对象的交互)


    2.3基于事件的隐式调用

    构件分为两种,事件源( Event Source)和事件处理器(Event Handler)。

    连接件为注册。


    这个软件体系结构风格与观察者模式相关,事件源就是观察目标,事件处理器就是观察者。将观察者注册到观察目标中的注册对应的就是连接件。所谓隐式调用指的就是事件源和事件处理器是独立的两个构件,事件源并不知道当它触发时,事件处理器会作何反应。


    e.g 数据库管理系统和用户界面。


    场景模拟:

    点击按钮,画面随机变色,按钮的内容变为颜色对应的rgb参数。


    测试代码:

    package com.lordbao.practice;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Random;
    
    /**
     * @Author Lord_Bao
     * @Date 2020/10/12 18:38
     * @Version 1.0
     */
    public class TestImplicitCallBasedOnEvent {
    
          public static void main(String[] args) {
                new MyFrame();
          }
    }
    
    class  MyFrame extends JFrame{
    
          //面板容器,用于添加组件
          private JPanel panel;
    
          public  MyFrame(){
    
                //面板容器,用于添加组件
                panel = new JPanel();
                JButton button = new JButton("Button");
                panel.add(button);
    
    
                //设置框体起始位置和大小
                this.setBounds(200,200,400,400);
                //设置点击关闭按钮,默认程序终止
                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                this.add(panel);
                this.setVisible(true);
    
                /**  核心代码
                 *   注册 :将观察者注册到观察目标里去
                 *
                 *   注册即为连接件
                 *   观察者即ChangePaneColorListener  就是事件处理构件
                 *   观察目标即  Button               就是事件源控件
                 *
                 *   所谓隐式就是事件源构件并不知道当它触发时,事件处理构件会作何处理。
                 *   只有当事件触发时,才会知道事件处理构件如何处理。
                 */
                button.addActionListener(new ChangePaneColorListener());
          }
    
         //内部类
         private class ChangePaneColorListener  implements ActionListener{
    
             /**
              * 事件处理构件的处理
              */
            @Override
                public void actionPerformed(ActionEvent e) {
                      /**
                       *  给面板的背景产生一个随机的颜色
                       */
                    Random random = new Random() ;
                    int r = random.nextInt(256);
                    int g=  random.nextInt(256);
                    int b = random.nextInt(256);
                    Color backgroundColor = new Color(r,g,b);
                    panel.setBackground(backgroundColor);
    
                      /**
                       * 如果事件源(Event Source)是按钮
                       * 那么该按钮的文本就设置为Color的种类
                       */
                    if(e.getSource().getClass().equals(JButton.class)){
                         JButton button = (JButton)e.getSource();
                         button.setText(backgroundColor.toString());
                    }
                }
          }
    }
    
    

    测试效果:

    在这里插入图片描述


    核心代码及分析:

    /**  核心代码
     *   注册 :将观察者注册到观察目标里去
     *
     *   注册即为连接件
     *   观察者即ChangePaneColorListener  就是事件处理构件
     *   观察目标即  Button               就是事件源控件
     *
     *   所谓隐式就是事件源构件并不知道当它触发时,事件处理构件会作何处理。
     *   只有当事件触发时,才会知道事件处理构件如何处理。
     */
    button.addActionListener(new ChangePaneColorListener());
    

    2.4分层系统

    构件:各个层

    连接件:层之间的调用


    这样的分层系统的好处就是降低耦合,提高复用。


    e.g MVC架构,OSI7层模型。


    2.5仓库系统


    构件:中央结构(数据库)和其他一些独立构件的集合

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


    2.6C/S风格

    C/S风格的是基于资源不对等,且为了资源共享而提出的,核心组成部分为Client(客户端),Server(服务端)和网络。显然,客户端和服务端为构件,网络即为连接件。


    C/S风格整体来说可分为三类,如下图所示。


    在这里插入图片描述


    如图,不难发现,数据层是放在服务器上的,而表示层是放在客户机上的。功能层放在服务器还是客户机的一个效果就是减轻了另一方的压力。其中(2)是三层C/S风格的体现,它将数据层,功能层分别用不同的服务器来处理,目的也很明显,减轻压力,可以实现并行开发,但是这样构建成本也会有增高。


    C/S架构的优点就是数据操作和事务处理很强,灵活性也比较高(服务器和客户机根据实际情况进行功能调整)

    C/S架构的缺点就是跨平台能力差,需要针对不同操作系统进行开发,这样成本会提高,除此外更新繁琐不方便。

    比如QQ领不到新版的红包,游戏需要更新补丁。


    2.7B/S风格

      B/S即Browser和Server,它其实也是三层C/S风格的体现方式。如下图所示:
    在这里插入图片描述


    基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决,从而达到了一种“零客户端”的功能。


    B/S很明显的优点就是跨操作系统,升级更加方便(刷新一下即可)。

    B/S的缺点就是安全性以及响应速度都会低于C/S风格。


    针对实际情况,采用不同的C/S或是B/S架构或是混合结构进行开发。

    e.g1后台管理用C/S,前端展示用B/S。

    e.g2公司内网用B/S,远程访问用C/S。

    e.g3银行,监控,医疗用C/S.


    3.总结

    1.软件体系结构风格是某一类特定领域的软件体系结构的抽象总结,本质还是由3C构成,灵明石猴和六耳猕猴都是猴。

    2.软件体系结构风格有个印象即可,当然基于事件的隐式调用和C/S和B/S着重理解。

    • 基于事件的隐式调用:所谓隐式指的是事件源并不知道当它触发时,事件处理器会作何反应。这里和观察者模式挂钩。
    • C/S分为三类:2层的优点是易于理解,3层的优点是便于并行开发,但会增加成本,通信效率会降低。整个C/S的优点是安全和灵活,缺点是跨平台导致成本高,升级维护麻烦。
    • B/S是C/S的一个特例,它是三层C/S的一个体现,它将软件的升级,维护,数据处理全部都放在服务端。它的优点是升级方便,跨操作系统。缺点就是安全和响应速度会低于C/S.
    展开全文
  • 第三章 软件体系结构风格 一、基本概念 1. 软件体系结构设计的一个核心问题是能否使用重复的体系结构模式,即能够达到体系结构级的复用。 2. 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。...

    第三章 软件体系结构风格

    一、基本概念

    1. 软件体系结构设计的一个核心问题是能否使用重复的体系结构模式,即能够达到体系结构级的复用。

    2. 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的

    3. 对软件体系结构风格的研究和实践促进对设计的重用,一些经过实践证明的解决方案也可以可靠地用于解决新的问题。

    4. 软件体系结构风格为大粒度软件重用提供了可能。

    5. 讨论体系结构风格时要回答的问题

        ◎构件和连接件的类型是什么?

        ◎ 可容许的结构模式是什么?

        ◎ 基本的计算模型是什么?

        ◎ 风格的基本不变性是什么?

        ◎ 其使用的常见例子是什么?

        ◎ 使用此风格的优缺点是什么?

        ◎ 其常见的特例是什么?

    6. 软件体系结构风格关键四要素

            提供一个词汇表、定义一套配置规则、定义一套语义解释原则、定义对基于这种风格的系统所进行的分析。

    7.体系结构风格分类

        ◎ 数据流风格:批处理序列;管道/过滤器。

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

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

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

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

    二、管道和过滤器

    1.优点

        ◎ 使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;

        ◎ 允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成;

        ◎ 支持软件重用。只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;

        ◎ 系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来;旧的可以被改进的过滤器替换掉;

        ◎ 允许对一些如吞吐量、死锁等属性的分析;

        ◎ 支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行。

    2.缺点

        ◎ 通常导致进程成为批处理的结构。这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换;

        ◎ 不适合处理交互的应用。当需要增量地显示改变时,这个问题尤为严重;

        ◎ 因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。

    三、分层系统

        层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层只对相邻的层可见。

    1.优点

        ◎ 支持基于抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤进行分解;

        ◎ 支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层;

        ◎ 支持重用。只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可以定义一组标准的接口,而允许各种不同的实现方法。

    2.缺点

        ◎ 并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来;

        ◎ 很难找到一个合适的、正确的层次抽象方法。

    四、C2风格:通过连接件绑定在一起的按照一组规则运作的并行构件网络

    1.组织规则

        ◎ 系统中的构件和连接件都有一个顶部和一个底部;

        ◎ 构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的;

        ◎ 一个连接件可以和任意数目的其它构件和连接件连接;

        ◎ 当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部

    2.示意图

    3.特点

        ◎ 系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起;

        ◎ 所有构件之间的通讯是通过以连接件为中介的异步消息交换机制来实现的;

        ◎ 构件相对独立,构件之间依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享特定控制线程之类的相关性假设。

    五、客户/服务器风格、三层客户/服务器风格、浏览器/服务器风格

        各自优缺点、区别(详见作业)

    六、正交软件体系结构

    1.定义

            正交软件体系结构由组织层和线索的构件构成。层是由一组具有相同抽象级别的构件构成。线索是子系统的特例,它是由完成不同层次功能的构件组成(通过相互调用来关联),每一条线索完成整个系统中相对独立的一部分功能。每一条线索的实现与其他线索的实现无关或关联很少,在同一层中的构件之间是不存在相互调用的。

            如果线索是相互独立的,即不同线索中的构件之间没有相互调用,那么这个结构就是完全正交的。

    2.特点

        ◎ 正交软件体系结构由完成不同功能的n(n > 1)个线索(子系统)组成;

        ◎ 系统具有m(m > 1)个不同抽象级别的层;
        ◎ 线索之间是相互独立的(正交的);

        ◎ 系统有一个公共驱动层(一般为最高层)和公共数据结构(一般为最低层)。

    3.优点

        ◎ 结构清晰,易于理解。由于线索功能相互独立,不进行互相调用,结构简单、清晰,构件在结构图中的位置已经说明它所实现的是哪一级抽象,担负的是什么功能。

        ◎易修改,可维护性强。由于线索之间是相互独立的,所以对一个线索的修改不会影响到其他线索。系统功能的增加或减少,只需相应的增删线索构件族,而不影响整个正交体系结构,因此能方便地实现结构调整。

        ◎可移植性强,重用粒度大。因为正交结构可以为一个领域内的所有应用程序所共享,这些软件有着相同或类似的层次和线索,可以实现体系结构级的重用。

    七、基于层次消息总线的体系结构 HMB (国内)

    1.消息总线结构

    八、异构结构风格

    1.使用原因

        ◎ 不同的结构有不同的处理能力的强项和弱点,一个系统的体系结构应该根据实际需要进行选择,以解决实际问题。

        ◎ 关于软件包、框架、通信以及其他一些体系结构上的问题,目前存在多种标准。即使在某段时间内某一种标准占统治地位,但变动最终是绝对的。

        ◎ 实际工作中,我们总会遇到一些遗留下来的代码,它们仍有效用,但是却与新系统有某种程度上的不协调。然而在许多场合,将技术与经济综合进行考虑时,总是决定不再重写它们。

        ◎ 即使在某一单位中,规定了共享共同的软件包或相互关系的一些标准,仍会存在解释或表示习惯上的不同。

    2.使用实例

    (1)内外有别模型  

    (2)查改有别模型

    九、特定领域软件体系结构 DSSA

    1.定义

        DSSA就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合

    2.必备特征

    (1)一个严格定义的问题域和(或)解决域

    (2)具有普遍性,使其可以用于某个特定领域中的某个特定应用的开发

    (3)对整个领域的合适程度的抽象

    (4)具备该领域固定的、典型的在开发过程中可重用的元素。

    3.基本活动

        领域分析、领域设计、领域实现

    4.参与人员

        领域专家、领域分析师、领域设计人员和领域实现人员。

    5.阶段

        DSSA的建立过程分为五个阶段,每个阶段可以进一步划分为一些步骤或者子阶段,每个阶段包括一组需要回答的问题,一组需要的输入,一组将产生的输出和验证标准。本过程是并发的、递归的、反复的、或者可以说,它是螺旋形。完成本过程可能需要对每个阶段经历几遍,每次增加更多的细节。

        DSSA的建立过程是并发的、递归的、反复进行的。DSSA的建立需要设计人员对所在特定应用领域必须精通,找到合适的抽象方式来实现DSSA的通用性和可重用性。以一种逐渐演化的方式发展。

        ◎ 定义领域范围:确定什么在感兴趣的领域中以及本过程到何时结束。

        ◎ 定义领域特定的元素:编译领域字典和领域术语的同义词词典。识别领域中应用间的共同性和差异性;

        ◎ 定义领域特定的设计和实现需求约束:描述解空间中有差别的特性。不仅要识别出约束,并且要记录约束对设计和实现决定造成的后果,还要记录对处理这些问题时产生的所有问题的讨论;

        ◎ 定义领域模型和体系结构:产生一般的体系结构,并说明构成它们的模块或构件的语法和语义;

        ◎  产生、搜集可重用的产品单元:为DSSA增加构件使得它可以被用来产生问题域中的新应用。

    6.DSSA和体系结构风格的比较  

        ◎ DSSA以问题域为出发点,体系结构风格以解决域为出发点。DSSA只对某一个领域进行设计专家知识的提取、存储和组织,但可以同时使用多种体系结构风格;而在某个体系结构风格中进行体系结构设计专家知识的组织时,可以将提取的公共结构和设计方法扩展到多个应用领域。

        ◎ DSSA通常选用一个或多个适合所研究领域的体系结构风格,并设计一个该领域专用的体系结构分析设计工具。体系结构风格的定义和该风格应用的领域是直交的,提取的设计知识比用DSSA提取的设计专家知识的应用范围要广。

        ◎ DSSA和体系结构风格是互为补充的两种技术。

    展开全文
  • Chapter 3 软件体系结构风格1. 软件体系结构风格概述:●软件体系结构设计的一个核心问题是能否使用重复的体系结构模式,即能否达到体系结构级的软件重用。●软件体系结构风格是描述某一特定应用领域中系统组织方式...

    Chapter 3 软件体系结构风格

    1. 软件体系结构风格概述:

    ●软件体系结构设计的一个核心问题是能否使用重复的体系结构模式,即能否达到体系结构级的软件重用。

    ●软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。按这种方式理解,软件体系结构风格定义了用于描述系统的术语表和一组指导构件系统的规则。

    ●对软件体系结构风格的研究和实践促进对设计的重用,经过实践证实的解决方案也可以可靠地用于解决新的问题。体系结构风格的不变部分使不同系统可以共享同一个实现代码。只要系统是使用常用的、规范的方法来组织,就可使别的设计者很容易地理解系统的体系结构。

    ●软件体系结构风格为大粒度的软件重用提供了可能。但对于应用体系结构风格来说,由于视点的不同,系统设计师有很大的选择余地。要为系统选择或设计某一个体系结构风格,必须根据特定项目的具体特点,进行分析比较后再确定,体系结构风格的使用几乎完全是特定的。

    ●软件体系结构最关键的四要素:

        提供一个词汇表、定义一套配置规则、定义一套语义解释规则、定义对基于这种风格的系统所进行的分析

    ●通用体系结构风格:

        (1)数据流风格:批处理序列、管道/过滤器

        (2)调用/返回风格:主程序/子程序、面向对象风格、层次结构

        (3)独立构件风格:进程通信、事件系统

        (4)虚拟机风格:解释器、基于规则的系统

        (5)仓库风格:数据库系统、超文本系统、黑板系统

    2. 管道和过滤器:

    ●优点:

        (1)使软构件具有良好的隐蔽性和高内聚、低耦合的特点。

        (2)允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成。

        (3)支持软件重用。

        (4)系统维护和增强系统性能简单。

        (5)允许对一些如吞吐量、死锁等属性的分析。

        (6)支持并行执行。

    ●缺点:

        (1)通常导致进程成为批处理的结构。

        (2)不适合处理交互的应用。

        (3)因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。

    3. 分层系统:

    ●优点:

        (1)支持基于抽象程度递增的系统设计。

        (2)支持功能增强。

        (3)支持重用。

    ●缺点:

        (1)并不是每个系统都可以很容易地划分为分层模式。

        (2)很难找到一个合适的、正确的层次抽象方法。

    4. C2风格:

    ●组织规则:

        (1)系统中的构件和连接件都有一个顶部和一个底部。

        (2)构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件和构件之间的直接连接是不允许的。

        (3)一个连接件可以和任意数目的其他构件和连接件连接。

        (4)当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。

    ●特点:

        (1)系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起。

        (2)所有构件之间的通信是通过以连接件为中介的异步消息交换机制来实现的。

        (3)构件相对独立,构件之间依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享特定控制线程之类的相关性假设。

    5. 客户/服务器风格:

    ●主要组成部分:数据库服务器、客户应用程序、网络

    ●优点:

        (1)对硬件和软件的变化显示出极大的适应性和灵活性,易于对系统进行扩充和缩小。

        (2)系统中的功能构件充分隔离。

        (3)将大应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。

        (4)具有强大的数据操作和事务处理能力,模型思想简单,易于理解和接受。

    ●缺点:

        (1)开发成本较高。

        (2)客户端程序设计复杂。

        (3)信息内容和形式单一。

        (4)用户界面风格不一,使用繁杂,不利于推广使用。

        (5)软件移植困难。

        (6)软件维护和升级困难。

        (7)新技术不能轻易使用。

    6. 三层客户/服务器风格:

    ●主要组成部分:数据库服务器(数据层)、客户应用程序(表示层)、应用服务器(功能层)

    ●优点:

        (1)允许合理地划分为三层结构的功能。

        (2)允许更灵活有效地选用相应的平台和硬件系统,具有良好的可升级性和开放性。

        (3)能并行而且高效地进行开发。

        (4)安全管理严格,管理层次更加合理和可控制。

    ●缺点:

        (1)若各层的通信效率不高,整体也达不到所要求的性能。

        (2)设计时必须慎重考虑三层间的通信方法、通信频度及数据量。

    7. 浏览器/服务器风格:

    ●主要组成部分:客户端浏览器、Web服务器、数据库服务器

    ●优点:

        (1)用通用浏览器实现了原来需要复杂的专用软件才能实现的强大功能,节约了开发成本。

        (2)系统安装、修改和维护全在服务器端解决。

        (3)提供异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。

        (4)实现了跨组织的功能覆盖,可以充分利用网络上的各种资源,维护工作量大大减少。

    ●缺点:

        (1)缺乏对动态页面的支持能力,没有集成有效的数据库处理功能。

        (2)系统扩展能力差,安全性难以控制。

        (3)数据查询等响应速度慢。

        (4)数据的动态交互性不强,不利于在线事务处理应用。

    8. 正交软件体系结构:

    ●组成部分:组织层(横向)、线索(纵向)

    ●主要特征:

        (1)正交软件体系结构由完成不同功能的n个线索(子系统)构成。

        (2)系统具有m个不同抽象级别的层。

        (3)线索之间是相互独立的(正交的)。

        (4)系统有一个公共驱动层(一般为最高层)和公共数据结构(一般为最低层)。

    ●优点:

        (1)结构清晰,易于理解。

        (2)易修改,可维护性强。

        (3)可移植性强,重用粒度大。

    9. 基于层次消息总线的体系结构风格:

    ●HMB:由北大杨芙清院士等人提出。

    ●消息总线:


    ●消息过滤:消息总线对消息过滤提供了转换和阻塞两种方式。消息过滤的原因主要在于不同来源的构件事先并不知道各自的接口,因此可能同一消息在不同的构件中使用了不同的名字,或不同的消息使用了相同的名字。

    10. 异构结构风格:

    ●为什么要使用异构结构?

        (1)应该根据实际需要进行选择,以解决实际问题。

        (2)在某段时间内某一种标准占统治地位,但变动最终是绝对的。

        (3)遗留代码仍然效用,但与新系统在某种程度上不协调。

        (4)即使规定了共享共同的软件包或相互关系的一些标准,仍会存在解释或表示习惯上的不同。

    ●异构结构的实例:

        (1)“内外有别”模型——内部C/S,外部B/S

               优点:外部用户不直接访问数据库服务器,能保证企业数据库的相对安全。企业内部用户的交互性较强,数据查询和修改的响应速度较快。

               缺点:企业外部用户修改和维护数据时,速度较慢,较繁琐,数据的动态交互性不强。

        (2)“查改有别”模型——查询浏览B/S,维护修改C/S

               优点:B/S和C/S的共同优点。

               缺点:企业数据容易暴露给外部用户,给数据安全造成了一定的威胁。

    11. 特定领域软件体系结构:

    ●DSSA就是在一个特定应用领域中为一组应用提供组织结构参考的标准软件体系结构。

    ●必备特征:

        (1)一个严格定义的问题域和/或解决域

        (2)具备普遍性,使其可以用于领域中某个特定应用的开发。

        (3)对整个领域的合适程度的抽象。

        (4)具备该领域固定的、典型的在开发过程中可重用元素。

    ●基本活动:领域分析、领域设计、领域实现

    ●参与DSSA的人员:领域专家、领域分析师、领域设计人员、领域实现人员。

    ●建立过程:分为五个阶段,每个阶段可以进一步划分为一些步骤或子阶段。每个阶段包括一组需要回答的问题、一组需要的输入、一组将产生的输出和验证标准。本过程是并发的、递归的、反复的、螺旋型的。

        (1)定义领域范围。

        (2)定义领域特定的元素。

        (3)定义领域特定的设计和实现需求约束。

        (4)定义领域模型和体系结构。

    (5)产生、搜集可重用的产品单元。

    ●DSSA的建立需要设计人员对所在特定领域必须精通,他们要找到合适的抽象方式来实现DSSA的通用性和可重用性。通常DSSA以一种逐渐演化的方式发展。

    12. DSSA与体系结构风格的比较:

    (1)DSSA只对某一个领域进行设计专家知识的提取、存储和组织,但可以同时使用多种体系结构风格;而在某个体系结构风格中进行体系结构设计专家知识的组织时,可以将提取的公共结构和设计方法拓展到多个领域。

    (2)DSSA的特定领域参考体系结构通常选用一个或多个适合所研究领域的体系结构风格,并设计一个该领域专用的体系结构分析设计工具。

    (3)体系结构风格的定义和该风格应用的领域是直交的,提取的设计知识比用DSSA提取的设计专家知识的应用范围要广。

    (4)DSSA和体系结构风格是互为补充的两种技术。

    展开全文
  • 软件体系结构风格整理

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

    千次阅读 2020-02-18 12:46:38
    文章目录软件体系结构风格介绍(一)管道和过滤器风格(二)数据抽象与面向对象风格(三)基于事件的隐式调用风格(四)层次系统风格(五)仓库风格(六)C2风格(七)基于层次消息总线的架构风格 软件体系结构风格...
  • 软件体系结构风格及其应用

    千次阅读 2019-04-19 11:53:41
    软件体系结构风格(Software ArchitectureStyle)是描述软件系统组织方式的常用模式,在实践中已经被多次应用。按照Shaw和Garlan的说法,"一种体系结构风格定义了构件类型和连接件类型的词汇表,以及它们如何组合的...
  • 一、概述 软件体系结构表示系统的框架结构,用于从较高的层次上来描述各部分之间的关系和接口,主要包括构件、构件性质和构件之间的关系。 通过使用软件体系结构,...由此,产生了软件体系结构风格的概念。 ...
  • 第三章 软件体系结构风格(上)

    千次阅读 2020-03-04 21:51:08
    第三章 软件体系结构风格 3.1 软件体系结构风格概述 软件体系风格也称软件体系结构惯用模式,它定义了用于系统描述的术语表和一组用于指导系统构建的规则。软件体系结构风格包括构件、连接件和一组将它们组合在一起...
  • 第三章 软件体系结构风格(下)

    千次阅读 2020-03-05 15:04:15
    第三章 软件体系结构风格(下) 继第三章 软件体系结构风格(上),再简单介绍几种软件体系结构风格,并了解异构体系结构集成。 3.10 反馈控制环体系结构风格 反馈控制环的思想源自过程控制理论,从过程控制角度来...
  • 经典软件体系结构风格(三)

    千次阅读 2017-05-09 21:27:40
    MVC 软件体系结构风格   #模型-视图-控制器风格常被简称为MVC风格  --组件:模型、视图、控制器  --连接件:显式调用、隐式调用、其他机制(例如:Http协议) #工作机制:  Model:  --...
  • 经典软件体系结构风格(五)

    千次阅读 2017-05-29 16:33:35
    分布式软件体系结构风格(C/S,B/S)  1、 三层C/S结构 2、 三层B/S结构   三层C/S结构(3-Tier C/S Architecture) §第1层:用户界面GUI—表示层——客户机 §第2层:业务逻辑—功能层——应用服务器 §第3...
  • Garlan和Shaw将通用软件体系结构风格总结为五个大类:数据流风格、调用/返回风格、独立构件风格、虚拟机风格、仓库风格。 其中数据流风格有:批处理序列、管道/过滤器; 调用/返回风格有:主程序/子程序、面向对象...
  • 分布式软件体系结构风格 1、 三层C/S结构 2、 三层B/S结构    了解更多软件体系结构 三层C/S结构(3-Tier C/S Architecture) §第1层:用户界面GUI—表示层——客户机 §第2层:业务逻辑—功能层——应用...
  • 经典软件体系结构风格(一)

    千次阅读 2017-03-13 18:23:17
    1.主程序-子程序软件体系结构  组件–主程序、子程序 连接件–调用-返回机制 拓扑结构–层次化结构 主程序-子过程风格的优点与缺点 §优点: –有效地将一个较复杂的程序系统设计任务分解成许多易于控制和...
  • 经典软件体系结构风格及DSSA

    万次阅读 2006-02-16 17:20:00
    软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式(idiomatic paradigm)。体系结构风格定义了一个系统家族,即一个体系结构定义了一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组...
  • 在仓库风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存贮上执行,仓库与外构件间的相互作用在系统中会有大的变化。按控制策略的选取分类,可以产生两个主要的子类。若输人流中某类时间...
  • 经典软件体系结构风格(二)

    千次阅读 2017-03-27 20:14:24
    1.基于事件的隐式调用风格 基本组件:对象或过程,并分类为以下更小的组件 –过程或函数,充当事件源或事件处理器的角色 –事件 连接件:事件-过程绑定 –过程(事件处理器,事件的接收和处理方) 向...
  • C/S软件体系结构 背景:基于资源不对等,且为实现共享而提出来的 主要组成部分:数据库服务器、客户应用程序和网络。 注意到,服务端只管数据库。 任务分配: 服务器: 数据库安全性的要求; 数据库访问并发性的...
  • 构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其它构件中的过程在一个或多个事件中注册,当一...构件是一些模块,这些模块既可以是一些过程,又可以是一些事件的集合。... 1、事件驱动风格 事件驱
  • 1.软件体系结构风格 软件体系结构设计的一个核心问题是能否使用重复的体系结构模式,即能否达到体系结构级的软件重用。也就是说,能否在不同的软件系统中,使用同一体系结构。基于这个目的,学者们开始研究和实践...
  • 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式,体系结构风格定义了用于描述系统的术语表和一组知道构建系统的规则。 软件体系风格的最关键的四要素内容:提供一个词汇表,定义一套配置规则,...
  • 软件体系结构风格的研究和实践促进了对设计的复用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。体系结构风格的不变部分使不同的系统可以共享同一个实现代码。只要系统是使用常用的、规范的方法来...
  • 软件体系结构C2风格

    千次阅读 2016-04-22 22:50:00
    首先C2风格是最常用的一种软件体系结构风格。(下图为一个C2风格的架构图) C2是一种基于构件和消息的架构风格,可用于创建灵活的、可伸缩的软件系统。一个C2构架可以看成是按照一定规则由连接件连接的许多组件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,539
精华内容 13,815
关键字:

软件体系结构风格