工业互联网工程实践设计方案

前言

本文是针对我们工程实践项目——工业互联网云端管理系统的分析,将会涉及项目的设计方案和软件架构,为了对项目进行完整的分析,将采用不同的视图来描述该项目。

项目介绍:关于工业物联网设备监控与管理系统服务端的设计与开发。该系统是一个集分级用户管理,设备情况监控,设备控制与数据转发于一体的多边平台。各级用户拥有不同权限,可以对所属的不同设备进行监控或操作。可以做到对设备情况进行远程诊断,远程重启等操作,减维修人员到现场的次数,大大减少人力成本,方便设备管理。

一、系统设计

1.系统架构

本系统的总体结构将采用MVC架构和三层架构混合使用:

MVC即为Model-View-Controller(模型-视图-控制器),其中各字母所代表的义如下:

  • Model(模型)代表一个存取数据的对象及其数据模型。
  • View(视图)代表模型包含的数据的表达方式,一般表达为可视化的界面接口。
  • Controller(控制器)作用于模型和视图上,控制数据流向模型对象,并在数据变化时更新视图。控制器可以使视图与模型分离开解耦合。

MVC模式通常用开发具有人机交互界面的软件,这类软件的最大特点就是用户界面容易随着需求变更而发生改变,为了包容需求上的变化而导致的用户界面的修改不会影响软件的核心功能代码。

三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“高内聚低耦合“的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。其结构见下图:

在本系统中,Controller将会由业务逻辑层和数据访问层两部分共同组成。

在C/S和B/S这两种服务模式中,我们选择了B/S模式。B/S架构的全称为Browser/Server,即浏览器/服务器结构。Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现。

B/S架构的系统无须特别安装,只有Web浏览器即可。其实就是我们前端现在做的一些事情,大部分的逻辑交给后台来实现,我们前端大部分是做一些数据渲染,请求等比较少的逻辑。

其大概结构见下图:

相比于C/S结构,B/S架构有以下优点:

  1. 客户端无需安装,有Web浏览器即可。
  2. BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。
  3. BS架构无需升级多个客户端,升级服务器即可。可以随时更新版本,而无需用户重新下载。

系统的整体结构如下图所示:

系统总体分为前端,展示层,业务层和数据层。前端为浏览器对服务器传送过来的html页面和json数据进行解析处理并显示给用户。

展示层通过post和get请求从服务端获取json数据并传递给前端,并把用户与前端产生的交互操作传递给服务端。

业务层对从展示层传来的数据进行处理并返回结果给展示层。

2.设计模式

设计模式的本质是面向对象设计原则的实际运用总结出的经验模型。对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解的基础上才能准确理解设计模式。

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

正确使用设计模式具有以下优点:

  • 可以提高程序员的思维能力、编程能力和设计能力。
  • 使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。
  • 使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。

Java设计模式总共有23种之多,其中较为常见的有单例模式,工厂模式,建造者模式,代理模式等。本项目将会根据各种设计模式的特点,结合使用,以达到开发效率的最大化。

3.前后端接口

服务端会把不同的模块功能封装在不同的Controller中,每个模块中的不同方法使用URL参数进行区分。前端端向服务端发送请求时不仅需要正确的URL来访问不同的Controller,还需要在URL后面加上“action”参数选择不同方法进行处理。

二、系统视图

1.分解视图

分解是构建软件架构模型的关键步骤,分解视图也是描述软件架构模型的关键视图,一般分解视图呈现为较为明晰的分解结构(breakdown structure)特点。分解视图用软件模块勾划出系统结构,往往会通过不同抽象层级的软件模块形成层次化的结构。

本项目的分解视图如下:

2.执行视图

执行视图展示了系统运行时的时序结构特点,比如流程图、时序图等。执行视图中的每一个执行实体,一般称为组件(Component),都是不同于其他组件的执行实体。如果有相同或相似的执行实体那么就把它们合并成一个。

由于执行视图的数量太过庞大,所以我下面将以项目中最基本的功能——设备状态查看(工厂用户的功能)的流程图为例:

3.实现视图

实现视图是描述软件架构与源文件之间的映射关系。比如软件架构的静态结构以包图或设计类图的方式来描述。

我将通过项目的大概目录结构设计来体现项目的实现视图:

4.部署视图

部署图描述了一个系统运行时的硬件节点,在这些节点上运行的软件构件将在何处物理运行以及它们将如何彼此通信的静态视图。部署图包括两种基本模型元素:节点和节点间的连接。每个模型中,仅包含一个部署图。

下面是本项目的大致的部署视图:

三、数据库设计

本系统将大概有4张数据表,它们分别为:

  • 用户表:用来存放用户数据
  • 执行器表:用来存放执行器数据
  • 网关表:用来存放网关数据
  • 状态数据表:用来存放执行器状态

用户表:

字段名 类型 说明
id int 用户id,用来唯一标识用户
name varchar 用户名,用来登录
password char 经过加密后的密码
grade int 用户等级
info text 用户描述信息
create_time timestamp 用户创建时间
login_time timestamp 上次登录时间
parent_id int 用户的上级

值班员表:

字段名 类型 说明
id int 用户id,用来唯一标识用户
name varchar 用户名,用来登录
password char 经过加密后的密码
job varchar 岗位
real_name varchar 真实姓名
number varchar 工号
create_time timestamp 用户创建时间
login_time timestamp 上次登录时间
parent_id int 上级用户id

执行器表:

字段名 类型 说明
id char 执行器在数据库的唯一标识,由出厂id和网关mac组合而成。
Oid char 执行器的出厂id
name varchar 执行器的名称
pos varchar 执行器所在位置
type int 执行器的类型
gateway char 网关的mac地址
port int 连接的网关的端口
info text 执行器的相关信息
ip char 执行器所在的ip地址
status int 执行器的状态(启用,运行中等)
create_time timestamp 执行器的创建时间
add_time timestamp 执行器被添加的时间
user2_id int 所属的2用户的id
user3_id int 所属的3用户的id
user4_id int 所属的4用户的id
user5_id int 所属的5用户的id

网关表:

字段名 类型 说明
id int 网关的唯一标识
add_time timestamp 网关被添加的时间
status int 未使用/在使用/异常
parent_id int 所属用户的id
mac char 网关的mac地址

执行器状态表:

字段名 类型 说明
id int 状态数据的唯一标识
fid char 设备出厂id和网关mac地址的合并
data text 数据内容
time timestamp 接收时间

四、运行环境和技术造型

开发语言:Java

前端框架:Vue

后端框架:SpringBoot

开发工具:Intellij IDEA+Visual Studio Code

数据库:MySQL

数据库缓存:Redis

运行环境:Linux平台+Docker容器

五、概念原型工作机制

概念是人对能代表某种事物或发展过程的特点及意义所形成的思维结论,是一种虚拟的、理想化的软件产品形式,其大致等于用例 + 数据模型。

本系统的概念原型工作机制大致如下:

本系统总共涉及5级用户:分别为全国总厂,总经销商,次级经销商,工厂管理员,值班人员。各级用户无法自行注册,只能由上级用户创建。

各级用户在登录之后系统会读取其各自权限,不同权限可进行的操作各不相同,系统会根据用户权限返回不同的页面。总体操作大致分为用户管理和设备管理,用户向系统提交操作,系统会执行操作内容,然后将操作结果返回给用户。

本文主要参考文献:软件科学基础概念

posted @ 2020-12-28 22:56  dyc123  阅读(540)  评论(0)    收藏  举报