作業2

eeezhendeshi發表於2024-10-04
這個作業屬於哪個課程 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024
這個作業要求在哪裡 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024/homework/13136
這個作業的目標 完成第一次專案作業

1.github連結:https://github.com/xingyun158979/xingyun158

2.PSP表格

PSP2.1 Personal Software Process Stages 預估耗時(分鐘) 實際耗時(分鐘)
Planning 計劃 30 35
Estimate* 估計這個任務需要多長時間 800 745
Development 開發 500 650
Analysis 需求分析(包括學習新技術) 60 80
Design Spec 生成設計文件 30 40
Design Review 設計複審 10 20
Coding Standard 程式碼規範 5 15
Design 具體設計 60 90
Coding 具體編碼 200 300
Code Review 程式碼複審 20 15
Test 測試 90 90
Reporting 報告 70 70
Test Report 測試報告 20 10
Size Measurement 計算工作量 20 20
Postmortem & Process Improvment Plan 事後總結,並提出過程的改進計劃 30 30
合計 620 745

3.計算模組介面的設計與實現過程

設計流程圖:

演算法參考:https://blog.csdn.net/wolflxiaolu/article/details/116558711?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171030650416800185896718%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=171030650416800185896718&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~hot_rank-9-116558711-null-null.142^v99^pc_search_result_base6&utm_term=simhash演算法算相似度&spm=1018.2226.3001.4187

結構:

4.效能分析

5.部分單元測試

@Test
public void getHaiMingDistanceFailTest() {
    // 測試str0.length()!=str1.length()的情況
    String str0 = "111100";
    String str1 = "1000";
    System.out.println(HaiMing.getHaiMing(str0, str1));
}

@Test
public void getSimilarityTest() {
    //測試相似度的計算
    String str0 = Txt_IO.readTxt("txt/orig.txt");
    String str1 = Txt_IO.readTxt("txt/orig_0.8_dis_10.txt");
    String str2 = Txt_IO.readTxt("txt/orig_0.8_dis_1.txt");
    int distance1 = HaiMing.getHaiMing(SimHash.getSimHash(str0), SimHash.getSimHash(str1));
    int distance2= HaiMing.getHaiMing(SimHash.getSimHash(str0), SimHash.getSimHash(str2));
    double similarity1 = HaiMing.getSimilarity(SimHash.getSimHash(str0), SimHash.getSimHash(str1));
    double similarity2 = HaiMing.getSimilarity(SimHash.getSimHash(str0), SimHash.getSimHash(str2));
    System.out.println("str0和str1的海明距離: " + distance1);
    System.out.println("str0和str1的相似度:" + df.format(100*similarity1)+"%");
    System.out.println("str0和str2的海明距離: " + distance2);
    System.out.println("str0和str2的相似度:" + df.format(100*similarity2)+"%");



}

}

測試結果:

測試覆蓋率:

6.異常處理

路徑不存在處理:

@Test
public void readTxtFailTest() {
    // 路徑不存在,讀取失敗
    String str = readTxt("txt/none.txt");
}

文字過短處理:

@Test
public void shortStringExceptionTest(){
    //測試文字長度小於300的情況
    System.out.println(SimHash.getSimHash("今天是週二,明天是週三"));
}

相關文章