【Gamma】 Phylab 展現博客

【Gamma】 Phylab 展現博客

發佈地址

網站:PhyLab

GitHub Release: WhatAHardChoice/Phylab Gamma版本

1、團隊簡介

團隊名稱:WhatAHardChoice前端

照片 姓名&自我介紹 指望角色
zbw 我是周BW,喜好攝影、音樂及各類新奇的技術。技術上後端熟悉Java、Python,前端會一點vue,熟悉PS還能夠當美工。總之什麼都會一點但都不夠深,但願能在與你們合做的過程當中與你們一同窗習進步! 開發&PM/美工
zgj 我是周GJ,喜歡體驗生活,愛好挺多,運動旅遊電影音樂。對C、Java、C#比較熟悉,各類語言都能快速上手。有緣能成爲一個團隊,合做愉快! 開發
hyf 我是何YF,平時喜歡追劇看番,能力不足,熱情有餘。偏向作測試,也願意給開發的同窗提供各類協助。很高興能和你們成爲一個團隊,也但願接下來合做愉快! 測試
fzk 我是樊ZK,業餘時間喜歡玩遊戲看電影。比較熟悉C/C++,也能夠開發也能夠測試(哪邊缺人去哪邊)。技術可能不是很是好,可是願意學習。 開發或測試
wzq 我是王ZQ,喜歡電影、電視劇和綜藝,能力通常水平有限,希望意多學習。對C和Java比較熟悉,偏向作測試。很是高興加入這個團隊,但願在以後的任務裏能一塊兒努力,合做愉快。 測試
ys 我是楊S,喜歡遊戲、電影、電視劇,固然也喜歡編程。對C和Java比較熟悉,偏向開發。能力還有不少不足,水平也有限,希望意多多學習,跟你們共同進步 開發
ylxy 我是殷LXY,愛好是看小說、玩遊戲,如今正抓緊時間鍛鍊本身的編程能力。對C/Java比較熟悉,偏向測試,也可也作一些測試之外的雜務及輔助pm工做。很高興能和你們一個團隊,會盡力爲團隊作出貢獻 測試&文檔

2、項目目標

2.1 典型用戶

典型用戶1 典型用戶2 典型用戶3
姓名 小王 小李 小張
性別、年齡 男、20 男、20 男、20
職業 大二 大二 大二
收入
知識層次和能力 本科在讀,善於利用網絡工具,物理系學生 本科在讀,善於利用網絡工具,非物理系學生 本科在讀,善於編程,計算機系學生
生活/工做狀況 上學 上學 上學
動機、目的、困難 動機:物理實驗必修課;目的:想取得好成績;困難:每次實驗以前,得花大量時間查找資料寫預習報告,在實驗數據處理上存在困難。期末考試複習找不到資料。 動機:物理實驗必修課;目的:想取得好成績;困難:每次實驗都要花費大量時間,還有其餘專業課的負擔 動機:物理實驗必修課,本身會編寫腳本處理數據;目的:但願分享本身的腳本給他人使用;困難:沒有途徑分享,分享給他人後他人不會用
用戶偏好 認真學習,善於利用電腦手機 喜歡社交、善於利用電腦手機 樂於助人、但願幫助你們學習
用戶比例 40% 50% 10%
典型場景 在網站上發現有不少實驗的預習報告,以及對數據的處理 在網站上發現能自動處理數據,來檢測本身的結果是否正確 申請管理員權限後,上傳並調試本身的腳本
典型描述 認真嚴謹、踏實 追求簡單、效率 樂於助人

2.2 功能描述

