用例分析

很多人在分析需求的时候,采用的是东扯葫芦西扯瓢的方式,列出了很多的需求点,但当你看完后,你还是不知道到底要干嘛!!  ---- 写在前面

用例,英文名称Use Case,英文和中文都是很好理解,因为大家都这么用,我们暂且不去追究名称上的问题,只要知道“用例是用来描述需求的流程”,即:描述5W1H中的How

看起来用例应该很好写,因为用例是描述需求的流程的,而需求的流程一般都是客户根据自己的业务总结出来,然后告诉我们的。我们只要将客户描述的内容记录下来即可,既简单又轻松!

但现实与理想总是有差距的,你可能会遇到一个对业务并不十分熟悉的客户,又或者和你交流的人员是客户的临时工,还有可能和你交流的人马上要休婚假了,他巴不得赶快了结这个无聊的事。。。。。。总之,各种各样的情况都可能出现,就是完美的情况不会出现!

这种情况下,我们如何才能做到完善的分析呢?我们怎么知道我们的分析是否正确,是否有遗漏,是否足够了?

一般的情况下,公司里负责需求分析得人员都是资深的员工,对领域、对系统有一定的积累和经验,即使面对这些情况,也可以通过自己的经验来弥补。

但对于一个菜鸟,遇到这种情况应该怎么办呢?难道菜鸟就不能做需求分析了么?

别慌,菜鸟虽然没有经验,但只要掌握正确的方法,一样可以做出很好的需求分析,这就是我总结的用例三部曲方法,又或叫做NEA方法。

我总结出的用例方法三段法(NEA方法):

1) 正常处理(Normal):通过和客户沟通,分析需求的正常流程;

2) 异常处理(Exception):在正常处理流程的步骤上,分析每一步的各种异常情况和对应的处理;

3) 替代处理(Alternative):在正常处理流程的步骤上,分析每一步是否有其它替代方法,以及替代方法如何做;

经过这简单三步后,How可以说分析得八九不离十了。

【用例的具体写法】

前面我们学习了518需求分析方法,而一个完整的用例,正好体现了518需求分析方法中涉及的内容。

一个完整的用例应该包含如下几个部分:

【用例名称】

一般情况下,用例的名称即需求的名称。

【场景】

场景即用例发生的环境,正好对应5W中的3个W:Who、Where、When

【用例描述】

描述详细的用例内容,对应5W中的What和How,即用户应该怎样做,以及每个步骤中的输出。但并不要求每个步骤都一定有输出,可以有也可以没有,也可以有多个。

【用例价值】

描述用例对应的客户价值,对应5W中的Why。

【约束和限制】

即整个需求流程中相关的约束和限制条件,对应518方法中的8C。

我们来看一个简单的样例:POS机。

【第一步:正常处理】


【用例名称】

买单

【场景】

Who:顾客、收银员

Where:商店的收银台

When:营业时间

【用例描述】

1. 顾客携带选择好的商品到收银台;

2. 收银员逐一扫描商品条形码,系统根据条形码查询商品信息;

3. 扫描完毕,系统显示商品总额,收银员告诉顾客商品总额;

4. 顾客将钱交给收银员;

5. 收银员清点钱数,输入收到的款额,系统给出找零的数目;

6. 收银员将找零的钱还给顾客,并打印小票;

7. 买单完成,顾客携带商品和小票离开;

【用例价值】

顾客买完单以后,就可以携带商品离开,而超市也将得到收入;

【约束和限制】

1. POS机必须符合国标XXX;

2. 键盘使用中文,因为收银员都是中国人;

3. 一次买单数额不能超过99999RMB;

4. POS机要非常稳定,至少一天内不要出现故障;

【第二步:异常处理】

在第一步的基础上,我们增加相关步骤的异常情况说明和处理,例如如下的黑体字:


【用例名称】

买单

【场景】

Who:顾客、收银员

Where:商店的收银台

When:营业时间

【用例描述】

