UML

UML基础 ^1

基本概念

  • OO(Object-Orientation) 面向对象,一种系统建模技术

  • OOP(Object-Orientation Programming) 按照OO的方法来开发程序的过程

  • OOAD(Object Oriented Analysis and Design) 面向对象的分析与设计,根据OO的方法学,对软件系统进行分析和设计的过程(分析阶段OOA、设计阶段OOD)

    • OOA阶段需要解决的核心问题是 what to do

      • 建立针对业务问题域的清晰视图

      • 列出系统必须要完成的核心任务

      • 针对问题域建立公共词汇表

      • 列出针对此问题域的最佳解决方案

    • OOD阶段需要解决的核心问题是 How to do

      • 如何解决具体的业务问题

      • 引入系统工作所需的支持元素

      • 定义系统的实现策略

  • 对象:

    • 客观存在的、唯一的实体

    • 是面向对象编程过程中分析与解决问题的出发点与基础

    • 拥有自己的标识、数据与行为

    • 可以简单或复杂

    • 可以抽象或具体

    • OOP中是一个类的动态实例

OOP主要特征

  • 抽象(abstract)

    • 忽略一个对象或实体的细节而只关注其本质特征的过程

    • 简化功能与格式

    • 帮助用户与对象交互

  • 封装(encapsulation)

    • 隐藏数据和实现

    • 提供公共方法供用户调用功能

    • 对象的两种视图: 外部视图(对象能做的工作)、内部视图(对象如何完成工作)

  • 继承(inheritance)

    • 通过存在的类型定义新类型的机制

    • 通常在两个类型之间存在is akind of这样的关系

    • 通过继承可实现代码重用,是多态的基础

  • 多态(polymorphism)

    • 一个名称,多种形式

    • 基于继承的多态

    • 调用方法时根据所给对象的不同,选择不同的处理方式

  • 关联(association)

    • 对象之间交互时的一种引用方式

    • 当一个对象通过对另一个对象的引用去使用另一个对象的服务或操作时,两个对象之间便产生了关联

  • 聚合(aggregation)

    • 一种关系较强的关联关系,一个对象成为另一个对象的组成部分

    • 两个对象之间存在has a的关系,一个对象作为另一个对象的属性存在,在外部对象被生产时可由客户端指定与其关联的内部对象

    • e.g. 汽车与轮胎的关系: 轮胎作为汽车的一部分可以和汽车分别生产后装配起来,但汽车也可换别新轮胎,轮胎也可与其他汽车装配使用

  • 组合(composition)

    • 关联关系中最为强烈的一种关系

    • 当一个对象包含另一个对象时,外部对象负责管理内部对象的生命周期情况

    • 内部对象的创建又由外部对象自己控制

    • 外部对象不存在时内部对象也不能存在

  • 内聚与耦合(cohesion & coupling)

    内聚: 度量一个类独立完成某项工作的能力

    耦合: 度量系统内或系统之间依赖关系的复杂度

    设计原则: 增加内聚,减少耦合(高内聚低耦合)

域模型

在面向对象术语中也可称为设计模型,由具有状态和行为的域对象组成。

域对象之间的关系:

  • 关联(Association)

  • 依赖(Dependency)

  • 聚集(Aggregation)

    整体和部分之间的关系

  • 一般化(泛化)(Generalization)

    类之间的继承关系

开发过程概述

传统开发过程: 瀑布模型

传统开发过程

OOAD开发过程:

  • 大项目分解成子项目

  • 使用UML工具

  • 统一软件开发过程是迭代、递增的开发过程

迭代、递增的项目生命周期

在每一个迭代的阶段应该做以下工作:

  • 选择并分析相关用例

  • 根据所选架构进行设计

  • 在组件层次实现设计

  • 验证组件满足用例的需要

当一次迭代满足目标后,开发进入下一个迭代周期。

主要阶段:

Inception - start up

Elaboration - refine

Constructon - implement

Transition - promotion

每个周期包含一次或多次迭代

一个阶段的结束称之为“里程碑(milestone)”

初始化阶段

此阶段的增量集中于:

  • 项目启动

  • 建立业务模型

  • 定义业务问题域

  • 找出主要的风险因素

  • 定义项目需求的外延

  • 创建业务问题域的相关说明文档

细化阶段

此阶段增量集中于:

  • 高层的分析与设计

  • 建立项目的基础框架

  • 监督主要的风险因素

  • 制定达成项目目标的创建计划

构建阶段

代码及功能的实现

移交阶段

此阶段增量集中于:

  • 向用户发布产品

  • beta测试

  • 执行性能调优,用户培训和接收测试

每个阶段包含的工作流

每一次递增都由5部分组成: 需求与初始分析、分析、设计、实现、测试。

每一次迭代执行工作流的深度不同,早期的迭代在深度上覆盖初始工作流,后期迭代在深度上覆盖后期工作流。

迭代、递增生命周期的优势

  • 降低成本

  • 便于更好地维护项目进度

  • 便于团队的协作开发

  • 便于适应用户需求的动态变化

UML简介

Unified Modeling Language: 统一建模语言。图形化语言表示。

UML图的分类

静态模型(static model)

  • 创建并记录一个系统的静态特征

  • 反映一个软件系统基础、固定的框架结构

  • 创建相关问题域主要元素的视图

静态建模包括: 用例图(user case diagrams)、类图(class diagrams)、对象图(object diagrams)、组件图(component diagrams)、部署图(deployment diagrams)

动态模型(dynamic model)

动态建模用以展示系统的行为

动态建模包括: 时序图(sequence diagrams)、协作图(collaboration diagrams)、状态图(state chart diagrams)、活动图(activity diagrams)

九大核心UML图

用例图

展示系统的核心功能与其交互的用户,用户被称之为"活动者(Actor)"

用例使用椭圆表示,为简化建模过程,用例图可标注优先级

使用starUML绘制用例图

  1. Model Explorer工具栏中选中Model–>右键选择Add Diagram –> 选择 Use Case Diagram

用例图绘制步骤1

  1. Tool Box工具栏中选择模板进行绘制

用例图绘制步骤2

上图表示 活动者admin可执行add update delete query操作,活动者guest只能执行query操作

类图

表现类的特征,描述多个类、接口特征以及对象之间的协作与交互。

类图由一个或多个矩形区域构成,包括类型(类名)、属性(可选)、操作(可选)

使用starUML绘制类图

类图示例


参考文章