原创 使用 UML 面向对象分析和设计 课堂笔记(三) 原力计划

目录

一.了解软件架构

1.创建包关系图

2.创建组件关系图

3.创建部署关系图

二.使用框架和模式

1.GRASP

2.GoF

2.1 创建型

2.2 结构型

2.3 行为型

​​​​​​​3.对设计模式建模

4.将设计映射到代码

5.重构设计

6.应用会化外观


一.了解软件架构

  • 架构建模:描述软件系统的物理成分,物理成分包括:组件 和 在组件上运行的节点
  • 架构建模关系图:包关系图、构件关系图、部署关系图

1.创建包关系图

  • 包关系图:描述系统各个包以及包之间的关系
  • 根据以下规则,将系统用例分组为各个包:
  1. 分组相关用例
  2. 基于使用用例的角色来对用例进行分组
  • 根据以下规则,将系统类分组为各个包:
  1. 把 具有相同继承层次结构的类 组合在一个包里
  2. 通过 复合关系 把相关类组合在一个包里
  3. 将 相互协作、彼此交互的类组 打包
  • 包内成分可见性的符号有:
  1. +:指成分是公共的,可被其他包的成分访问
  2. #:指成分是受保护的,只有继承它的成分可被访问
  3. -:指成分是私有的,不可被包外成分访问
  • 包之间的关系类型包括: 访问依赖性关系、泛化关系

2.创建组件关系图

  • 组件提供了一组接口的实现,用于对系统运行所需的各个组件建模
  • 可对其建模以构成完整的软件系统的组件是 :
  1. 部署组件:构成可执行系统的组件
  2. 工作产品组件:作为 SDLC 实现阶段成果的组件
  3. 执行组件:系统执行时创建的组件
  • 组件实现了一组接口,其中每个接口指定类所提供的功能
  • 类也可实现一组接口
  • 建模组件的技术有:
  1. 源代码文件建模
  2. 可执行文件建模
  3. 数据库建模
  • 使系统源代码组件形象化的不同方式:
  1. 将源代码分组为若干包,并在包关系图中描述
  2. 画出组件关系图,使系统源代码文件间的关系形象化
  • 可执行文件建模包括:建模系统的.exe,库、数据库等
  • 数据库建模包括:
  1. 用 组件关系图 描述 数据库表组件
  2. 描述与 每个数据库表组件 相关的列和存储过程

3.创建部署关系图

  • 部署关系图:显示在其中 部署软件组件的硬件
  • 部署组件的 计算机系统 或 处理设备 称为 节点用三维矩形框表示,框内包含节点内执行的组件
  • 节点通过 连接 互相关联,连接表示 通信信道(节点之间的一条直线)
  • 节点和组件之间的 依赖关系 用虚线表示
  • UML 的预定义视图类型有:
  1. 模块视图类型:实现特定功能的模块
  2. 组件与连接器(C&C)视图类型:作为执行单元的组件的集合
  3. 分配视图类型:一组系统的 组件或模块 与其 开发环境 之间的关系

二.使用框架和模式

  • 框架和模式是使软件构件可重用的标准
  • 框架:类似于应用程序中的通用功能,拥有 Microsoft VC++  提供的 Microsoft 基础类(MFC)是框架的示例,它允许开发具有公共特征(如命令按钮)的图形用户界面
  • 框架特性:表示类或库的集合,包括 抽象、具体类、抽象方法,包含可通过子类化来扩展的类
  • 模式:提供 给定问题的 标准解决方案的 一组原则和指南,有助于 软件组件之间 更好的通信
  • 模式分类:
  1. 通用职责分配软件模式(GRASP)
  2. 四人组模式 (GoF)

1.GRASP

  • GRASP 是一组模式,它提供 分配对象职责的原则,如 怎样创建对象、怎样撤消对象等
  • GRASP 由以下模式组成:
  1. 专家模式:为 包含相关信息的类 分配职责的指南
  2. 创建者模式:为 特定类的新对象 分配职责的指南
  3. 控制器模式:处理系统事件的指南
  • 专家模式 提供用于 向包含相关信息的类 指派职责的 指示信息
  • 创建者模式,如果以下条件为 true,那么类负责创建对象:
  1. 一个类包含另一个类
  2. 类记录其它类的实例
  3. 类使用其它类的对象
  4. 类提供初始化其它类的对象的信息
  • ​​​​​​​控制器模式,处理系统事件的职责应分配给满足以下一个或多个条件的类:
  1. 表示整个系统
  2. 表现为用例处理程序

