用例

✍ dations ◷ 2025-09-12 18:22:54 #用例

用例(英语:use case),或译使用案例、用况,是软件工程或系统工程中对系统如何反应外界请求的描述,是一种通过用户的使用场景来获取需求的技术。每个用例提供了一个或多个,该场景说明了系统是如何和最终用户或其它系统互动,也就是谁可以用系统做什么,从而获得一个明确的业务目标。编写用例时要避免使用技术术语,而应该用最终用户或者的语言。用例一般是由软件开发者和最终用户共同创作的。

在1986年,Ivar Jacobson,UML和瑞理统一过程的重要贡献者,提出了用例的概念。Jacobson的思想很有影响力,也很有发展力。之后在这个科目上又有很多贡献,在定义用例是什么和怎么有效的书写用例方面最重要,最有影响力也最全面的,是Alistair Cockburn,他写的书籍是《编写有效用例》。

用例迅速成为获取功能需求最常用的手段。用例最初是和面向对象一同提出的。但是它不止局限于面向对象系统,因为用例实质上不是面向对象。

由于不少测试工程师将测试用例简称为用例,为便于区分两者,将原来的Use case (页面存档备份,存于互联网档案馆)用例称为需求用例。

测试用例(对应英文Test case (页面存档备份,存于互联网档案馆))已经广为人知,没有歧义,但就文字表面而言,测试用例类似是属于用例,就像红富士苹果属于苹果一样,所以为了更容易区分,需求用例是个更清晰的称呼。

每个用例集中描述如何获得一个业务目标或任务。从传统的软件工程视角来看,用例只是描述了系统的一个特征。所以对大部分软件项目来说,这就意味着需要很多(有可能是数十个)用例来完整的描述新系统。一个特殊软件项目的正规度和项目的不同阶段将会影响每一用例需要的详细程度。

一个用例定义了外部执行者和被考虑的系统之间的交互来实现一个业务目标。执行者是在系统外部和系统交互的人;一个执行者可以是一类用户,用户可以扮演的角色或者其它系统。

用例把系统看作"黑盒",同系统的交互,包括系统的响应都是可以在系统外部感知的。它是一个deliberate policy,因为它简化了需求的描述,避免了对功能如何实现做出假设的陷阱。

用例应该:

用例图并不是画成了图形的用例。用例图包含一组用例。每一用例用椭圆表示,放置在矩形框中;矩形框表示整个系统。矩形框外画如图所示的小人,表示参与者。参与者不一定是人,可以是其他软件、硬件等等。某一参与者与某一用例用线连起来,表示该参与者和该用例有交互。

许多人通过UML认识了用例,UML定义为展现用例的图形符号。UML并没有为描述用例定义书写格式的标准,因此许多人误认为这些图形符号就是用例本身;然而,图形符号只能给出最简单的一个或一组用例的概要。

UML是用例图形符号最流行的标准。但是,还有一些其它的可选择的标准。

Alistair Cockburn在编写有效用例一书中确定了三种书写用例的细度。

摘要用例有很少的句子组成来总结的用例。它十分适合在电子表格中计划软件开发。一个摘要用例能够简单插入电子表格的单元格中并且用表格中的其它列记述业务优先级,技术复杂度,版本号等。

一个非正式的用例由文本段落组成,包括了上面提到的那些列,用总结或故事的形式详细的描述了用例。

一个完整正式或者复杂的用例是一个以包含了不同部分的长模板为基础的正规的文档。该用例在下面的用例模板部分进行讨论。

一些软件开发方法学只需要非正式的用例来定义需求。然而,开发方法学需要完整正式或详细的用例来定义需求。较大且较复杂的项目更需要使用完整正式的用例。

编写详细的或完整的用例,尚无通用的模板(英语:template)。现在存在很多相互竞争的模板。同时,程序员们也被鼓励用那些适合于他们的工作或者他们所做项目的模板,相对于某个指定模板的细节来说,项目的标准化要重要的多,但是这些模板的关键部分都是大体相同的,所以,虽然在某些术语上或者其他一些方面上存在不同,但是这些用例从本质上来说,是大同小异的。

典型部分包括:

不同的模板经常有其它部分,如,假设,异常流,建议,技术要求。也会有行业细节部分。

用例名称为用例提供了一个唯一标识。它要用动/宾格式书写,并且要充分,达到最终用户能够明白用例中描述的是什么。

迭代部分通常需要告知读者用例完成的阶段。最初,为业务分析和确定范围的用例和用于软件开发的用例肯定会有许多不同。老版本的用例可能还在当前文档中,因为它们对不同的用户群可能会有价值。

部分用于在主体完成之前捕获基本场景。它提供了快速的总结,避免了读者浏览全部内容,能够很快的理解该用例的用途。

部分用来表达当用户开始用例时某些条件必须为真。但是它们不是启动用例的触发器。

最低限度,每一个用例都需要描述一个或者典型事件流。主事件流一般是一组有编号的步骤,如:

……其他

用例可能包含第二条路径,或者和主题不同的备选场景。异常或当出错时会发生什么事情也需要描述出来,这种描述可以在备选路径中或者在它本身的部分。备选路径使用基本事件流中的序号来标示在哪一点上同基本场景不同,并且如果合适它从哪一点回到基本场景中。目的是避免不必要的重复信息。

备选流的例子:

异常路径的例子:


部分总结了在场景结束后事务的状态。

业务规则是一些成文的或未成文的规则,对于用例来说它决定了一个组织是如何执行业务的。业务规则是一个特殊种类的假定。它可能适用于某一个用例或者整个用例,甚至整个业务。

说明对于本用例的非功能性要求,典型的是并发情况下的响应时间要求,还有易用性要求等等

用例是一个较新的,比较敏捷的捕获软件需求的形式。用例经常和大的,统一的文档形成对比。这些大文档想要在新系统开始构成前,完整的表达出所有可能的需求,但这种做法通常都是失败的。

用例的几点优势:

用例不是没有局限性:

相关

  • 布兰达·布蕾辛布兰达·安·布莱斯(英语:Brenda Anne Blethyn,闺名布兰达·安·巴特尔[Brenda Anne Bottle],1946年2月20日-),英国女演员,领域横跨剧场、电视与电影。最著名作品为麦克·李1996年的电
  • 袁翰青袁翰青(1905年9月7日-1994年3月2日),江苏南通人,中国有机化学家、化学史家和教育家,中国科学院院士。曾任辅仁大学教授。袁翰青于1929年毕业于清华大学化学系,考入美国伊利诺伊大学
  • Girls' Invasion《Girls' Invasion》 是韩国女子音乐组合Lovelyz的首张正规专辑,于2014年11月17日发行。该专辑共收入9首歌曲,主打歌曲为〈Candy Jelly Love〉。该专辑于2015年3月3日以《Hi~
  • 童婚童婚,或称娃娃婚,泛指下列两种的婚姻关系:在世界逐渐提提倡的妇女与儿童的人权,导致传统的童婚大幅降低,因为它被认为是对儿童不公平与具有危险性。在传统社会里,童婚可能有多种用
  • 谢成谢成(?-1394年),濠州(安徽凤阳)人,明朝初年军事将领,永平侯。其早年跟随朱元璋攻陷滁州、和州、集庆、宁国、婺州、武昌,晋升指挥佥事。后跟随大军征讨中原,并攻陷元大都、庆阳、定西,为
  • Sik-KSik-K(韩语:식케이,1994年2月26日-),本名:权民植(韩语:권민식),为韩国饶舌歌手.曾出演Show Me The Money 4,2013年创立YELLOWS MOB,2016年7月20日发行第一张EP “FLIP”,于202
  • 剧院站 (基辅地铁)剧院站(乌克兰语:Театральна,转写:Teatralna)是基辅地铁斯维亚托申-布罗瓦里线的一个车站,在该站可以换乘希列兹-佩切拉线。剧院站开通于1987年。现在有计划在该站开始
  • 尘埃3《尘埃3》(,游戏美化写法),是一款赛车游戏,属于《科林麦克雷拉力赛》系列第三款作品,由Codemasters开发和出版。然而,“科林麦克雷”的标签已经完全从今代游戏中删去。游戏在欧洲和
  • 嘿!兄弟 (艾维奇歌曲)《嘿!兄弟》(英语:"Hey Brother")是瑞典已故DJ兼唱片制作人艾维奇制作的舞曲单曲,收录于其2013年发行的首张录音室专辑《True(英语:True (Avicii album))》。美国蓝草歌手丹·泰敏斯基(英语:Dan Tyminski)提供人声。歌曲由艾维奇、阿什·普诺里(英语:Ash Pournouri)、萨利姆·法基尔(英语:Salem Al Fakir)、文森特·蓬塔雷(英语:Vincent Pontare)及韦罗妮卡·马焦(英语:Veronica Maggio)填词作曲,并包含了
  • 萨帕尔穆拉特·尼亚佐夫萨帕尔穆拉特·阿塔耶维奇·尼亚佐夫(土库曼语:Saparmyrat Ataýewiç Nyýazow;俄语:Сапармура́т Ата́евич Ния́зов;1940年2月19日-2006年12月21日)是土库曼斯坦政治人物与独裁者,出生于阿哈尔州,土库曼族出身。自1985年12月起成为土共中央第一书记(最高领导人),1991年苏联解体后,经过1992年6月的第二次总统选举,成为土库曼斯坦总统,1999年12月再经第5届人民委员会、长老会议和民族复兴运动联席会议决定授予他终身总统之权利;任内一直实