MachineGuard——项目系统设计与数据库设计

机房捍卫者队 团队 2023-04-14 20:48:44
这个作业属于哪个课程2023软工W班
这个作业要求在哪里团队作业三——概要设计与数据库设计
团队名称Machine Guard
这个作业的目标材料链接、系统设计、数据库设计、类图、安全、改进、团队绩效、开发计划
其他参考文献

目录

  • 1 链接
  • 2 系统设计
  • 2.1 功能层次图
  • 2.2 功能模块
  • 2.2.1 监控
  • 2.2.2 统计
  • 2.2.3 日志
  • 2.2.4 账户
  • 2.2.5 通知
  • 2.3 系统结构
  • 3 数据库设计
  • 3.1 ER图
  • 3.2 数据表结构
  • 3.3 数据字典
  • 4 设计类图
  • 5 系统安全和权限设计
  • 5.1 系统权限
  • 5.2 系统安全性
  • 5.3 系统可靠性
  • 6 改进分析
  • 6.1 QA
  • 6.2 改进
  • 6.2.1 类图改进
  • 6.2.2 用户系统改进
  • 7 团队绩效
  • 7.1 工作流程
  • 7.2 组员分工及贡献度
  • 8 开发计划安排
  • 8.1 时间规划
  • 8.2 分工规划

1 链接

  1. GitCode团队仓库链接
  2. 系统设计说明书
  3. 数据库设计说明书
  4. 系统设计和数据库设计答辩PPT

2 系统设计

2.1 功能层次图

img

2.2 功能模块

2.2.1 监控

  1. 机房全貌: 提供整个机房布局和各机房当前状态的可视化展示,以实时协助管理员把握机房的运行状况。
  2. 楼层综述: 提供某一楼层中各机房的温度、湿度和当前状态等详尽信息,以深入了解该楼层的运行情况。
  3. 机房仿真: 提供多项数据比如机房温湿度、警报状态、监控画面和抓拍记录,以及仪器运行状况等详细信息,为管理员提供全方位的实时机房监管支持。
  4. 仪器控制: 实现对各类设备的控制以及根据预测的仪器温度自动输出日志等辅助功能,有效改善机房管理效率和效果。

2.2.2 统计

  1. 图表数据选择: 提供下拉菜单以供管理员选择某日的机房统计数据图表展示及搜索栏以支持全面的机房数据分析。
  2. 侧边栏分类: 提供便于管理员轻松比较和查看不同数据之间的关系和趋势的分类筛选菜单,包括警报数据图表、温度数据图表及设备状态变化图表等。

2.2.3 日志

  1. 通过侧边栏上的按钮,用户可以设置查询和分类的条件,以便高效地查找所需信息,根据日志信息快速定位分析问题。
  2. 支持多种查询条件,如设备号、房间号和警报类型等,用户既可以使用单一条件进行查询,也可以进行组合查询。查询结果中包含详细的日志信息,包括时间、类型和信息源等。

2.2.4 账户

  1. 登录安全: 通过手机号验证方式实现可靠的用户信息安全保障。
  2. 个人信息管理: 允许用户查看和编辑个人信息,包括登录密码、名称、头像等相关数据。
  3. 页面定制化: 允许用户根据个人需求和喜好自定义系统风格、语言、通知等,实现个性化的机房管理界面。

2.2.5 通知

  1. 当前通知: 点击通知按钮可以在通知页面中查看当前通知,可以通过级别下拉框, 过滤出相应级别的通知
  2. 历史通知: 在当前通知页面中, 通过搜索, 可以查看历史消息通知

2.3 系统结构

  1. 前端:Vue,Three.js,ElementPlus
  2. 端间通讯:Axios
  3. 逻辑层控制:Spring
  4. 持久层:MyBatisPlus
  5. 数据库:MySQL
  6. 中间件:RocketMQ
  7. 网关:SpringCloud
  8. 传感器网关:HV RTSP / HomeAssistant Application Interface

img

3 数据库设计

3.1 ER图

img

3.2 数据表结构

表名列名描述
groupidgroup的唯一标识符
groupname机房组名字
groupdescription描述
flooridfloor的唯一标识符
floorname楼层名称
floordescription描述
roomidroom的唯一标识符
roomfloor_id机房对应的楼层id
roomname机房名称
roomdescription描述
room_statisticsidroom_statistics的唯一标识符
room_statisticstime统计时间
room_statisticsroom_id机房ID
room_statisticstemperature温度
room_statisticshumidity湿度
room_listidroom_list的唯一标识符
room_listgroup_id机房组ID
room_listroom_id机房ID
logidlog的唯一标识符
logsensor_id监测器ID
logtype日志类型
logtime日志时间
logmessage日志内容
loglevel紧急等级
sensoridsensor的唯一标识符
sensorname监测器名称
sensorstate监测器状态
sensortype监测器种类
sensordescription描述
sensor_listiddevice_list的唯一标识符
sensor_listroom_id机房ID
sensor_listsensor_id监测器ID
deviceiddevice的唯一标识符
devicename设备名称
devicestate设备状态
devicedescription描述
device_listiddevice_list的唯一标识符
device_listroom_id机房ID
device_listdevice_id设备ID
device_statisticsiddevice_statistics的唯一标识符
device_statisticstime统计时间
device_statisticsdevice_id设备ID
device_statisticscpu_useageCPU占用率
device_statisticstemperature温度
device_statisticsread_rate硬件读速率
device_statisticswrite_rate硬件写速率
device_statisticsstate设备状态
device_statisticsupload_rate上传速率
device_statisticsdownload_rate下载速率

