对象图object diagram

对象图是某个时间点上的对象在系统中的快照,也经常被称为实例图。一般在展示组合对象结构时比较有用。例如

组合结构的类图

一个时刻的对象图

包图package diagram

包是一种分组构造,它允许你选择UML里的任何构造,把它的元素组织在一起,成为更高级别的单元。包最常见的用法是组织“类”,但也可以用来组织其它元素。如何选择哪些类放在哪个包里?两个有用的原则是:共同封闭原则和共同复用原则。

表示包的几种方式

包和依赖

  1. 包的分解。略。

实现包

一个包定义了被其它包实现的接口。

何时使用包

包图对大规模系统及其有用。通过包图可以获得系统主要元素之间的关系,这些图形和常见的编程结构对应的很好。包图代表编译时的分组机制,要展示对象运行时如何组合,应使用组合结构图。

部署图deployment diagrams

部署图展示系统的物理布局,揭示哪个软件运行在哪个硬件上。下面是一个部署图的例子。

节点node是上面能驻留一些软件的环境。设备device是硬件。执行环境(execution environment)是软件,它本身作为软件或包含其他软件,比如操作系统或容器进程。节点包含工件artifact,工件是软件的物理显现,通常是文件。使用标记值(tagged value)在图上展示一些感兴趣的信息。

通常会有多个物理节点执行同一个逻辑任务,可以使用多个节点框,也可以使用标记值数值展示。如图中使用“number deployed = 3”表示部署了3台Web服务器。

用例user case

经常使用用例来捕获需求。场景scenario是描述用户和系统之间交互的步骤序列。比如,我们有一个基于web的在线商店,可以有一个这样的“购买产品”场景:

顾客浏览目录并添加想要的条目到购物车。当顾客想要付款时,顾客提供配送和付款信息并确认购买。系统检查付款信息(如果使用信用卡支付需要确认授权,在线支付是否成功),随后发送购买确认信息。

这个场景描述了一件可能发生的事情。然而,支付可能失败,这是另一个场景;注册用户可能已经设置了默认配送和付款信息,这是第三个场景。这些场景不同,但又相似。它们都围绕着一个共同的目标:购买产品。用例是通过共同用户目标绑在一起的场景集合。

在用例中,用户叫做执行者actor。执行者可以是人,也可以是另一个系统。用角色role来称呼用户其实更贴切。

用例的内容

下面是一个用例的例子。

一开始,挑选一个场景作为主成功场景(main success scenario),再书写其它场景作为扩展(extension),描述主场景上的变化。

每个用例有一个主执行者,它调用系统来交付一个服务。主执行者是带有目标的,用例会尝试满足它的目标。主执行者通常是用例的引发者,用例中和系统通信的其它执行者称为辅助执行者。

用例的每一步力求简洁,清晰展示谁执行该步骤。步骤应该展现执行者的意图,而不是如何做的细节。

用例中的扩展命名了一个条件,这个条件导致了和主成功场景MSS不同的交互,并陈述了差异是什么。扩展使用多级目录格式编号,例如3a是对MSS第3步的扩展。

用例中的复杂步骤或者重复出现的步骤可以变成一个用例,第一个用例可以包含include第二个用例。

在用例中可以添加一些其他的共同信息。

  • 前置条件pre-condition,描述在系统开始之前,系统应该确保为真的东西。
  • 保证guarantee,描述用例结束时系统会确保的东西。
  • 触发器trigger,触发用例开始的事件。

要努力保持用例的简短和易读。高风险、重要的场景保留足够的细节,其它的场景不用写下所有细节,可以通过口头沟通来弥补。

用例图

将精力集中在用例的文本内容,将用例图作为用例集的图形目录。

  1. 用例的级别。一般将用例分为系统用例和业务用例。系统用例是和软件的交互,业务用例是讨论业务如何响应顾客或事件。Cockburn在《编写有效用例》中将用例分为sea-level,fish-level和kite-level。
  2. 用例和特性(或故事)。许多方法使用系统特性(极限编程把它们叫做用户故事)来帮助描述需求。特性和用例是什么关系呢?特性是系统提供的功能,可以是一个用例,用例中的场景,用例中的步骤或者一些行为变体。通常我们先开发用例,然后得到特性列表。通常,特性比用例有更细的粒度。
  3. 何时使用用例。用例是帮助理解系统功能需求的有价值的工具。在项目早期,应该粗略地描述每个用例,然后在开发该用例之前再去做更详细的版本。
  4. 更多资料。Cockburn的《编写有效用例》

