首页 理论教育 电子投票系统动态建模案例-软件系统分析与体系结构设计

电子投票系统动态建模案例-软件系统分析与体系结构设计

时间:2026-01-26 理论教育 景枫 版权反馈
【摘要】:图6-30“投票者投票”用例图以“投票者投票”用例和“投票者身份验证”用例为例,介绍如何去创建系统的时序图、协作图和活动图。①投票者希望通过系统为某职位的候选人投票。图6-31布置时序图的对象确定消息和条件。图6-39投票者的状态图余下步骤在此省略。

图示

图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 加入对象流的活动图

余下步骤省略。

这里只举了两个例子,其余功能请读者自己尝试着用状态图和活动图描述过程并建模。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