在前面的课程中,我们主要讨论了人脉V1.0系统的角色及角色间的关系,也讨论了角色的属性和行为。在这节课中,我们将使用UML建模语言的用例图对人脉V1.0系统的角色及角色行为建立系统功能模型。

在建模之前,先简单介绍一下什么是UML建模语言。

UML是面向对象开发的建模语言,由OMG(OMG是一个世界性的计算机标准协会),该协会致力于发展和传播面向对象系统,OMG在1997年公布了UML建模语言标准。UML定义了9种模型图,为软件开发过程的需求分析、系统设计、系统部署阶段提供建模支持,这9种模型图分别是用例图、类图、对象图、状态图、活动图、序列图、协作图、构件图和部署图。这些模型图从不同的侧面对系统进行建模。

在需求分析阶段,UML使用用例图、类图、协作图、顺序图和状态图从面向对象的角度出发来定义应用需求。在大多数情况下,为了得到一个完整的业务需求定义,这5种模型都要使用。但在系统功能相对简单的情况下,可以只使用用例图、类图、顺序图来定义需求。

用例描述了角色在系统中承担的职责,用例从系统角色的角度对系统功能进行建模。也可以说用例是事件表的延伸,事件表最先捕捉到系统需要响应的事件,然后通过事件表分析出系统角色,确定角色的属性和行为,最后再通过用例图对系统功能建模。

下图显示了一个用户注册的用例。一个简单的小人图形表示系统角色。这个小人图形有一个可以表示其角色的名字。用例用一个在里面标有名称的椭圆所代表,角色与用例之间的线条表示了角色参与哪些用例。

图 1 有一个角色的简单用例

用例表明了角色与系统如何交互来完成业务活动,用例包含完成这个业务活动的所有步骤,这些活动步骤需要在用例中完整描述出来。一个用例可能会对应不同的活动场景,例如用户注册可能会对应在手机端注册和电脑端注册两种活动场景。所以,场景是对用例内部活动的识别和描述。

绘制用例图时,我们需要明确角色和用例,用例和用例之间的关系。角色和用例是关联关系,也就是角色参与到这个用例中,关联关系是一条直线(有些UML绘图工具也使用带单向箭头的直线),用于连接角色和用例。

图 2 角色和用例的关联关系

用例和用例之间主要是包含关系、扩展关系和依赖关系。

包含关系

包含关系是指一个用例在执行过程中,会调用另外一个用例来完成相关任务,也就是在一个用例的内部包含了另外一个用例。例如,用户注册和用户登录用例都需要调用数据库角色的存储用户信息用例,在这种情况下,就可以把数据库角色的存储用户信息用例包含到用户注册和用户登录用例中。

图 3 用例和用例间的包含关系

扩展关系

扩展关系是一个用例对另一个用例功能的扩展。例如,用户注册有手机端注册和电脑端注册两个注册场景,则可以把用户注册作为基本用例,手机端注册和电脑端注册作为扩展用例。

图 4 用例和用例间的扩展关系

依赖关系

依赖关系是一个用例在活动执行过程中,要依赖另一个用例的执行。例如,A用例依赖B用例,A用例或使用B用例执行后的返回结果,或使用B用例执行部分功能。依赖关系类似于包含关系,都是在用例执行过程中,调用其它用例来完成部分任务。

了解了用例的关系和绘制方法后,我们就可以根据前面给出的角色表来绘制人脉V1.0系统的用例图。

绘制用例图使用的工具有很多,在这里我使用Visio工具绘制用例图。我们分别绘制用户角色、名片角色和数据库角色的用例图。

用户角色用例图

下图是用户角色用例图,用户角色用例有注册、登录、添加名片、编辑名片、删除名片、查看名片和翻阅名片用例。虚线椭圆的用例是数据库角色和名片角色的用例,这些用例被用户角色的用例所使用。例如,下图的添加名片用例使用了名片角色的存储名片用例,而名片角色的存储名片用例又使用了数据库角色的存储名片信息用例。

其中注册用例没有按注册场景分,这是因为在V1.0版我们主要考虑在电脑端注册。

图 5 用户角色用例图

名片角色用例图

下图是名片角色用例图。名片角色用例有存储名片、获取名片、查询名片、删除名片和展示名片用例。

图 6 名片角色用例图

数据库角色用例图

下图是数据库角色用例图。数据库角色用例图有存储用户信息、存储名片信息、获取用户信息、获取名片信息、名片查询和删除名片用例。

图 7 数据库角色用例图

至此,我们已经完成了人脉项目V1.0系统用户角色、名片角色、数据库角色用例图的绘制,建立了人脉项目V1.0系统功能需求模型。下节课我们将对每个用例配置用例规约。