1. 顾客携带选择好的商品到收银台;

(这一步没有异常)

2. 收银员逐一扫描商品条形码,系统根据条形码查询商品信息;

2.1 扫描仪坏了,必须支持手工输入条形码;

2.2 商品的条形码无法扫描,必须支持手工输入条形码;

2.3 条形码能够扫描,但查询不到信息,需要收银员和顾客沟通,放弃购买此产品

3. 扫描完毕,系统显示商品总额,收银员告诉顾客商品总额;

(这一步没有异常)

4. 顾客将钱交给收银员;

4.1 顾客的钱不够,顾客和收银员沟通,删除某商品

4.2 顾客的钱不够,顾客和收银员沟通,删除某类商品中的一个或几个(例如买了5包烟,去掉两包)

4.3 顾客觉得某个商品价格太高,要求删除某商品;

5. 收银员清点钱数,输入收到的款额,系统给出找零的数目;

(这一步没有异常)

6. 收银员将找零的钱还给顾客,并打印小票;

7. 买单完成,顾客携带商品和小票离开;

【用例价值】

顾客买完单以后,就可以携带商品离开,而超市也将得到收入;

【约束和限制】

1. POS机必须符合国标XXX;

2. 键盘使用中文,因为收银员都是中国人;

3. 一次买单数额不能超过99999RMB;

4. POS机要非常稳定,至少一天内不要出现故障;

有的人可能会认为第3、第5、第6步都应该有异常,例如系统坏了应该怎么处理。

但实际上我们没有必要这么写,因为用例分析的目的是为了详细分析为了实现客户价值,系统应该怎么做,如果系统本身都坏了,这个就不是用例关注的内容了。

需要注意的是:用例分析中的“异常”是指流程的异常情况,而不包含系统本身的的异常。

【第三步:替代处理】

在第二步的基础上,我们增加替代处理。即:有的步骤可以换一种方式来实现。例如如下用例中的付款方式,可以有信用卡支付、会员卡支付、购物卡支付等。


【用例名称】

买单

【场景】

Who:顾客、收银员

Where:商店的收银台

When:营业时间

【用例描述】

1. 顾客携带选择好的商品到收银台;

(这一步没有异常)

2. 收银员逐一扫描商品条形码,系统根据条形码查询商品信息;

2.1 扫描仪坏了,必须支持手工输入条形码;

2.2 商品的条形码无法扫描,必须支持手工输入条形码;

2.3 条形码能够扫描,但查询不到信息,需要收银员和顾客沟通,放弃购买此产品

3. 扫描完毕,系统显示商品总额,收银员告诉顾客商品总额;

(这一步没有异常)

4. 顾客将钱交给收银员;

4.1 顾客的钱不够,顾客和收银员沟通,删除某商品;

4.2 顾客的钱不够,顾客和收银员沟通,删除某类商品中的一个或几个(例如买了5包烟,去掉两包)

4.3 顾客觉得某个商品价格太高,要求删除某商品;

4-A:顾客使用信用卡支付

4-A.1 信用卡支付流程(请读者自行思考完善,可以写在这里,如果太多,也可以另外写一个子用例)

4-B:顾客使用购物卡支付

4-B.1 购物卡支付流程

4-C:顾客使用会员卡积分支付

4-C.1 会员卡积分支付流程

5. 收银员清点钱数,输入收到的款额,系统给出找零的数目;

(这一步没有异常)

6. 收银员将找零的钱还给顾客,并打印小票;

7. 买单完成,顾客携带商品和小票离开;

【用例价值】

顾客买完单以后,就可以携带商品离开,而超市也将得到收入;

【约束和限制】

1. POS机必须符合国标XXX;

2. 键盘使用中文,因为收银员都是中国人;

3. 一次买单数额不能超过99999RMB;

4. POS机要非常稳定,至少一天内不要出现故障;

经过上面步步为营,逐步细化和求精,我们已经得到了一个比较完善的需求了,这个过程中并没有高深的技巧,也没有涉及需要丰富的经验。

