版型(stereotype),是对一个UML元素基础定义的扩展,在同一个元素基础定义的基础上赋予特别的含义,使得这个元素适用于特定的场合。
建模是从寻找抽象角度开始的,那么定义人,就是定义参与者,就是我们寻找抽象角度的开始。
actor是在系统之外与系统交互的某人或某事物。
参与者只可能存在边界之外,边界之内所有人和事物都不是参与者
要弄懂谁是参与者,首先弄懂系统边界,可以通过回答下面两个问题确定:
参与者可以非人
例如有这样一个需求:每天自动统计网页访问量,生成统计报表,并发送至管理员信箱。这个需求的参与者是谁?(计时器)
任何需求都必须至少有一个启动者,如果找不到启动者,那么可以肯定地说这不是一个功能性需求。
例如这样一个需求:客户提出要建立的系统界面要很友好,在每个页面上都要有操作提示
。这个要求就找不到启动者,我们可以肯定他不是一个功能性需求
那它是什么呢?实际上它是补充规约中的一个要求,具体说是系统可用性的一个具体要求。
参与者的一个重要来源是涉众,从涉众中找出那些直接对系统发出动作,或者直接从系统中接收反馈的涉众。
另一个来源是客户岗位设置,为他假定一个参与者
可以询问以下问题以帮助确定参与者
:
查找参与者时,参与者一定是直接并且主动地向系统发出动作并获得反馈的,否则就不是参与者
业务主角是参与者的一个版型,特别用于定义业务的参与者,在需求阶段使用。
在软件项目里,业务范围和系统范围是不同的。
业务主角的特殊性在于,它针对的是业务任务而非计算机用户,没有抽象的计算机角色。必须在实际业务里找到对应的岗位或人员
要建设一个符合客户需要的计算机系统,首要条件是完全彻底地搞清楚客户的业务,而不是预先假设已经有了一个计算机系统,再让客户来假想需要计算机系统帮他们做什么
如果你对获得的业务主角不是很自信,请回答以下问题:
有些人员参与了业务,但是身份很尴尬,他是被动参与业务的,不好说他有什么具体目的,但是他又的确在业务过程中做了事情,到底要不要为这样的人建模?例如人工坐席
这种困扰是因为违背了参与者的定义:参与者必须要在边界之外。如果视图把边界内和边界外的参与了业务的人都叫做参与者而建立模型,就会出现混乱和尴尬。
那么如何区分是参与者还是业务工人呢?三个问题帮助澄清:
如果是否定的,那一定是业务工人
涉众,也称为干系人,是与要建设的这个系统有利益相关的一切人和事,涉众的利益要求会影响系统的建设。
例如一个系统的建设是由一家国际风险投资机构投资的,这个系统必然与这家投资机构有着利益关系,有时系统必须满足投资方的一些特殊要求,作为涉众,投资方的意见或许有些约束,但不会参与系统建设。
统一过程的官方文档给出了一个检查点列表,回答这个检查点列表中的问题非常有助于检查发现的参与者是否正确:
用例是对对象施加这一外力的元素,正是用例使得其他哪些“孤独”的uML元素能够共同组成一篇有意义的文字。
用例定义了一组用例实例,其中每个实例都是系统所执行的一系列操作,这些操作生成特定主角可以观测的值
一个用例就是与参与者交互的,并且给参与者提供可观测的有意义的结果的一系列活动的集和。
用例的作用:捕捉功能性需求
一个系统的功能性是由一些对系统有愿望的参与者要做的一些事情构成的,事情完成后就达成了参与者的一个愿望,当全部参与者的所有愿望都能通过用例来达到,那么这个系统就被确定下来了。
2. 用例的执行结果对参与者来说是可观测的和有意义的
4. 这件事必须由一个参与者发起。不存在没有参与者的用例,用例不应该自动启动,也不应该主动启动另一个用例
5. 用例必然是以动宾语短语形式出现的
6. 一个用例就是一个需求单元、分析单元、设计单元、开发单元、测试单元,甚至部署单元
需要注意的是:这个阶段需要采用一些面向对象的方法,归纳和抽象出业务用例中的关键概念模型并为之建模
。例如,宽带业务需求中有申请包装和申请迁移地址用例,在用例分析时,可归纳和分解为提供申请资料、受理业务、现场安装等多个业务流程中使用的概念用例用例粒度的划分依据最标准的方法是以该用例是否完成了参与者的某个完整目的为依据的。例如:某人去图书馆,查询了书目,出示了借书证,图书管理员查询了该人以前的借阅记录以确保没有未归还的书,最后借到了书
。这段话的实际用例就是借书,所有的操作都是围绕着这个展开的。
一般情况下,一个系统的业务用例定义在多于10个,少于50个之间,否则就应该考虑一下粒度选择是否合适了。
用例的来源就是参与者对系统的期望
可以开始对主角,进行访谈,有以下需注意的点:
你只需要让业务代表从他自己的本职工作出发来谈谈他的期望:
在这个过程中,你应当确保:
若需要重新访谈,你需要调整一下策略:
业务用例是用例版型的一种,专门用于需求阶段的业务建模
本文作者:Eric
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!