疯狂

STANDING ON THE SHOULDERS OF GIANTS
posts - 481, comments - 486, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

UML用例图

Posted on 2010-09-25 14:22 疯狂 阅读(3465) 评论(1)  编辑  收藏 所属分类: 项目管理UML
前些时间参加了潘加宇老师的技术讲座,UML建模技术受益匪浅。我也把平时的一些积累和上次的收获总结在这篇文章中,主要讲解用例图相关的知识。
     
用例图是软件需求分析到最终实现的第一步,它描述用户如何使用系统及使用系统什么样的功能。用例图从业务角度上体现谁来使用系统、用户希望系统提供什么样的服务,以及用户需要为系统提供的服务,也便于软件开发人员最终实现这些功能。用例图在开发中被广泛的应用,但是它最常用来描述系统提供了什么样的功能给什么样的用户使用。

       在官方文档中用例图包含六个元素,分别是:执行者(Actor)、用例(Use Case)、关联关系(Association)、包含关系(Include)、扩展关系(Extend)以及泛化关系(Generalization)。但是有些UML的绘图工具多提供了一种直接关联关系(DirectedAssociation)

        用例图可一个包含注释和约束,还可一个包含包,用于将模型中的元素组合成更大的模块。有时,可以将用例的实例引入到图中。用例图模型如下所示,执行者用人形图标来标识,用例用椭圆来表示,连线表示它们之间的关系。

 
 