3.3 数据字典

Table1 group

字段idnamedescription
描述group的唯一标识符机房组名字描述
数据类型(长度)INTVARCHAR(50)VARCHAR
约束pknot null

Table2 floor

字段idnamedescription
描述floor的唯一标识符楼层名称描述
数据类型(长度)INTVARCHAR(50)VARCHAR
约束pknot null

Table3 room

字段idfloor_idnamedescription
描述room的唯一标识符机房对应的楼层id机房名称描述
数据类型(长度)INTINTVARCHAR(50)VARCHAR
约束pkreferences floor(id)Not null

Table4 room_statistics

字段idtimeroom_idtemperaturehumidity
描述room_statistics的唯一标识符统计时间机房ID温度湿度
数据类型(长度)INTDATETIMEINTDECIMALDECIMALA
约束pknot nullreferences room(id)not nullnot null

Table5 room_list

字段idgroup_idroom_id
描述room_list的唯一标识符机房组id机房id
数据类型(长度)INTINTINT
约束pkreferences group(id)references room(id)

Table6 log

字段idsensor_idtypetimemessagelevel
描述log的唯一标识符监测器id日志类型日志时间日志内容紧急等级
数据类型(长度)INTINTVARCHAR(20)DATETIMEVARCHARVARCHAR(20)
约束pkreferences sensor(id)not nullnot nullnot nullnot null

Table7 sensor

字段idnamestatetypedescription
描述sensor的唯一标识符监测器名称监测器状态监测器类型描述
数据类型(长度)INTVARCHARVARCHARVARCHARVARCHAR
约束pknot nullnot nullnot null

Table8 sensor_list

字段idroom_idsensor_id
描述sensor_list的唯一标识符机房id监测器id
数据类型(长度)INTINTINT
约束pkreferences room(id)references sensor(id)

Table9 device

字段idnamestatedescription
描述device的唯一标识符设备名称设备状态描述
数据类型(长度)INTVARCHARVARCHARVARCHAR
约束pknot nullnot null

Table10 device_list

字段idroom_iddevice_id
描述Device_list的唯一标识符机房id设备id
数据类型(长度)INTINTINT
约束pkreferences room(id)references device(id)

Table11 device_statistics

字段idtimedevice_idcpu_usagetemperetureread_ratewrite_ratestateupload_ratedownload_rate
描述device_list的唯一标识符统计时间设备IDCPU占用率温度硬件读速率硬件写速率设备状态上传速率下载速率
数据类型(长度)INTDATETIMEINTDECIMALDECIMALDECIMALDECIMALVARCHARDECIMALDECIMAL
约束pknot nullreferences device(id)not nullnot nullnot nullnot nullnot nullnot nullnot null

4 设计类图

img

5 系统安全和权限设计

5.1 系统权限

基于RBAC模型,满足了RBAC0(基本模型)的定义

  1. 权限:浏览页面、日志查看、监控查看、通知查看、统计查看、设备管理、管理员权限(管理资源权限、管理用户角色)
  2. 角色:角色与权限是多对多的关系, 一个角色拥有多种权限, 而一种权限也能被多种角色拥有。
    • 游客:仅可以浏览页面
    • 普通用户:浏览页面、日志查看、监控查看、通知查看、统计查看、设备管理
    • 管理员:拥有系统的所有权限
    • 用户:角色与用户之间是多对多的关系,一个用户对应多种角色,而一种角色包含了多个用户。

5.2 系统安全性

  1. 访问权限控制:系统对访问用户进行身份验证和鉴别,普通用户仅能查看界面信息,管理员则拥有更高的权限。在此基础上,基于OAuth2协议实现并确保前端对于后端数据的请求以及请求的安全性。
  2. 用户信息:系统采用MD5方式对用户信息进行加密,使用预先设计的算法,处理用户传过来的如密码等信息,并将处理后的结果进行哈希算法处理,得到一个新的结果后保存到数据库中,进一步保证用户信息的存储安全。
  3. 系统日志:系统会对日志模块的各种指标数据进行保密并定期备份到一个安全的文件中。
  4. 数据传输:系统通过使用SSL/TLS加密协议,保证数据在传输过程中被加密。

