杰瑞科技汇

UML基础与Rose建模教程

UML基础与Rose建模教程

第一部分:UML基础理论

第一章:UML简介

1 什么是UML?

UML基础与Rose建模教程-图1
(图片来源网络,侵删)
  • 全称:Unified Modeling Language,统一建模语言。
  • 本质:它不是一种编程语言,而是一种图形化、可视化的建模语言,用于描述、可视化、构建和文档化软件密集型系统的制品。
  • 核心思想:为软件开发人员提供一个标准、通用的建模方式,以降低沟通成本,提高开发效率和软件质量。
  • 形象比喻:如果把软件开发比作建造一栋大楼,那么UML就是这张建筑设计图,它规定了各个房间的功能(类)、房间之间的连接关系(关联)、水电管线如何铺设(依赖)、以及整栋楼的蓝图(架构)。

2 UML的主要作用

  • 需求分析:用用例图等模型来清晰描述系统需要为哪些“角色”(Actor)提供什么“功能”(Use Case)。
  • 系统设计:用类图、序列图等来设计系统的静态结构和动态行为。
  • 沟通桥梁:为项目经理、系统分析师、架构师、程序员、测试人员等所有项目相关人员提供一个统一的沟通平台。
  • 文档化:将软件的设计思想、结构和行为以标准化的形式记录下来,便于后续维护和迭代。

3 UML的发展与标准

  • UML由Grady Booch、Ivar Jacobson和James Rumbaugh(“三巨头”)在20世纪90年代末合并各自的方法论而创建。
  • 目前由对象管理组织负责维护和发布其标准,最新的版本是UML 2.x。

第二章:UML的核心图

UML提供了多种图形,这些图可以分为两大类:结构图行为图

1 结构图

UML基础与Rose建模教程-图2
(图片来源网络,侵删)

描述系统的静态结构,展示了系统的“骨架”。

图表名称 描述 关键元素
用例图 从外部用户的角度描述系统的功能需求。 参与者、用例、系统边界、关联关系、包含、扩展
类图 描述系统中类的结构,以及类之间的关系(继承、关联、聚合等),这是最核心、最常用的图。 类、属性、操作、关系(关联、聚合、组合、泛化、依赖)
对象图 类图的一个实例,展示某一时刻系统中对象的状态。 对象、链接
组件图 描述系统代码的物理组织结构和依赖关系。 组件、接口、依赖关系
部署图 描述系统软件组件到硬件节物的映射,以及硬件节点之间的连接。 节点、组件、连接

2 行为图

描述系统的动态行为,展示了系统的“血肉”和“灵魂”。

图表名称 描述 关键元素
序列图 按照时间顺序展示对象之间如何进行消息交互,以完成一个特定功能。 对象、生命线、激活框、消息(同步、异步、返回)
通信图 (旧称协作图)展示对象及其之间的消息传递,但不强调时间顺序。 对象、链接、消息
状态机图 描述一个对象在其生命周期内,所有可能的状态以及状态之间的转换触发条件。 状态、转换、事件、动作
活动图 类似于流程图,用于描述从一个活动到另一个活动的控制流,常用于业务流程建模。 活动、决策点、分支、泳道、对象流

第三章:UML核心概念详解

1 类图中的关系

这是理解UML的重中之重。

  • 关联:两个类之间的结构关系,表示“知道”或“使用”。

    • 导航性:可以单向或双向。
    • 多重性:表示一个类的实例可以与另一个类的多少个实例相关联。.* (一个或多个),.1 (零个或一个)。
    • 示例Teacher (老师) 和 Student (学生) 之间是多对多的关联。
  • 聚合:一种特殊的关联关系,表示“has-a”(有一个),是一种“整体-部分”关系,但部分可以独立于整体存在。

    • 特点:部分可以属于多个整体。University (大学) 和 Department (院系),院系可以独立于大学存在。
  • 组合:更强的聚合关系,表示一种“owns-a”(拥有)关系,部分和整体的生命周期绑定。

    • 特点:部分只能属于这一个整体,如果整体被销毁,部分也一定会被销毁。House (房子) 和 Room (房间),房间不能脱离房子存在。
  • 泛化:即继承关系,表示“is-a”(是一个)的关系。

    • 特点:子类继承父类的属性和操作,并可以扩展自己的功能。Dog (狗) 和 Animal (动物)。
  • 依赖:两个类之间最弱的关系,表示一个类使用另一个类,但这种关系不是结构性的。

    • 特点:通常表现为一个类的操作中使用了另一个类的对象作为参数、局部变量或返回值。Driver (司机) 依赖 Car (汽车),因为司机开车。