需求分析——掌握UML建模语言的用例图相关推荐

  1. 需求分析——掌握和使用UML建模语言顺序图模型

    在前面的文章中,我们建立了类图模型,类图模型描述了系统的类及类之间的关系.类图模型也称为系统的静态结构,因此从类图模型中我们还看不到业务的处理过程以及类与类交互的信息,在UML建模语言中,这些信息是通 ...

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

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

  3. 【UML 建模】UML建模语言入门 -- 用例视图详解 用例视图建模实战

    . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835 . 一. 用例视图概述 用例视图表述哪些 ...

  4. 【UML 建模】UML建模语言入门-视图,事物,关系,通用机制

    . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835 . 一. UML视图 1. Ration ...

  5. 面向对象基础及UML建模语言

    1.面向对象的方法起源于面向对象程序设计语言,其发展过程大体经历了初始阶段.发展阶段和成熟阶段. 2.面向对象方法主要优点 (1)从认识论的角度可以看出,面向对象方法改变了开发软件的方式. (2)面向 ...

  6. [原]UML建模语言进阶 - 用例视图详解 用例视图建模实战

    一. 用例视图概述 用例视图表述哪些事物 :谁是相关用户,用户希望从系统获得的服务,用户需要为系统提供的服务. 用例视图的作用 : 使用户容易理解 其中元素的用途 , 使码农更容易实现这些元素. 软件 ...

  7. UML建模语言中的类图

    实验目的 通过上机实验,掌握类图的语法和规则,深入理解类图的概念 实验环境 Window下安装StarUML 实验内容 介绍类图的基本语法与规则(可以用图形表述): UML类图中的关系分为四种:泛化. ...

  8. 多态练习题(通过UML建模语言来实现饲养员喂养动物)

    项目需求如下图: package com.Summer_0428.cn; /*** @author Summer* 1.构建一个食物抽象类,Bone和Fish分别为其实现类,通过super传参.* 2 ...

  9. UML建模语言中的顺序图

    实验目的 通过上机实验,掌握顺序图的语法和规则,深入理解顺序图的概念 实验环境 Window下安装StarUML 实验内容 介绍顺序图的基本语法与规则(可以用图形表述): 顺序图描述了对象之间传递消息 ...

最新文章

  1. antd 表单提交,文件和表单内容一起提交,表单校验
  2. mysql 主键选择_mysql – 无论列名如何,都选择主键?
  3. wordpress page显示未找到页面_通过Avada主题了解网页基本结构和页面布局
  4. 小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载一(PhoneGap中的API)...
  5. 一条SQL语句实现二进制到十进制的转换
  6. 【Unity】Protobuf的使用与常见问题
  7. SAP登陆界面TITLE修改方法(Method of SAP Logon GUI Title Modification)
  8. vue 给url 中文参数 添加编码解码
  9. 360互联网技术训练营第七期 -“遇见”PIKA 续集
  10. bzoj 2627: JZPKIL [伯努利数 Pollard-rho]
  11. C++ 类中特殊成员变量(常量、静态、引用)的初始化方法
  12. AppBox v6.0中实现子页面和父页面的复杂交互
  13. 常见的 web server
  14. 山东大学计算机组成课设,山东大学计算机组成原理课程设计实验报告.pdf
  15. docker mysql 镜像 下载_docker mysql 镜像下载
  16. TCL与京东方比拼技术创新,前者的发明专利首次居于领先地位
  17. 【python初级】 关于time.sleep睡眠时间
  18. Android播放声音SoundPool、MediaPlayer、AudioTrack
  19. [Mugeda HTML5技术教程之2] Mugeda HTML5富媒体平台简介
  20. 关于应用版本号的更迭

热门文章

  1. Linq中dbSet 的查询
  2. 删除指定路径下指定天数之前的文件
  3. CentOS7安装Oracle11g R2全过程
  4. go tcp客户端自动重连_使用 Go 语言创建 WebSocket 服务
  5. android layout(l, t, r, b);,服务器里的a,t,l,r,b是什么意思? Android编程中关于layout(l,t,r,b)函数的问题...
  6. os的java版本_如何在OS X上设置或更改默认的Java(JDK)版本?
  7. hanlp 词频统计_10.HanLP实现k均值--文本聚类
  8. 01算法 java_蓝桥杯:基础练习 01字串【JAVA算法实现】
  9. python科学坐标图绘制的四个要素_Python3.0科学计算学习之绘图(四)
  10. react 导航条选中颜色_调整安卓手机的颜色以更好地查看一切