UML之⽤例图详解
原⽂链接:blog.csdn/mj_ww/article/details/53020080
  UML,即Unified Model Language,统⼀建模语⾔。百度百科对他的定义是:它是⼀个⽀持模型化和软件系统开发的图形化语⾔,为软件开发的所有阶段提供模型化和可视化⽀持,包括由到规格,到构造和配置。作为⼀个软件⼯程师,很多技能并不⼀定说⾮得具备,但是,⼀旦我们具备了,很多时候机会总是会多那么⼀点点。
  对于⽤例图来说我们需要了解的是什么叫⽤例图,构成⽤例图的要素,⽤例图有哪些重要的元素,各个⽤例之间的关系。当然最重要的是如何根据需求创建⽤例图。具体的创建通过⼀个简单的学⽣管理的例⼦说明创建的过程和例⼦。
  我的所有例⼦都是是使⽤Rose这个软件来画的,现在虽然有新的UML模型画图软件,但是我⽐较喜欢⽤这个Rose,如果你还没有装这个软件需要先装⼀个,或者使⽤你⽐较喜欢的UML画图软件。下⾯我们直接进⼊正题吧,学习⼀下⽤例图的相关概念和具体的创建过程。
什么叫⽤例图
1. ⽤例图的含义 
  由参与者(Actor)、⽤例(Use Case)以及它们之间的关系构成的⽤于描述系统功能的动态视图称为⽤例图。要在⽤例图上显⽰某个⽤例,可绘制⼀个椭圆,然后将⽤例的名称放在椭圆的中⼼或椭圆下⾯的中间位置。
  要在⽤例图上绘制⼀个参与者(表⽰⼀个系统⽤户),可绘制⼀个⼈形符号。参与者和⽤例之间的关系使⽤带箭头或者不带箭头的线段来描述,箭头表⽰在这⼀关系中哪⼀⽅是对话的主动发起者,箭头所指⽅是对话的被动接受者。
  在⽤例建模中,为了更加清楚的描述⽤例或者参与者,会使⽤到注释。
2. ⽤例图的作⽤
  ⽤例图是需求分析中的产物,主要作⽤是描述参与者和⽤例之间的关系,帮助开发⼈员可视化的了解系统的功能。借助于⽤例图,系统⽤户、系统分析⼈员、系统设计⼈员、领域专家能够以可视化的⽅式对问题进⾏探讨,减少了⼤量交流上的障碍,便于对问题达成共识。
  ⽤例图可视化地表达了系统的需求,具有直观、规范等优点,克服了纯⽂字性说明的不⾜。
  ⽤例⽅法是完全从外部来定义系统功能,它把需求和设计完全的分离开来。我们不⽤关⼼系统内部是如何完成各种功能的,系统对于我们来说就是⼀个⿊箱⼦。
⽤例图的构成要素
1. 参与者
  参与者(Actor)是指存在于系统外部并直接与系统进⾏交互的⼈、系统、⼦系统或类的外部实体的抽象。
每个参与者可以参与⼀个或多个⽤例,每个⽤例也可以有⼀个或多个参与者。
  在⽤例图中使⽤⼀个⼈形图标来表⽰参与者,参与者的名字写在⼈形图标下⾯。
2. 参与者间的的关系
  由于参与者实质上也是类,所以它拥有与类相同的关系描述,即参与者与参与者之间主要是泛化关系(或称为“继承”关系)。
泛化关系的含义是把某些参与者的共同⾏为提取出来表⽰成通⽤⾏为,并描述成超类。泛化关系表⽰的是参与者之间的⼀般/特殊关系,在UML图中,使⽤带空⼼三⾓箭头的实线表⽰泛化关系。
3. 系统边界
  在项⽬开发过程中,边界是⼀个⾮常重要的概念。这⾥说的系统边界是指系统与系统之间的界限。通常我们所说的系统可以认为是由⼀系列的相互作⽤的元素形成的具有特定功能的有机整体。
  系统同时⼜是相对的,⼀个系统本⾝⼜可以是另⼀个更⼤系统的组成部分,因此,系统与系统之间需要使⽤系统边界进⾏区分开来。我们把系统边界以外的同系统相关联的其他部分,称之为系统环境。