有的读者可能会有疑问:我怎么知道第4步有那些异常、那些替代方案呢?

其实很简单:问你的客户!客户是最清楚了,但如果你不问,嘿嘿,客户倒不一定会告诉你:)

但只要我们掌握了NEA用例分析方法,即使客户忘记了,或者没有意识到,我们也会将需求挖出来,这样需求就不会遗漏。

【要画图么?】

大家可以看到,我们在前面进行用例分析的时候,并没有看到任何图,而是纯文本!

对于那些UML狂热分子来说,这可能是难以接受的,怎么能没有图呢?UML中的用例图不就是用来分析需求的么?

我们当然不怀疑UML的权威性,但任何东西都有局限性,UML也不例外。UML的局限就在于UML是一个建模的语言,就像汉语、英语一样,只是一种表达形式,而不是一种分析和创作方式。

比如说你会汉语,但并不代表你就能写小说,你会画UML用例图,但并不代表你就能做需求分析。相反,必须是有了需求和用例之后,才有用例图,说白了,用例图是用例的图形化描述,但是它并不能取代用例。

除了UML本身的局限性外,还有另外一个更重要的原因:用例是客户和公司关于产品的一个共同认识!一般情况下,市场人员和客户沟通交流,了解客户的需求,然后和客户一一确认,最后形成需求文档。在这个过程中,主要是客户和市场人员参与,而没有研发的人员参与。

对于客户来说,他肯定是以自然语言,而不会用UML来描述需求;对于市场人员来说也一样,他可能对UML一窍不通,甚至他以前可能都是卖医疗器械,甚至有可能是狗皮膏药的,他还管你什么软件工程,什么UML?

所以,采用用例方法分析需求的时候,我们都是采用纯文本来描述需求的,而不会采用用例图来分析需求

时间: 2024-10-26 13:59:47

用例分析的相关文章

LoadRunner性能测试样例分析

LR性能测试结果样例分析 测试结果分析 LoadRunner性能测试结果分析是个复杂的过程,通常可以从结果摘要.并发数.平均事务响应时间.每秒点击数.业务成功率.系统资源.网页细分图.Web服务器资源.数据库服务器资源等几个方面分析,如图1- 1所示.性能测试结果分析的一个重要的原则是以性能测试的需求指标为导向.我们回顾一下本次性能测试的目的,正如 所列的指标,本次测试的要求是验证在30分钟内完成2000次用户登录系统,然后进行考勤业务,最后退出,在业务操作过程中页面的响应时间不超过3秒,并且服

日志表设计一例分析

关于关系表的设计归根结底有两个方面.第一,就是完全按照范式理论去设计,一般来说达到第三范式就可以了,或者你可以划分的更细到达更上一层次.比如第四,第五,第六等等.这种设计有自己的可读性很强,但是有一点,在检索数据的时候增加了多张关系表来做关联的开销.第二,就是在范式理论上适当的做些反范式,有的东西还是不要太剥离的好.(窄表以及宽表) 这点和软件设计中的紧耦合松耦合理论一致. 下面我就以常用的LOG表来做下演示,其中有两种表的实际,一种是窄表,一种是稍微宽一点的表.窄表:log_ytt mysql

需求用例分析之异常流

问题的引出 备选流,又称备选事件流,英文是Alternative Flow.在RUP和UML中,备选流的解释如下:备选事件流包括与正常行为相关的可选或异常特征的行为,同时也包括正常行为的各种变形.您可以将备选事件流看作是基本事件流的"绕行道",有些备选事件流将返回到基本事件流,而有些将结束此用例的执行. 分析RUP对于备选流的定义,可以看到备选流可以分成两类: 1,不同做法但仍然达成用例目标: 2,异常情况,无法达成用例目标. 在实际用例分析中,由于备选流可能存在两种情况,导致备选流存

用例分析技术阅读笔记一

