软件机构模式

1 基于构件的软件架构模式

2 软件架构的多视图

3 软件架构模式

4 接口设计

1 软件架构

1.1 定义

  • 一个程序或计算机系统的软件架构是包含了该系统的软件元素、这些元素的外部可见的属性以及这些元素之间关系的结构或一组系统结构
  • 描述角度:静态和动态;动能和非功能的。

1.2 基于构件的软件架构

  • 软件由构件组成,每个组件相对独立的封装了一些信息。
  • 构件可以由简单对象或由其他对象组成的复合对象。
  • 构件通过接口与其他对象通信。(接口描述了通信所需要的信息,接口与实现分离,接口约定了通信模式)

1.3 设计方式

  • 顺序式设计:没有控制线程的被动类。把构件单独编译存储在构件库中,通过调用-返回的方式进行通信。(只有一个主动类)
  • 并发或分布式设计:构件是主动地,可以被部署到一个分布式环境的不同节点上,并发构件可以通过几种不同的通信模式进行通信:同步模式、异步模式、代理模式,群组通信模式。

2 软件架构的多视图

2.1 视图角度

  • 结构视图:是一种静态视图,使用类图来描述。
  • 动态视图:是一种行为视图,使用通信图来描述。
  • 部署视图:软件架构的物理配置,子系统如何在一个分布的配置中,分配到不同的节点。

3 软件架构模式

软件架构模式可以从两个角度来描述,一个是软件的结构模式:主要是静态结构。另一个是通信模式:主要是软件构件之间的动态通信。

3.1 软件结构模式

  • 集中控制模式

  • 分布式控制模式

  • 层次化控制模式

  • 抽象分层模式:

    • 分层可以提高软件的伸缩性,通过添加删除上层提供伸缩性。
    • 从软件架构的功能和角色角度分层。
    • 从部署方法考虑。
  • 多客户端/单服务模式

  • 多客户端/多服务模式

  • 多层次客户端/服务模式

3.2 通信模式

  • 异步消息通信模式:生产者向消费者构件发送一条消息,不必等待返回消息,继续执行。消息到达消费者后可能接收消息并处理,或者通过先进先出的消息队列进行异步通信。提高系统的灵活性。
  • 带回调的消息通信模式
  • 双向异步消息通信模式
  • 广播模式
  • 代理者转发模式。
  • 代理者句柄模式。
  • 调用返回模式:顺序设计的通信方式。主动对象调用被动对象上的方法,控制主动对象传递到被动对象,然后传递回主动对象,期间伴随着参数的传递。
  • 协商模式
  • 服务发现模式
  • 服务注册模式
  • 订阅/通知模式
  • 带回复的同步消息通信模式:客户端构件向服务端构件发送一条消息,并等待服务构件的回复。消息到达服务器端,进行处理。生成回复返送给客户端。当服务端未收到任何消息,服务端挂起,一半包含多个客户端和一个服务端。
  • 不带回复的消息通信模式

3.3 特殊模式

  • 复合事物模式
  • 长事物模式
  • 两阶段提交协议模式

3.4 软件架构模式编档

关键定义

  • 上下文:指生产问题的环境。
  • 问题:指上下文中可能重复出现的问题。
  • 解决方案:指一种解决问题的可行的方法。

4 接口设计

4.1 接口设计的作用

  • 接口明确了一个类、构件或服务的外部可见操作,不需要提供内部关于该操作的实现。
  • 是类的外部视图的设计者和类的内部视图的实现者之间的一种约定。
  • 接口是使用该类所提供的操作的类和实现了这些操作的类之间的约定。
  • 接口可以以不同的方式实现。
  • 一个接口可以独立于实现他的构件进行建模。

为了装逼而存在的架构模式。应该专业术语为“过设计”过于强调通过复杂的设计来避免简单的问题。