⽤例的重要元素
1. 如何识别⽤例
uml图用什么软件画  任何⽤例都不能在缺少参与者的情况下独⽴存在。同样,任何参与者也必须要有与之关联的⽤例。所以识别⽤例的最好⽅法就是从分析系统参与者开始,在这个过程中往往会发现新的参与者。
可以通过以下问题来寻⽤例:
  (1)参与者希望系统提供什么功能?
  (2)参与者是否会读取、创建、修改、删除、存储系统的某种信息?如果是的话,参与者⼜是如何完成这些操作的?
  (3)参与者是否会将外部的某些事件通知给系统?
  (4)系统中发⽣的事件是否通知参与者?
  (5)是否存在影响系统的外部事件。
2.⽤例的粒度
  ⽤例的粒度指的是⽤例所包含的系统服务或功能单元的多少。⽤例的粒度越⼤,⽤例包含的功能越多,反之则包含的功能越少。
  如果⽤例的粒度很⼩,得到的⽤例数就会太多。反之,如果⽤例的粒度很⼤,那么得到的⽤例数就会很少。
  如果⽤例数⽬过多会造成⽤例模型过⼤和引⼊设计困难⼤⼤提⾼。如果⽤例数⽬过少会造成⽤例的粒度太⼤,不便于进⼀步的充分分析。
  ⽐如:⽹站后台管理系统中的会员信息维护⽤例,管理员需要进⾏添加会员信息、修改会员信息、删除会员信息等操作。
  我们还可以根据具体的操作把它抽象成3个⽤例,它展⽰的系统需求和单个⽤例是完全⼀样的。
3.⽤例规约
  对于每⼀个⽤例,我们还需要有详细的描述信息,以便让别⼈对于整个系统有⼀个更加详细的了解,这些信息包含在⽤例规约之中。
每⼀个⽤例的⽤例规约都应该包含以下内容:
  (1)简要说明:对⽤例作⽤和⽬的的简要描述。
  (2)事件流:事件流包括基本流和备选流。基本流描述的是⽤例的基本流程,是指⽤例“正常”运⾏时的场景。
  (3)⽤例场景:同⼀个⽤例在实际执⾏的时候会有很多不同的情况发⽣,称之为⽤例场景,也可以说⽤例场景就是⽤例的实例。
  (4)特殊需求: 特殊需求指的是⼀个⽤例的⾮功能性需求和设计约束。特殊需求通常是⾮功能性需求,包括可靠性、性能、可⽤性和可扩展性等。例如法律或法规⽅⾯的需求、应⽤程序标准和所构建系统的质量属性等。
  (5)前置条件: 执⾏⽤例之前系统必须所处的状态。例如,前置条件是要求⽤户有访问的权限或是要求某个⽤例必须已经执⾏完。
  (6)后置条件:⽤例执⾏完毕后系统可能处于的⼀组状态。例如,要求在某个⽤例执⾏完后,必须执⾏另⼀个⽤例。
⽤例之间的关系
1. 包含
  包含关系指⽤例可以简单地包含其他⽤例具有的⾏为,并把它所包含的⽤例⾏为作为⾃⾝⾏为的⼀部分。在UML中,包含关系是通过带箭头的虚线段加<>字样来表⽰,箭头由基础⽤例(Base)指向被包含⽤例(Inclusion)。
  在处理包含关系时,具体的做法就是把⼏个⽤例的公共部分单独的抽象出来成为⼀个新的⽤例。主要有两种情况需要⽤到包含关系:
  第⼀,多个⽤例⽤到同⼀段的⾏为,则可以把这段共同的⾏为单独抽象成为⼀个⽤例,然后让其他⽤例来包含这⼀⽤例。
  第⼆,某⼀个⽤例的功能过多、事件流过于复杂时,我们也可以把某⼀段事件流抽象成为⼀个被包含的⽤例,以达到简化描述的⽬的。
2. 扩展
  在⼀定条件下,把新的⾏为加⼊到已有的⽤例中,获得的新⽤例叫做扩展⽤例(Extension),原有的⽤例叫做基础⽤例(Base),从扩展⽤例到基础⽤例的关系就是扩展关系。
  ⼀个基础⽤例可以拥有⼀个或者多个扩展⽤例,这些扩展⽤例可以⼀起使⽤。
