手机个人健康码小程序中,包括:注册登录、个人信息查询、健康码查询、疫苗接种信息查询、核酸检测结果查询、行程码查询等功能。
要求:
1 完成系统的分析建模工作,其中包括:用例图(含主要功能的用例描述);交互图(顺序图、通信图至少包含一种);类图;状态机图;活动图。
2 完成系统设计建模:拆分系统子系统并为系统选择合适的软件架构(说明原因,画出简单架构图);使用至少两种设计模式完善类图。
3 使用EA等建模工具完成模型,并提交最终工程文件。
如图1所示,在健康码小程序中,我们将参与者分成用户、管理者、医院、运营商四类。其中用户可以通过小程序进行注册登录,在登录之后可以查询自己的个人信息、健康码、行程码、核酸以及疫苗注射情况。而管理者、医院、运营商则进行数据的更新,管理者为政府工作人员,可以根据防疫措施更改用户健康码状态,而医院负责核酸检测及疫苗接种的信息更新,运营商根据用户SIM卡将行程轨迹进行更新。
图1 用例图
表1 注册登录用例描述
描述项 | 说明 |
---|---|
用例名称 | 注册登录 |
用例描述 | 使用所在平台账号登录本程序,若此前未使用过自动注册登录 |
参与者 | 用户、管理员、医院、运营商 |
前置条件 | 进入系统后未登录状态使用任意功能 |
后置条件 | 可以使用各功能 |
基本操作流程 | 1、获取用户的平台账号。2、若账号未注册,自动注册。3、系统检验合法性,若合法,则成功退出(即可以操作其它的功能);若不合法,则失败退出。 |
可选操作流程 | 1.1用户不允许获取平台账号,登录失败退出。 |
表2 查看健康码用例描述
描述项 | 说明 |
---|---|
用例名称 | 查看健康码 |
用例描述 | 用户可以查询健康码状态,后台将数据反馈到程序上 |
参与者 | 用户 |
前置条件 | 登录进入系统 |
后置条件 | 显示用户的健康码信息 |
基本操作流程 | 1、用户选择查看健康码。2、系统查询该用户的健康码状态。3、系统显示该用户的健康码。 |
可选操作流程 | 无 |
表3 查看疫苗接种情况用例描述
描述项 | 说明 |
---|---|
用例名称 | 查看疫苗接种情况 |
用例描述 | 用户可以查询疫苗接种情况,后台将数据反馈到程序上 |
参与者 | 用户 |
前置条件 | 登录进入系统 |
后置条件 | 显示用户的疫苗接种信息 |
基本操作流程 | 1、用户选择查看疫苗接种情况。2、系统查询该用户的疫苗接种情况。3、系统显示该用户的疫苗接种情况。 |
可选操作流程 | 无 |
表4 核酸检测查询用例描述
描述项 | 说明 |
---|---|
用例名称 | 核酸检测查询 |
用例描述 | 用户可以查询最近核酸检测结果,后台将数据反馈到程序上 |
参与者 | 用户 |
前置条件 | 登录进入系统 |
后置条件 | 显示用户的核酸检测信息 |
基本操作流程 | 1、用户选择查看核酸检测。2、系统查询该用户的核酸检测信息。3、系统显示该用户的核酸检测信息。 |
可选操作流程 | 无 |
表5 查看行程码用例描述
描述项 | 说明 |
---|---|
用例名称 | 查看行程码 |
用例描述 | 用户可以查询行程码状态,后台将数据反馈到程序上 |
参与者 | 用户 |
前置条件 | 登录进入系统 |
后置条件 | 显示用户的行程码信息 |
基本操作流程 | 1、用户选择查看行程码。2、用户输入手机号并进行验证。3、系统查询该用户的行程信息。4、系统显示该用户的核酸检测信息。 |
可选操作流程 | 无 |
表6 个人信息查看用例描述
描述项 | 说明 |
---|---|
用例名称 | 个人信息查看 |
用例描述 | 用户可以查询用户信息,后台将数据反馈到程序上 |
参与者 | 用户 |
前置条件 | 登录进入系统 |
后置条件 | 显示用户的个人信息 |
基本操作流程 | 1、用户选择查看个人信息。2、系统查询该用户的个人信息。3、系统显示该用户的个人信息。 |
可选操作流程 | 4、用户选择退出登录。 |
表7 健康码管理用例描述
描述项 | 说明 |
---|---|
用例名称 | 健康码管理 |
用例描述 | 更改用户的健康码颜色状态信息 |
参与者 | 管理员 |
前置条件 | 登录进入系统 |
后置条件 | 健康码数据更新成功 |
基本操作流程 1、管理员选择需要改变的人员及其健康码颜色状态。2、系统将所选人员的健康码状态变更。3、显示操作结果。 | |
可选操作流程 | 无 |
表8 核酸检测管理用例描述 | |
描述项 | 说明 |
-------- | ----- |
用例名称 | 核酸检测管理 |
用例描述 | 增添用户的核酸检测信息至数据库 |
参与者 | 医院 |
前置条件 | 登录进入系统 |
后置条件 | 核酸检测数据更新成功 |
基本操作流程 | 1、医院将核酸检测的数据上传。2、系统将核酸检测数据录入数据库。3、显示操作结果。 |
可选操作流程 | 无 |
表9 疫苗接种管理用例描述
描述项 | 说明 |
---|---|
用例名称 | 疫苗接种管理 |
用例描述 | 增添用户的疫苗接种信息至数据库 |
参与者 | 医院 |
前置条件 | 登录进入系统 |
后置条件 | 疫苗接种数据更新成功 |
基本操作流程 | 1、医院将疫苗接种的数据上传。2、系统将疫苗接种数据录入数据库。3、显示操作结果。 |
可选操作流程 | 无 |
表10 行程码管理用例描述
描述项 | 说明 |
---|---|
用例名称 | 行程码管理 |
用例描述 | 更新用户的形成信息至数据库 |
参与者 | 运营商 |
前置条件 | 登录进入系统 |
后置条件 | 行程码数据更新成功 |
基本操作流程 | 1、运营商将行程数据上传。2、系统将行程数据录入数据库。3、显示操作结果。 |
可选操作流程 | 无 |
因为参与者有四类,且各自的权限功能不相同,为了方便划分权限,采用RBAC权限模型,得到的类图如图2。
图2 类图
图3 活动图
选择交互图中顺序图,描述系统所有用例中的对象是如何进行相互作用的。
2.4.1. 注册登录顺序图
图5 查看健康码顺序图
2.4.3. 查看疫苗接种情况顺序图
图6 查看疫苗接种情况顺序图
2.4.4. 核酸检测查询顺序图
图11 核酸检测管理顺序图
2.4.9. 疫苗接种管理顺序图
图12 疫苗接种管理顺序图
2.4.10. 行程码管理顺序图
图13 行程码管理顺序图
分析现实的对用类中是否有生命周期及不同状态,可知健康码、行程码有对应的颜色状态,核酸检测有生命周期(14天后失效),而疫苗信息与个人信息长存,没有状态与生命周期。因此状态机图只画健康码、行程码及核酸检测。
2.5.1. 健康码类状态机图
图14 健康码类状态机图
2.5.2. 核酸检测信息类状态机图
图15 核酸检测信息类状态机图
图16 行程码类状态机图
3.1. 架构图
通过上面的分析建模,我认为可以将健康码小程序的功能大致分为三个:数据管理,存储并管理用户的健康码、行程码、核酸检测、疫苗接种等数据;功能服务,执行对应功能的服务;界面显示,用户通过窗口来获取服务。
总体上,因为软件为小程序形式,所以采用B/S模式,但因为浏览器应用需存在于客户端上,因此外观上很像C/S模式。用户通过浏览器发起请求,互联网转发请求,服务器处理请求,数据库提供数据的存储与管理服务给服务器。
软件架构的部署如图17所示。
图17 软件架构的部署视图
我们可以选择 “高内聚,低耦合”的MVC作为程序的架构模式。
我们选择MVC架构模式中的SSM框架作为架构,可以简化Java程序对数据库的访问、便于扩展和维护。SSM框架是Spring、Spring MVC和Mybatis框架的整合,是标准的MVC模式。标准的SSM框架有四层,分别是Dao层,Service层,Controller层和View层。使用Spring实现业务对象管理,使用Spring MVC负责请求的转发和视图管理,Mybatis作为数据对象的持久化引擎。
除此之外,还可以采用RBAC权限模型。这样设计的好处有二。其一,不需要区分哪些是权限操作,哪些是资源。其二,方便扩展,当系统要对新的东西进行权限控制时,我只需要建立一个新的关联表,并确定这类权限的权限类型字符串。
软件架构的框架如图18所示。
图18 软件架构的框架视图
健康码与行程码就像我们的电子身份证一样,同一个人不允许有多个身份证号码,因此可以使用单例模式完善健康码类和行程码类。单例模式完善部分如图19所示。
图19 单例模式完善部分图
我们的健康码软件系统需要显示多种数据信息,但这些信息的显示都源自同一个显示基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观。
因此,我们以使用简单工厂模式。在显示这些信息时,只需要知道显示的信息的类型参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象。简单工厂模式完善部分如图20所示。
图20 简单工厂模式完善部分图
使用简单工厂模式和单例模式完善后的类图如图21所示。
图21 完善后完整类图