UML精粹4 - 对象图,包图,部署图,用例的更多相关文章

  1. 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战

    发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...

  2. UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战

    发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...

  3. UML 结构图之包图 总结

    [注] 本文不是包图的基础教程, 只是包图的图形总结. 学习UML图形 推荐阅读<UML参考手册>第2版. http://www.umlchina.com/ 推荐微软的开发软件设计模型 h ...

  4. UML九种图 之 包图和对象图

    前言     对象图和包图依然是对系统的静态的描写叙述.UML九种图加上包图,事实上是十幅图. 包图     1.构成           2.包中的元素      类.接口.用例.构件.其他包等.( ...

  5. UML对象图和包图

    UML九已经介绍过的基本图,然后,我们再来看看对象图和包图.  一.对象图 谈到对象.我们不得不说一下对象.对象(Object)是对象类的实例(Instance),用于模型化特定的实体.对象是唯一的. ...

  6. UML 类图. 对象图. 接口图. 用例图 .包,参与者. 依赖关系. 泛化/继承关系. 关联关系 .聚合/聚集关系. 实现关系 组合关系。

    结构元素 结构元素包括,类,对象,接口,用例,参与者. 类图 类图图示      类图是UML中最基本的元素了吧?根据OO的思想"天下一切皆对象",而类是对象的抽象.      左 ...

  7. UML对象图、包图

    对象图(Object Diagram)显示了一组对象和他们之间的关系.使用对象图阿狸说明数据结构,类图中的类或组件等实例的快照.对象图和类图一样,反应了系统的静态过程,但它是以实际的或原型化为基础来表 ...

  8. uml系列(五)——对象图和包图

    对象图,对象图是系统在某一时刻的对像.关系和属性值的快照.相当于看电视的时候的暂停.便于说明设计者的意图,模拟系统的运行状态,分析说明源代码. 再说对象图之前,我们首先需要了解对象是什么.我们一直都再 ...

  9. UML静态视图——类图、对象图、包图

    绘画类的最重要的图是抽象类.让我们回顾一下类的基本内容. 一.分类 1.类的概念: 面向对象编程的类是一个基本概念.类是具有相同特性的.办法.集合语义和一组对象的关系. 2.类分类: 实体类:保存要放 ...

随机推荐

  1. linux 基本命令操作

    1.ls 命令 ls -a  列出所有文件,包括隐藏文件 ls -l  列出文件详细信息 ls -r 列出所有文件包括文件夹 查询具体文件可以在命令后面加  |grep 要匹配的字符串,方便我们查找, ...

  2. java_easyui体系之目录 [转]

    摘要:简单介绍form的提交方式.与validatebox的结合使用. 一:form简介 Easyui中的form有两种提交方式.结合自己新添加的一种ajax提交方式.本文简单说明form的三种提交方 ...

  3. HTTP Referer 防外链

    HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理. if (Req ...

  4. UINavigationController导航控制器

    UINavigationController导航控制器,是多个界面间跳转的重要元素,可以理解为它存储着多个viewController,它的存储结构是栈,栈的特点是先进后出,所以添加视图控制器时,要特 ...

  5. JavaScript Array对象 知识点总结

    1 isArray方法 该方法是Array对象的静态方法,用来判断一个值是否为数组,它可以弥补typeof运算符的不足. 用法是Array.isArray(array实例) 通用的判断对象数据类型的方 ...

  6. iOS 注释的5要3不要和编码规范的26个方面

    注释 代码注释,可以说是比代码本身更重要.这里有一些方法可以确保你写在代码中的注释是友好的: 不要重复阅读者已经知道的内容 能明确说明代码是做什么的注释对我们是没有帮助的. // If the col ...

  7. web前端基础篇⑥

    LESS.①是一种拓展技术,基于css.②包含变量.混合.函数.运算.③简化css代码.降低维护成本④目前用的解析器(koala) 变量(值可变)@变量名:值步骤:①建立文件夹②建html和less两 ...

  8. C#代码示例_集合

    C#中数组实现为System.Array类得实例,它们只是集合类(Collection Classes)中的一种类型. 索引符(indexer)是一种特殊类型的属性,可以把它添加到一个类中,以提供类似 ...

  9. M5: 使用StorageFile

    本小节介绍UWP中的文件操作,使用到了FileOpenPickerAPI(在Windows.Storage.Pickers中).本例中,单击打开文件按钮,然后在图片库中选择照片,将选择的照片用作贺卡背 ...

  10. CCLabel在最大宽度已知的情况下如何获取实际宽高

    当前环境在cocos2.2.6, 在UI摆图中,会遇到一种情况就是 设定了label的最大宽度MAX_WIDTH,但label的内容是动态的,如何在label输入了文字之后获取label的真实宽高? ...