目录
一.了解软件架构
- 架构建模:描述软件系统的物理成分,物理成分包括:组件 和 在组件上运行的节点
- 架构建模关系图:包关系图、构件关系图、部署关系图
1.创建包关系图
- 包关系图:描述系统各个包以及包之间的关系
- 根据以下规则,将系统用例分组为各个包:
- 分组相关用例
- 基于使用用例的角色来对用例进行分组
- 根据以下规则,将系统类分组为各个包:
- 把 具有相同继承层次结构的类 组合在一个包里
- 通过 复合关系 把相关类组合在一个包里
- 将 相互协作、彼此交互的类组 打包
- 包内成分可见性的符号有:
- +:指成分是公共的,可被其他包的成分访问
- #:指成分是受保护的,只有继承它的成分可被访问
- -:指成分是私有的,不可被包外成分访问
- 包之间的关系类型包括: 访问依赖性关系、泛化关系
2.创建组件关系图
- 组件提供了一组接口的实现,用于对系统运行所需的各个组件建模
- 可对其建模以构成完整的软件系统的组件是 :
- 部署组件:构成可执行系统的组件
- 工作产品组件:作为 SDLC 实现阶段成果的组件
- 执行组件:系统执行时创建的组件
- 组件实现了一组接口,其中每个接口指定类所提供的功能
- 类也可实现一组接口
- 建模组件的技术有:
- 源代码文件建模
- 可执行文件建模
- 数据库建模
- 使系统源代码组件形象化的不同方式:
- 将源代码分组为若干包,并在包关系图中描述
- 画出组件关系图,使系统源代码文件间的关系形象化
- 可执行文件建模包括:建模系统的.exe,库、数据库等
- 数据库建模包括:
- 用 组件关系图 描述 数据库表组件
- 描述与 每个数据库表组件 相关的列和存储过程
3.创建部署关系图
- 部署关系图:显示在其中 部署软件组件的硬件
- 部署组件的 计算机系统 或 处理设备 称为 节点,用三维矩形框表示,框内包含节点内执行的组件
- 节点通过 连接 互相关联,连接表示 通信信道(节点之间的一条直线)
- 节点和组件之间的 依赖关系 用虚线表示
- UML 的预定义视图类型有:
- 模块视图类型:实现特定功能的模块
- 组件与连接器(C&C)视图类型:作为执行单元的组件的集合
- 分配视图类型:一组系统的 组件或模块 与其 开发环境 之间的关系
二.使用框架和模式
- 框架和模式是使软件构件可重用的标准
- 框架:类似于应用程序中的通用功能,拥有 Microsoft VC++ 提供的 Microsoft 基础类(MFC)是框架的示例,它允许开发具有公共特征(如命令按钮)的图形用户界面
- 框架特性:表示类或库的集合,包括 抽象、具体类、抽象方法,包含可通过子类化来扩展的类
- 模式:提供 给定问题的 标准解决方案的 一组原则和指南,有助于 软件组件之间 更好的通信
- 模式分类:
- 通用职责分配软件模式(GRASP)
- 四人组模式 (GoF)
1.GRASP
- GRASP 是一组模式,它提供 分配对象职责的原则,如 怎样创建对象、怎样撤消对象等
- GRASP 由以下模式组成:
- 专家模式:为 包含相关信息的类 分配职责的指南
- 创建者模式:为 特定类的新对象 分配职责的指南
- 控制器模式:处理系统事件的指南
- 专家模式 提供用于 向包含相关信息的类 指派职责的 指示信息
- 创建者模式,如果以下条件为 true,那么类负责创建对象:
- 一个类包含另一个类
- 类记录其它类的实例
- 类使用其它类的对象
- 类提供初始化其它类的对象的信息
- 控制器模式,处理系统事件的职责应分配给满足以下一个或多个条件的类:
- 表示整个系统
- 表现为用例处理程序
2.GoF
- 基于open-close原则,认为 所有的设计 都应对于 扩展开发 并且 不允许修改,有以下特性:
- 能重用 现有的关于常见设计问题的 解决方案
- 建立问题及其解决方案的通用术语,以便于理解
- 大致可分为三类: 创建、结构、行为
2.1 创建型
创建型设计模式提供 创建对象 和 管理对象生命周期 的方法- 常用的创建型设计模式有:工厂、生成器、单一实例
- 工厂模式:提供一个被称为 factory的类,控制抽象基类的 子类对象的 生存期,以下情况需用工厂模式:
- 无法预见 运行时需要哪种类型对象
当基类是个抽象类时,模式必须返回一个已初始化的对象
- 生成器模式:把复杂对象的创建和构造 与 它的表示分离
- 可以对同一个复杂对象创建多个表示,并修改对象的安排
- 类似于抽象工厂方法,因为两者都 创建对象族
聚集 或 构造简单对象 以表示一个复杂对象 单例模式:允许创建自身的实例的类- 当需要访问代表现实生活对象的单个对象(如打印机和鼠标)时,单件模式是有用的
- 用 静态数据成员 定义单件模式,以跟踪所创建对象的生命期
2.2 结构型
- 结构型设计模式:描述如何 使用对象组合 来组合类和对象结合 以形成更大的结构
- 最常用的结构型模式有: 复合模式、代理模式、装饰模式、外观模式
- 复合模式:
- 表示复合对象,可包含 简单对象 和 复合对象
- 提供接口访问复合对象内的 复合对象 和 简单对象
- 可把复合模式想象成一棵树,其中复合对象表示结点,简单对象表示树叶
- 代理模式:
- 把 复合对象 表示为 简单对象,把对象创建推迟到需要时才进行
- 装饰模式:
- 修改个别对象的行为 而不必 创建新的派生类,为现有对象 定义 附加功能
- 外观模式:
- 提供单一化的接口简化软件开发,在实现分层架构时 也很有用
2.3 行为型
- 行为模式 提供在对象间进行通信的指南,最常用的行为模式有:
职责链:描述各种类如何处理请求,描述可以处理的请求类型,描述如何将类无法处理的请求传递给其它类 命令:描述如何将 方法请求调用 仅传递到特定模块 观察者:创建单独的对象 显示各种形式的信息3.对设计模式建模
- 对设计模式建模的各种视图包括:
- 外部视图:将 设计模式的结构 表示为 参数化协作
- 内部视图:将 设计模式的结构 表示为模式创建者(例如开发人员)所见的结构,内部视图描述为 不带参数的协作
- 将设计模式与分层架构关联:
4.将设计映射到代码
- 通过使用 CASE 工具(例如 Rational Rose、Jude 和 Visio),可以自动从 类和通信关系图 生成代码
- CASE 工具使用不同的 经验规则 和 启发式原则 从设计模型生成代码,代码从 类的方法 和 变量生成
- 支持逆向工程,能根据 项目实现 和 测试阶段的代码 生成设计模型
5.重构设计
- 不改变类的外部行为,重新构造现有代码的内部结构 的技术
- 改变了类模型,但不改变系统的架构
- 可能进行重构的因素有:
由于 设计实现的平台原因 在实现阶段 需要标识新方法 从 通信关系图 得出的方法 在类关系图里 没有表示出来6.应用会化外观
- 会话外观:用于创建企业应用程序,如使用企业 JavaBeans(EJB)的应用程序的设计模式
- 高级业务组件 定义 低级业务组件(例如企业 bean)之间的完整交互
- 会话外观 相当于 低级业务组件 的接口,降低了低级业务组件之间的耦合度,使企业应用程序的设计可重用