功能 功能描述 驗收標準
用戶 用戶認證 用戶註冊
用戶登錄/登出
郵箱認證
修改密碼
可以正常註冊
可以正常登錄,並維持登陸狀態
可以收到認證郵件並認證
可以修改密碼
信息修改 查看我的信息
修改我的信息
上傳頭像
可以瀏覽本身的我的信息
可以修改我的信息並於服務器同步
可以上傳/修改本身的頭像
實驗 預習實驗 預習報告 每一個實驗可以看到相應的預習報告,預習報告內容正確
數據處理 數據處理運行
數據處理正確性
數據處理報錯
支持不一樣效果的模板
實驗的腳本可以根據輸入數據運行獲得結果
實驗腳本可以獲得正確的數據
實驗腳本在遇到錯誤輸入時能報錯
不一樣的模板都能生成合格的報告
評論 實驗界面評論區評論 可以在實驗界面看到他人評論,並能發送簡單的評論信息
收藏 收藏實驗報告
查看收藏報告
下載收藏報告
刪除收藏報告
可以在報告生成後收藏相應報告
可以查看本身收藏的報告
可以下載本身收藏的報告
可以刪除(取消收藏)本身收藏的報告
社區 發表問題 發表問題,提供問題描述
點贊他人的回答
可以發表問題,並在問題描述中提供圖文、附件等信息
可以對他人答案點贊,本身的答案可以被點贊
回覆 回覆某一文章/問題/答案 可以在某一文章/問題/答案下評論,並附帶圖文或附件等信息
發表文章 發表文章 可以發表一篇文章,並附帶圖文、附件等信息
控制檯 新建實驗 新建一個小實驗 可以正確新建實驗,新建後實驗處於未發佈狀態,且自帶實驗模板
上傳報告 上傳預習報告至相應實驗組下 可以上傳PDF格式的預習報告,可以攔截錯誤的文件上傳
編輯腳本代碼 Python/Latex/Html/Markdown編輯
html實時預覽
可以編輯/保存某個實驗的代碼
可以在編輯html表格時實時預覽
運行測試 輸入數據運行測試 可以在輸入數據的狀況下運行測試,並返回服務端的運行日誌
發佈/刪除實驗 發佈實驗
刪除未發佈實驗
可以正常發佈實驗,發佈後用戶能夠在實驗區看到
可以刪除未發佈實驗,刪除後服務端文件也被清空
主頁 公告欄 顯示公告欄
修改公告欄
全部用戶都能看到公告欄
只有管理員可以修改公告欄、且修改可持久化
設計性實驗 設計性實驗複習 切換實驗內容
點擊顯示/隱藏答案
可以切換不一樣的實驗(共8個)
點擊挖空部分可以顯示/隱藏答案
其餘 移動端 總體顯示正常
基本功能可用
移動端顯示沒有明顯的溢出、錯亂狀況
註冊登陸、生成報告、設計性實驗等基本功能可以使用

2.3 用戶量

截至6月17日晚,共有70人次在網站註冊。Beta階段和Gamma階段註冊量增量不大,緣由一是宣傳力度減弱,二是新功能不須要註冊便可使用,且綜合實驗在Gamma階段已經結束。vue

網站訪問量方面,截至6月17日晚設計性實驗頁面總訪問量417次。laravel

3、項目發佈與展現

3.1 新功能

3.1.1 Markdown模板生成報告

3.1.1.1 可選擇的模板生成(Beta)

在生成報告界面能夠選擇報告生成方式:Latex或Markdown模板。git

目前全部實驗都支持使用兩種模板生成報告了。github

與Alpha階段對比: Markdown模板內容與Latex模板內容一致,僅樣式略顯簡陋,但生成速度大大提高(詳見測試報告-性能測試部分)。數據庫

3.1.1.2 控制檯徹底接入(Gamma)

控制檯管理的內容由以前的三件套(Python/Latex/HTML)轉爲了四件套(+Markdown)。原先的操做均不受影響。增長了Markdown接口的測試。編程

3.1.2 設計性實驗複習頁面(Beta)

無需登錄便可直接訪問:設計性實驗複習小程序

上線了8個考試實驗內容,內容參考了往屆的複習資料。支持使用鼠標滑過、點擊的方式顯示與隱藏答案。後端

Gamma階段修復了點擊事件的問題,目前該頁面在移動端也能正常工做了。

3.1.3 新實驗(Beta)

上線了兩個小實驗2160115密立根油滴實驗 和 2200116聲光衍射實驗。

Gamma階段因爲綜合實驗結束,暫未考慮增長新的實驗內容。

3.1.4 公告欄(Beta&Gamma)

Beta階段引入了主頁公告欄,Gamma階段引入了公告欄的編輯功能。

3.2 修復缺陷

3.2.1 移動端顯示(Beta)

因爲以前項目之前並未考慮到移動端使用的問題,移動端的原有頁面崩壞嚴重,報告生成沒法使用。

與Alpha階段對比: 點此查看之前移動端頁面的諸多問題

Beta階段咱們改善了移動端的顯示,使移動端可以正常生成和查看報告。

