软件架构设计方法

目录

1 面向对象
2 信息隐藏
3 继承和泛化
4 并发处理
5 设计模式
6 软件架构和构件
7 软件质量属性
8 基于用例的软件生命周期
9 需求、分析和设计建模活动

1 面向对象

这一部分请参考面线对象的课程笔记。

1.1 关键概念

对象
属性
操作
接口

对象的接口是他提供的操作的集合。

2 信息隐蔽

2.1 信息隐蔽基础

接口是对象可见的部分,其他对象通过接口来调用操作

  • 对象的数据结构发生变化时,不会对其他对象产生影响,只对拥有这个数据结构的对象(同一个类)有影响,并且,由于借口不变,对这个对象的操作调用不变。
  • 基本模块是对象,信息隐藏的内容有栈对象。必须通过栈对象来访问操作。

2.2 信息隐蔽的实现

数组实现的信息隐蔽策略
链表实现的信息隐蔽策略

2.3 信息隐藏对象的设计

  • 首先设计信息隐蔽对象的外部接口
  • 其次设计信息隐蔽对象的内部实现细节

3 继承和泛化

3.1 作用

  • 实现了代码的复用,是一种扩展机制

4 并发处理

4.1 主动对象

  • 主动对象=并发对象=并发过程=并发任务
  • 拥有自己的空值线程,并且独立于其他对象进行执行
  • 每个主动对象处理一个顺序执行的线程
  • 通过多个主动对象实现并发,不能通过主动对象内部实现并发过程。
  • 相互之间可以异步执行、通信,也可以同步执行、通信。

4.2 被动对象

  • 没有控制线程,被主动对象调用。
  • 可以调用其他被动对象。
  • 一旦被调用就会占据主动对象的线程进行执行。

4.3 主动对象间的协作

这一部分请参考操作系统部分的笔记

互斥问题
同步问题
  • 事件同步。源任务执行信号操作,目标任务执行等待操作。
  • 主动对象之间通过信号通信实现了线程任务的同步。
生产者消费者问题
  • 生产者主动对象产生信息
  • 消费者主动对象消费信息
  • 由于每个主动对象拥有他自己的控制线程,独立执行。所以每个对象操作时必须进行同步。

5 设计模式

反复使用、多人知晓、经过分类编目的设计经验总结。避免重复发明轮子。

设计模式涉及多个类和对象之间的关系,提供了一种比类的力度更大的方式。

  • 软件架构:描述的是各个阶段各个力度各个等级的模型和视图。
  • 设计模式:表示类的组织方式。
  • 类:属性和操作的集合。

6 软件架构和构件

定义构件以及构件之间的连接关系。

  1. 定义构件需要描述其接口。
  2. 定义构件连接的连接器(多个构件之间的互联协议)

7 软件质量属性

  1. 性能
  2. 安全性
  3. 可用性
  4. 可伸缩性
  5. 可复用性
  6. 可维护性
  7. 可修改性
  8. 可测试性
  9. 可追踪性

8 基于用例的软件生存周期

image

9 需求、分析、建模过程

9.1 需求建模

  • 系统的功能需求采用用例和参与者来描述。
  • 用例定义了一个或多个参与者与系统之间的交互序列。
  • 用例描述是一个行为视图。用例关系是一个结构视图。

9.2 分析建模

  • 考虑对问题域的理解。
  • 静态建模:提供信息的结构视图。
  • 对象组织:确定参与每个用例的对象。包括实体对象、边界对象、控制对象、应用逻辑对象。
  • 动态交互建模:参与用例的对象之间的交互。使用用例图和通信图,来表示用例执行过程。
  • 状态机建模:对状态相关的对象进行建模——状态图。

9.3 设计建模

  • 考虑问题的解决方案。
  • 考虑很多细节:接口设计、架构模式和设计模式决策、类接口决策、应用分布决策、对象特性决策、消息特性决策。