软考高级-软件系统架构师-03软件架构设计(重点)

  1. 软件架构的概念

    1. 解释
      1. 之前是从需求分析-》软件设计,从业务方直接到了技术,导致有需求和实现之前有鸿沟。
      2. 所以产生了需求设计,将需求分解为不同的模块,分别实现不同的职责
    2. 价值
      1. 复用和传递
      2. 项目干系人交流的手段,能预测质量
      3. 演化变简单,有据可依、方便传承
    3. 发展史
      1. 无架构-汇编语言(机器语言-最低级-命令式)
      2. 萌芽-程序结构设计(有顺序、分支循环等基本结构-高级语言-c
      3. 初级-统一建模语言uml
      4. 高级-4+1视图
    4. 软件架构建模
      1. 结构模型
        1. 以架构的构件、连接件和其他概念刻画结构
      2. 框架模型
      3. 动态模型
        1. 系统的大颗粒的行为性质
      4. 过程模型
      5. 功能模型
      6. 4+1模型(重点)-与uml一一对应
        1. 为了把架构搞清楚,进行了视图的拆分,又考虑制作视图的工具
          1. 逻辑视图-用户:系统功能需求
          2. 开发视图-实现视图-编程人员:软件管理(源码、组件、dll)
          3. 进程视图-系统集成人员:性能、并发
          4. 物理视图-部署视图-系统工程人员:软件到硬件的映射关系,安装、通信等
          5. 场景-用例视图
  2. 软件架构风格(超重点)

    1. 风格=模式
    2. 分类
      1. 数据流
        1. 数据一步步处理得到结果,数据处理+严格流程
        2. 子风格
          1. 批处理序列
            1. 数据必须完整以整体方式传递-下载完成后再播放
          2. 管道-过滤器
            1. 管道=机制、过滤器=函数、方法
            2. 数据流处理-边下载边播放
      2. 调用/返回
        1. 当前使用最广泛
        2. 子风格
          1. 主程序/子程序
          2. 面向对象
          3. 层次结构
            1. 分层,上层调用下层,比如调用main方法
            2. 特点
              1. 优点
                1. 复杂问题分成不同层次去解决-解耦合
                2. 不同层次处于不同抽象层级-越底层抽象级别越高
                3. 每一层最多只影响两层,只要给相邻层提供相同接口,允许每层方法不同。同时支持了复用
              2. 缺点
                1. 并不是每个系统能容易地分层
                2. 分层过多效率会低,分层少耦合又高,所以很难找到合适的层次抽象方法。一般3~5层最合适
      3. 独立构件
        1. 出发点:封装成构件的同时保持构件独立性-引入中间层/事件触发机制,让两个构件之间不直接联系了(可以联想到观察者、中介模式)
        2. 包含
          1. 进程通信
            1. 构件是独立过程,连接件是消息传递
            2. 构件是命名过程,消息传递的方式可以点对点、异步、同步、远程方法调用
          2. 事件驱动系统(隐式调用)
            1. 调试过程中牵一发而动全身,图形用户界面是典型的解释器风格
            2. 构件不直接调用过程,而是触发/广播一个/多个事件
            3. 构件在一个/多个事件中注册,当时间被触发,系统会自动调用在事件中注册的所有过程
            4. 一个事件的触发就导致另一个模块中的过程调用
            5. 其中构件是匿名的,构件之间交互的连接件以过程之间的隐式调用来实现
            6. 支持软件复用,方便构件维护和演化;但是放弃了对系统计算的控制
      4. 虚拟机
        1. 跟解释器设计模式
          1. 思想相同,只是解释器是局部解释方案而虚拟机风格是全局性的,适用于有自定义需求的场景
          2. 解释器风格-任务的时序依赖性
          3. 特点
            1. 一次编写到处运行
            2. 模拟新操作系统的运行环境
        2. 基于规则的系统,包括规则解释器、规则集、规则/数据选择器和工作内存,用于人工智能和dss中
      5. 仓库风格/数据共享(以数据为中心的风格)
        1. 有一个中心仓库,有一堆处理部件,所有处理部件都对仓库中的数据进行处理
        2. 包含
          1. 数据库系统
            1. ==数据文件,数据库管理系统从文件中获取不同信息进行相应展示
          2. 黑板系统-语音识别系统(先验知识)
            1. 以数据库系统为基础做的,结构一致。黑板是个全局数据库,包含问题解决方法数据的全部状态
            2. 黑板是知识元相互作用的唯一媒介;通过黑板状态的变化来控制知识源-增量修改与处理
            3. 常应用于解决问题没有确定性算法的软件:信号处理、问题规划、编辑器优化)
          3. 超文本系统
          4. 现代集成编译环境一般采用仓库架构风格(黑板)解决编译问题
            1. 传统的编译器,直接经过一系列操作编译成可执行代码进行执行
            2. 现代编译器先构造语法树,各种处理部件围绕语法树,这一系列汇集起来打包成工具集,跟语法树进行对接-不同工具间的信息交互
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值