3.2.2 頭像上傳、密碼修改(Beta)

用戶界面目前支持上傳本身的頭像了。

修復了密碼修改接口,目前能夠在登錄頁面-忘記密碼連接中向註冊郵箱發送修改密碼連接。

3.2.3 工程質量:測試、文檔、註釋(Beta&Gamma)

該部分詳情將於第五部分介紹。

3.2.3.1 測試

與Alpha階段不一樣,在Beta和Gamma階段團隊格外重視測試,進行了包括單元測試、性能測試、接口測試等一系列測試,在提高項目總體質量的同時也學到了不少知識。

爲了方便測試,在Gamma階段咱們在項目內定義了錯誤碼,以幫助測試和debug。錯誤碼統一了以前項目返回出錯信息或拋異常的狀況。咱們提供了配套的錯誤碼說明文檔。

3.2.3.2 文檔、註釋及其餘

在Gamma階段咱們對項目中的代碼增添了不少註釋。大部分註釋集中在後端,前端也有少許簡單的註釋幫助開發理解代碼。

爲了幫助以後的同窗更快上手項目,咱們修訂和編寫了不少文檔,包括:入門及項目結構介紹、接口文檔、服務端部署文檔、本地部署踩坑文檔、錯誤碼說明、配置文件說明、接口測試運行說明。

除此以外咱們在Github將服務端運行的完整代碼進行了打包,以幫助以後的同窗部署。

3.3 已知的問題與限制

3.3.1 問題

  1. 登出問題:社區和實驗網站的登出不一樣步
  2. 移動端實驗評論區沒法使用,實際上問題是移動端社區沒法使用,問題出在移動端社區的登錄與pc端不一樣。
  3. 註冊部分的年級信息沒有和後端關聯起來,此問題修改難度較大暫時擱置
  4. 控制檯偶爾出現編輯器須要點擊才能喚醒的狀況

3.3.2 限制

  1. 上傳頭像功能和社區有小部分衝突
  2. 修改密碼的郵件極容易被識別爲垃圾郵件
  3. 手機上傳的頭像在電腦上方向不太對

4、項目管理

4.1 分工

項目的分工在Beta和Gamma階段大致如圖:

基本上團隊內分工在儘可能讓你們作熟悉的事情基礎上又有靈活的調整,使得效率儘量最大化。

4.2 平衡

Beta和Gamma階段出現的一個跡象是其餘課程花費的時間逐漸擠壓了軟工的時間。尤爲是在Gamma階段起初因爲多門課程有考試/大做業,致使項目進度一度停滯不前。

針對這一問題,PM根據各同窗時間充裕程度分配任務,並鼓勵結對的模式,最終的進度有所延誤但工做都完成了。

4.3 驗收

Alpha階段咱們的項目對於Issue管理不是很是嚴謹,簡而言之大部分issue的關閉都沒有對應的commit內容或成果。

在Beta和Gamma階段咱們採用先回復再關Issue的方式使用issue功能。關閉issue的同時也須要提供相應的成果,不只僅是commit,也能夠是博客連接、設計圖等等。

天天的例會時PM會對當日的工做進行確認,若是出現關閉issue後發現問題仍未解決的狀況,則會新開issue處理新的問題。

5、工程質量

5.1 測試

相比於Alpha階段徹底沒有自動化測試來講,咱們在Beta和Gamma階段的自動化測試主要分爲如下的三個部分展開:單元測試、性能測試和接口測試。

除此以外正常的前端功能測試(填寫測試矩陣)和每一個階段的迴歸測試也是必不可少的。

5.1.1 單元測試

在Beta階段咱們首先嚐試了在項目中引入單元測試,並取得了很多成效。Beta階段結束時測試不全,以及遇到的不少測試相關的沒有解決的問題也在Gamma階段得以解決,使得咱們目前幾乎全部功能控制器都能被測試覆蓋。

覆蓋率:

5.1.2 性能測試

在Beta階段引入了Markdown模板報告生成後,咱們對這一功能與原先的Latex報告功能採用性能測試的方式進行比較。

詳見【Beta】Phylab 測試報告

單次生成性能測試
接口 總用時 平均用時
Markdown 39841ms (39.841s) 398ms
Latex 116035ms (116.035s) 1160ms

Markdown生成一個報告用時約是Latex接口的34%左右。