2 序列图中的消息

  • 同步消息:发送方等待接收方处理完消息后才继续执行,用实心箭头表示。
  • 异步消息:发送方发送消息后立即继续执行,不等待接收方响应,用开放箭头表示。
  • 返回消息:表示同步消息的返回结果,用虚线开放箭头表示,通常可以省略。

第二部分:Rational Rose建模实践

第四章:Rational Rose简介

1 什么是Rational Rose?

Rational Rose是由IBM Rational公司(原Rational Software)开发的一款UML可视化建模工具,它曾是业界最主流的UML建模工具之一,帮助开发者通过图形化界面创建UML模型,并能自动生成多种编程语言的框架代码(如Java, C++, VB等)。

2 Rose工作界面

启动Rose后,你会看到几个主要窗口:

  1. 浏览器:左侧的树形结构,是模型的导航中心,包含了所有UML图、类、用例等元素。
  2. 图窗口:中间的画布区域,用于绘制和编辑UML图。
  3. 日志窗口:下方的文本窗口,显示操作记录和错误信息。
  4. 文档窗口:可以用来为模型元素添加详细的文字描述。

第五章:使用Rose进行建模(案例:在线图书商城)

我们将通过一个简单的“在线图书商城”案例,来演示如何使用Rose创建核心的UML图。

案例背景:用户可以在该商城浏览图书、查询图书详情、将图书加入购物车、下单购买。


创建新模型
  1. 打开Rational Rose。
  2. File -> New Model...
  3. 选择一个模板(如Java),因为我们要生成Java代码。
  4. 设置模型名称(如OnlineBookStore)和保存路径。

绘制用例图

目标:明确系统的功能范围和参与者。

  1. 在浏览器中,右键点击 Use Case View -> New -> Use Case Diagram
  2. 双击新建的图,在图窗口中打开。
  3. 添加参与者
    • 从工具栏拖动 Actor 图标到画布上,命名为 顾客
    • 再拖动一个 Actor,命名为 管理员
  4. 添加用例
    • 从工具栏拖动 Use Case 图标,创建以下用例:浏览图书查询图书查看详情加入购物车下单管理图书查看订单
  5. 建立关系
    • 使用 Unidirectional Association 工具,连接 顾客浏览图书查询图书查看详情加入购物车下单
    • 连接 管理员管理图书查看订单
  6. 使用<<include>>关系
    • 下单 必然需要 加入购物车下单 包含 加入购物车
    • 从工具栏选择 Use Case Relationship (带<<include>>标签的箭头),从 下单 用例拖到 加入购物车 用例。
  7. 使用<<extend>>关系
    • 查询图书 可以扩展 浏览图书 的功能。
    • 同样使用 Use Case Relationship (带<<extend>>标签的箭头),从 查询图书 拖到 浏览图书

最终用例图应清晰展示谁是使用者,他们能做什么,以及这些功能之间的包含和扩展关系。


绘制类图

目标:设计系统的静态数据结构。

  1. 在浏览器中,右键点击 Logical View -> New -> Class Diagram
  2. 识别核心类:根据用例分析,我们可能需要以下类:
    • Customer (顾客)
    • Book (图书)
    • ShoppingCart (购物车)
    • Order (订单)
    • OrderItem (订单项)
    • Administrator (管理员)
  3. 创建类并添加属性/操作
    • 从工具栏拖动 Class 图标到画布上,创建上述类。
    • 双击一个类(如Book),在弹出的对话框中切换到 Attributes 标签页,添加属性:
      • bookId: String
      • title: String
      • author: String
      • price: double
    • 切换到 Operations 标签页,添加操作(方法):
      • getBookInfo(): String
  4. 建立类之间的关系
    • 关联:一个Customer可以有多个ShoppingCart,一个ShoppingCart只属于一个Customer
      • 使用 Association 工具连接 CustomerShoppingCart
      • 双击连接线,设置导航性(从ShoppingCart指向Customer)和多重性(Customer端为 1ShoppingCart端为 .1)。
    • 组合:一个Order包含多个OrderItemOrderItem不能脱离Order存在。
      • 使用 Aggregation 工具连接 OrderOrderItem
      • 双击连接线,在 Role Details 中将 Aggregation 下拉框改为 Composition(组合),并设置多重性(Order端为 1OrderItem端为 .*)。
    • 关联OrderItemBook是多对一的关系。
      • 使用 Association 工具连接它们,并设置多重性(OrderItem端为 .*Book端为 1)。
    • 泛化AdministratorCustomer的一种。
      • 使用 Generalization (空心三角箭头) 从 Administrator 指向 Customer

