引言
在日常开发的流程中,为了更深入地理解一个复杂的需求,我们经常采用用例分析法。下面将围绕三个问题展开讨论:什么是用例分析法?如何用它来描述复杂系统?以及如何使用用例分析法?
用例分析法是一种方法论,旨在帮助我们更好地将现实中的业务需求转化为计算机系统,以满足不同参与者的需求。它通常包括以下两个目的:
- 帮助我们理解需求;
- 帮助我们设计系统;
如何描述复杂系统?
我们通过一个例子,来看看系统分析法是如何描述复杂系统的。大家都听说过盲人摸象的故事。故事是这样的:
有一天,几位盲人听说有一种神奇的动物叫“象”,他们都非常好奇,但由于他们无法看见,因此无法理解象的形状是什么样的。于是,他们决定摸摸象,以便更好地了解它。
每个盲人摸象的部分不同:
- 第一个盲人摸到了象的腿,于是他宣称:“象就像一根大柱子。”
- 第二个盲人摸到了象的耳朵,于是他说:“不,象实际上像一把大扇子。”
- 第三个盲人摸到了象的鼻子,他觉得:“象是一条大蟒蛇。”
- 第四个盲人摸到了象的身体,他认为:“象就像一堵墙。”
- 第五个盲人摸到了象的尾巴,他说:“不,象其实是一根绳子。”
这是一个带有贬义色彩的故事,表述我们只关注局部而忽略了整体,如果我们将上述5位盲人摸到的信息,凑到一起是不是就知道大象长啥样了。我们在看一个例子,现在我们城市到处都有摄像头,如果我们看了所有摄像头的内容,是不是对一个城市也理解一二了。
对于一个系统也是这样的,我们设计出一个系统,是供用户使用的,这里用户不仅仅是人,也可以是第三方系统,如果我们找出这个系统所有的使用者(参与者),并明确每个参与者的愿景和需求(用例),是不是说对系统也有大致了解了。这种分析方法就是用例分析法。用例分析法的主要步骤如下:
- 找出参与者:首先,明确系统的所有参与者,这些可以是用户、管理员、其他系统等。
- 定义用例:为每个参与者确定目标和需求,即用例。用例通常以动词加名词的形式描述,如 "创建订单"。
- 用例场景:明确每个用例的场景,可以使用泳道图和时序图等工具来展示用户与系统之间的互动。
- 确定类:识别系统中所需的类别,这些类别可以看作是用例中的名词部分。
- 绘制类图:使用类图来表示各个类之间的关系和属性。
- 包:如果多个类之间存在关联,可以将它们聚合到一个包中,以形成更有组织的结构。
最后,让我们通过一个示例来演示如何使用用例分析法来开发需求。假设我们要开发一个博客管理系统,首先确定参与者(博客作者、读者),然后定义各个参与者的需求(博客作者: 写博客,编辑博客, 读者: 阅读博客,评论博客),接下来明确用例场景(如何写博客,如何编辑博客)。通过这种方式,我们可以更好地理解系统需求并设计相应的功能。
示例
下面以博客管理系统为例
找出参与者以及定义用例
- 参与者:
-
- 博客作者
- 读者
- 用例:
-
- 博客作者: 写博客,编辑博客
- 读者: 阅读博客,评论博客
- 用例图
确定用例场景
这里仅画出部分用例场景:
创建博客的用例场景图:
编辑博客的用例场景图:
绘制类图
绘制包图
在这里,我们将用户信息作为一个包(UserPackage),包含读者以及作者的信息。博文信息作为另外一个包(PostPackage),包含Blog,以及Comment。
总结
本文首先阐述了用例分析法的概念。随后,通过盲人摸象和城市监控摄像头的例子,展示了如何使用用例分析法描述复杂系统。最后,以一个博客系统为例,描述了用例分析法的具体步骤。
参考
- 《大象:Thinking in UML》
- chatGPT