併發壓力測試

因爲Postman僅能進行串行的測試,咱們使用Jmeter對接口進行併發壓力測試。

根據本項目第一屆同窗們測試的結果(連接),1c2g的服務器約能承受30人同時生成Latex報告。

如下時間單位爲ms

1s突發測試,併發線程數:50

Latex接口運行本測試失敗,生成了12個報告後服務器宕機。

Markdown接口運行正常

Label # Samples Average Median 90% Line 95% Line 99% Line Min Max Error % Throughput Received KB/sec Sent KB/sec
MDtest 50 20086 20982 22123 22135 22209 16458 22209 0.00% 2.16939 2.91 2.45
60s壓力測試

Markdown接口:在60s內均勻地產生180個線程發起請求:平均每一個請求耗時24s

Latex接口:在60s內均勻地產生90個線程發起請求:平均每一個請求耗時:60s

注意雖然Latex接口在Jmeter中返回的錯誤是10%,但部分返回http 200的接口實際上返回信息是「fail」,統計了服務器上生成的pdf個數爲:68,既真實錯誤率爲24.44%。

嘗試以測試Markdown接口的參數測試Latex接口,一樣致使了服務器宕機。

5.1.3 接口測試

在Gamma階段,爲了方便開發者在本地快速驗證接口正確性,咱們對Postman這一工具進行了學習後編寫了多個接口測試樣例。並導出爲方便使用的JSON文件共後續開發同窗使用。接口測試相比於單元測試來講運行時間短,能夠快速驗證接口是否工做正常。

5.2 註釋 & 代碼清理 & 配置解耦

在Gamma階段,咱們爲目前的項目代碼增長了註釋,而且儘可能刪除了其中的無用代碼。(多數是第一屆同窗遺留的代碼)

在後端方面,咱們統計了全部控制器的行數和註釋關係。可見在總行數提高的狀況下注釋率仍高於原版本,註釋行數增加120%。

後端控制器 總行數 代碼行數 註釋行數 註釋佔比(含空行)
往屆版本 1330 952 294 22%
目前版本 1911 1118 647 34%
增量 43.68% 17.44% 120.07% 54.55%

在前端方面,咱們統計了JS部分的行數和註釋關係。雖然沒有寫太多註釋,但對代碼中的無用代碼進行了清理。注意到雖然代碼行數變化不大,但這是在新版本實現了不少新功能狀況下進行統計的。

前端JS 總行數 代碼行數 註釋行數 註釋率(含空行)
往屆版本 2416 2064 141 6%
目前版本 2397 1913 197 8%
增量 -0.79% -7.32% 39.72% 33.33%

在配置解耦方面,咱們將全部可能的配置均放到了.env文件以及config文件夾下的配置文件中,並編寫了相應說明文檔。

5.3 文檔 & 技術博客

咱們在Alpha階段由於項目難以入手而花費了不少時間。在Gamma階段,咱們爲項目補充了不少文檔,目的是幫助以後的同窗(若是有的話)更快上手該項目。除此以外咱們還編寫了8篇技術博客,能夠做爲後續同窗的參考。

5.3.1 文檔

目前GitHub的dev分支下docs目錄中共有8篇文檔。分別是:

  • 接口文檔:包括修訂事後的目前項目API信息。
  • 錯誤碼說明文檔:包括錯誤碼及其對應錯誤信息。
  • 控制檯使用說明:包括控制檯的基本操做方法。
  • 部署文檔:修訂的版本,目前除了數據庫問題以外已經能夠按GitHub上的代碼直接部署。
  • 本地部署踩坑文檔:在部署文檔的基礎上說明了關於如何將項目部署到本地進行開發。
  • Postman接口測試使用說明:配合根目錄下postman文件夾內的測試樣例使用。
  • 配置文件說明:包括項目配置文件中內容的解釋。
  • 項目入門及結構介紹:很是詳細的項目介紹,包括項目的開發狀態,各目錄及重要文件介紹、項目的開發方式、項目中的難點坑點以及將來的一些開發建議等。

5.3.2 技術博客

目前團隊共發佈了8篇技術博客,雖然篇數很少,但大部分比較詳細實用,結合文檔對項目入門的幫助較大。

【技術博客】 關於laravel5.1中文件上傳測試的若干嘗試

【技術博客】 利用Postman和Jmeter進行接口性能測試

