論文查重演算法
這個作業屬於哪個課程 | https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024 |
---|---|
這個作業要求在哪裡 | https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024/homework/13136 |
這個作業的目標 | 開發個人專案 |
github:https://github.com/hhuang1231/3122004572
PSP表格
PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
---|---|---|---|
Planning | 計劃 | 15 | 10 |
Estimate | 估計這個任務需要多少時間 | 15 | 10 |
Development | 開發 | 60 | 60 |
Analysis | 需求分析 (包括學習新技術) | 120 | 120 |
Design Spec | 生成設計文件 | 30 | 20 |
Design Review | 設計複審 | 5 | 5 |
Coding Standard | 程式碼規範 (為目前的開發制定合適的規範) | 5 | 5 |
Design | 具體設計 | 30 | 20 |
Coding | 具體編碼 | 15 | 15 |
Code Review | 程式碼複審 | 5 | 5 |
Test | 測試(自我測試,修改程式碼,提交修改) | 30 | 30 |
Reporting | 報告 | 30 | 40 |
Test Repor | 測試報告 | 10 | 10 |
Size Measurement | 計算工作量 | 10 | 10 |
Postmortem & Process Improvement Plan | 事後總結, 並提出過程改進計劃 | 10 | 10 |
合計 | 390 | 380 |
設計與實現
- PaperChecker用於完成整個功能
- 其中main函式作為暴露功能的介面
- readFile函式用於讀取檔案
- calculateSimilarity函式用於計算相似度。主要的演算法是將每個檔案的文字都根據一個引數分割為若干份詞,之後對他們取交集,從而計算出相似度。
- PaperChecker用於測試整個功能
效能監控
由圖可發現,多數時間花費在分割字詞之上。
單元測試
測試函式,主要針對各種文字以及分割長短進行測試
覆蓋率
異常處理
要求不能為負數