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

    2013-04-23 19:23:55
    软件体系结构
  • 软件体系结构概述 文章目录软件体系结构概述1.软件体系结构的意义2.软件体系结构的定义3.软件体系结构的发展4.软件体系结构的优势5.总结   软件体系结构学习第一篇,软件体系结构概述。 1.软件体系结构的意义  ...

    软件体系结构概述

      软件体系结构学习第一篇,软件体系结构概述。


    1.软件体系结构的意义

    在这里插入图片描述

      架构的意义在于充当需求和实现之间的桥梁。更准确来说,整个架构设计在软件生命周期的体现在于概要设计和部分详细设计,上承需求分析,下接代码实现。所以一个软件架构师不仅需要懂得需求分析,而且还需要有经年累积的开发经验。



    2.软件体系结构的定义

      软件体系结构没有一个公认的定义,简单来说,**软件体系结构就是充当需求(Requirements)和实现(Implements)之间的桥梁。**正如David Garlan & Dewane Perry 提出的

    … bridging the gap between requirements and implementations…


      除此外,还需要掌握的是软件体系结构概念的提出者Mary ShawDavid Garlan所阐述的定义:软件体系结构包括构成系统的设计元素的描述,设计元素的交互,设计元素组合的模式,以及在这些模式中的约束。


      总的来说,综合其他的定义,可以得出如下公式,软件体系结构 = 构件(Component)+连接件(Connector)+约束(Constraint).


    1. 构件

      构件是可预制和可重用的软件部件,是组成体系结构的基本计算单元或数据存储单元.它可大可小,即可小到一个函数,又可大到一个子系统。构件应当满足SRP原则,即单一职责原则。


    1. 连接件

      构件是可预制和可重用的软件部件,是组成体系结构的基本计算单元或数据存储单元.它可大可小,比如共享变量的访问中共享变量就是一个连接件。而在现实世界的网络中,通信协议就充当了连接件。


    1. 约束

      约束阐明了构件和连接件之间的关系。


    举例说明:

    e.g1

    在这里插入图片描述


    e.g2

    数据库表可当做是构件,表的外键可当做是表与表之间的连接件,而表的约束条件就充当约束。



    3.软件体系结构的发展

      太早以前的略过,本节了解即可。2000年至今的新架构风格:C/S架构,B/S架构,基于代理的架构,SOA(面向服务的架构)。

      开发架构的很重要的两个点是可维护性和可复用性,很多面向对象设计原则都是为了这两个点服务。



    4.软件体系结构的优势

      软件体系结构的优势如下:

    1. 容易理解

      高层抽象,屏蔽细节,以图展示,直观易懂。


    1. 重用

      比如构件的重用,避免重复造轮子。


    1. 控制成本

      根据功能点,或是功能难度(比如登录注册和数据挖掘的区别)来预估成本。


    1. 可分析性

      从不同角度去看待系统,比如银行系统更注重安全性,社交软件更注重及时性等等。



    5.总结

      这篇其实主要记住如下几点:

    1. 软件体系结构是需求与实现的桥梁,主要由3C构成(Component,Connector,Constraint),并用两个案例Java单继承,数据库表的约束来辅助理解和记忆。
    2. 软件体系架构现在的New Wave是 C/S,B/S,基于代理的架构,SOA。不管怎么发展,软件架构都会注意两个点,可复用性和可维护性。
    3. 软件架构的优势说白了就是好理解,好赚钱。好理解就是使得系统更容易理解,更容易从不同角度去分析。好赚钱就是重用和控制成本,重用可以缩短开发时间,控制成本可以节省开支预算。
    展开全文
  • 软件体系结构风格 文章目录软件体系结构风格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 3 4 5 ... 20
收藏数 17,200
精华内容 6,880
关键字:

软件体系结构