【技術博客】 Laravel 5.1單元測試(PHPUnit)入門

【技術博客】移動端的點擊事件與Sticky Hover問題

【技術博客】Laravel5.1文件上傳單元測試

【技術博客】使用PhpStorm和Xdebug實現Laravel工程的遠程開發及調試

【技術博客】利用Python將markdown文檔轉爲html文檔

【技術博客】Postman接口測試教程 - 環境、附加驗證、文件上傳測試

6、項目進展

與Alpha階段相比,因爲後半學期其餘課程比較忙,而且各位組員幹勁也有些降低,所以燃盡圖也不是很是「美觀」。

但整體來講咱們計劃的任務都完成了,且燃盡圖真實的反映了項目的狀態(真實的平了一段時間)。

7、成員貢獻

咱們仍按照Alpha階段的統計方式對貢獻分進行了統計。

Beta

Gamma

彙總

最終Beta和Gamma的貢獻分平均以下:

姓名 Beta Gamma 總分 平均 取整數
ZBW 59.18367 64.93213 124.1158 62.0579 62
ZGJ 65.30612 60.181 125.4871 62.74356 63
FZK 58.16327 63.34842 121.5117 60.75584 61
YLXY 53.06122 47.51131 100.5725 50.28627 50
HYF 42.85714 34.84163 77.69877 38.84939 39
WJB 51.02041 57.01357 108.034 54.01699 54
YS 20.40816 22.17195 42.58011 21.29005 21
700 350 350

8、總結與展望

終於,本學期的軟工課程到此也接近尾聲了。

做爲接手往屆項目的團隊,通過三輪緊張的迭代以後,起碼咱們能拍着胸脯說:

咱們的項目相比於以前的版本進步了很多,功能變多了,項目質量也有所提高。

固然目前項目中還有不少咱們由於能力或者精力沒能徹底解決的問題,但團隊儘可能總結出了這些問題,給未來開發的同窗一些指引。

主要問題包括:

  • wecenter和Phylab的結合致使的諸多維護困難,如配置文件不惟1、數據庫問題等。因爲wecenter的存在數據庫沒法所有解耦出來,致使目前數據庫模式仍不能完整的導出來。
  • 各模塊版本老舊,且該框架升級比較麻煩:後端方面項目起初選用了Laravel 5.1,爲當時最新的LTS版本,配套的PHP爲7.0,該Laravel版本立刻就要結束支持了,且缺乏不少新功能。目前Laravel最新已經更新到了5.8,PHP也更新至了7.3版本。Laravel每個大版本升級(版本號+0.1)都有一篇單獨的文檔,若是不是一直跟進的話跨多個版本升級難度很大。前端方面採用的Bootstrap 3也好久沒有升級。
  • 項目仍有很多小bug,好比實驗腳本不全,有些實驗腳本有bug。以及不少方法實現較爲tricky,擴展性不強。
  • 不少功能沒有實現,好比在Phylab端的控制檯可管理內容較少,且腳本編寫門檻很高。(下降門檻的問題能夠另起一個項目了)

咱們在思考後提出了關於將來開發的一些可行方向,包括但不限於:

  • 採起先後端分離的模式,後端採用RestAPI的方式呈現,而前端能夠選擇使用專門的前端框架,甚至開發成微信小程序。這裏的一些問題是Restful的無狀態特性在部分功能上實現困難(如註冊登陸,管理員鑑權),但也不是沒有辦法(例如採用JWT),微信小程序還可使用微信進行驗證登錄。
  • 給Laravel進行升級,或採用一個輕量的後端框架。
  • 精簡論壇功能,考慮手寫一個論壇(或其餘的社交功能),而不是採用過於複雜的開源模塊。或者精簡wecenter
  • 嘗試把報告計算的邏輯放到前端來,從而極大減輕後端的工做量。
  • 嘗試下降編寫報告門檻,好比作可視化的腳本編輯,但這一方向的工做量很是大,甚至和目前的Phylab也沒什麼關係了,能夠另起項目。

以及一些提高項目質量的方法:

  • 繼續完善測試,特別是自動化的測試。
  • 統一代碼風格,修改各類亂七八糟的命名。
  • 把各類事情自動化:持續集成,自動化部署等等。

感謝各位老師、助教和同窗們的支持與幫助!

相關文章
相關標籤/搜索