——对用例模型及其应用的一次有益的探讨
前言:这是一次对用例模型的探讨。怎样建立用例模型,怎样编写用例说明,它与需求规格说明书有什么区别,它能替代需求规格说明书吗?也许在这里可以找到你要的答案。
进入软件业稍微久一点儿的人恐怕都不会陌生,软件开发的最初阶段都是谈需求、写需求规格说明书。需求规格说明书是与客户最终确认到纸上的,非常正式的公文。软件开发应当做什么,做成什么样子,什么东西不做,项目范围有多宽,需求规格说明书都是白纸黑字写得清清楚楚,谁都无法抵赖。所以,需求规格说明书一直都是软件项目开发合同的重要附件,地位相当重要。
但是,随着RUP的引入,人们开始困惑了。在RUP中没有需求规格说明书,而是为用例模型所替代。现在,一些信息化走在比较前列的公司,都纷纷要求按照RUP统一过程进行开发,我们也开始尝试使用用例模型来替代需求规格说明书。然而,相信一些关于用例模型的几个重要问题一直困惑着不少人(当然也包括我):用例模型与需求规格说明书的区别在哪里?用例模型的优势在哪里?用例模型能替代需求规格说明书吗?围绕着这几个问题我们进行一次用例模型的探讨之旅吧。
在开始我的探讨之旅之前,我们最好能带上一个问题去探讨:
用例模型与需求规格说明书的区别在哪里?
看到这个问题,你也许会非常不屑一顾,认为这个问题不值一提。确实,在编写格式上,用例模型与需求规格说明书的差别显而易见。但是,从更深层次来讨论,你会发现,这个问题并不是那么简单。有些人由于对用例模型的肤浅认识,将用例模型当成需求规格说明书来写,格式虽说是用例模型的格式,内容却不是用例模型的内容,换汤不换药,反倒弄巧成拙,让人困惑。需求规格说明书是面向过程时代的产物,因此它的核心就是按照面向过程的设计思想编写需求;用例模型是面向对象分析/设计的产物,因此它的核心思想就是OOA/D(面向对象分析/设计)。我认为,把握这一点实在太重要了。明白了它,才能明白用例模型应当怎样设计,才能明白它与需求规格说明书的区别,才能明白其作用和优势在何处。下面,我们看看用例模型应当怎么设计。
如何建立用例模型
一些初学者认为,用例模型就是画张用例图。其实这是错误的,用例模型包括用例图、用例说明,有时还要辅之一些简单的行动图、状态图和序列图。用例图采用图形的方式,形象生动地展现了用例、参与者和系统边界之间的关系。而用例说明,是对用例、参与者和系统边界进行的详细描述。在描述过程中,还可以对一些关键的流程,以及这些流程中关键类的状态变化,使用行动图、状态图和序列图进行图形化地展现。
一.用例图
用例图是建立用例模型的开始。用例模型的建立过程通常都是:先画用例图,然后对用例图编写用例说明。在编写用例说明的时候,对一些复杂的、认为有必要的地方,绘制行动图、状态图和序列图,方便阅读者理解。用例图关注的是三部分内容:用例、参与者和系统边界。
1.用例
用例就是一个用来描述参与者如何使用系统来实现其目标的一组场景的集合。这句话听起来比较抽象,但我通常都把它暂时理解为功能中的模块(虽然这并不严密,但更加实用)。用例强调的是一组场景,在这组场景不多但相互之间存在功能上的共性,就像一个大功能模块下的多个子模块。这组场景中的每一个,又分别形成一个个子用例。子用例再细分,又可以再形成各自的子用例。用例分析就是这样由粗到细的逐步细分,从而形成一系统的用例图。用例图分析到多细,应当由业务需求的情况决定。分得过粗,就不足以说清楚业务的相关细节,或者使一张用例图信息过多,影响人们的理解;分得过细,不仅会增加工作量,还会丢失许多用例间的相互关系,得不偿失。总之,较为复杂的部分细一些,简单的部分粗一些,保证每个用例图都保持强烈的相关性,指导日后的功能划分。
同时,用例强调的是参与者与系统功能的交互,用例就是系统的功能,而参与者可以暂时理解为使用系统的人。因此,大多数用例都对应着一个或数个参与者(但部分从用例中包含着的子用例,或扩展出来的扩展用例没有参与者)。
用例与用例之间通常有两种关系:包含与扩展。包含关系表示一种从属关系,即子用例是主用例中相对独立的、必须调用的一部分功能。在用例分析中,我们应当将多个用例都共有的、相对独立的功能提取出来形成一个子用例,为日后代码复用提供有力保障。扩展关系表示一个功能是对另一个功能的扩展,即被扩展功能不一定调用扩展功能,但扩展功能是对被扩展功能的加强与延伸。在绘制用例关系时,包含关系应绘制成从主用例指向子用例的虚线箭头,并标注为“include”,表示主用例包含子用例;扩展关系应绘制成从扩展用例指向被扩展用例的虚线箭头,并标注为“extend”,表示扩展用例是对被扩展用例的扩展。虚线箭头在UML中代表的是一种依赖关系,即客户元素了解供应者,并且供应者的变化会影响到客户元素(依赖是从客户元素指向供应者的)。
封装性是面向对象设计的重要思想之一。而实现封装的前提之一,就是要对需求进行整理的基础上加以功能划分,使具有强烈相关性的功能划分在一起,只有少量接口与外界交互。用例分析,从一开始就对原始需求进行了功能划分,将相关功能划分到一起,将共有功能提取出来,标志出功能间的依赖与非依赖关系(包含表示的是一种依赖关系,而扩展表示的是一种非依赖关系)。这是一种OOA/D,它为日后的OO设计提供了强有力地支持。而这些都是需求规格说明书所不具有,或者不完全具体的功能。
2.参与者
现在再来说说参与者。参与者给大家最直观的认识就是操作这个系统的那些人,但更准确的说应当是操作这个系统的那些角色。用例模型要求我们描述清楚系统中的每一个场景的每一步操作,操作者是谁。同时,我们关注的这个操作者并不是某个具体的人,而是一群有着相同职责的人,即角色。用例模型中对参与者的分析,为我们之后在开发过程中,进行功能、角色、用户的划分提供了依据。
用例模型中的参与者,除了表示操作系统的人,还表示处于系统边界之外,与系统边界内的用例有关联的其它系统。因此,只有定义好一个系统的边界,才能定义哪些是这个系统内的用例,哪些是这个系统内外的参与者。用例模型对本系统与其它系统相互关联的分析,为我们日后开发过程中,为其它系统提供接口,或与其它系统进行接口,提供了依据。
参与者之间的关系只有一种——继承关系,表示功能职责上的继承。譬如,通常软件系统中都有“普通操作者”,代表的是进入系统的所有用户都应当具有的功能。而软件系统又有很多“特殊职能者”,他们除了具有普通操作者的功能外,还有自己独特的功能。在这里,“特殊职能者”是对“普通操作者”的继承,继承了“普通操作者”的所有功能。然而,“特殊职能者”又有“普通操作者”不具备的,自己独特的功能。
参与者与用例之间是一种关联关系,即实线表示。通常,参与者与用例之间的关系不用定义导航关系(即画出箭头),但部分UML的书籍也定义了这种导航关系。如果参与者要使用用例,则箭头从参与者指向用例;如果参与者要接受用例提供的数据或查询结果,则箭头从用例指向参与者。
用例分析将参与者放到了一个十分显著的位置,同时还关注的参与者的期望(即“涉众利益”,在后面详细描述),这也是需求规格说明书所不具有的。
3.系统边界
系统边界是一个软件系统需要处理的整个问题空间的范围。一个软件系统不可能处理所有问题,我们必须得给它定义这个问题空间的范围。哪些是我们这个软件可以处理的,哪些则是我们这个软件不能处理的,也就是项目管理中所说的项目范围。与需求规格说明书相比,用例分析通过图形的方式,更加明确地定义出了项目范围,以及与其它系统之间的关系,使其更加清楚明了。
相关文章:
《 谈谈用例模型的那些事儿 之 用例说明 》
《 谈谈用例模型的那些事儿 之 注意什么 》
- 描述: 包含与扩展
- 大小: 57.1 KB
- 描述: 参与者的继承关系
- 大小: 11.1 KB
- 描述: 参与者与用例的关系
- 大小: 7.3 KB
分享到:
相关推荐
软件工程网上图书销售系统用例模型及用例图 软件工程网上图书销售系统用例模型及用例图是软件工程领域中一个重要的概念,涉及到用例模型和用例图的设计及实现。下面将对该系统的用例模型及用例图进行详细的解释。 ...
软件工程网上图书销售系统用例模型及用例图借鉴 软件工程中的用例模型和用例图是一种非常重要的需求分析技术,它们可以帮助开发者和客户之间进行更好地沟通,确保软件系统能够满足客户的需求。本文档主要介绍了一个...
在UML中,把用用例图建立起来的系统模型称为用例模型,一个用例模型若干个用例图描述。用例模型描述的是外部行为者(actor)所理解的系统功能,使用用例模型代替传统的功能说明往往能更好地获取用户需求,它所回答的...
4. **表示用例图**:用椭圆表示用例,直线连接参与者与用例,表示它们之间的关系。用例图通常包含用例名称、简短描述和参与者图标。 **建立用例描述** 用例描述提供了更详细的场景说明,包括以下几个部分: 1. **...
本文档是关于图书管理系统用例建模报告的内容,涵盖了用例图、类图、时序图等重要的UML建模元素。该报告的目的是对学校的图书馆管理系统进行需求分析,并使用UML对系统进行建模。 在用例图中,报告描述了读者和管理...
点名系统用例图描述了三个主要角色的交互,包括注册、登录系统、维护个人信息、选出学生名单、制定评分标准、记录成绩、查询成绩、修改成绩、统计平时成绩和打印报表等操作。其中,注册和登录是用户使用系统的基础,...
软件工程上机实践模型,用VISIO创建,内含多种用例示例!
用例和用例图是UML中两种重要的模型元素。用例(Use Case)是系统的功能描述,描述系统如何满足用户或参与者的需求;用例图(Use Case Diagram)是一种静态模型,描述系统的参与者、用例和它们之间的关系。本实验...
用例描述用来详细描述用例图中每个用例,用文本文档来完成。用例描述一般包括:简要描述、前置条件、基本事件流、其他事件流、异常事件流、后置条件等。 例如,在车辆购置管理中,我们可以添加一个车辆购置申请用例...
UML通过五类图来定义系统模型,分别是用例图、静态图(包括类图、对象图和包图)、行为图(状态图和活动图)、交互图(顺序图和合作图)以及实现图(构件图和配置图)。每类图都有其特定的应用场景,如用例图用于...
通过用例图的绘制,我们可以详细地了解每个用例的具体内容和用例之间的逻辑关系,这对于后续的系统开发至关重要。 综上所述,通过结合UML和OOA方法来设计网上购物系统的用例图,我们能够清晰地表达系统需求,明确...
用例分析与用例图
本实验重点在于理解并应用UML中的关键概念,包括类图、用例图、用例文档以及需求模型检查矩阵,这些都是软件体系结构设计的重要组成部分。 首先,我们来探讨类图。类图是UML中描述类和它们之间关系的图形表示。它...
用例图说明了用例模型中的关系。用例图(User Case)是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。
QQ群用例图是软件工程领域中用于描述用户与系统交互的一种图形化表示方式,它在设计阶段扮演着至关重要的角色。用例图是统一建模语言(UML)的一部分,通过这种图表,我们可以清晰地了解QQ群功能的核心需求和用户...
这是关于网上订餐的主用例图,仅供参考。文档里面没有字符,必须要下载visuo
在IT行业中,用例图是一种常用的UML(统一建模语言)工具,它用来描绘系统中用户(参与者)与系统之间的交互。在这个场景下,我们分析的服务子系统包含多个用例,分别是: 1. **预订订单 (用例标识号:001)**:此...
首先,UML用例图由几个核心元素构成:参与者(Actor)、用例(Use Case)和关系。参与者代表系统外的实体,如用户或外部系统;用例则表示系统提供的功能或服务。关系则是连接参与者和用例,以及用例之间的一种纽带,...