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

目录

一.了解软件架构

1.创建包关系图

2.创建组件关系图

3.创建部署关系图

二.使用框架和模式

1.GRASP

2.GoF ​​​​​​​

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

4.将设计映射到代码

5.重构设计

6.应用会化外观

三.UML和质量软件过程

1.质量过程

2.UML扩展机制

四. 度量软件项目

1.测量过程组件

2.用功能点技术测量项目

3.测量 UML构件 的复杂度


一.了解软件架构

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

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)之间的完整交互
  • 会话外观 相当于 低级业务组件 的接口,降低了低级业务组件之间的耦合度,使企业应用程序的设计可重用
 

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

三.UML和质量软件过程

1.质量过程

  • 质量流程目的:在软件开发过程中 检查所开发软件模型 和 产品质量
  • 质量流程在 软件开发过程的 迭代 和 增量 之间实现,用于确保软件质量
  • 质量流程会在 每个软件开发过程阶段之后 检查输出的质量
  • 质量流程包括:软件开发过程质量、软件模型质量、软件产品质量、质量流程自身质量
  • 质量流程包括:技术(所需工具和生成的输出)、方法(操作顺序)、社会学(人力环境)
  • 质量流程 每个方面的活动 同时发生

  • 保证软件产品质量,需要检查:
  • 可确保开发软件产品的活动 和 任务执行顺序是正确的质量检查:流程质量
  • 质量软件过程 = 软件开发 + 质量流程
  • UML 影响软件模型的:可视化、规范、构造和文档质量
  • 可视化质量:工件、关系图、模型可视化 表示的质量
  • 规范质量:提供 UML 工件、关系图详细描述的规范 的质量
  • 构造的质量:从 UML 模型生成的代码 的质量
  • 文档质量:为创建软件模型的 UML构件 和 关系图 而提供指南的文档 的质量
  • 质量保证技术:检查软件模型语法正确、语义一致、美观完整
  • 质量流程元模型:定义表达另一种模型的语言、描述应用于软件开发过程的质量流程元素 及 元素间连接规则
  • 质量流程的元素为:过程组件、角色、活动、任务、输出和迭代
  • 过程组件:是一组质量流程的活动、角色和输出的集合,例如:需求建模、系统设计和测试都算过程组件
  • 表示 用不断变化的密度 来执行一连串过程组件:迭代

2.UML扩展机制

  • UML扩展机制:开发人员无需更改现有软件模型、提供额外建模构件、表示软件系统中的事件流
  • 可根据 特定应用程序域 剪裁 UML,要修改 UML,可以用扩展元素:构造型、约束和标记值
  • UML提供三种扩展元素:
  1. 构造型:扩展 UML 词汇表,表示 UML 没有特定描述的建模元素,区分UML关系图中的相似元素,表示:<<>>
  2. 约束:扩展 UML 构造块的语义关系,表示无法使用 UML 表示法表示的限制和关系,全局条件或条件,表示:()
  3. 标记值:扩展 UML 构造块的属性,存储项目相关(日期开发测试状态等)、存储构造型模型元素(字符串)
  • 使用 UML 建模软件系统时,你需要考虑事件的 并发 和 同步
  • UML 提供两种标准构造型用于 事件并发流: 进程、线程
  • 建模 UML 类中的 多个事件流 和 交互关系图 步骤:
    1. 标识软件系统中事件的并发流
    2. 根据事件的并发流标识主动对象
    3. 将主动对象的公共集分为主动类
    4. 平衡主动类之间的职责分发
    5. 确保每个活动类为高内聚且松散耦合
    6. 创建类关系图以表示系统的静态语义
    7. 创建交互关系图以表达系统的动态语义关系
    8. 在对象之间应用各种类型的通信方式
    9. 连接约束以确保对象之间的同步
  • UML 提供了两种历史状态:
  • UML 提供了额外建模构件,如历史状态、注释和备注

四. 度量软件项目

1.测量过程组件

  • 为测量软件开发过程,需要测量其过程组件,包括维度:技术、方法、社会学
  • 为所有过程组件,需要计算 总单位值 = 角色、活动、输出和任务的总数
  • 需要在 特定环境上下文内 细化总单位值,因为同样的软件,可在不同环境中实现
  • 细化总单位值 需要确定:过程组件的 每个维度的 实例数 及 权重因子
  • 权重因子取决于:项目环境、每个维度的重要性
  • 过程组件维度的强度 = 维度实例数 x 权重因子
  • 计划生产率:估算每次迭代中 过程组件的维度数
  • 实际生产力在 迭代 时确定
  • 分析项目中 总预期延迟:计算调整因子,用调整因子计算完成后续迭代所需的修订时间
  • 调整因子公式:Adjustment Factor = Actual productivity/Planned productivity
  • 完成后续迭代所需的修订时间 = 规划持续时间 / 调整因子

2.用功能点技术测量项目

  • 功能点(FP)估算技术:估算项目大小,将系统细分为更小的组件FP:软件测量单位
  • 确定 FP 关键在于确定组成软件系统的各个组件
  • 使用 FP 技术时,通过对以下计数可得出总工作量估算:文件、接口、输入、输出、查询
  • 计算项目的 FP 包括以下步骤:确定 FP 计数的类型、确定范围和应用程序边界、确定未调整的功能点(UFP) 、确定值调整因子(VAF)、计算已调整的功能点(AFP)
  • 确定 FP 计数的类型(三种):开发项目 FP计数、增强项目 FP计数、应用 FP计数
  • 确定UFP:
  • ①确定 静止数据:包括处理所需的存储数据,运行数据:包含应用程序中导致数据进出的事务
  • ②通过静止/运行数据得到数据FP:文件引用类型(FTR) = 内部逻辑文件(ILF)+ 外部接口文件(EIF)
  • 测量 FTR 得到:数据元素类型(DET)+ 记录元素类型(RET)
  • ③通过静止/运行数据得到事物FP:外部输入(EI)、外部查询(EQ)、外部输出(EO)
  • 确定VAF调整因子:确定项目中的延迟
  • VAF 基于系统总体特征(GSC),有 14个GSC:数据通信、分布式处理、性能目标、常用配置、事物规则、在线更新、复杂处理、可重用性、安装简易性、操作简易性、多站点使用、设施变更
  • 计算 VAF, 需要:确定每个 GSC 的影响度(DI)。GSC 的 DI 的范围为 0-5
  • 0 –不存在,无影响 
  • 1 –偶尔影响 
  • 2 –适度影响
  • 3 –中等影响
  • 4 –严重影响
  • 5 –全面的强烈影响
  • 把 14 个 GSC 的 DI 加起来得到 总的影响度 (TDI)
  • 计算 VAF: VAF = TDI ×0.01 + 0.65
  • 计算 AFP:AFP = (TUFP + CFP) *VAF,CFP 是用于转换功能的 FP计数
  • 通过计算项目的功能点 评估库存管理系统项目的大小

3.测量 UML构件 的复杂度

  • UML 构件之间互相依赖的程度,称作 复杂度
  • 动态组件的复杂度取决于静态组件的复杂度,因此测量以下静态部件的复杂度:
  • 用例关系图:通过识别关系图中角色、用例和关系个数 测量用例关系图的复杂度,用例分类(简单中复杂)
  • 类关系图:确定类的大小、关系数量、属性可见性、操作可见性类可以拥有的对象数量和关系
  • 构件关系图:组件中实现的类的数量,与组件有依赖关系的接口数量
  • 确定组件的大小 + 处理速度 = 测量组件关系图的复杂度
  • 组件的处理速度取决于:组件支持的线程数

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