UML笔记(2):用例图、User Case View

产生背景:需求分析是软件开发的第一步,如果走的不好,那后果不堪设想,但要做好这一步,其实是很难得,因为需求分析往往是两个互不相干领域的人沟通的产物,由于领域不同,他们很少有“共同语言”。对于开发人员来说,如何清晰的获取用户的需求,从而避免以后的返工(和加班),是个难题。同时,对于大的项目来说,定义各期的开发边界,从而避免开发费用纠纷,也是个难题。对于用户来说,按时获得自己想要的东西也是个难题。

这些难题的根本原因是:开发人员和最终用户处于两种“语系”中,他们无法很好的沟通,开发人员总是会先想到如何去实现,实现是否困难;而最终用户往往先想到的是我想要什么东西,要花多少钱,可见,他们的沟通往往是没有什么基础可循的,牛头不对马嘴,这就为以后的加班和费用纠纷埋下了伏笔。

为了解决这些问题,用例图应运而生,它生来就是开发人员和最终用户的“共同语言”,双方都能够用它来表达意愿,而且对方都可以很容易的理解。

发展历程:

1986年,Ivar Jacobson博士在一篇文章中提到了用例的概念,之后Alistair Cockburn写了一本书:《编写有效用例》,该书是定义用例和书写用例最重要、最有影响力也是最全面的书籍。

概念:

用例图是这样一种视图,它清晰的描述了用户的各种需求,向用户展示了其所需要的系统的整体结构及其边界。

要素说明:

用例图包含三个要素:活动者、用例、关系。

活动者:

活动者是指向软件系统发出请求,或享受系统服务的事物。

活动者可以是人,也可以是外部系统。

活动者的标记:

用例:

用例是指系统的一个功能模块。

用例的命名一般用动宾结构的词。

用例的标记是:

关系:

用例图中的关系有四种:关联、泛化、包含、扩展

关联:

关联用于描述活动者与用例之间的交互。

关联的标记如下:

例如:

泛化:

泛化用于表达父类与子类的关系,与编程中的继承含义一致。

泛化的标记如下:

例如:

包含:

包含是指一个用例的执行必须要用到另一个用例。

包含的标号如下:

例如:

扩展:

扩展用于描述功能的可选功能。

扩展的标记如下:

例如:

画用例图的一般步骤:

1.      确定系统边界,找出所有的活动者。

2.      从抽象到具体,对系统进行细化,确定各个功能点

3.      对功能点进行优化,提前共通功能点和扩展功能点,

4.      确认活动者与功能点的关系。

 

作用:

1.      便于用户与开发人员沟通

2.      便于对系统复杂度、开发周期等的评估。

3.      便于新员工对系统整体结构的了解。

4.      便于测试人员开展ST

注意事项:

用例图中要尽量避免使用编程相关的技术术语,而应该使用最终用户或领域专家的语言。

用例图应该有最终用户和开发人员共同完成。(或者至少需要经过双方确认。)

 

posted on 2011-09-21 16:30  abc0101  阅读(3239)  评论(0编辑  收藏  举报

导航