系統背景
本項目需要設計一個工業互聯網平台,完成用戶管理,設備管理(包括設備狀態監測和設備控制)以及系統故障報警等功能。工作人員可以通過雲端平台完成對設備的狀態監測和控制,進而減小工作強度,提升工作效率。
本文將對項目進行完整的分析,給出項目的設計方案和軟件架構,從不同的角度以不同的視圖給出對項目的描述。
一 系統設計
1.1 軟件架構
本項目是在設計一個工業互聯網平台,需要大量的人機交互,所以采用了MVC架構模式來進行設計。
MVC是三個單詞的首字母縮寫,分別是Model(模型)、View(視圖)和Controller(控制)。MVC模式認為,程序不論簡單或復雜,從結構上看,都可以分成三層。
1)最上面的一層,是直接面向最終用戶的"視圖層"(View)。它是提供給用戶的操作界面,是程序的外殼。
2)最底下的一層,是核心的"數據層"(Model),也就是程序需要操作的數據或信息。
3)中間的一層,就是"控制層"(Controller),它負責根據用戶從"視圖層"輸入的指令,選取"數據層"中的數據,然后對其進行相應的操作,產生最終結果。
這三層是緊密聯系在一起的,但又是互相獨立的,每一層內部的變化不影響其他層。每一層都對外提供接口(Interface),供上面一層調用。這樣一來,軟件就可以實現模塊化,修改外觀或者變更數據都不用修改其他層,大大方便了維護和升級。同時降低了系統中客戶和服務構件之間耦合度,提高了服務構件的可重用性。
在本系統中,Controller將會由業務邏輯層和數據訪問層兩部分共同組成。
本項目中選擇了B/S模式。B/S架構的全稱為Browser/Server,即瀏覽器/服務器結構。Browser指的是Web瀏覽器,極少數事務邏輯在前端實現,主要事務邏輯在服務器端實現。
采用B/S架構的系統無須特別安裝,只有Web瀏覽器即可。
服務器可以直接部署在廣域網上,通過一定的權限控制實現多客戶訪問即可。
同時用戶無需下載及升級多個客戶端,直接升級服務器即可。
1.2 接口設計
API是指應用程序編程接口,我們通過API接口可以實現特定的功能,而不需要了解其內部實現細節。可以把API接口理解為是特定服務的一種封裝,將服務封裝起來提供給他人調用,這樣一來很多功能不需要二次開發。
| 接口名稱 | 接口地址 | 請求方式 | 請求參數 | 響應格式 |
| register | /register | POST | username,email,passwd | success/fail |
| login | /login | POST | username,passwd | success/fail |
| userInfo | /profile/{username} | GET | username | userInfo |
| addDevice | /addDevice | POST | deviceId,type,IPaddress | success/fail |
| getDevSta | /getDevSta | GET | deviceId | devStaInfo |
| ctrDevSta | /ctrDevSta | POST | deviceId,state | success/fail |
| delDev | /delDev | POST | deviceId | success/fail |
二 系統視圖
2.1 分解視圖
分解是構建軟件架構模型的關鍵步驟,分解視圖也是描述軟件架構模型的關鍵視圖,一般分解視圖呈現為較為明晰的分解結構(breakdown structure)特點。分解視圖用軟件模塊勾划出系統結構,往往會通過不同抽象層級的軟件模塊形成層次化的結構。

2.2 依賴視圖
依賴視圖展現了軟件模塊之間的依賴關系。比如一個軟件模塊A調用了另一個軟件模塊B,那么我們說軟件模塊A直接依賴軟件模塊B。如果一個軟件模塊依賴另一個軟件模塊產生的數據,那么這兩個軟件模塊也具有一定的依賴關系。
依賴視圖在項目計划中有比較典型的應用。比如它能幫助我們找到沒有依賴關系的軟件模塊或子系統,以便獨立開發和測試,同時進一步根據依賴關系確定開發和測試軟件模塊的先后次序。

2.3 泛化視圖
泛化視圖展現了軟件模塊之間的一般化或具體化的關系,典型的例子就是面向對象分析和設計方法中類之間的繼承關系。泛化視圖有助於描述軟件的抽象層次,從而便於軟件的擴展和維護。
下圖展示了User,Worker,Manager之間的泛化關系。

2.4 執行視圖
執行視圖展示了系統運行時的時序結構特點,比如流程圖、時序圖等。執行視圖中的每一個執行實體,一般稱為組件(Component),都是不同於其他組件的執行實體。如果有相同或相似的執行實體那么就把它們合並成一個。
執行實體可以最終分解到軟件的基本元素和軟件的基本結構,因而與軟件代碼具有比較直接的映射關系。在設計與實現過程中,我們一般將執行視圖轉換為偽代碼之后,再進一步轉換為實現代碼。
2.5 部署視圖
部署視圖是將執行實體和計算機資源建立映射關系。這里的執行實體的粒度要與所部署的計算機資源相匹配,比如以進程作為執行實體那么對應的計算機資源就是主機,這時應該描述進程對應主機所組成的網絡拓撲結構,這樣可以清晰地呈現進程間的網絡通信和部署環境的網絡結構特點。

部署視圖有助於設計人員分析一個設計的質量屬性,比如軟件處理網絡高並發的能力、軟件對處理器的計算需求等。
三 數據庫設計
數據庫設計主要包含下列關系表:
用戶表:
| 字段 | 類型 | 注釋 |
| ID | String | 用戶編號 |
| name | String | 姓名 |
| password | String | 登錄密碼 |
| String | 郵箱 | |
| grade | int | 用戶等級,標識管理員或值班員 |
設備表:
| 字段 | 類型 | 注釋 |
| ID | String | 設備編號 |
| class | String | 設備類型 |
| area | int | 所屬區域 |
| state | int | 設備狀態 |
| IPaddress | String | IP地址 |
區域表(網關表):
| 字段 | 類型 | 注釋 |
| areaId | int | 區域編號 |
| IPaddress | String | 對應網關IP地址 |
| discribe | String | 描述信息 |
四 運行環境及技術選型
開發語言:JAVA
Web開發框架:SpringBoot
緩存:Redis
數據庫:MySQL
運行環境:Linux平台+Docker容器
五 系統工作機制
概念原型是一種虛擬的、理想化的軟件產品形式。具體的講,概念原型 = 用例 + 數據模型。
通過上述分析,總結項目的工作過程如下:
用戶成功登錄后,我們根據用戶等級為其賦予不同的功能。對於系統管理員,可以進行維護信息,用戶管理,設備管理,接受報警信息等操作。對於值班員可以進行維護信息,設備管理,接受報警信息等操作,但設備管理中不能創建,刪除以及修改設備信息。
針對用戶的不同操作請求,由業務處理層給出不同的響應,比如驅動設備完成相關操作,返回包含用戶信息和設備狀態的頁面等。
參考文獻:《軟件科學基礎概念》