用例分析技术小结 前言 现在RUP如日中天,需求分析是第一步,可以看作是高级系统分析员的必备知识,那么,如果用面向对象的分析技术来描述需求呢? 在一个需求分析过程中,主要有项目描述,风险分析,用例图以及描述,项目建议这几部分. 其中最重要的,也是最需要学习的就是用例的描述.那么用例的描述关键点在哪里呢? 确定系统边界 确定清晰的系统边界,就是要确定系统中有什么?系统外有什么?通过执行者和用例来确定系统边界. 那么,我们第一步就是要找出执行者,执行者是一个角色,我们可以根据以下几个问题来思考决定一

需求用例分析之二:级别设置

在<编写有效用例>(阿莱斯特-科伯恩著,下面用科伯恩用例来指代)一书中,赋予了用例不同的级别,科伯恩形象的设定了例如以下级别:海平面.云朵.风筝.蛤等等. 科伯恩建议用例级别分为多个个目标层次:概要.用户目标.子功能,书写需求用例时,仅仅能选择其一,以下对其详细说明: 概要:包含多个用户目标,它有"显示相关目标的生命周期顺序"和"为低层用例提供一个文件夹表"的功能,概要用例通常须要运行几个小时.几天.几个星期.几个月.甚至几年. 用户目标:它是主运行者努

苍狼敏捷需求用例分析方法简介并讲义下载

作者:张克强    作者微博:张克强-敏捷307 用例分析方法已经有不短的历史,发展出了多种用例分析方法.笔者花费了大量时间,对用例分析的各个方面进行实践和分析,得到如下系列文章: 需求用例分析之一:异常流 需求用例分析之二:级别设置需求用例分析之三:补充规约 需求用例分析之四:业务规则 需求用例分析之五:业务用例之Rational系 需求用例分析之六:业务用例之科伯恩系 需求用例分析之七:业务用例之小结 需求用例分析之八:用例颗粒度 在这些分析的基础上与及笔者的实践,总结整理得到"苍狼敏捷需求

需求用例分析之备选流

#用例分析#之备选流 alternative flow-这是用例方法中最混淆之处,不管中文还是英文.都出现很多不同的理解和不同的做法.问题在于备选流字面意思模糊,能够是可选的不同做法,也能够说异常.也能够是导致失败的情况.可叹的是,其原定义是清楚的:无法达成用例目标的情况.但它起了个不恰当的名字 或许是由于这个混乱,导致出现了"主成功场景"替代基本流,"扩展场景"来替代备选流的做法. 这与用例的优雅的初衷事实上是不相符的.用例之优雅在于对场景的抽象.而不是直接铺陈场

需求用例分析之业务规则

作者:张克强 作者微博:张克强-敏捷307 在雅各布森用例分析方法和科伯恩用例分析方法中其实都没有"业务规则"的属性,在科伯恩方法中有个相近的属性是约束条件.但是业界使用中常常会给用例加上这个属性,这是为什么呢?为什么两位大师没有加上,是大师们疏忽了?而为什么不少人加上了呢? 从时间和传播上很容易推断,业务规则的来源是传统的需求规格说明书.在传统的需求规格说明书中,整理提炼业务规则或称业务逻辑是其中核心的分析产物.受到传统需求规格说明书的深远影响,不少人觉得这样的业务规则是值得写的用例

需求用例分析之补充规约

补充规约在RUP中是记录那些在用例模型的用例中不容易体现出来的系统需求.这些需求包括: § 法律法规方面的需求和应用标准. § 要建立的系统质量属性,包括可用性需求.可靠性需求.性能需求和可支持性需求. § 其他需求,诸如操作系统和操作环境.兼容性需求以及设计约束. 补充规约是对用例模型的重要补充.补充规约和用例模型应该一起获取对系统的一整套需求. 通过以上文字可以知道,补充规约是全局性的要求,与上述c文中的"全局规则"极为接近.而中文中"补充规约"的说法让不少人以