5.3 系统可靠性

  1. 高并发可用性:系统使用可视化图表展示各种指标数据,并且具有简单直观、友好的用户界面,用户操作门槛低。同时使用Spring Cloud,将系统的功能划分为许多个小型服务,利用其容错机制确保系统在出现故障或者部分功能不可用的情况下可以正常运行,确保了系统的可维护性,可扩展性和灵活性。
  2. 系统性能:系统能够长时间稳定运行,并利用相应算法准确的预测温度变化。系统提供实时监测功能,能够快速处理指标数据,及时检测并通知异常状况。
  3. 可测试性:系统的日志模块中记录着详细的运行信息,测试人员可以利用这些信息来进行充分测试。
  4. 兼容性:系统会根据不同的设配类型来调整页面的布局,能够在手机端和电脑端下稳定运行,具有很好的跨平台兼容性。

6 改进分析

6.1 QA

  1. 楼层在类图中如何体现?

    楼层在类图中体现为机房的一个属性,在实际的逻辑中我们是用这个属性来筛选,楼层本身并没有任何信息和意义。但是为了更好地抽象出模型,我们在改进的类图中特别增加了Floor类。

  2. 温度检测器与机房环境记录有关吗?

    温度检测器和机房环境记录间接相关。机房环境记录等于是一个定期生成的报告,在报告的时候会调用温度检测器。

  3. 用户还有再分角色吗?

    用户会分数据权限,比如用户A可以访问机房1但不能访问机房2。功能上只有管理员和用户。

  4. 这些硬件怎么解决

    使用现有的硬件,在HomeAssaiant这个平台进行转发,将数据并入我们的系统。

6.2 改进

6.2.1 类图改进

在深入分析业务需求后,我们对系统类图进行了修改,以更加准确地反映系统所需功能。我们决定删除设备温度记录类、机房环境记录类和告警信息类,以精简系统结构。此外,我们对现有的统计信息类进行了泛化,分别泛化为设备统计信息类和机房统计信息类,以便更好地记录硬件设备和机房信息。

为了更好地表示设备与机房、机房与机房组、监测器与机房之间的关系,我们引入了设备列表类、机房列表类和监测器列表类。同时,我们还通过日志类,在监测器与硬件设备这两个静态类之间建立了动态联系,以更好地表示两者之间关系。

6.2.2 用户系统改进

优化了用户权限系统。原先我们采用用户-管理员模式,而用户部分使用一张特殊的用户授权表来存储用户能否访问对应机房或者设备的权限。经过考虑,我们转而使用RDBC权限设计模式来进行用户系统的搭建,引用用户组概念,实现了更加宽泛和灵活的权限分配控制。

7 团队绩效

7.1 工作流程

  1. 核对博客要点,制定本周团队工作大纲,包括需要提交的材料,制定组员分工。
  2. 根据国标拟定《系统设计说明书》和《数据库设计说明书》的大纲。
  3. 通过《需求规格说明书》填充优化现有内容,修改优化类图。
  4. 通过类图设计ER图,关系代数模型,设计CURD的接口。
  5. 完成说明书的其他部分。
  6. 按说明书设计PPT,复审PPT。
  7. 撰写本次的博客,完成工作。

7.2 组员分工及贡献度

学号工作内容贡献度
222000321博客全部,ppt复审,系统说明书和数据库说明书的整合13%
222000234PPT设计12%
222000231PPT设计,数据库文档410%
222000320评审表5%
222000322系统说明书2.5,3.2(合作);数据库说明书3.220%
222000317系统说明书3.2(合作),数据库说明书3.115%
222000318系统说明书4.2,4.3,6.110%
222000310系统说明书2.3,3.1,4.115%

8 开发计划安排

8.1 时间规划

时段内容里程碑
第一周需求分析产出《需求说明书》以及第一版原型
第二周系统定型,数据库设计搭建出一个按照实体类设计的数据库,建立系统各组成的框架
第三周静态界面设计和接口设计实现前端静态界面的粗糙版本,提供一套粗糙的WebAPI文档
第四周数据对接实现前后端能够进行通讯,完成各实体功能的CURD操作
第五周数据对接完善产出细致的WebAPI文档,前后端通讯能够覆盖大多数功能操作
第六周可靠性、安全性完善实现前端界面交互的细致版本,后端能够通过压测和入侵测试
第七周用户交互完善产出完整的产品,通过黑盒测试
第八周交付准备和交付产出产品文档等交付附属材料

8.2 分工规划

学号职责内容
222000321PM、前端统筹项目,跟踪进度,项目质量控制、前端3D和2D建模部分的实现
222000234产品、UI原型设计,产品包装,文档美术设计
222000231UI、后端产品包装,文档设计,后端辅助
222000320测试黑盒测试,测试报告产出
222000322后端主要后端搭建,接口设计,分布式设计
222000317后端ORM设计,数据库DBA
222000318后端后端接口实现,逻辑实现
222000310前端前端界面实现和除建模外的逻辑实现
...全文
370 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

完成的很赞!加油!

685

社区成员

发帖
与我相关
我的任务
社区描述
2023年福州大学软件工程实践课程W班的教学社区
软件工程团队开发软件构建 高校 福建省·福州市
社区管理员
  • FZU_SE_teacherW
  • aboutazhang
  • 郭渊伟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