zoukankan      html  css  js  c++  java
  • 系统架构设计师第七章 软件架构设计

     

     

    第七章 软件架构设计

    考试大纲:

    1.  软件架构的概念
    2. 软件架构风格
    3. 特定领域软件架构
    4. 基于架构的软件开发方法
    5. 软件架构评估
    6. 软件产品线

    软件架构设计就是软件系统的“布局谋篇”,

      软件架构的研究内容主要涉及:

        软件架构描述、软件架构设计、软件架构风格、软件架构评价和软件架构的形成方法。

      软件设计人员学习软件架构知识旨在站在较高的层面上整体地解决好软件的设计、复用、质量和维护等方面的实际问题。

     一、软件架构的概念-

      (一)软件架构的定义

        

    软件架构为软件系统提供了一个架构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。

      (二)软件架构的作用

      软件架构是项目干系人(客户、用户、项目经理、程序员、测试人员、市场人员等)进行交流的手段,明确了对系统实现的约束条件,决定了开发和维护组织的组织结构,制约着系统的质量属性。

      软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础。

      软件架构是可传递和可复用的模型,通过研究软件架构可能预测软件的质量。

      (三)软件架构的发展史

      

      软件架构是软件抽象发展到一定阶段的产物。

    20世纪60年代是子程序的年代:出现了原始的软件架构,即子程序,并以程序间的调用为连接关系。

    20世纪70年代是模块化的年代:出现了数据流分析、实体——关系图(E-R图)、信息隐蔽等工具和方法,软件的抽象层次发展到了模块级。

    20世纪80年代是面向对象的年代:基于模块化的编程语言进一步发展成为面向对象的语言,继承性地增加了一种新元素之间的连接关系。

    20世纪90年代是框架的年代:标准的基于对象的架构以框架的形式出现了。

      如电子数据表、文档、图形图像、音频剪辑等可互换的黑箱对象,可以相互嵌入。

    当前(最近10年来):中间件和IT架构作为标准平台出现,用可购买可复用的元素来构建系统,同时,基于架构的开发方法和理论不断成熟。

         (四)软件架构建模

      1.结构模型:(最直观、最普通的建模方法)以架构的构件、连接件和其他概念来刻画结构。

      并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质。

      研究结构模型的核心是架构描述语言。

      2.框架模型:不太侧重描述结构的细节而更侧重于整体的结构。

        框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。

      3.动态模型:系统的“大颗粒”的行为性质。

          如:描述系统的重新配置或演化。动态可能指系统总体结构的配置、建立或拆除通道或计算的过程。

          是对结构或框架模型的补充。

      4.过程模型:构建系统的步骤和过程。

      5.功能模型:由一组功能构件按层次组成,下层向上层提供服务。

      这5种模型各有所长,将这5种模型有机统一在一起,形成一个完整的模型刻画软件架构。

    Kruchten  在1995年提出一个“4+1”的视图模型。

    “4+1”的视图模型从5个不同的视角包括:逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件架构。

      每个视图只关心系统的一个侧面,5个视图结合在一起才能反映系统的软件架构的全部内容。 

     

    UML(Unified Modeling Language)又称统一建模语言或标准建模语言。

    希赛专家提示:

      逻辑视图和开发视图描述系统的静态结构,而进程视图和物理视图描述系统的动态结构。

      对于不同的软件系统,侧重的角度也有所不同。

      例如:对于管理信息系统来说:比较侧重于从逻辑视图和开发视图来描述系统,而对于实时控制系统来说,则比较注重于从进程视图和物理视图来描述系统。

     

     二、软件架构风格

      (对应:系统架构设计师教程第四版-9.3软件架构风格)

    1.  架构设计的一个核心问题是能否达到架构级的软件复用。
    2. 架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个构件有效地组织成一个完整的系统。
    3. 架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。

     风格包括:

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

    (一)数据流风格

        数据流风格的软件架构是一种最常见,结构最为简单的软件架构。

    这样的架构下,所有的数据按照流的形式在执行过程中前进,不存在结构的反复和重构,就像工厂中的汽水流水线一样,数据像汽车零部件在流水线的各个节点上被加工,最终输出所需要的结果(一部完整的汽车)。

      1.批处理序列

        批处理风格的每一步处理都是独立的,并且每一步是顺序执行的。只有当前一步处理完,后一步处理才能开始。

      组件为一系列固定顺序的计算单元,组件间只通过数据传递交互。每个处理步骤是一个独立的程序,每一步必须再前一步结束后才能开始,数据必须是完整的,以整体的方式传递。

      批处理的典型应用:

     (1)典型数据处理;

     (2)程序开发;

        (3)Windows下的BAT程序就是这种应用的典型实例。

      2.管道和过滤器

        在管道/过滤器风格的软件架构中,每个构件都有一组输入和输出,

    构件读输入的数据流,经过内部处理,然后产生输出数据流。

    这个过程通常通过对输入流的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。因此,这里的构件被称为过滤器。

      这种风格连接件:像是数据流传输的管道,将一根过滤器的输出传到另一个过滤器的输入。

      过滤器必须是独立的实体,不能与其他的过滤器共享数据,一个过滤器不知道它上游和下游的标识。

       一个管道/过滤器网络输出的正确性并不依赖于过滤器进行增量计算过程的顺序。

    典型管道/过滤器架构的例子:

      (1)以UNIX shell 编写的程序。UNIX既提供了一种符号,以连接各组成部分(UNIX的进程),又提供某种进程运行时机制以实现管道。

      (2)传统的编译器。一直被认为是一种管道系统,在该系统中,一个阶段(包括词法分析、语法分析、语义分析和代码生成)的输出是另一个阶段的输入。

       管道/过滤器风格的软件架构好的特点:

      (1)

      (2)

      

  • 相关阅读:
    URLLoader和Loader的区别
    linux的文件permission需要设置,否则会使用as3的urlrequest失败
    基于单个xml的数据库
    require_once()
    AS3里只能让动画听下来,不能让声音停下来的问题
    AS3的百条常用知识收藏
    as3读取xml
    21个营销机构网站设计案例
    Web设计者和开发者必备的27个Chrome插件
    DEDE模块MVC框架基本说明,织梦CMSv5.7MVC开发框架
  • 原文地址:https://www.cnblogs.com/liyanli-mu640065/p/9670073.html
Copyright © 2011-2022 走看看