陈大剩博客

软考系统架构设计师(六):软件架构

  • 陈大剩
  • 2023-03-19 23:40:31
  • 336

架构的本质

  1. 软件架构为软件系统提供了一个结构、行为和属性的高级抽象
  2. 软件架构风格是特定应用领域的惯用模式,架构定义一个词汇表和一组约束

架构的作用

  1. 软件架构是项目干系人进行交流的手段
  2. 软件架构是可传递和可复用的模型,通过研究软件架构可能预测软件的质量。
  3. 软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础。

软件架构

架构发展历程

架构发展历程

4+1 视图
4+1 视图

软件架构风格

  1. 架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个构件有效地组织成一个完整的系统。
  2. 架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。
五大架构风格 子风格
数据流风格 批处理、管道-过滤器
调用/返回风格 主程序/子程序、面向对象、层次结构
独立构件风格 进程通信、事件驱动系统(隐式调用)
虚拟机风格 解释器、规则系统
仓库风格 数据库系统、黑板系统、超文本系统

软件架构风格-数据流风格

数据流风格

优点

1、松耦合【高内聚-低耦合】;
2、良好的重用性/可维护性;
3、可扩展性【标准接口适配】;
4、良好的隐蔽性;
5、支持并行。

缺点

1、交互性较差;
2、复杂性较高;
3、性能较差(每个过滤器都需要解析与合成数据);

典型实例

传统编译器、网络报文处理

子风格

子风格

软件架构风格–调用/返回风格

调用/返回风格

分层架构风格(子风格)

分层架构风格

子风格

分层架构风格

软件架构风格-独立构件风格

独立构件风格

缺点

  1. 松耦合。
  2. 良好的重用性/可修改性/可扩展性。

缺点

  1. 构件放弃了对系统计算的控制。一个构件触发一个事件时,不能确定其他构件是否会响应它。而且即使它知道事件注册了哪些构件的过程,它也不能保证这些过程被调用的顺序。
  2. 数据交换的问题。
  3. 既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理就存在问题。

特点

系统由若干子系统构成且成为一个整体;系统有统一的目标;子系统有主从之分;每一子系统有自己的事件收集和处理机制

软件架构风格–虚拟机风格

虚拟机风格

子风格

子风格

软件架构风格-仓库风格

仓库风格

子风格

子风格

黑板系统

黑板系统

黑板系统

软件架构风格–闭环控制架构(过程控制)

闭环控制架构

软件架构风格-C2风格

C2风格

软件架构风格-层次架构风格

构件组成一个层次结构,连接件通过决定层间如何交互的协议来定义。每层为上一层提供服务,使用下一层的服务,只能见到与自已邻接的层。通过层次结构,可以将大的问题分解为若干个渐进的小问题逐步解决,可以隐藏问题的复杂度。修改某一层,最多影响其相邻的两层(通常只能影响上层)。

层次结构优点:

  1. 支持基于可增加抽象层的设计,允许将一个复杂问题分解成一个增量步骤序列的实现。
  2. 不同的层次处于不同的抽象级别,越靠近底层,抽象级别越高;越靠近顶层,抽象级别越低。
  3. 由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件复用提供了强大的支持。

缺点:

  1. 并不是每个系统都可以很容易的划分为分层的模式。
  2. 很难找到一个合适的、正确的层次抽象方法。
分享到:
0

说点儿什么吧

头像

表情

本站由陈大剩博客程序搭建 | 湘ICP备2023000975号| Copyright © 2017 - 陈大剩博客 | 本站采用创作共用版权:CC BY-NC 4.0

站长统计| 文章总数[109]| 评论总数[9]| 登录用户[22]| 时间点[112]

logo

登入

社交账号登录