软件架构 - 架构风格总结

一、软件架构概念

1. 软件架构建模

结构模型:以架构的构件、连接件和其他概念来刻画结构
框架模型:不太侧重描述结构的细节而更侧重于整体的结构
动态模型:系统的“大颗粒”的行为性质过程模型:构建系统的步骤和过程
功能模型:由一组功能构件按层次组成,下层向上层提供服务
软件架构 - 架构风格总结_第1张图片

2.架构描述语言(ADL)

体系结构描述语言(architecture description language,简称ADL),支持构件、连接件及其配置的描述语言就是如今所说的体系结构描述语言。ADL对连接子的重视成为区分ADL和其他建模语言的重要特征之一。
典型的ADL包括Unicon,Rapide,Darwin,Wright,C2 SADL, Acme, xADL, XYZ/ADL,ABC/ADL等。

3.软件架构风格

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

1) 数据流风格:

批处理序列、管道—过滤器
软件架构 - 架构风格总结_第2张图片

2) 调用/返回风格:

主程序/子程序、面向对象、层次结构
软件架构 - 架构风格总结_第3张图片
优点:

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

缺点:

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

3) 独立构建风格:

进程通信、事件驱动系统(隐式调用)
软件架构 - 架构风格总结_第4张图片
主要优点: 是为软件复用提供了强大的支持,为构件的维护和演化带来了方便;
缺点 : 是构件放弃对系统计算的控制

4) 虚拟机风格:

解释器、基于规则的系统
软件架构 - 架构风格总结_第5张图片
应用场景:当系统要应对“自定义”内容解析时(如大型即时战略游戏,游戏的设计目标之一是能够支持玩家自行创建战役地图,定义游戏对象的行为和对象之间的关系)

5) 仓库风格:

现代集成编译环境一般采用这种架构风格。数据库系统、超文本系统,黑板系统
软件架构 - 架构风格总结_第6张图片
控制策略的选取分类,可以产生两个主要的子类:
-1> 若输入流中某类时间触发进程执行的选择,则仓库是传统数据库;
-2> 另一方面,若中央数据结构的当前状态触发进程执行的选择,则仓库是黑板系统

仓库风格的优点:
  1. 解决问题的多方法性
  2. 具有可更改性和可维护性
  3. 有可重用的知识源
  4. 支持容错性和健壮性
仓库风格的缺点:
  1. 测试困难。由于黑板模式的系统有中央系统构件来描述系统的体现系统的状态,所以系统的执行没有确定的顺序,其结果的再现性差,难于测试
  2. 不能保证有好的解决方案
  3. 效率低
  4. 开发成本高
  5. 缺少对并行机的支持

6) 闭环控制架构(过程控制)

当软件被用来操作一个物理系统时,软件与硬件之间可以粗略地表示为一个反馈循环,这个反馈循环通过接受一定的输入,确定一系列的输出,最终使环境达到一个新的状态。适合于嵌入式系统,涉及连续的动作与状态
软件架构 - 架构风格总结_第7张图片

6) 其他架构类型

基于服务的架构(SOA:Service-Oriented Architecture)

与传统构件区别:
1)服务构件粗粒度,传统构件细粒度居多
2)服务构件的接口是标准的,主要是WSDL接口,传统构件常以具体API形式出现
3)服务的实现与语言无关,传统构件绑定各种特定语言。
4)服务构件可以通过构件容器提供QoS的服务,传统构件完全由程序代码直接控制服务构件。
关键技术
1)UDDI
2)WSDL
3)SOAP
4)REST
实现方式:
1)Web Service
2)服务注册表
3)ESB 企业服务总线
软件架构 - 架构风格总结_第8张图片
4)微服务

你可能感兴趣的:(软件架构,架构,系统架构,软件工程)