<center>項目</center> | <center>內容</center> |
---|---|
課程班級博客鏈接 | https://edu.cnblogs.com/campus/xbsf/nwnu2020SE |
這個作業要求鏈接 | https://www.cnblogs.com/nwnu-daizh/p/12521474.html |
我的課程學習目標 | <p style="line-height:25px">1. 認真完成本課程學習; </br>2. 瞭解一個軟件項目製作的完整過程; </br>3. 緊跟老師腳步,儘量多的進行實戰演練。</p> |
這個作業在哪些方面幫助我實現學習目標 | <p style="line-height:25px">1. 寫博客;</br> 2. 提高編程能力;</br> 3. 掌握GitHub的基本使用。</p> |
結對方學號-姓名 | 201771030115-牛莉梅 |
結對方本次博客作業鏈接 | https://www.cnblogs.com/niulimei/p/12524472.html |
本項目GitHub的倉庫鏈接地址 | https://github.com/Jenna-yuan/NWNU-WEB |
##任務二
<p style="line-height:25px">  兩兩自由結對,對結對方《實驗二 軟件工程個人項目》的項目成果進行評價本次跟我結對的同伴是2017級卓越班牛莉梅同學。博客鏈接爲:<a href="https://www.cnblogs.com/niulimei/p/12420300.html">https://www.cnblogs.com/niulimei/p/12420300.html</a>;Github項目倉庫爲:<a href="https://github.com/niulimei1/Test1">https://github.com/niulimei1/Test1</a>。</br> 1、對項目博文作業進行閱讀並進行評論,評論要點包括:博文結構、博文內容、博文結構與PSP中“任務內容”列的關係、PSP中“計劃共完成需要的時間”與“實際完成需要的時間”兩列數據的差異化分析與原因探究,將以上評論內容發佈到博客評論區。</p>
<p style="line-height:25px">2、克隆結對方項目源碼到本地機器,閱讀並測試運行代碼,參照《現代軟件工程—構建之法》4.4.3節覈查表複審同伴項目代碼並記錄。</p>
<center>項目</center> | <center>內容</center> |
---|---|
概要部分 | <p style="line-height:25px">(1)代碼符合需求和規範說明;</br>(2)代碼設計考慮周全;</br>(3)代碼可讀性良好;</br>(4)代碼容易維護;</br>(5)代碼每一行都執行檢查過了。</p> |
設計規範部分 | <p style="line-height:25px">(1)設計遵從已知設計模式或項目中常用的模式;</br>(2)代碼中午硬編碼或字符串/數組等存在;</br>(3)代碼沒有依賴某一平臺,不會影響將來的移植;</br>(4)沒有無用代碼可以清除。</p> |
代碼規範部分 | 整體代碼風格良好,符合代碼標準。並未進行相應的修改。但是有爲作者提供一些更好的建議。 |
具體代碼部分 | <p style="line-height:25px">(1)作者代碼嚴密緊緻,無需要修改部分。對於調用的外部函數,檢查了返回值或處理了異常;</br>(2)參數傳遞無錯誤,字符串的長度是單字符的長度,是以0開始計數;</br>(3)邊界條件利用try catch來進行處理,代碼中循環沒有出現死循環;</br>(4)有使用斷言來保證我們認爲不變的條件真的得到滿足;</br>(5)數據結構中沒有用不到的元素。</p> |
效能 | <p style="line-height:25px">(1)代碼的效能良好,最壞的情況是運行時稍微多等待幾秒;</br>(2)代碼中,沒有明顯的可優化的部分;</br>(3)該系統並不需要調用網絡。</p> |
可讀性 | 代碼通俗易懂,並有足夠的註釋。 |
可測試性 | 由於本項目並非一各足夠完整的項目,故需要對其進行更新和創建新的單元測試。 |
<p style="line-height:25px">3、依據複審結果嘗試利用github的Fork、Clone、Push、Pull request、Merge pull request等操作對同伴個人項目倉庫的源碼進行合作修改。</p>
##任務三
<p style="line-height:25px">  採用兩人結對編程方式,結合我校師生疫情每日上報系統使用體驗,設計開發一款符合我校疫情防控工作需求的信息系統,使之具有以下功能:</p>
<p style="line-height:25px">(1)可採集全校各類師生員工疫情信息;</br>(2)各二級部門疫情防控工作負責人可查看本部門人員疫情彙總,並提供高級查詢功能進行多屬性組合查詢和可視化統計功能;</br>(3)學校防控辦指定負責人登錄《西北師範大學疫情防控信息統計》子系統,可瀏覽所有人員填報彙總數據清單,利用【高級查詢】可進行數據組合篩選,系統以圖形化方式展示各學院已填報和未填報學生統計情況和關鍵疫情數據統計情況,可【導出】查詢列表的EXCEL文件;</br>(4)人機交互界面要求GUI界面(WEB頁面、APP頁面都可);</br>(5)附加分功能:定時填報提醒。</p> |
- <p style="font-size:16px">需求分析陳述</p>
<p style="line-height:25px">  2019年12月末,中國武漢發生新型冠狀病毒(2019-nCoV) 感染的肺炎疫情,爲遏制疫情蔓延,有效切斷病毒傳播途徑,在中央政府指導下,各級政府部分採取了一系列防控措施: 2020年1 月23 日10時起對武漢“封城”,全國 31個省市也相繼實施了嚴格的防控措施;全國各省市向武漢和湖北派遣醫療隊參與救治工作;在全國範圍內調配口罩、防護服、藥品等急需的醫療資源支援武漢;指導和督促全國範圍內擁有醫療物資生產資質的企業儘快恢復生產能力;定向撥付專項財政資金用於疾病防控;從其他省份調集物資保障武漢市民日常生活。</br>  爲有效配合防控機構有關疫情信息的採集、統計與排查,我校開發了教職工/學生疫情上報系統,該系統由教職工疫情每日上報、學生疫情每日上報、二級部門疫情每日彙總表、疫情防控填報統計四個子系統組成。實現對我校各類人員基本情況、所在區域及活動軌跡及健康狀況的信息收集。師生通過我校企業微信服務大廳訪問該系統進行遠程信息填報。 </br>  本校疫情上報信息統計系統開發初期得到很多本校人員的“吐槽”,建議如下:</br>(1)優化上報界面;</br>(2)設置填報時間提醒</br>(3)提高系統性能。</p>
- <p style="font-size:16px">軟件設計說明</p>
- **<p style="line-height:25px">結構設計:**本系統在結構上採用Spring MVC體系架構。採用具有軟件產品可以分批次交付和目標系統能夠被模塊化特點的增量模型爲基礎進行軟件開發。</p>
- **<p style="line-height:25px">程序設計:**開發階段嚴格執行Spring MVC體系架構的基本流程與方法,在程序設計過程中,主要設計了以下類與JSP頁面:</p>
- **<p style="line-height:25px">數據設計:**相對於實驗二的上報登記模塊來說,本實驗多了教職工上報這一模塊。故在數據設計過程中,我們就多添加了教職工這一模塊數據。管理模塊各二級部門和學校疫情防控辦將student-info和teacher-infor兩張表按照主鍵的方式完成數據查詢和信息展示等功能。</p>
- **<p style="line-height:25px">界面設計:**爲相應用戶視覺上的號召,此次界面設計中,我們遵循以深藍色爲基調,通過與白色想搭配使用,使界面簡易整潔相對比較可觀。</p>
- <p style="font-size:18px">軟件實現及核心功能代碼展示</p> 1、核心代碼展示
package com.nwnu.controller;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.nwnu.pojo.Mannager;
import com.nwnu.service.MannagerService;
@Controller
public class MannagerController {
@Autowired
private MannagerService mannagerService;
@RequestMapping("/admin")
public String admin(String name, String password, Model model, HttpSession session) {
// 通過用戶賬號和密碼查找用戶
Mannager mannager = mannagerService.findMannager(name, password);
if (mannager != null) {
// 將用戶對象添加到Session
session.setAttribute("USER_SESSION", mannager);
model.addAttribute("mannager", mannager);
// 跳轉到主頁面
return "redirect:listStudent";
}
// 返回到登錄界面
model.addAttribute("msg", "賬號或密碼錯誤,請重新輸入");
return "admin";
}
@RequestMapping("/logout")
public String logout(HttpSession session) {
// 清除Session
session.invalidate();
// 頁面重定向
return "redirect:admin";
}
}
2、功能展示
-
<p style="font-size:16px">程序運行</p>
-
<p style="font-size:14px">系統首頁</p>
<p style="line-height:25px">本系統首頁中包括<b>疫情上報</b>和<b>填報統計</b>兩個功能。疫情上報入口面向本校學生和教職工開發。填報統計由二級部門疫情防控工作負責人和學校防控辦制定負責人登陸進入相應界面,進行相應操作。</p>
-
<p style="font-size:14px">填報人員身份選擇</p>
<p style="line-height:25px">本校填報人員無非就教職工和學生兩類人員。由首頁中<b>疫情上報</b>入口進入進入本界面,選擇自身所扮“角色”進行信息上報。</p>
-
<p style="font-size:14px">學生和教職工疫情登記</p>
<p style="line-height:25px">本次系統開發中,我們將學生疫情登記與教師疫情登記進行統一化,其目的是降低二級部門負責人和學校防控辦負責人統計時的複雜度。相對於實驗二中所統計的數量上稍有減少,但是所統計數據還是比較齊全。</p>
-
<p style="font-size:14px">填報時間限定</p>
<p style="line-height:25px">本系統中設置填報截止時間爲早上10點。也就是若填報時間在10點之前,信息提交時系統會顯示<b style="color:red">提交成功</b>,但若超過10點則顯示<b style="color:red">提交失敗</b>。</br>1、學生提交信息顯示:</p>
2、教職工提交信息顯示
-
<p style="font-size:14px">填報統計</p>
<p style="line-height:25px">各負責人通過首頁<b>填報統計</b>入口進入管理員登錄界面,進行學院和學校分類別登錄進入相應的管理界面。如果管理人員對應信息輸錯或未輸入,則會提示“您還沒有登錄,請登錄”。</p>
-
<p style="font-size:14px">二級部門查詢、數據統計功能展現</p>
<p style="line-height:25px">根據我們的理解,認爲二級部分疫情防控負責人應爲各學院等本校相關分機構。由於分機構較多,本系統只做了兩個簡單的二級部門疫情防控子系統。分別是:<b>計算機科學與工程學院疫情防控信息統計</b>和<b>體育學院疫情防控信息統計</b>。其相關功能展示如下:</br>1、計算機科學與工程學院疫情防控信息統計</p>
-
首頁
-
組合查詢
-
數據統計 2、體育學院疫情防控信息統計
-
首頁
-
組合查詢
-
-
<p style="font-size:14px">學校防控辦高級查詢、數據統計與導出功能展示</p>
<p style="line-height:25px">關於學校防控辦的<b>高級查詢</b>此模塊,本系統採用“學院+疑似狀況”兩個方面進行組合查詢,以快速篩選出各學院身體健康發生特殊狀況的人員,以快速採取相應的措施。<b>數據統計</b>模塊中,我們主要對當天各學院有疫情疑似症狀和填報與未填報的人數進行統計分析。</br>1、首頁</p>
2、高級查詢 3、數據統計 4、導出
-
-
<p style="font-size:16px">結對之路</p>
<p style="line-height:25px">  本次結對編程過程中,我們在時間段上劃分爲:</br>1、第四周星期五—星期日完成任務二相關實驗要求;</br>2、第五週星期一—星期四進行任務三代碼部分實現;</br>3、第五週星期五—星期六完成博客內容編制及相關要求細化。</br>整個過程中兩個人一起交流,分工合作,相對於實驗二中個人項目的開發過程效率高了很多。下面是聊天記錄展示:</p>
- <p style="font-size:16px">PSP展示</p>
<center>PSP2.1</center> | <center>任務內容</center> | <center>計劃共完成需要的時間(小時)<center> | </center>實際完成需要的時間(小時)</center> |
---|---|---|---|
Planning | 計劃 | 80 | 90 |
. Estimate | . 估計這個任務需要多少時間,並規劃大致工作步驟 | 80 | 90 |
Development | 開發 | 75 | 85 |
Analysis | 需求分析 (包括學習新技術) | 5 | 5 |
Design Spec | 生成設計文檔 | 10 | 5 |
Design Review | 設計複審 (和同事審覈設計文檔) | 5 | 10 |
Coding Standard | 代碼規範 (爲目前的開發制定合適的規範) | 5 | 5 |
Design | 具體設計 | 10 | 5 |
Coding | 具體編碼 | 20 | 30 |
Code Review | 代碼複審 | 10 | 10 |
Test | 測試(自我測試,修改代碼,提交修改) | 10 | 15 |
. Reporting | . 報告 | 5 | 5 |
Test Report | 測試報告 | 2 | 3 |
Size Measurement | 計算工作量 | 2 | 1 |
Postmortem & Process Improvement Plan | 事後總結 ,並提出過程改進計劃 | 1 | 1 |
- <p style="font-size:16px">小結</p>
<p style="line-height:25px">  對於老師所說兩人結對編程效果是否“1+1>2”?我的回答是“>”。此次結對編程讓我收穫很多。整整10天的時間,對於開發一個項目來說說長也不長,說短也不短。在漫長的聊天記錄中,讓我這個急性子的人,學會了耐心(雖然不是很耐心,但是成效還是很大)。同時,在這個過程中我也意識到了自己存在的缺陷,並加以改之。希望以後的自己越來越好。</p>