專案內容
這個作業屬於哪個課程
課程鏈結
這個作業的要求在**
作業鏈結
教學班級
006專案位址
github位址
psp2.1
personal software process stages
預估耗時(分鐘)
實際耗時(分鐘)
planning
計畫
· estimate
· 估計這個任務需要多少時間
1010
development
開發
· analysis
· 需求分析 (包括學習新技術)
200180
· design spec
· 生成設計文件
6090
· design review
· 設計複審 (和同事審核設計文件)
3030
· coding standard
· **規範 (為目前的開發制定合適的規範)
2030
· design
· 具體設計
100120
· coding
· 具體編碼
200180
· code review
· **複審
10060
· test
· 測試(自我測試,修改**,提交修改)
150150
reporting
報告
· test report
· 測試報告
3020
· size measurement
· 計算工作量
3030
· postmortem & process improvement plan
· 事後總結, 並提出過程改進計畫
3040
合計960
930設計三個類
流程直線與圓各自有乙個set容器儲存,在識別出下乙個圖形後取出儲存的每乙個圖形,呼叫圖形的getcross方法得到交點,再將交點加入另乙個set容器。
單元測試
這部分使用時間60min,因為出現「在所選時間範圍內沒有**執行」的玄學問題,效能分析使用vs的instrumentation功能,效能分析圖:
整體的思路是用set容器作為儲存結構,下圖是新增乙個圓的過程:
infile >> x0 >> y0 >> x1;
circle circle(point(x0, y0), x1);
for (line temp : lineset)
for (circle temp : circleset)
circleset.insert(circle);
從lineset和circleset中分別取出圖形,各自計算交點。
getcross方法計算圖形交點,下圖是直線與直線求交點的方法,首先判斷平行,可避免出現除以0的問題。
point line::getcrosspoint(line l1)
point ptemp(0, 0);
ptemp.pointx = (l1.b * this->c - this->b * l1.c) / d;
ptemp.pointy = (l1.c * this->a - this->c * l1.a) / d;
return ptemp;
}
計算圓與圓的交點的方法,計算過程較長,所以效能不好
個人專案可以說是對前一次所學的軟體工程方法的實踐。在作業的過程中乙個問題是需求分析和設計花了很長時間,因為想著優化計算方法所以一直在修改設計文件,結果時間大大超出了預期。另乙個問題是實現功能時很多時間花在鄒欣老師《構建之法》中說的低層次問題上,比如set容器用到的自定義類的運算子過載,只有通過不斷的練習,把這些低層次的問題都變成不用經過大腦的自動操作,然後才有時間和腦力來解決較高層次的問題。另外這是第一次對自己的專案使用單元測試,所以專案的結構有些問題,和單元測試配合的不是很好,下次一定使用更好的設計模式。希望在以後的結對專案和團隊專案裡能克服這些問題。
個人專案部落格(一)
實現乙個能夠生成數獨終局並能求解數獨問題的控制台程式。psp 2.1 personal software process stages 預估耗時 min 實際耗時 min planning 計畫30 estimate 估計這個任務需要多少時間 2860 development 開發1200 anal...
個人專案部落格(二)
實現乙個命令列程式,程式能 1 生成不重複的數獨終局至檔案。2 讀取檔案內的數獨問題,求解並將結果輸出到檔案。程式從命令列得到命令與引數,並根據命令實現兩個功能,因此把程式初步劃分為以下模組 通過資料流圖來進行功能建模。頂層圖 一層圖 命令的判斷與處理即簡單的輸入判斷。當輸入為位址時,進入生成數獨模...
個人部落格專案開發
基於django後端框架以及bootstarp前端框架搭建個人部落格 已實現功能 使用步驟 資料庫表結構以及資料所在檔案 建立名字為myblog的資料庫,然後匯入根目錄下的myblog.sql 匯入資料庫後配置資料庫 settings.py line 132 databases 登陸 使用者名稱 w...