最终类图将展示系统的数据结构蓝图。


绘制序列图

目标:详细描述“顾客下单”这个用例的动态交互过程。

  1. 在浏览器中,右键点击 New -> Sequence Diagram
  2. 确定参与对象:根据“下单”流程,参与的对象有:CustomerShoppingCartOrderBook
  3. 放置对象:从浏览器中拖动这些类到序列图的顶部,它们会自动变成对象。
  4. 绘制生命线:对象下方会自动出现一条垂直的虚线,即生命线。
  5. 绘制消息交互
    • Customer -> ShoppingCart: addItem(book: Book) (异步)
    • ShoppingCart -> Book: getBookInfo() (同步)
    • Book -> ShoppingCart: 返回图书信息 (返回消息,可省略)
    • Customer -> Order: createOrder(cart: ShoppingCart) (同步)
    • Order -> OrderItem: new(...) (创建对象)
    • Order -> OrderItem: setBook(book: Book)
    • Order -> OrderItem: setQuantity(quantity: int)
    • Order -> Customer: 返回创建成功的订单 (返回消息)

最终序列图将清晰地展示下单过程中,各个对象是如何一步步协作完成任务的。


代码生成与逆向工程

1 从模型生成代码

  1. 确保你的类图已经设计完成。
  2. 在浏览器中,右键点击 Logical View -> Java -> Create New... (或类似选项)。
  3. Rose会根据你的类图中的类、属性和操作,自动生成一个空的Java项目框架(.java文件)。
  4. 你可以将这些生成的代码导入到IDE(如Eclipse, IntelliJ IDEA)中,进行后续的详细编码。

2 从代码生成模型(逆向工程)

  1. 你已经有一个写好的Java项目。
  2. 在Rose中,File -> Import Model...Java -> Reverse Engineer...
  3. 选择你的Java源代码目录。
  4. Rose会分析代码,并自动在Logical View中生成对应的类图,这对于理解现有项目结构非常有用。

第三部分:总结与最佳实践

第六章:UML与Rose的最佳实践

  1. UML是沟通工具,不是画图工具:不要为了画图而画图,UML的目的是为了更好地沟通和理解系统。
  2. 保持模型简洁:不要试图在一个模型中放入所有细节,根据不同的目的(如需求、设计、实现)创建不同详细程度的模型。
  3. 选择合适的图:不是每个项目都需要所有UML图,根据项目规模和复杂度,选择最核心的几种图(如用例图、类图、序列图)。
  4. 模型与代码同步:模型是蓝图,代码是最终的实现,两者应保持同步,使用Rose的代码生成和逆向工程功能可以极大地提高效率。
  5. 迭代式建模:不要期望一开始就能设计出完美的模型,随着对需求理解的深入和开发的进行,不断迭代和完善你的UML模型。

第七章:进阶学习资源

  • 书籍
    • 《UML用户指南》:UML三巨头所著,经典入门。
    • 《UML精粹》:薄而精悍,快速掌握UML核心。
  • 工具
    • Eclipse with Papyrus:开源的UML建模插件,功能强大,是Rose的现代替代品。
    • StarUML:轻量级、跨平台的UML工具,界面友好。
    • Visual Paradigm:功能全面的商业UML套件。
  • 在线资源
    • IBM Developer:有大量关于Rose和UML的教程。
    • CSDN/博客园:搜索“UML教程”、“Rose教程”,有大量中文实践案例。

希望这份详尽的教程能帮助你顺利入门UML和Rational Rose!

分享:
扫描分享到社交APP
上一篇
下一篇