画图理解软件工程-UML统一建模语言-用例图(三)

UML定义

  • Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。 面向对象的分析与设计(OOA&D,OOAD)方法的发展在80年代末至90年代中出现了一个高潮,UML是这个高潮的产物。它不仅统一了Booch、Rumbaugh和Jacobson的表示方法,而且对其作了进一步的发展,并最终统一为大众所接受的标准建模语言。

UML用例图

  • 用例图是指由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的视图。用例图(User Case)是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。用例图主要是在需求分析阶段描述用户需求,并且客户也需要查看软件用例图,所以用例图对系统的描述需要简单明了。

用例图的两种元素

  • 参与者(Actor)

  • 用例(UseCase)

用例图四种关系

  • 关联关系(Association)

  • 包含关系(Include)

  • 扩展关系(Extend)

  • 泛化关系(Generalization)

下面,通过简单的一个对CSDN博客的用例分析(只是选取部分)来了解一下UML用例图,用IBM Rational Rose绘制,类似的软件还有 ms viso
StarUML等

画图理解软件工程-UML统一建模语言-用例图(三)_第1张图片

然后,我们对用例图6种元素分析


  • 参与者 (会员、游客、系统维护人员)
    参与者是系统外部的一个实体,它以某种方式参与用例的执行过程。参与者通过向系统输入或请求系统输入某些事件来触发系统的执行。参与着由参与用例时所担当的角色来表示。在UML中,参与者用名字写在下面的人形图标表示。每个参与者可以参与一个或多个用例。它通过交换信息与用例发生交互(因此也与用例所在的系统或类发生了交互),而参与者的内部实现与用例是不相关的,可以用一组定义其状态的属性充分的描述参与者。参与者有三大类:系统用户、与所建造的系统交互的其它系统和一些可以运行的进程。
    第一类参与者是真实的人,即用户,是最常见的参与者,几乎存在于每个系统中。命名这类参与者时,应当按照业务而不是位置命名,因为一个人可能有很多业务。
    第二类参与者是其它的系统。这类位于程序边界之外的系统也是参与者。
    第三类参与者是一些可以运行的进程,如时间。当经过一定的时间触发系统中的某个事件时,时间就成了参与者。

  • 用例(图中椭圆代表的)
    用例是外部可见的系统功能单元,这些系统功能由系统单元所提供,并通过一系列系统单元与一个或多个参与者之间交换的消息所表达。用例的用途是,在不揭示系统内部构造的前提下定义连贯的行为。

  • 关联关系(Association)

    关联关系描述参与者与用例之间的关系,它是用于表示类的挂系的关联元类的实例。在UML中,关联关系用箭头来表示。关联关系表示参与者与用例之间的通信。不同的参与者可以访问相同的用例,一般说来它们和该用例的交互是不一样的,如果一样的话,说明它们的角色可能是相同的。如果两中交互的目的也相同,说明它们的角色是相同的,就可以将它们合并。


  • 包含关系(Include)
    虽然每个用例的实例都是独立的,但是一个用例可以用其它的更简单的用例来描述。这有点像通过继承父类并增加附加描述来定义一个类。一个用例可以简单地包含其它用例具有的行为,并把它所包含的用例行为作为自身行为的一部分,这被称作包含关系。在这种情况下,新用例不是初始用例的一个特殊例子,并且不能被初始用例所代替。在UML中,包含关系表示为虚线箭头交<>字样,箭头指向被包含的用例。包含关系把几个用例的公共步骤分离成一个单独的被包含用例。被包含用例称
    作提供者用例,包含用例称作客户用例,提供者用例提供功能给客户使用。用例间的包含关系允许包含提供者用例的行为到客户用例的事件中。
    包含关系使一个用例的功能可以在另一个用例中使用,如下所述。
    (1)如果两个以上用例有大量一致的功能,则可以将这个功能分解到另外一个用例中。其它用例可以和这两个用例建立包含关系。
    (2)一个用例的功能太多时,可以用包含关系建模两个小用例。要使用包含关系,就必须在客户用例中说明提供者用例行为别包含的详细位置。
    这一点同功能调用有点类似。事实上,它们在某种程度上具有相似的语义。

  • 扩展关系(Extend)
    一个用例也可以被定义为基础用例的增量扩展,这被称作扩展关系,扩展关系是把新的行为插入到已有的用例中的方法。同一个基础用例的几个扩展用例可以在一起应用。基础用例的扩展增加了原有的语义,此时基础用例而不是扩展用例被作为例子使用。在UML用例图中,扩展关系表示为虚线箭头加<>字样,箭头指向被扩展展的用例。基础用例提供了一组扩展点,在这些新的扩展点中可以添加新的行为,而扩展用例提供了一组插入片片段,这些片段能够被插入到基础用例的扩展点上。基础用例不必知道扩展用例的任何细节,它仅为其提供扩展点。事实上,基础用例即使没有扩展用例也是完整的,这点与包含关系有所不同。一个用例可能有多个扩展点,每个扩展点可以出现多次。但是一般情况下,基础用例的执行不会涉及到扩展用例,只有特定的条件发生,扩展用例才被执行。扩展关系为处理异常或构建灵活的系统框架提供了一种有效的方法。

  • 泛化关系(Generalization)
    一个用例可以被特别列举为一个或多个用例,这被称为用例泛化。当父用例能够被使用时,任何子用例也可以被使用。在UML中用例泛化与其它泛化关系的表示法相同,用一个三角箭头从子用例指向父用例。在用例泛化中,子用例表示父用例的特殊形式。子用例从父用例处继承行为和属
    性,还可以添加、覆盖或改变继承的行为。如果系统中一个或多个用例是某个一般用例的特殊化时,就需要使用用例的泛化关系。

你可能感兴趣的:(过去的酱油文章)