3.泛化
  ⽤例的泛化指的是⼀个⽗⽤例可以被特化形成多个⼦⽤例,⽽⽗⽤例和⼦⽤例之间的关系就是泛化关系。
  在⽤例的泛化关系中,⼦⽤例继承了⽗⽤例所有的结构、⾏为和关系,⼦⽤例是⽗⽤例的⼀种特殊形式。
  ⼦⽤例还可以添加、覆盖、改变继承的⾏为。在UML中,⽤例的泛化关系通过⼀个三⾓箭头从⼦⽤例指向⽗⽤例来表⽰。
  泛化的⽰例:银⾏存款有两种⽅式,⼀种是银⾏柜台存款,⼀种是ATM机存款。在这⾥,银⾏柜台存款和ATM机存款都是存款的⼀种特殊⽅式,因此“存款”为⽗⽤例,“银⾏柜台存款”和“ATM机存款”为⼦⽤例。
使⽤Rose创建⽤例的步骤说明
1. 需求分析
学⽣信息管理系统”部分功能性需求包括以下内容:
  (1)系统管理员登录后可以对班级的基本信息进⾏增加、删除、修改、查询等操作。学校领导登录后可以对班级基本信息进⾏查询操作。
  (2)教师登录后可以对学⽣的考试成绩进⾏录⼊、删除、修改、查询等操作。学⽣登录后可以对考试
成绩进⾏查询操作。
  (3)学⽣登录后可以了解所有选修课程的具体信息,可以根据⾃⼰的需要选择不同课程。系统管理员登录后可以增加、修改、查询、删除选修课程。
  (4)系统管理员可以对账号进⾏创建、设置、查看、删除等操作。
2.识别参与者
  对于⼀个学校来说,最重要的就是教育学⽣成才,所以我们⾸先要考虑到的参与者就是学⽣。
  要给学⽣上课,必然就需要教师。教师负责教育学⽣、并且在⽇常管理中可以查询学⽣的基本信息、查询学⽣的考试成绩。
  作为⼀个学校,除了教师和学⽣,还有不可或缺的就是校领导。为了便于校领导掌握学校的基本情况,加强对学校的管理导.
  不管什么系统,基本都会有⽐较专业的⼈员来负责管理系统,本系统也不例外。系统管理员除了负责维护系统的⽇常运⾏,还要进⾏录⼊学⽣基本信息、维护选课信息等⼯作。
3.构建⽤例模型
  系统管理员直接参与的⽤例为登录、回密码、查看班级基本信息、删除班级基本信息、修改班级基本信息和录⼊班级基本信息。校领导直接参与⽤例登录、回密码和查看班级基本信息。当登录过程中发⽣忘记密码的情况,就需要使⽤回密码的功能来回密码,⽽在正常情况下⽤不到回密码这个功能所以⽤例回密码”和⽤例登录之间是扩展关系。
  教师参与⽤例录⼊成绩、修改成绩、保存成绩、查询成绩、删除成绩和登录。学⽣参与⽤例登录和查询成绩。因为修改成绩和录⼊成绩的时候都要保存成绩,所以将保存成绩抽象出来作为单独的⼀个⽤例。⽤例录⼊成绩、修改成绩和⽤例保存成绩之间是包含关系,⽤例回密码和⽤例登录之间是扩展关系。
  学⽣作为参与者直接参与⽤例查看课程信息、按课程编号查看、按课程名查看、选择课程、删除已选课程、登录和回密码。系统管理员参与⽤例登录、回密码和“维护课程信息”。其中查看课程信息有两种⽅式,⼀种是按照课程名查看,另⼀种是按照课程编号查看。所以查看课程信息是⽗⽤例,⽽按照课程名查看和按照课程编号查看是⼦⽤例,他们之间的关系是泛化关系。⽤例回密码和⽤例登录之间是扩展关系。
  系统管理员参与⽤例创建新账号、设置账号、设置账号基本信息、设置账号权限、查看账号和删除账号。在设置帐号时,主要分为设置账号的基本信息和设置账号的权限,为了便于修改和维护,将这两个功能分别抽象为两个⽤例。所以⽤例设置账号基本信息、设置账号权限和⽤例设置账号之间是包含关系

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。