2.GoF ​​​​​​​

  • 基于open-close原则,认为 所有的设计 都应对于 扩展开发 并且 不允许修改,有以下特性:
  1. 能重用 现有的关于常见设计问题的 解决方案
  2. 建立问题及其解决方案的通用术语,以便于理解
  • 大致可分为三类: 创建、结构、行为

2.1 创建型

  • 创建型设计模式提供 创建对象 和 管理对象生命周期 的方法
  • 常用的创建型设计模式有:工厂、生成器、单一实例
  • 工厂模式:提供一个被称为 factory的类,控制抽象基类的 子类对象的 生存期,以下情况需用工厂模式:
  1. 无法预见 运行时需要哪种类型对象
  2. 当基类是个抽象类时,模式必须返回一个已初始化的对象
  • 生成器模式:把复杂对象的创建和构造 与 它的表示分离
  • 可以对同一个复杂对象创建多个表示,并修改对象的安排
  • 类似于抽象工厂方法,因为两者都 创建对象族
  • 聚集 或 构造简单对象 以表示一个复杂对象
  • 单例模式:允许创建自身的实例的类
  • 当需要访问代表现实生活对象的单个对象(如打印机和鼠标)时,单件模式是有用的
  • 用 静态数据成员 定义单件模式,以跟踪所创建对象的生命期

2.2 结构型

  • 结构型设计模式:描述如何 使用对象组合 来组合类和对象结合 以形成更大的结构
  • 最常用的结构型模式有: 复合模式、代理模式、装饰模式、外观模式
  • 复合模式:
  1. 表示复合对象,可包含 简单对象 和 复合对象
  2. 提供接口访问复合对象内的 复合对象 和 简单对象
  3. 可把复合模式想象成一棵树,其中复合对象表示结点,简单对象表示树叶
  • 代理模式:
  • 把 复合对象 表示为 简单对象,把对象创建推迟到需要时才进行
  • 装饰模式:
  • 修改个别对象的行为 而不必 创建新的派生类,为现有对象 定义 附加功能
  • 外观模式:
  • 提供单一化的接口简化软件开发,在实现分层架构时 也很有用

2.3 行为型

  • 行为模式 提供在对象间进行通信的指南,最常用的行为模式有:
  1. 职责链:描述各种类如何处理请求,描述可以处理的请求类型,描述如何将类无法处理的请求传递给其它类 
  2. 命令:描述如何将 方法请求调用 仅传递到特定模块
  3. 观察者:创建单独的对象 显示各种形式的信息

​​​​​​​3.对设计模式建模

  • 对设计模式建模的各种视图包括:
  1. 外部视图:将 设计模式的结构 表示为 参数化协作
  2. 内部视图:将 设计模式的结构 表示为模式创建者(例如开发人员)所见的结构,内部视图描述为 不带参数的协作
  • ​​​​​​​将设计模式与分层架构关联:

4.将设计映射到代码

  • 通过使用 CASE 工具(例如 Rational Rose、Jude 和 Visio),可以自动从 类和通信关系图 生成代码
  • CASE 工具使用不同的 经验规则 和 启发式原则 从设计模型生成代码,代码从 类的方法 和 变量生成
  • 支持逆向工程,能根据 项目实现 和 测试阶段的代码 生成设计模型

5.重构设计

  • 不改变类的外部行为,重新构造现有代码的内部结构 的技术
  • 改变了类模型,但不改变系统的架构
  • 可能进行重构的因素有:
  1. 由于 设计实现的平台原因 在实现阶段 需要标识新方法
  2. 从 通信关系图 得出的方法 在类关系图里 没有表示出来

6.应用会化外观

  • 会话外观:用于创建企业应用程序,如使用企业 JavaBeans(EJB)的应用程序的设计模式
  • 高级业务组件 定义 低级业务组件(例如企业 bean)之间的完整交互
  • 会话外观 相当于 低级业务组件 的接口,降低了低级业务组件之间的耦合度,使企业应用程序的设计可重用
 

​​​​​​​​​​​​​​

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章