系统分析师UML用例实战-读书摘要-绘制用例图(1)

版权声明:不自见故明;不自是故彰;不自伐故有功;不自矜故长; https://blog.csdn.net/LightUpHeaven/article/details/84930419

1.1使用用例的时机

将软件开发分为分析-设计-实现这三大步骤的话,用例主要用在分析阶段。也就是说用例是一种系统分析技术。

分析:是为了说明系统是什么,并说明这个系统会做哪些事。

设计:是为了说明系统如何工作,也就是说明系统应该如何一步一步地做到在分析阶段所承诺的事情。

实现:就是按照系统设计,真正的开始编写代码。

通常,系统分析师使用用例之后,主要会有两个结:其一是用例图,其二是用例叙述。

1.2一睹用例图的长相

用例图:

图中小人为参与者,代表系统外部的用户

椭圆为用例,代表系统内部对外提供的服务项目

方框图则表示系统

用例叙述:

用例订购书籍

事件流程:

1.当会员选择订购书籍时,这个用例就会启动

2.会员输入他的姓名和地址

3.会员输入欲购买的书籍的书号

4.系统提供书籍说明与每一本数的价格

5.当会员输入欲订购的书号时,系统会持续保留订购的累计金额

6.会员输入信用卡付款的信息

7.会员确认订购

8.系统核对信息,保存订购信息,并且把付款信息转交给会计系统。如果信息有任何不正确的地方,系统就会提示会员修正该信息。

9.当付款信息确认后,订购交易会标记为“已结账”,交易代号会回传给会员,而且这个用例即告终结。如果付款没有确认,系统会提示会员修正付款信息或取消。如果会员选择修正该信息,则轨道上述的第6个步骤。如果会员选择取消,则该用例即告终结。

1.3绘制用例图

确立系统边界,就是先划定一个系统范围,晚点再来推敲系统范围内该做的细节。确立边界就像剁鸡一样,需要的留下来,不需要的剁掉。所以系统分析师要做好下面两件事:

1.找出位于系统外部的事物,画小人。我们不需要开发位于系统外部的事物,但是需要考虑建立接口,让系统内外可以通过接口传递信息。就好像我们虽然不要鸡头,但是还是需要知道鸡头和鸡身连接的关节在哪里!

2.找出位于系统内部的事物,话椭圆。这些这是我们需要考虑开发的部分。

所以确立系统边界的具体做法就是:分内外,向系统内找用例,向系统外找参与者。

1.3.1.找参与者

参与者是位于系统外部的用户、联网的其他系统、硬件设备或者数据库,它们并不是系统的一部分,所以开发团队不需要构建这些参与者。不过由于参与者会与系统互动、参与用例,以便获得特定的服务或结果,所以潮流发团队需要为它们设计接口,以便它们能够顺利地通过接口与系统交换信息。

虽然参与者的图标是人型图标,但不代表只有人类用户可以扮演参与者,位于系统之外并且会与系统交换信息的人或物(如与系统联网的系统,硬件设备,数据库等),都有可能成为系统的参与者。

那么到底先找参与者好?还是先找用例好?如果一定要有一个先后参与者的话,笔者建议先找参与者。

主要原因有:

1.参与者用例明显。

2.参与者的个数远比用例的个数少。

3.找到一个参与者,就可以找到一堆用例。

4.参与者是系统外部任务的代表,所以当然要先找出参与者,才能够从参与者的角度去寻找用例。

如何下手寻找参与者呢?可以参考如下的问题:

1.谁会来使用这个系统?

2.谁会来安装这个系统?

3.谁会来启动这个系统?

4.谁会来维护这个系统?

5.谁会来关闭这个系统?

6.哪些系统会来使用这个系统?

7.谁会从这个系统获取信息?

8.谁会给这个系统提供信息?

9.在预先设定的时间到达时,有什么事情会自动发生吗?

10.哪些系统会与这个系统联网?

11.是否有硬件设备会与这个系统联网?

12.哪些数据库会与这个系统联网?

13.公司内部有哪些人员会使用这个系统?

14.公司外部有哪些人会来使用这个系统?

15.当特定的时间或事件发生时,这个系统需要自动通知什么人,或者是自动通知其他系统吗?

这情况真多啊,其实也未必覆盖完全,自己多做考虑就好了。

1.3.2.找用例

用例是系统的一项行为,它能够生成参与者可评价的结果。

这句话包含如下两个重点:

1.用例是系统的行为,所以它将包含着时间的概念,它会花费一段时间,具有一个执行过程。因此,当系统分析师描述用例时,要特别注意它所经历的一连串操作,而且这一连串的操作,正式参与者与系统之间的互动。

2.用例不仅能够,同时也必须,生成可以供参与者评价的服务或结果。也就是说,用例执行结束时,必须有一项明确的结果,并且参与者要能够接受这项结果。

参与者和用例之间有关系线,代表参与者将参与这个用例.

找到参与者之后,再找到用例就容易多了。我们可以针对每一个参与者寻找相关的用例。同样的我们可以问问自己下列问题,对于寻找用例帮助很大:

1.参与者想要从这个系统获得什么样的功能?

2.这个系统存储信息吗?哪些参与者将建立、读取、更新或删除这些信息?

3.当系统内部状态有变化时,这个系统需要通知参与者吗?

4.是否有什么外部事件是这个系统需要知道?当这些外部事件发生时,哪些参与者会通知这个系统?

5.这个系统需要定期执行什么操作吗?

6.当发生了某些重要的外部事件时,这个系统需要自动执行什么操作吗?

7.这个用例的名称够明确吗?是否能把从这个用例的名称,直接判断出它的结果?

8.这个用例会有许多不同的结果吗?还是这些结果,其实是在不同的时间点产生的?

不过特别要提醒的是,这个系统边界并不是这样定下来就不会改变了。事实上,在开发的过程中,随时都有可能回过头来修改这张用例图,但是别担心,修改的频率和幅度会随着项目时间的增加而迅速放缓。同时,你也会因为使用用例越来越纯熟,而下刀越来越精确。

参与者的特性:

1.参与者位于系统外部,它不属于系统的某一部分,所以我们不需要去构建参与者。

2.只有会使用系统、会跟系统互动、会跟系统交换信息的,才是系统的参与者。

3.参与者会启动、参与用例,所以找到参与者,就可以引导我们找到用例。

4.我们虽然不需要构建参与者,但是却需要考虑接口。系统需要提供接口让参与者使用,或者系统需要用到参与者提供的接口。

猜你喜欢

转载自blog.csdn.net/LightUpHeaven/article/details/84930419
今日推荐