本节继续以前面的电子投票系统为例,介绍如何创建对应的构件图和部署图,完成实现建模。
图7-12 投票者投票用例
UML视图的核心是用例建模,因此我们仍然由用例出发,根据用例或场景确定需求,再将静态建模、动态建模中的逻辑元素逐步映射为构件。我们选取一个最重要的用例“投票”来举例,其用例图如图7-12所示。系统还有另一个重要行为者是监督员,其所对应的用例及相关建模请读者参考以下建模过程自行练习。
第4章中已对投票用例做了详细描述,具体需求包括投票、确认投票者身份、查看竞选信息、查看投票结果、修改投票等。
该系统拟用Struts框架实现,其最大好处是实现了标准的MVC三层架构。从用例建模出发,结合静态建模情况,可以得到4个明显的业务构件,即职位信息、候选人信息、投票人信息和投票信息。这几个构件都被标识为Java Bean类型。
三个基本的界面构件,身份验证、查询信息和投票界面,被标识为Html+CSS类型。注意,修改投票的功能可以与投票功能在同一个界面构件复用,因此不再单独列出。
投票用例中的几个核心功能,包括确认投票者身份、查看竞选信息、投票、查看投票结果、修改投票等,均设计由一个控制构件“投票处理”来实现,该构件被标识为Struts Action类型。
由此得到的系统构件如图7-13所示。
图7-13 确定系统构件
进一步分析,该构件还需依赖一个数据库管理构件实现具体的数据库操作功能。将这个数据库管理构件命名为DB Manager,该构件需要依赖已有的JDBC构件来操作MySQL数据库。
最后,定义一下各个构件之间具体的依赖关系。首先,三个界面构件都必须依赖于投票处理构件以实现其构件定义的功能,并且投票界面构件还必须依赖于身份验证界面构件(用户必须验证身份后才能投票,但查询信息并不一定需要验证身份)。其次,投票处理构件需要依赖投票信息构件,这是因为投票信息是系统处理的核心业务对象。由静态建模可以知道,投票信息与职位、候选人、投票人之间有关联关系,因此在构件图中也要标识出对应的依赖关系。(www.xing528.com)
最终得到的构件图如图7-14所示。
图7-14 添加了依赖关系的构件图
接下来设计该系统相应的部署图。根据系统的需求,将投票机定义为一个服务器节点,监督者通过特定的客户机节点操作投票机服务器,完成启动和加载数据等功能,此部分设计为C/S结构。投票者通过普通PC上的浏览器登录投票机服务器投票,此部分设计为B/S结构。为保证数据安全,还应设计独立的数据库服务器节点,因此该系统为一个典型的三层架构。更具体地说,这属于一个“内外有别”的异构模型(本书9.7节中将详细介绍)。系统中的节点用UML图表示如图7-15所示。
然后,添加节点之间的链接,如图7-16所示。
(1)投票客户机为普通的连入Internet的PC,通过HTTP协议与投票机服务器通信。
(2)监督客户机通过局域网与投票机服务器相连,注意,监督客户机上需安装独立的客户端构件以保证安全。
(3)投票机服务器通过JDBC与数据库服务器连接。
图7-15 定义系统中的节点
图7-16 添加了节点间关联关系的部署图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。