标签:mongodb rip 发展 发布 展开 名称 bat mes 账号
该博客主要针对工程实践项目的软件系统设计方案做一个简要的总结。包括总结软件结构特点(比如设计模式,架构风格),并通过不同视图来描述软件系统的概念原型。
有关本工程实践项目的介绍以及需求分析,可以见以下链接:
https://www.cnblogs.com/chuanguo/p/14083158.html
为什么需要软件系统设计?因为随着软件的发展,其复杂度前所未有,同时软件还具有易变性这一特征。众所周知,一个合格的软件项目至少要有稳健性,易用性,可维护性等特点。在着手实现软件之前,对其进行高屋建瓴的设计,更有助于我们开发合格的软件。如果想要描述软件系统的特征,可以通过软件架构风格以及设计模式。 架构和模式应该是一个属于相互涵盖的过程,架构更加注重高层的设计。一个设计模式提供一种提炼子系统或软件系统中的组件的,或者它们之间的关系的纲要设计。
常见的项目的架构风格有以下几种:三层架构、MVC、MVVM、管道-过滤器、客户-服务、P2P、发布-订阅等。
因为本项目中用户是通过浏览器进行一系列操作,所以采取的架构风格为客户——服务类型,更准确的说是Browser/Server类型。B/S架构是在WEB兴起后的一种网络架构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。
另外前后端分离是当前最流行的方案,所以本项目也会采取MVC架构。
由于本项目的使用者为多级用户,在创建不同用户的时候,可以采用工厂模式,定义一个用于创建用户的接口,由子类决定创建什么级别的用户。另外,用户对于设备的操作,可以通过外观模式来简化使用。
由于本项目设计多级用户,因此针对不同级别的用户,其操作各有不同,因此很难使用某种通用方式对其进行操作,有必要进行分类。用户的级别共有6种,第一级别的用户为最高权限用户,是设备生产商,级别2--4的用户虽然级别不同,但其所有的功能和操作几乎一致,可以归为一类。级别5的用户是真正使用设备的用户,需要单独归为一类,其下属(级别为6的值班员)也需要归为一类,专门执行设备监控和向上报告的任务。
由于采用MVC的架构模式,因此需要前后端分离,以上为后端的控制器(Controller),以及模型(Model)
以下为Controller目录展开:
以下为Model展开:
1.后端:Springboot
2.前端:vue.js、ElementUI、echarts
3.数据库:MySQL;高并发处理:redis
4.服务器:前端:Nginx;后端:docker 、centos、tomcat
理由:因为采用前后端分离的分离的思想,前端和后端的开发可以各自进行。由于Nginx非常适合静态资源的处理,所以前端服务器程序采用Nginx。Spring Boot 的优点快速开发,特别适合构建微服务系统,另外给我们封装了各种经常使用的套件,比如mybatis、hibernate、redis、mongodb等。采用docker是为了保证程序的可移植性,“一次构建,多次部署“。为实现数据持久化,采用MySQL。由于本项目主要用于设备运行状态展示和控制设备,因此不可避免地会遇到诸如高并发的问题,拟采用redis来做缓存。
鉴于实际使用时,数量较多的设备(执行器)会同时向webserver传输自身的状态信息,为了减轻服务器压力,webserver主要的工作是进行redis缓存,同时响应前端对于设备(执行器)状态数据的请求。每隔一段时间,将目前已有的缓存数据存入database服务器中。如果用户需要查看一段时间之前的设备状态信息,webserver可以从database server中读取。
通过以上的分析,可以得出以下几张主要数据表。其中设备分为网关和执行器两种。
实际应用中,每一条用户链,所包含的用户层数可能未必一致。
而数据表中的6种用户角色,实际对应的是6种用户等级(可以把值班员等级看做6),
实际的用户链可能有以下几种:
1.设备生产商->代理商->分销商->大集团->工厂管理->值班员(1->2->3->4->5>6)
2.设备生产商->代理商->分销商->工厂管理->值班员(1->2->4->5->6)
3.设备生产商->大集团->工厂管理->值班员(1->4->5->6)
4.设备生产商->工厂管理->值班员(1->5->6)
字段名 | 类型 | 备注 |
---|---|---|
id | int | 数据表id,唯一,主键 |
username | varchar | 用户登录名 |
password | varchar | 用户登录密码 |
type | tinyint | 用户类型 |
nickname | varchar | 用户资料名称 |
address | varchar | 用户所在地址 |
create_time | timestamp | 用户创建时间 |
login_time | timestamp | 用户登录时间 |
parent_id | int | 创建该用户的上级用户的id |
.......... | ........ | .............. |
由于设备在实际使用前,会经过多级用户的手中,因此需要增加相应字段
字段名 | 类型 | 备注 |
---|---|---|
id | int | 数据表id |
device_label | varchar | 设备自身标识 |
nickname | varchar | 设备名称,五级用户添加 |
discription | varchar | 对执行器特性的描述 |
add_time | timestamp | 生产商添加设备的时间 |
status | tinyint | 未分配/异常/已分配/在使用 |
ownbyUser2 | bit | 是否分配给了二级用户 |
user2_id | int | 二级用户的id |
ownbyUser3 | bit | 是否分配给了三级用户 |
user3_id | int | 三级用户的id |
ownbyUser4 | bit | 是否分配给了四级用户 |
user4_id | int | 四级用户的id |
ownbyUser5 | bit | 是否分配给了五级用户 |
user5_id | int | 五级用户idw |
switch_id | int | 执行器连接的网关的id |
link_port | int | 执行器连接的网关的端口 |
字段名 | 类型 | 备注 |
---|---|---|
id | int | 数据表id |
device_label | varchar | 设备自身标识 |
add_time | timestamp | 生产商添加设备的时间 |
mac_addr | txt | 网关自身的mac地址 |
status | tinyint | 未分配/异常/已分配/在使用 |
ownbyUser2 | bit | 是否分配给了二级用户 |
user2_id | int | 二级用户的id |
ownbyUser3 | bit | 是否分配给了三级用户 |
user3_id | int | 三级用户的id |
ownbyUser4 | bit | 是否分配给了四级用户 |
user4_id | int | 四级用户的id |
ownbyUser5 | bit | 是否分配给了五级用户 |
user5_id | int | 五级用户id |
与执行器绑定的传感器,会将不同类型的执行器状态参数打包,从网关传到云端服务器,云端服务器可以存储执行器状态参数包,也可以通过解析数据包,向五级用户或者值班员展示设备状态。
字段名 | 类型 | 备注 |
---|---|---|
id | int | 数据表id |
data | text | 传感器发送的数据 |
device_id | int | 执行器的id |
add_time | timestamp | 数据发送时间 |
本项目主要功能为后台管理功能,涉及多级别用户,因此不同级别的用户对应不同级别的操作。
当前用户使用账号密码登录成功后,就可以执行位于自己权限范围内的操作。
1级用户是设备生产商(网关+执行器),一般有以下操作:
(1)可以将出厂的设备添加进数据库,或者从数据库中删除设备信息(其他级别的用户没有该项权限)
(2)可以查看所有的设备,通过分类(已分配,未分配,损坏)的方式展现
(3)可以查看自己的直属下级用户,或者给直属下级用户分配设备(考虑到直属下级用户会追加订单),或者查看下级用户拥有的设备的状况
(4)可以创建直属下级用户,并在用户创建后给其分配设备
(5)对下级用户上报的有问题设备进行处理
2级~4级用户主要的操作是设备的分销与采购,有以下操作:
(1)查看直属下级用户,查看给其分配了哪些设备
(2)创建直属下级用户,并分配设备
(3)查看自己所有的设备,并通过分类呈现
(4)对于下级用户报告的有问题设备,向自己的直属上级用户报告,有问题的设备最终会汇总到一级用户手里
5级用户的主要操作是激活、使用设备:
(1)创建值班员,给值班员分配要监视的设备
(2)查看所有值班员信息
(3)激活设备/关闭设备
(4)对于由值班员上报的设备运行异常,进行处理
(5)查看所有设备的运行情况
(6)向上报告有问题的设备
6级用户为值班员,主要操作有:
(1)监视自己名下设备的实时运行状态
(2)如果监测到异常情况,及时向自己所属的5级用户报告
https://gitee.com/mengning997/se/raw/master/ppt/软件科学基础概论.pptx
标签:mongodb rip 发展 发布 展开 名称 bat mes 账号
原文地址:https://www.cnblogs.com/chuanguo/p/14201259.html