软考系统架构设计师(六):软件架构
- 陈大剩
- 2023-03-19 23:40:31
- 947
架构的本质
- 软件架构为软件系统提供了一个结构、行为和属性的高级抽象。
- 软件架构风格是特定应用领域的惯用模式,架构定义一个词汇表和一组约束。
架构的作用
- 软件架构是项目干系人进行交流的手段。
- 软件架构是可传递和可复用的模型,通过研究软件架构可能预测软件的质量。
- 软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础。
架构发展历程
4+1 视图
软件架构风格
- 架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个构件有效地组织成一个完整的系统。
- 架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。
五大架构风格 | 子风格 |
---|---|
数据流风格 | 批处理、管道-过滤器 |
调用/返回风格 | 主程序/子程序、面向对象、层次结构 |
独立构件风格 | 进程通信、事件驱动系统(隐式调用) |
虚拟机风格 | 解释器、规则系统 |
仓库风格 | 数据库系统、黑板系统、超文本系统 |
软件架构风格-数据流风格
优点
1、松耦合【高内聚-低耦合】;
2、良好的重用性/可维护性;
3、可扩展性【标准接口适配】;
4、良好的隐蔽性;
5、支持并行。
缺点
1、交互性较差;
2、复杂性较高;
3、性能较差(每个过滤器都需要解析与合成数据);
典型实例
传统编译器、网络报文处理
子风格
软件架构风格–调用/返回风格
分层架构风格(子风格)
子风格
软件架构风格-独立构件风格
缺点
- 松耦合。
- 良好的重用性/可修改性/可扩展性。
缺点
- 构件放弃了对系统计算的控制。一个构件触发一个事件时,不能确定其他构件是否会响应它。而且即使它知道事件注册了哪些构件的过程,它也不能保证这些过程被调用的顺序。
- 数据交换的问题。
- 既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理就存在问题。
特点
系统由若干子系统构成且成为一个整体;系统有统一的目标;子系统有主从之分;每一子系统有自己的事件收集和处理机制
软件架构风格–虚拟机风格
子风格
软件架构风格-仓库风格
子风格
黑板系统
软件架构风格–闭环控制架构(过程控制)
软件架构风格-C2风格
软件架构风格-层次架构风格
构件组成一个层次结构,连接件通过决定层间如何交互的协议来定义。每层为上一层提供服务,使用下一层的服务,只能见到与自已邻接的层。通过层次结构,可以将大的问题分解为若干个渐进的小问题逐步解决,可以隐藏问题的复杂度。修改某一层,最多影响其相邻的两层(通常只能影响上层)。
层次结构优点:
- 支持基于可增加抽象层的设计,允许将一个复杂问题分解成一个增量步骤序列的实现。
- 不同的层次处于不同的抽象级别,越靠近底层,抽象级别越高;越靠近顶层,抽象级别越低。
- 由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件复用提供了强大的支持。
缺点:
- 并不是每个系统都可以很容易的划分为分层的模式。
- 很难找到一个合适的、正确的层次抽象方法。
赞
(0)