項目 | 内容 |
---|---|
課程 | 2022春季軟體工程(羅傑 任健) |
要求 | 計劃階段要求-技術規格說明書 |
目标 | 制定技術規格說明書 |
文章目錄
-
-
-
- 一、技術棧
-
- 1.1 前端部分
- 1.2 後端部分
- 二、軟體的總體架構
-
- 2.1 子系統
- 2.2 子系統内部
- 三、系統的開發目标
-
- 3.1 代碼編寫
-
- 前端子產品
- 後端子產品
- 3.2 單元測試
-
- 前端子產品
- 後端子產品
- 前後端Json互動格式
- 3.3 系統壓力測試
- 3.4 API設計規範
-
- 資料庫結構靈活設計:
- 3.5 系統業務邏輯
-
- 系統層面:
- 運作環境
- 系統設計
- 系統性能
- 業務流程層面
-
- 3、Alpha階段初始任務配置設定
-
-
- 一、Alpha階段目标:
- 二、Alpha階段任務配置設定及計劃:
-
- 時間:4.11~5.8
- 說明:未完成狀态均為進行中或者尚未開始
- 項目冷啟動階段:階段Ⅰ——7天
-
- PM小組:
- 前端小組:
- 後端小組:
- 項目熱開發階段:階段Ⅱ——14天
-
- PM小組:
- 前端小組:
- 後端小組:
- 項目冷開發階段:階段Ⅲ——7天
-
- PM小組:
- 測試小組:
- 配置設定任務:
- 三、會議安排
-
-
一、技術棧
1.1 前端部分
- 主要架構:vue.js v2.96
- UI庫:vuetify v2.x
- vue插件:vue-router、vuex v2.x
- css擴充:sass
- 測試開發環境:windows 10,nodejs v16.14.2 , npm v6.14.10
- 實際部署環境:(未知)
1.2 後端部分
- 主要架構:SpringBoot v2.6.6 Mybatis v2.2.2
- 資料庫:MySQL v5.6.51
- 測試開發環境:javav1.8 maven v4.0.0
- 實際部署環境:(未知)
二、軟體的總體架構
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLjdzMkNWOzYjMzQjZjRWN4QjM5QjNxMWM4QGNxQ2M3I2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2.1 子系統
- 服務端:處理資料
- 用戶端:展示資料
- stomp架構:處理即時通訊
2.2 子系統内部
- 服務端:controller層負責與前端互動,處理請求轉發并調用service層;service層負責對資料進行處理,資料庫連接配接并對資料庫操作
三、系統的開發目标
3.1 代碼編寫
前端子產品
- 首先完成各個元件功能的vue編寫
- 根據頁面的布局設計,完成css調整
- 根據api文檔的設計,完成javascript函數編寫
- 測試時,需要編寫單元測試代碼
後端子產品
- 首先完成資料庫的搭建與連接配接
- 根據需求編寫相應功能函數
- 根據api文檔,完成函數設計
- 對每個功能函數進行單元測試
3.2 單元測試
前端子產品
- 完成一個功能子產品進行一次簡單的UI手動測試,并記錄操作,總結成Jest單元測試代碼。完成一個功能,便實作一次回歸測試。
後端子產品
- 對每個實作的函數進行單元測試,看能否正常實作對資料操作,完成一部分後總結為測試代碼以便後續進行回歸測試
前後端Json互動格式
code:表示互動結果代碼依據業界規範,我們将使用20000、40000、40001等代碼表示i前後端互動
data:封裝互動資料
message:傳回系統提示資訊
{
"code": 20000,
"data": {},
"message": ""
}
3.3 系統壓力測試
- 壓力測試的目标主要是以下幾點
- 負載能力:在正常的響應時間中,系統能夠支援的最多的用戶端的數量。
- 響應能力:在各種負載壓力情況下,系統的響應時間。
- 可靠性:在連續工作時間狀态下,系統能夠正常運作的時間。
- 具體名額:
- 響應時間:100毫秒以内
- TPS(Transaction per Second):200-300
- 錯誤率:不高于0.6%
3.4 API設計規範
注意:
- 在apifox中,我們設定了四種接口狀态。請開發人員使用接口時,及時更新狀态。
待确定:前後端都未開發和使用。
開發中:後端已開發。
聯調中:前端已使用該接口。
已釋出:後端已開發且前端已使用。
APIfox縮略圖:
- 若需修改或建立接口,應盡快在群裡提出,并協商。後端開發人員可以先完成底層函數的開發,最後再開發接口,防止接口變動導緻重新寫接口。
資料庫結構靈活設計:
3.5 系統業務邏輯
系統層面:
運作環境
- 服務端運作環境:Ubuntu-latest
- 應用端運作環境:Chrome v100.0.4896.127
系統設計
- 代碼設計
- 資訊的隐藏和封裝
- 将前後端各自封裝,通過API進行交流,傳遞是json格式檔案,這樣不會暴露各自的内部細節。後端在代碼實作的過程中的controller類、service類和Mapper類各自都是擁有私有的資料和公共的方法,很好地将資訊進行了封裝。
- 子產品化
- 将前端的代碼分為 assets, plugins, components 等檔案夾,分别開發具有不同功能的代碼,并且使用面向對象的設計思想,複用vue中的 template 實作功能的标準化,子產品化。
- 後端的功能函數是進行封裝的,各種操作被集合在service層的類中,如果需要修改接口或者增加需要隻要對相應的類進行修改即可,controller層或是前端資料的傳回都無需修改。
- 資訊的隐藏和封裝
- 架構設計
- 前後端分離
- 前端采用 vue.js 編寫,通過 https 以及 stomp等功能與後端進行資料互動,前後端兩組人員各自編寫代碼,進而實作前後端分離。
- 後端使用SpringBoot作為整體架構,通過controller層來接收前端資料并傳給service層進行處理。後端并不關心前端如何展示以及如何擷取資料。
- 前後端分離
系統性能
- 對于将來資料IO操作較多的情況下可能會采用主從結構,一個主庫負責寫操作,從庫負責讀操作,進而分擔讀寫的壓力。但是采用主從結構可能會略微增加延遲,該點需要注意。
- 實際上我們系統的性能是相對較好的, 但由于我們所使用的伺服器較小,在使用者量過大的情況下支援性會較差,導緻響應速度變慢。
業務流程層面
- 前端所傳回的資料理論上是合法的,前端會檢驗使用者輸入資料的格式等是否符合要求,如不符合則回報錯誤資訊給使用者。如果資料格式上符合要求并正确地傳給後端,後端會進行判斷,比如所添加好友的ID是否存在、所查找的群是否存在等,并傳回相應資料給前端。
- 如果前端傳回了錯誤的資料那麼後端就無法利用該資訊找到相應的對象,那麼可以用try-catch模式給前端回報錯誤資訊,前端可以要求使用者重新輸入以便傳回正确的資料。
3、Alpha階段初始任務配置設定
一、Alpha階段目标:
- 完成基礎功能開發:
- 使用者登陸注冊
- 使用者資訊編輯
- 使用者之間的聊天以及互動
- 團隊群組的互動和交流
- 普通會議的開啟和參與
- 在基礎功能的基礎上添加細節:額外需求将在靈活開發過程中靈活疊代
二、Alpha階段任務配置設定及計劃:
時間:4.11~5.8
說明:未完成狀态均為進行中或者尚未開始
項目冷啟動階段:階段Ⅰ——7天
PM小組:
姓名 | 任務 | 預計時長 | 是否完成 |
---|---|---|---|
wzx | 調研相關産品 | 4h | ❤️ |
hw | 調研相關産品 | 2h | ❤️ |
wzx | 依據初步構想設計UI圖 | 4h | ❤️ |
hw wzx | 進行市場調研和需求分析 | 4h | ❤️ |
wzx | 設計産品初始化方案 | 3h | ❤️ |
hw | 工業界以及學生采訪 | 3h | ❤️ |
hw wzx | 需求文檔+規格文檔+時間規劃+團隊貢獻制定初步設定 | 6h | ❤️ |
hw wzx | 召開團隊會議,制定階段目标,增強團隊凝聚力 | 6h | ❤️ |
hw | 在會議中讨論設計初步系統架構 | 2h | ❤️ |
前端小組:
姓名 | 任務 | 預計時長 | 是否完成 |
---|---|---|---|
xjl | 調研UI布局體系 | 3h | ❤️ |
hw | 收集UI圖庫資源 | 3h | ❤️ |
xjl | 依據草圖搭建“毛坯”架構 | 5h | ❤️ |
yy | 熟悉Vuetify以及相關元件設計 | 4h | ❤️ |
xjl | 前端Vue+Js技術棧擴充 | 5h | ❤️ |
hw | 前端Vue+css技術棧擴充 | 5h | ❤️ |
yy | 前端Vue+Js技術棧擴充 | 4h | ❤️ |
xjl | 參考同類産品設計并提出構想 | 4h | ❤️ |
xjl yy | 熟悉ajax資料請求以及cookie配置 | 3h | ❤️ |
後端小組:
姓名 | 任務 | 預計時長 | 是否完成 |
---|---|---|---|
zzy | 後端Springboot技術棧擴充 | 5h | ❤️ |
czr | 後端Springboot技術棧擴充 | 5h | ❤️ |
dxt | 後端Springboot技術棧擴充 | 5h | ❤️ |
czr | 設計初步ER圖 | 4h | ❤️ |
zzy+czr | 設計初步API接口文檔以及疊代規範 | 4h | ❤️ |
dxt | 調研SpringSocket實時通訊功能 | 4h | ❤️ |
czr+zzy | 依據修正ER圖設計資料庫表單結構并優化到3NF | 3h | ❤️ |
zzy | 調試伺服器配置,部署docker | 4h | ❤️ |
zzy czr dxt | 完成後端Spring架構初始化和封裝結構 | 4h | ❤️ |
項目熱開發階段:階段Ⅱ——14天
PM小組:
姓名 | 任務 | 預計時長 | 是否完成 |
---|---|---|---|
wzx | 繼續調研使用者需求,分析應用場景 | 4h | ❤️ |
hw | 完善功能規格以及任務配置設定 | 6h | ❤️ |
hw wzx | 組織團隊會議并記錄團隊程序,推動項目開發 | 4h | 💔 |
前端小組:
姓名 | 任務 | 預計時長 | 是否完成 |
---|---|---|---|
xjl | 完成整體架構UI設計 | 4h | ❤️ |
yy | 完成登入注冊界面以及後端互動郵箱驗證 | 4h | ❤️ |
hw | 豐富整體細節CSS以及Html設計 | 5h | 💔 |
xjl | 好友+團隊群組資訊清單的展示和通知擷取 | 4h | 💔 |
yy | 個人資訊修改和展示處理 | 5h | 💔 |
hw | 時間軸設計以及布局 | 5h | 💔 |
yy xjl | 聊天内容以及實時互動顯示 | 5h | 💔 |
hw | 團隊會議階段提醒與狀态設定 | 5h | 💔 |
yy xjl | 文檔上傳和展示處理 | 4h | 💔 |
後端小組:
姓名 | 任務 | 預計時長 | 是否完成 |
---|---|---|---|
zzy | 部署API FOX接口測試環境 | 2h | ❤️ |
czr | 通訊錄相關接口設計 | 4h | 💔 |
zzy | 使用者互動和資訊相關接口設計 | 4h | 💔 |
dxt | 實時通訊相關技術接口設計 | 4h | 💔 |
zzy | 使用者資訊修改、聊天、文檔、團隊管理功能實作 | 8h | 💔 |
czr | 通訊錄處理以及團隊使用者關系互動設計 | 6h | 💔 |
dxt zzy | 聊天内容即時通訊 | 5h | 💔 |
dxt zzy | 團隊會議接口設計以及時間軸資訊處理 | 5h | 💔 |
zzy czr dxt | 資料庫管理和其他細節處理 | 4h | 💔 |
項目冷開發階段:階段Ⅲ——7天
PM小組:
姓名 | 任務 | 預計時長 | 是否完成 |
---|---|---|---|
wzx | 繼續疊代需求 | 4h | 💔 |
hw | 完善功能規格以及文檔說明 | 6h | 💔 |
hw wzx | 組織團隊會議并記錄團隊程序,推動項目開發 | 4h | 💔 |
測試小組:
姓名 | 任務 | 預計時長 | 是否完成 |
---|---|---|---|
前端兩人 後端兩人 | 完善細節增加功能 | 8h | 💔 |
前端一人 後端一人 | 協作單元測試,進行覆寫性測試 | 6h | 💔 |
前端團隊 後端團隊 | 系統流量、吞吐量、伺服器性能測試 | 4h | 💔 |
配置設定任務:
三、會議安排
由于團隊成員構成豐富,包含不同專業的大學生、碩博,各自實驗任務較重,時間調停難度大,暫定每周天完21:00~22:30進行線下會議;每周3,5舉行線上會議推動項目進展。