OO系统分析员之路--用例分析系列(2)--用例的类型与粒度
Rose中定义了上述默认类型,但是也可以自定义用例类型。初学用UML建模的人常常在这些类型中迷失,搞不清楚这些类型是什么含义,什么时候该使用什么类型。简单说,需求分析中的各个阶段要描述和分析的目标不同,为表达不同的视角和分析目标,需要使用不同的用例类型。笔者的观点是,用例类型的区分是为了形式上的统一,但用例类型既然可以自定义,它就是一个很灵活的用法,不必墨守成规,大可在工作中根据实际情况定义适合自己项目特点和软件过程的用例类型。不过,默认的用例类型已经几乎可以满足需求分析的各个阶段,自定义的必要性并不大,并且UML的意义就是使用统一的形式描述需求,因此最好使用默认的类型。
说到需求分析阶段,那么需求分析都有些什么阶段呢?一般来说,需求分析要经过业务建模,用例分析和系统建模三个阶段才能完成需求工作,这三个阶段分别做什么笔者会在以后的文章的详细阐述,这里为了说明用例类型的含义和使用,先简单介绍一下。
1、业务建模的目标是通过用例模型的建立来描述用户需求,需求规格说明书通常在这个阶段产生。这个阶段通常使用业务用例和业务用例实现两种类型;
2、用例分析是系统分析员采用OO方法来分析业务用例的过程,这个阶段又称为概念模型阶段。这个阶段通常使用无类型的用例。用例分析是一个过渡过程,但笔者认为其非常重要,业务架构通常在这个阶段产生。
3、系统建模是将用户的业务需求转化为计算机实现的过程。这个阶段通常使用无类型的用例和用例实现两种类型。系统范围,项目计划,系统架构通常在这个阶段形成雏形(在系统分析阶段确定)。
所谓business usecase,是用来描述用户原始需求的,它的含义是站在用户的角度,使用用户的业务术语来描述用户在其业务领域所做的事情。业务用例命名,描述都必须采用纯业务语言,而不能出现计算机术语。因为业务模型是系统分析员与用户讨论需求,达到一致理解的基础,必须使用用户熟悉的,不会有歧义的专业术语以避免系统分析员与用户对同一事件的理解误差。business usecase realization是达到需求可追溯要求的一个连接点,是用户在其业务场景中如何做这一件事的载体。
笔者自己在用例分析和系统建模阶段不区分用例类型,都使用无类型的use case,但在这两个阶段,用例的含义还是有所差别的。用例分析阶段,用例主要是从业务模拟的概念上,从OO的视角来分解、组合业务用例,粗略的建立一个业务架构。而在系统建模阶段,用例主要是从计算机视角描述需求,规定开发范围,作为项目计划的依据,为系统设计做准备。usecase realization的含义可从business use case realization推知。
再来说说用例的粒度问题。
粒度是令人迷惑的。比如在ATM取钱的场景中,取钱,读卡,验证账号,打印回执单等都是可能的用例,显然,取钱包含了后续的其它用例,取钱粒度更大一些,其它用例的粒度则要小一些。到底是一个大的用例合适还是分解成多个小用例合适呢?这个问题并没有一个标准的规则,笔者可以给大家分享的经验是根据阶段不同,使用不同的粒度。在业务建模阶段,用例的粒度以每个用例能够说明一件完整的事情为宜。即一个用例可以描述一项完整的业务流程。这将有助于明确需求范围。例如取钱,报装电话,借书等表达完整业务的用例,而不要细到验证密码,填写申请单,查找书目等业务中的一个步骤。在用例分析阶段,用例的的粒度以每个用例能描述一个完整的事件流为宜。可理解为一个用例描述一项完整业务中的一个步骤。需要注意的是,这个阶段需要采用OO方法,归纳,抽象业务用例中的概念模型。例如,宽带业务需求中有申请报装,申请迁移地址用例,在用例分析时,可归纳和分解为提供申请资料,受理业务,现场安装等多个业务流程中都会使用的概念用例。在系统建模阶段,用例视角是针对计算机的,因此用例的粒度以一个用例能够描述操作者与计算机的一次完整交互为宜。例如,填写申请单,审核申请单,派发任务单等。可理解为一个操作界面,或一个页面流。在RUP中,项目计划要依据系统模型编写,因此另一个可参考的粒度是一个用例的开发工作量在一周左右为宜。
但是上述的粒度选择并不是一个标准,只是在大多数情况下这样的粒度选择是比较合适的。实际中,一个大型系统和一个很小的系统用例粒度选择会有较大差异。这种差异是为了适应不同的需求范围。比如,针对一个50人年的大型项目应该选择更大的粒度,如果用例粒度选择过小,可能出现上百甚至几百个业务用例,造成的后果是需求因为过于细碎和太多而无法控制,较少的用例有助于把握需求范围,不容易遗漏。而针对一个10人月的小项目应该选择小一些的粒度,如果用例粒度选择过大,可能只有几个业务用例,造成的后果是需求因为过于模糊而容易忽略细节。一般来说,一个系统的业务用例定义在多于10个,少于50个之间,否则就应该考虑一下粒度选择是否合适了。
不论粒度如何选择,必须把握的原则是在同一个需求阶段,所有用例的粒度应该是同一个量级的。这应该很好理解,在描述一栋建筑时,我们总是把高度,层数,单元数等合在一起介绍,而把下水道位置,插座数量等合在一起介绍。如果你这样介绍一栋楼:这栋楼有10层,下水道在厨房东南角,预留了15 个插座,共有5个单元,听众一定会觉得云山雾罩,很难在脑子里形成一个清晰的影像。
如果对上面两个问题读者还有疑惑,不用着急,在以后的文章中应该会逐步加深理解。
分享到:
相关推荐
【OO系统分析员之路--用例分析系列】是一组关于用例分析的教程,适合初学者和有一定经验的系统分析员。本系列共八篇文章,旨在深入解析面向对象(OO)系统分析中的用例分析技术,帮助读者理解和掌握用例在需求分析中...
按照原先的设想,应该开始动手写如何从业务用例转化到概念用例和系统用例,不过老实说这一步需要的是经验居多,而很难找出一个普适的步骤来。先暂时放一放吧,以后一定会写到的。上一篇讲到用例分析的一般步骤和方法...
基本模块测试包括了了解控制台基本操作、设置第一条策略、查看操作日志及基本事件、策略及日志的操作管理、控制台管理员操作日志审计、安全检测等测试用例。文档操作管控模块测试包括了查看本地文档操作记录、查看...
4. **因果图法**:通过建立输入与输出之间的因果关系模型来设计测试用例。 5. **决策表法**:适用于处理多条件的组合测试,能够清晰地表示各种条件组合下的预期行为。 #### 三、等价类划分法 **等价类划分法**是一...
这是我做的关于 新浪空间-访客-测试用例
python-xmind--测试用例数量统计
在软件开发过程中,测试用例是确保产品质量的关键环节,它定义了对软件进行验证和确认的一系列步骤,包括输入数据、预期输出和测试步骤。本文将深入探讨测试用例规程,帮助读者理解和实施高效、规范的软件测试。 ...
2. **简洁的名称**:用例名称应简短且具有描述性,能一眼看出该用例的目的,例如“登录系统”。 3. **基本流(Primary Flow)**:描述正常情况下,参与者如何与系统进行交互,完成预期功能的步骤。 4. **备选流...
2021最新产品需求模板系列-ERP系统测试用例经典文档.doc
在软件测试过程中,测试用例的设计与管理是关键步骤之一,它确保了产品功能的全面性和质量的可靠性。本文将详细介绍如何在TestDirector (TD) 中进行自定义用例描述和导入,以及如何添加优先级列。 首先,我们来探讨...
#### 七、用例的类型与格式 - **黑箱用例**: 关注系统的外部表现而非内部实现细节。 - **简洁用例**: 提供简短的描述,适用于描述主要的成功场景。 - **临时用例**: 采用非正式的语言描述多个场景。 - **详述用例**...
【SRA2021-G03-测试用例1.01】是云端知识库APP的测试用例文档,该文档主要包含了针对该应用程序不同功能模块的详细测试方案,旨在确保软件的质量和稳定性。以下是根据标题、描述和部分内容解析出的相关知识点: 1. ...
测试用例是软件开发过程中的重要组成部分,它们用于验证系统是否按照预期的功能和性能标准运行。在这个场景中,我们关注的是“渔乐生活”APP的管理员功能,特别是关于群组管理和动态审核的相关测试用例。 首先,让...
软件测试-共通测试用例,整理了一下一些项目存在的共通项的测试用例
BS EN 60068-2-6-2008 用例第2-6部分:测试——测试Fc:振动(正弦).pdf