一、执行者(Actor

       1、执行者概念

    是指用户在系统中扮演的角色。如图1-1是一个用户管理的用例图,图中的用户、管理员就是用例的执行者。


                    1-1

         2、从业务中找出执行者

    获取系统用例首先要找出系统的执行者。我们可以通过用户回答一些问题的答案来识别执行者。可以参考以下问题:

  1. 谁使用系统的主要功能(主要使用者)?
  2. 谁需要系统支持他们日常工作?
  3. 谁来维护、管理系统使其正常工作(辅助使用者)?
  4. 系统需要控制哪些硬件?
  5. 系统需要其他哪些系统交互?这里包含其他计算机系统或者应用程序。
  6. 对系统产生结果感兴趣的是哪些人和哪些事物?

       3、执行者之间关系

因为执行者是类,所以多个执行者之间可以具有与类相同的关系。在用例图中,使用了泛化关系来描述多个执行者之间的公共行为。如果系统中存在几个执行者,它们既扮演自身的角色,同时也扮演更具一般化的角色,那么就用泛化关系来描述它们。这种情况往往发生在一般角色的行为在执行者超类中描述的场合。特殊化的执行者继承了该超类的行为,然后在某些方面扩展了此行为。执行者之间的泛化关系用一个三角箭头来表示,指向扮演一般角色的超类。这与UML中类之间的返还关系符号相同。图1-2


                    图1-2

 

二、用例(Use Case

         1、用例概念

    用例就是外部可见的系统功能,对系统提供的服务进行描述。

         2、从业务中找出用例

    找出系统的用例,我们从执行者入手,对每个执行者提出一些问题,然后从执行者对这些问题的答案中获取用例。可以参考以下问题:

  1. 执行者要求系统提供哪些功能(执行者需要做什么)?
  2. 执行者需要读、产生、修改、删除或者存储系统中的信息有哪些类型?
  3. 执行者必须提醒系统事件有哪些?把这些事件表示成系统用例。

         3、用例之间关系

二、用例之间关系

        1、关联关系(Association

关联关系是连接执行者和用例,表示该执行者代表的外部系统实体与该用例描述的系统需求有关。


图1-3

        2、包含关系(Include

包含关系是来自于用例的抽象,即从数个不同的Use Case中,分离出公共的部分,而成为可以复用的用例。


1-4

        3、扩展关系(Extend

    扩展关系表示某一个用例的对话流程中,可能会根据条件临时插入另外一个用例,而前者称为基础用例后者称为扩展用例。

    

                图1-5

4、泛化关系(Generalization

    一个用例可以被特别列举为一个或多个用例,这被称为用例泛化,如果系统中一个或多个用例是某个一般用例的特殊化时,就需要使用用例的泛化关系。

    


评论

# re: UML用例图  回复  更多评论   

2012-11-28 09:16 by liu100
用Rational设计和实现简单的电话簿程序
2007-10-23 13:46 来源:论坛整理 作者:佚名 责任编辑:方舟•yesky 评论(0)
  将 Java 转换为 UML

  现在,创建另一个转换配置,将 Java 文件转换为一个 UML 模型。

  1、选择 Rational Software Architect 的 Model Explorer 中的 PhoneBookJavaProject。

  2、选择 Modeling > Transform > New Configuration。

  3、输入名字 PhoneBookJava2UML,然后选择 IBM Rational > Java to UML,如图 24 所示。点击 Next。

  图 24. 创建一个用于 Java 到 UML 转换的转换配置

  

  4、选择 PhoneBookJavaProject 作为源。

  5、点击 Create new Target Container... 创建一个用于保存所产生文件的 UML 模型。

  6、再 Create UML Model 中,点击 Next 从标准模版中创建一个新的 UML 模型。

  7、输入 Phone Book UML Reverse Model 作为文件名。

  8、点击 Browse 选择已有的 MyPhoneBookUMLProject 作为新模型文件的存放处。 Create UML Model 区域应当与图 25 所示类似。

  图 25. Create UML Model 区域

  

  9、点击 Finish。

  在 Source and Target 区域中,选择新创建的模型文件 Phone Book UML Reverse Model 作为目标,如图 26 所示。

  图 26. 选择用于转换的源和目标

  

  1、点击 Next。

  2、取消选择 Generate getter and setter,这样不会产生 getter 和 setter。

  3、继续点击 Next,查看其它可用的选项。 使用所有的缺省选项,然后点击 Finish。

  现在,您已经创建了一个转换配置,名字为 PhoneBookJava2UML.tc。 本练习中的最后一步,是将 Java 文件转换为一个 UML 模型。

  1、右键点击文件 PhoneBookJava2UML.tc。

  2、选择 Transform > Java to UML,将 Java 代码转换为 UML 模型,如图 27 所示。

  图 27. 将 Java 代码 转换为 UML

  

  3、单击 OK 接受所有待定变化。

  4、现在,这三个 Java 类被转换为 Phone Book UML Reverse Model 下的三个模型元素,如图 28 所示。

  图 28. 产生的 UML 模型

  

  在 Phone Book UML Reverse Model 中创建一个类图,以可视化所产生的模型元素。 将这三个模型类拖放到图中,如图 29 所示。

  图 29. 在类图中的三个模型类

  

  在图中,关联关系显示为属性。 选择这些属性,然后右键点击并选择 Filters > Show As Association,将这些属性转为关联关系。

  您在 userHasInput 中已经增加的新参数并没有在图中显示化。 右键点击类 PhoneBookController,并选择 Filters > Show Signature,显示这些操作的完整签名。

  您转换的 UML 模型的类图应当类似于图 30 显示所示。将此图与您先前所创建的类图(参见图 9)进行比较,并注意相似性。 也注意到,Association Relationship 显示为图中的两条线,以指出这个双向的行为。

  图 30. 产生的 UML 模型

  

  选择 Ctrl-S 保存所有变化。

  完成实现

  一旦您已经从 UML 图中产生了 Java 文件,您就可以修改所产生的文件,以基于设计架构来实现您的应用程序。 在 下载 一章中,您将会找到一个简单的电话号码簿应用程序,其实现了一个命令行接口,将号码条目保存为一个本地文件,但是这知识一个可能的实现。 例如,您可以生成一个 GUI 界面来替代命令行界面,用 EJB 组件存储数据来替代文件,或者使用 Observer 模式实现通告机制。 所提供的实现示例只是实现设计的方法之一。

  在最后一章中,您将从您的 UML 图中修改产生的文件,以实现电话号码簿应用程序范例。

   您想要查看这些步骤的示例吗?

  将范例实现复制和粘贴到三个合适的 java 文件中。

  选择 File > Save All 以保存所有内容。

  选择 PhoneBookController,然后选择 Run > Run As ... > Java Application,以一个 Java 应用程序来运行电话号码簿实现。

  来到 Console 视图,如图 31 所示,并与应用程序进行交互。 验证可以执行先前讨论的两个用例,Add an entry 和 Search for a phone number。 记住: 用例的目的是定义系统的行为并获得需求。 实现满足需求,并如期望的那样工作是很重要的。

  图 31. 运行电话号码簿应用程序范例

  

  您也可以再次运行一个 Java 到 UML 的转换,使用 PhoneBookJava2UML.tc 转换配置来理解完整电话号码簿应用程序的 UML 模型。

  图 32. 电话号码簿应用程序范例的 UML 模型

  

  总结

  本教程提供了一个对 Rational Software Architect V7 的高层的和实践介绍。 您已经按照详细的练习和例子,学习了如何使用 UML 图设计一个应用程序,将模型信息发布到一个 Web 页面,将您的设计转换为 Java 代码,然后使用 Rational Software Architect V7 将 Java 代码反向工程到一个 UML 图。 最后,您实现了简单的电话号码簿应用程序,并在 Rational Software Architect 控制台中进行了查看。
上一页1234567


只有注册用户登录后才能发表评论。


网站导航: