Monday, March 10, 2008

Study Use Case

Keywords: UML, Use case, 用例, Use Case Diagram, 用例图


这篇文章基本上是http://focuswindows.blogspot.com/2008/02/2-uml-tutorial.html的中文翻译, 该英文文档相当棒. 这节只关注Use Case.


1. 用例图的几个概念



Use Case Diagram是站在用户的视点去理解系统到底是什么样子的. 它关注于系统是什么, 而不关注怎样构建系统. Use Case Diagram由Actor、Use Case和Communication association(或者简称为Communication)组成. 怎样画Use Case diagram, 需要先明白Use Case和Actor概念.


Use Case是面向对象的概念, 所以我们要用面向对象的概念来理解Use Case,到底什么是UseCase呢? 我们开发的系统其实是真实世界中的一个对象, 那么这个对象对外提供的服务,可以说就是Use Case.


大家在讲Use Case的粒度问题的时候, 常犯的错误就是将该系统的服务的步骤, 当成Use Case. 步骤不是Use Case diagram关注的东西, (UML用Sequence diagram和Activity diagram来体现步骤)


Actor是目标系统的用户, 这个用户可以是人, 也可以是其他系统. 通常将用户按照角色分类, 就能确定用例图的Actor了.



2. 怎样画Use Case diagram



2.1 画Actor: Actor用一个小人表示.


2.2 画Use Case: Use Case是一个椭圆, 里面包含Use Case名.


2.3 画Communication: 用一个直线连接Actor和一个Use Case.


2.4 画System boundary: 用矩形表示, doundary圈住所有的Use Case.


2.5 理解Use case 之间的关系


2.5.1 Generalization关系, 这个关系和类的继承关系一样. 可以说derived use case就是Base use case的具体化(或者说是Base use case的一个实例). 比如刷卡付款和付款这两个用例, 就有generalization关系. 画法是:一条实线带一个实线箭头, 箭头指向Base Use Case.


2.5.2 Include关系, 包含关系很好理解, 如果多个Use case有相同的部分, 可以将相同的部分抽取出来, 这样新Use Case和原有的Use Case就有了Include关系.UML 画法是: 一条虚线带箭头, 箭头指向derived Use Case, 并且在虚线上打<<Include>>标记.


2.5.3 Extend关系, 表示一个Use Case是另一个Use Case的变种, 要注意它和Generalization的区别, Generalization关系就像基类和派生类间的关系; Extend关系就象是同一个基类的两个派生类之间的关系. UML画法是:一条虚线带箭头, 箭头指向参考的Use Case, 并且在虚线上打<<Extend>>标记.



3. 用例图的用处:



3.1. 协助我们来确定系统的feature或需求


3.2. 作为和Client沟通的材料, 因为用例图是站在用户的角度来理解系统, 所以特别适合和Client沟通.


3.3. 生成Test Case. 用例图会反映出系统会有哪些Scenario, 所以可以用来设计Test Case.



No comments: