By 高焕堂 2010/11/01
[ IT史上最完整、最经典的软件框架开发技术宝典 (上百篇经典文章&eBooks) ]
用例(Use Case)概念与需求表述
1. 用例概念的起源
建置系统时,无论是软件系统或其它领域的系统,所面对的第一关就是系统需求(Requirement)。需求就是用户(User)所期待于系统者,也是开发者想藉之而讨好客户的东西。然而用户所期待的,常常远超出开发者的最大能力之所及。由于这种落差是常态,所以我们需要一种有效的方法来让双方逐渐地磨合,进而达成共识(Agreement)。自从1992年Jacobson提出”用例(Use Case)概念以来,它逐渐成为萃取和磨合双方的最常用途径。
采取”用例”的三个步骤是:
- 第一个步骤:就是拿它来表达从用户脑海所萃取的需求知识。这像刚采撷出来的钻石一般很宝贵但没有光彩。
- 因之必需进行第二步骤:就是表达开发者构想中能力所及又创意的卖点。
- 接着进入第三步骤:让两者展开知识与构想的交流,促进磨合,逐渐呈现光彩夺目的好钻石。
2. Why Use Case?
用例在确保系统的可用性(Usability) 上,是个强有力的工具。它擅长于表述用户为什么(Why)要使用(Use)系统,或如何(How)使用系统。想设计出更适用的软件系统时,「使用」才是最重要的问题所在。包括表达出许多「为什么」(Why)。例如,为什么需要这软件?为何用户要去接触这软件?用户欲达成什么事?
当我们用心探索围绕在「使用」的一连串「为什么」问题之后,就能导出高度可用性的软件了。在这过程中,就已厘清了用户的外部行为(External Behavior) ,以及其跟系统的交互情形(Interaction),也因而定义出系统应有的外部行为,以协助用户来完成其工作。于是,可知在我们弄清用户为什么「使用」这系统时,其实就已定义出用户对这系统的需求了。用例能描述用户的外部行为及其与系统的互动情形,也因而表达出了系统的责任(Responsibilities),亦即是用户对系统的需求了。[歡迎光臨 高煥堂 網頁: http://www.cnblogs.com/myEIT/ ]
总之,用例是个强有力的工具让软件人员暂时不考虑软件系统内部的行为和结构,而专注于厘清用户「为什么」去「使用」这系统,搭配敏捷迭代过程,充分正确地掌握用户的最新需求,然后重构系统设计,并迅速落实为代码。
3. 认识Use Case及其剧景(Scenario)
用例描述人们使用某系统时,其使用途径。每个人去使用系统时,其目的是期望系统提供服务或产品。当系统在提供完整的服务或产品的过程中,会执行一连串的小活动﹔在这活动之中,也常会跟用户沟通,取得用户的指示而调整其活动或顺序。例如,人们去麦当劳餐厅买汉堡时,柜台人员会向顾客寻问是「外带」还是「内用」而决定其包装程序。因之,每个人去买汉堡时,其使用「麦当劳服务系统」的途径,包括用户与服务人员的对话(Dialog)过程都可能不一样(例如有人先问价钱,有人先点餐等)。其中,每个人使用系统的途径(或其对话过程)就是个特殊的实例(Instance),特别称为剧景(Scenario)或实景。
虽然每个人使用系统的剧景会有些差异,但是若用户的目标(Goal)是相同的,则其剧景常会极为相似。那么这些类似的剧景的集合就是个类(Class) ,这个类就特别称为”用例(Use Case)”,而其实例就称为”剧景(Scenario)”了。
4. 需求的表述(Representation):基于Use Case模型
Use Case模型包括:用例叙述(Use Case Description)和用例图(Use Case Diagram)。
用例叙述(Use Case Description)
用例叙述是针对用户与系统之间的对话(Dialog)过程,以文字描述出来。根据 Wirfs-Brock 的建议,可只描述用户与系统之间的对话如下:
Use Case叙述
这就是「用例叙述」(Use Case description)了。
用例图(Use Case Diagram)
系统含有许多用例,而环境里的人或物(即用户)在不同时刻,可能扮演不同角色(怀有不同的目的)来使用系统中的不同用例,以取得系统的不同服务。「角色」(Role)代表一群对系统怀有相同兴趣或目的人或物。当这些人或物每次使用系统时,系统就执行一个特定的用例来为其服务,协助其达成目的。角色含有特定的目的,而其目的决定系统中的用例内涵,亦即决定系统应有的功能。
role ─→ goal or goals ─→ use cases
在电影上,我们称扮演某特定角色的人或物为「演员」(Actor) ,于是,在Use Case模型(包含用例叙述和用例图)也称扮演共同角色的用户们为Actor。这Actor 代表「一群」怀有共同目的的用户,在Use Case模型必须表达出Actor 与用例之间的关系,才能让人们去了解与检验用例。
例如在下图里,当您扮演actor 2 时(怀有一个目的),就可使用系统,此时系统就执行use case3来协助您完成目的。同样地当您扮演actor1 时,就可使用use case 1或use case 2来达成您的目的。所以,用例图含有良个基本元素:Actor 及 Use Case。如下图:
这就称为用例图了,其表示了,系统将提供use case 1来协助actor 1达成其目的,也提供use case 2 来达成actor1的另一个目的;此外,也提供ues case 3 来替actor 2达成目的。
以一家餐厅为例
一家餐厅的用例图,可能如下:
有了用例图之后,还可以搭配用例叙述,来表述Actor使用系统之途径,以及系统应有的行为。在此用例叙述里,只描述系统的外部行为,及其与Actor之互动而已,并不描述系统的内部行为。例如,针对上述的用例图里的3 个用例,可各写一个用例叙述来表述之。例如:
用例叙述
这就表示出系统的应用功能和行为了,也就是表述了系统的一项需求了。依样画葫芦,可继续针对另外两个用例:<UC:下午茶>和<UC:预定晚餐>,来撰写它们的用例叙述。☆
[Go Back]