1、手机端页面文档仅支持阅读 15 页,超过 15 页的文档需使用电脑才能全文阅读。
2、下载的内容跟在线预览是一致的,下载后除PDF外均可任意编辑、修改。
3、所有文档均不包含其他附件,文中所提的附件、附录,在线看不到的下载也不会有。
寻找参与者所谓的参与者是指所有存在于系统外部并与系统进行交互的人或其他系统。
通俗地讲,参与者就是我们所要定义系统的使用者。
寻找参与者可以从以下问题入手系统开发完成之后,有哪些人会使用这个系统系统需要从哪些人或其他系统中获得数据系统会为哪些人或其他系统提供数据系统会与哪些其他系统相关联系统是由谁来维护和管理的这些问题有助于我们抽象出系统的参与者。
对于机的例子,回答这些问题可以使我们找到更多的参与者操作员负责维护和管理机系统机也需要与后台服务器进行通讯以获得有关用户帐号的相关信息。
系统边界决定了参与者参与者是由系统的边界所决定的,如果我们所要定义的系统边界仅限于机本身,那么后台服务器就是个外部的系统,可以抽象为个参与者。
如果我们所要定义的系统边界扩大至整个银行系统,机和后台服务器都是整个银行系统的部分,这时候后台服务器就不再被抽象成为个参与者。
值得注意的是,用例建模时不要将些系统的组成结构作为参与者来进行抽象,如在机系统中,打印机只是系统的个组成部分,不应将它抽象成个的参与者在个管理系统中,数据库系统往往只作为系统的个组成部分,般不将其单独抽象成个参与者。
特殊的参与者系统时钟有时候我们需要在系统内部定时地执行些操作,如检测系统资源使用情况定期地生成统计报表等等。
从表面上看,这些操作并不是由外部的人或系统触发的,应该怎样用用例方法来表述这类功能需求呢对于这种情况,我们可以抽象出个系统时钟或定时器参与者,利用该参与者来触发这类定时操作。
从逻辑上,这参与者应该被理解成是系统外部的,由它来触发系统所提供的用例对话。
确定用例找到参与者之后,我们就可以根据参与者来确定系统的用例,主要是看各参与者需要系统提供什么样的服务,或者说参与者是如何使用系统的。
寻找用例可以从以下问题入手针对每个参与者参与者为什么要使用该系统参与者是否会在系统中创建修改删除访问存储数据如果是的话,参与者又是如何来完成这些操作的参与者是否会将外部的些事件通知给该系统系统是否会将内部的些事件通知该参与者综合以上所述,系统的用例图可表示如下,在用例的抽取过程中,必须注意用例必须是由个主角触发而产生的活动,即每个用例至少应该涉及个主角。
如果存在与主角不进行交互的用例,就可以考虑将其并入其他用例或者是检查该用例相对应的参与者是否被遗漏,如果是,则补上该参与者。
反之,每个参与者也必须至少涉及到个用例,如果发现有不与任何用例相关联的参与者存在,就应该考虑该参与者是如何与系统发生对话的,或者由参与者确定个新的用例,或者该参与者是个多余的模型元素,应该将其删除。
可视化建模的主要目的之就是要增强团队的沟通,用例模型必须是易于理解的。
用例建模往往是个团队开发的过程,系统分析员在建模过程中必须注意参与者和用例的名称应该符合定的命名约定,这样整个用例模型才能够符合定的风格。
如参与者的名称般都是名词,用例名称般都是动宾词组等。
对于同个系统,不同的人对于参与者和用例都可能有不同的抽象结果,因而得到不同的用例模型。
我们需要在多个用例模型方案中选择种最佳或较佳的结果,个好的用例模型应该能够容易被不同的涉众所理解,并且不同的涉众对于同用例模型的理解应该是致的。
描述用例规约应该避免这样种误解认为由参与者和用例构成的用例图就是用例模型,用例图只是在总体上大致描述了系统所能提供的各种服务,让我们对于系统的功能有个总体的认识。
除此之外,我们还需要描述每个有例的详细信息,这些信息包含在用例规约中,用例模型是由用例图和每个用例的详细描述用例规约所组成的。
中提供了用例规约的模板,每个用例的用例规约都应该包含以下内容简要说明简要介绍该用例的作用和目的。
事件流包括基本流和备选流,事件流应该表示出所有的场景。
用例场景包括成功场景和失败场景,场景主要是由基本流和备选流组合而成的。
特殊需求描述与该用例相关的非功能性需求包括性能可靠性可用性和可扩展性等和设计约束所使用的操作系统开发工具等。
前置条件执行用例之前系统必会用到被包含用例,具体地讲,就是将被包含用例的事件流插入到基础用例的事件流中。
包含关系是中的表述,在中,同等语义的关系被表述为使用,如下图。
在机中,如果查询取现转帐这三个用例都需要打印个回执给客户,我们就可以把打印回执这部分内容提取出来,抽象成为个单独的用例打印回执,而原有的查询取现转帐三个例都会包含这个用例。
每当以后要对打印回执部分的需求进行修改时,就只需要改动个用例,而不用在每个用例都作相应修改,这样就提高了用例模型的可维护性。
在基础用例的事件流中,我们只需要引用被包含用例即可。
查询基本事件流用户插入信用卡输入密码选择查询查看帐号余额包含用例打印回执退出系统,取回信用卡在这个例子中,多个用例需要用到同段行为,我们可以把这段共同的行为单独抽象成为个用例,然后让其他的用例来包含这用例。
从而避免在多个用例中重复性地描述同段行为,也可以防止该段行为在多个用例中的描述出现不致性。
当需要修改这段公共的需求时,我们也只需要修改个用例,避免同时修改多个用例而产生的不致性和重复性工作。
有时当个用例的事件流过于复杂时,为了简化用例的描述,我们也可以把段事件流抽象成为个被包含的用例。
这种情况类似于在过程设计语言中,将程序的段算法封装成个子过程,然后再从主程序中调用这子过程。
扩展扩展关系如下图所示,基础用例中定义有至多个已命名的扩展点,扩展关系是指将扩展用例的事件流在定的条件下按照相应的扩展点插入到基础用例中。
对于包含关系而言,子用例中的事件流是定插入到基础用例中去的,并且插入点只有个。
而扩展关系可以根据定的条件来决定是否将扩展用例的事件流插入基础用例事件流,并且插入点可以有多个。
例如对于电话业务,可以在基本通话业务上扩展出些增值业务如呼叫等待和呼叫转移。
我们可以用扩展关系将这些业务的用例模型描述如下。
在这个例子中,呼叫等待和呼叫转移都是对基本通话用例的扩展,但是这两个用例只有在定的条件下如应答方正忙或应答方无应答才会将被扩展用例的事件流嵌入基本通话用例的扩展点,并重用基本通话用例中的事件流。
值得注意的是扩展用例的事件流往往可以也可抽象为基础用例的备选流,如上例中的呼叫等待和呼叫转移都可以作为基本通话用例的备选流而存在。
但是基本通话用例已经是个很复杂的用例了,选用扩展关系将增值业务抽象成为单独的用例可以避免基础用例过于复杂,并且把些可选的操作封装在另外的用例中。
泛化当多个用例共同拥有种类似的结构和行为的时候,我们可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。
在用例的泛化关系中,子用例是父用例的种特殊形式,子用例继承了父用例所有的结构行为和关系。
在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。
以下是个用例泛化关系的例子,执行交易是种交易抽象,执行房产交易和执行证券交易都是种特殊的交易形式。
用例泛化关系中的事件流示例如下调整用例模型用例模型建成之后,我们可以对用例模型进行检视,看是否可以进步简化用例模型提高重用程度增加模型的可维护性。
主要可以从以下检查点入手用例之间是否相互如果两个用例总是以同样的顺序被激活,可能需要将它们合并为个用例。
多个用例之间是否有非常相似的行为或事件流如果有,可以考虑将它们合并为个用例。
用例事件流的部分是否已被构建为另个用例如果是,可以让该用例包含另用例。
是否应该将个用例的事件流插入另个用例的事件流中如果是,利用与另个用例的扩展关系来建立此模型。
管理用例模型复杂度般小型的系统,其用例模型中包含的参与者和用例不会太多,个用例图就可以容纳所有的参与者,所有的参与者和用例也可以并存于同个层次结构中。
对于较复杂的大中型系统,用例模型中的参与者和用例会大大增加,我们需要些方法来有效地管理由于规模上升而造成的复杂度。
用例包包是中最常用的管理模型复杂度的机制,包也是中语义最简单的种模型元素,它就是种容器,在包中可以容纳其他任意的模型元素包括其他的包。
在用例模型中,我们可以用构造型来扩展标准包的语义,这种新的包叫作用例包,用于分类管理用例模型中的模型元素。
我们可以根据参与者和用例的特性来对它们进行分类,分别置于不同的用例包管理之下。
例如对于个大型的企业管理信息系统,我们可以根据参与者和用例的内容将它们分别归于人力资源财务采购销售客务服务这些用例包之下。
这样我们将整个用例模型划分成为两个层次,在第层次我们看到的是系统功能总共分为五部分,在第二层次我们可以分别看到每用例包内部的参与者和用例。
个用例模型需要有多少个用例包取决你想怎么样来管理用例模型的复杂度包括参与者和用例的个数,以及它们之间的相互关系。
中的包其实就类似于文件系统中的目录,文件数量少的时候不需要额外的目录,文件数量多就需要有多个目录来分类管理,同样组文件不同的人会创建不同的目录结构来进行管理,关键是要保证在目录结构下每个文件都要易于访问。
同样的道理存在于用例建模之中,如何创建用例包以及用例包的个数取决于不同的系统和系统分析员,但要保证整个用例模型易于理解。
用例的粒度我的系统需要有多少个用例这是很多人在用例建模时会产生的疑惑。
描述同个系统,不同的人会产生不同的用例模型。
例如对于各种系统中常见的维护用户用例,它里面包含了添加用户修改用户信息删除用户等操作,这些操作在该用例的事件流可以表述成为基本流的子事件流。
维护用户基本事件流该基本流由三个子事件流构成添加用户子事件流修改用户子事件流删除用户子事件流但是你也可以根据该用例中的具体操作把它抽象成为三个用例,它所表示的系统需求和单个用例的模型是完全样的。
应该如何确定用例的粒度呢在次技术研讨会上,有人问起博士,个系统需
