
图6-30 “投票者投票”用例图
以“投票者投票”用例和“投票者身份验证”用例为例,介绍如何去创建系统的时序图、协作图和活动图。首先创建时序图,从一个很简单的“投票者投票”用例开始分析,如图6-30所示。
1)创建时序图
(1)确定工作流程。
①投票者希望通过系统为某职位的候选人投票。
②投票者通过身份验证进入系统界面。
③系统界面向数据库访问层请求获取投票职位信息。
④数据库访问层加载投票职位信息。
⑤数据库访问层将投票职位信息供给系统界面。
⑥系统界面将投票职位信息显示出来。
⑦投票者选择投票职位信息。
⑧系统界面向数据库访问层请求获取投票候选人信息。
⑨数据库访问层加载并获取投票候选人信息。
⑩数据库访问层将投票候选人信息供给系统界面。
⑪系统界面将投票候选人信息显示出来。
⑫投票者投票。
⑬系统界面将投票信息传递给数据库。
⑭数据库根据投票信息将投票信息记入投票结果。
⑮系统界面将投票职位信息再次显示出来。
⑯重复流程⑦~⑮,直至每个职位都投过票或者投票者提出“查看投票结果”。
⑰系统界面加载投票结果。
⑱系统界面将投票结果以一屏信息显示出来。
在这些基本的工作流程中还存在分支,可使用备选过程来描述。以下选取两个备选过程进行描述。
备选过程A:投票结束后,投票者向投票系统发出“查看职位竞选信息”请求。
①数据访问层返回职位竞选信息。
②系统界面将职位竞选信息显示出来。
备选过程B:投票结束后,投票者向投票系统发出“修改投票”请求。
①系统界面翻屏返回先前显示的职位竞选信息界面。
②投票者选择投票职位信息。
③系统界面向数据库访问层请求获取投票候选人信息。
④数据库访问层加载并获取投票候选人信息。
⑤数据库访问层将投票候选人信息供给系统界面。
⑥系统界面将投票候选人信息显示出来。
⑦投票者投票。
⑧系统界面将投票信息传递给数据库。
⑨数据库根据投票信息将投票信息记入并覆盖投票结果。
⑩系统界面将投票结果以一屏信息显示出来。
(2)确定对象。
从左到右布置该工作流程中所有的参与者和对象,包含要添加消息的对象生命线,如图6-31所示。

图6-31 布置时序图的对象
(3)确定消息和条件。
对系统的基本工作流程进行建模,按照消息的过程将消息绘制在时序图中,并添加适当的脚本绑定到消息中,如图6-32、6-33和6-34所示。

图6-32 基本工作流程的时序图

图6-33 备选过程A的时序图(https://www.xing528.com)

图6-34 备选过程B的时序图
2)创建协作图
协作图与时序图的创建相似,下面以“投票者投票”用例为例,介绍如何创建系统的协作图。
(1)确定协作图的元素。
根据已经描述的用例可以确定需要“投票者”、“系统界面”、“数据库”、“投票信息”和“投票结果”对象,如图6-35所示。
(2)确定元素之间的结构关系。
确定这些对象之间的连接关系,使用链接和角色将这些对象连接起来,如图6-36所示。

图6-35 协作图的对象

图6-36 对象之间的结构关系
(3)细化协作图。
将早期的协作图进行细化,结果如图6-37所示。

图6-37 细化后的协作图
这里只举了一个用例的例子,其余的功能读者可以自己尝试用时序图或协作图描述过程并建模。下面创建状态图。
3)创建状态图
(1)确定主体。
在电子投票系统中,“投票者”类有明确的状态转换,可以在系统中为它创建状态图。
(2)确定起始状态、终止状态及主体在其生命周期中的各种稳定状态。
共有4个状态,如图6-38所示。
①新的投票者:准备进行投票的新投票者。
②可以投票:投票者为可投票状态,即未达到规定的投票次数。
③不可投票:投票者为不可投票状态,即已经达到规定的投票次数。
④非投票者:投票完成,投票者对象在系统中定义为删除状态。

图6-38 状态图的各个状态
(3)确定触发状态迁移的事件并附上必要的动作。
得到投票者的状态图如图6-39所示。

图6-39 投票者的状态图
余下步骤在此省略。
4)创建活动图
下面以“投票者身份验证”用例为例,介绍如何创建系统的活动图。
(1)识别描述工作流的类或对象,此处可识别的业务对象包括投票者、系统界面和控制器,为其设置泳道,如图6-40所示。

图6-40 加入泳道的活动图草图
(2)确定范围(边界)和活动(动作)序列,在“投票者身份验证”用例中,投票者对象首先“点击投票”后,将“ID传给控制器”,控制器获取投票者ID后进行处理,或返回无法投票提示信息,或允许投票者投票,并结束流程。
(3)确定迁移(动作流):找出连接活动状态或动作状态的迁移。注意在建模过程中优先处理顺序流的状态迁移。其次处理条件分支状态迁移,最后考虑(并发和同步)分劈、接合状态迁移。“投票者身份验证”用例中,控制器获取投票者ID后,并发处理两个流程:一是查询过滤表,判断是否为过滤IP,同时判断是否为重复ID,只有两个判断都为“否”时,才进入显示选项表,开始投票,否则无法投票,如图6-41所示。

图6-41 “投票者身份验”用例的证活动图
(4)确定工作流中涉及的重要对象,加入活动图中,将其连接到相应的动作状态和活动状态,形成对象流,本例中加入的是“过滤表”对象,其对象流用虚线箭头表示,如图6-42所示。

图6-42 加入对象流的活动图
余下步骤省略。
这里只举了两个例子,其余功能请读者自己尝试着用状态图和活动图描述过程并建模。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
