軟工實踐第五次作業
阿新 • • 發佈:2018-10-13
學習 單詞 工作量 多人 沖突 image 虛擬 獲取 隊友
軟工實踐第五次作業
寫在前面
- 本次作業題目鏈接
- 本次作業Github倉庫鏈接
- 031602237吳傑婷博客鏈接
- 031602636許舒玲博客鏈接
具體分工
兩個人一起在實驗室完成的,有什麽問題都當面溝通解決+使用github多人協作的形勢,一人寫一部分函數然後傳到github上面去,通過git pull更新本地倉庫
- 吳傑婷:詞數統計部分,詞頻統計部分,代碼整合,文檔撰寫,單元測試,性能分析
- 許舒玲:爬蟲部分,字符統計,行數統計,附加題部分,代碼整合,文檔撰寫,性能分析
PSP表格
PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) |
---|---|---|
Planning | 計劃 | 10 |
? Estimate | ? 估計這個任務需要多少時間 | 10 |
Development | 開發 | 700 |
? Analysis | ? 需求分析 (包括學習新技術) | 30 |
? Design Spec | ? 生成設計文檔 | 5 |
? Design Review | ? 設計復審 | 5 |
? Coding Standard | ? 代碼規範 (為目前的開發制定合適的規範) | 10 |
? Design | ? 具體設計 | 20 |
? Coding | ? 具體編碼 | 500 |
? Code Review | ? 代碼復審 | 70 |
? Test | ? 測試(自我測試,修改代碼,提交修改) | 60 |
Reporting | 報告 | 20 |
? Test Repor | ? 測試報告 | 5 |
? Size Measurement | ? 計算工作量 | 5 |
? Postmortem & Process Improvement Plan | ? 事後總結, 並提出過程改進計劃 | 10 |
合計 | 730 | 1014 |
解題思路描述與設計實現說明
爬蟲使用
- 使用java jsoup包,jsoup最主要用到的就是的elements類和select()方法。elements類相當於網頁元素中的標簽,而select()方法用於按一定條件選取符合條件的標簽,組成符合條件的標簽數組。element支持轉成字符串或者文本等。
- 打開網頁查看元素-選擇代碼行-右鍵-copy-copy selector 獲取便簽
如://#content > dl > dt:nth-child(2935)獲得鏈接
Document document = Jsoup.connect("http://openaccess.thecvf.com/CVPR2018.py").userAgent("Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)").get(); Element main = document.getElementById("content"); //#content > dl > dt:nth-child(0) Elements url = main.select("dl").select("dt:nth-child(0)"); for(Element question:url) { String URL = question.attr("abs:href"); Document document2 = Jsoup.connect(URL).get(); //#papertitle Elements title = document2.select("#papertitle"); //#abstract Elements Abstract = document2.select("#abstract"); }
代碼組織與內部實現設計(類圖)
說明算法的關鍵與關鍵實現部分流程圖
- 計算行數(linesCount.java)
- 獲取有效文本(HandleContent.java)
- 計算字符數(charsCount.java)
- 計算單詞數(wordsCount.java)
- 輸出單詞排序(WordsCount.java)
- 計算行數(linesCount.java)
附加題設計與展示
設計的創意獨到之處
實現思路
實現成果展示
關鍵代碼解釋
單元測試
代碼覆蓋率
測試文本部分截圖
測試結果/時間截圖
性能分析
展示性能分析圖
通過java虛擬機的javaConsole顯示性能分析情況
- 結合單元測試,可見Weighttest(權重統計)和wordtest(詞組總數統計)所耗費的時間更長,原因出在權重統計時涉及了暴力排序。
Github代碼簽入記錄
遇到的代碼模塊異常或結對困難及解決方法
關於github多人協作問題
- 問題描述:一開始在做的時候,不知道如何一起協作完成一份代碼,並且對github多人協作的功能一頭霧水。
- 做過的嘗試:一開始我在網上找了資料,資料上采用的方法是添加contributors,然後創建分支,再合並分支到master的方法,但是步驟繁瑣,而且我們一般是把代碼整合後測試再上傳,一般不會發生沖突,然後舒玲也提出了一個方法是讓我folk她那邊的項目,然後我提交到我本地folk的倉庫再提交給她,不過本次嘗試以不知道如何同意合並結束……
- 是否解決:已經解決。經過向大佬的請教,我們決定采用在舒玲的github倉庫上添加contributor的方式,只用一個master分支,這樣方便了我們的提交。只需要git add,git commit,git push即可
- 有何收獲:一個人硬著頭皮找資料的做的很容易心態爆炸,兩個人一起商量顯然效率很高(而且開心),掌握了幾種github團隊協作的開發方式!
關於代碼合並問題
- 問題描述:兩個人的代碼風格不同,舒玲寫在接口裏,然後在主函數調用。我寫在Class裏,然後直接調用Class的某個函數。
- 做過的嘗試:互相研究對方的代碼,統一在Main函數調用。本來我想寫在舒玲的接口裏,不過引用的時候總是出錯,最後直接引用我的類了……
- 是否解決:已經解決。在Main函數裏調用舒玲的接口和我的類,不過有些地方需要統一,比如文件讀入讀出這裏。
- 有何收獲:統一代碼規範很重要
評價你的隊友
值得學習的地方
- 代碼能力強,思路也清晰。很多我研究半天的東西一下就弄好了
- 團隊協作能力高,是很適合結對的人選
- 對github的使用比較熟練
- 遇到問題很快想到解決的方法
- 掌握的技術多
需要改進的地方
- 效率太高了= =每天都能做好多事 令人心慌
學習進度條
第 N 周 | 新增代碼(行) | 累計代碼(行) | 本周學習耗時(小時) | 累計學習耗時(小時) |
---|---|---|---|---|
1 | 82 | 82 | 4 | 4 |
2 | 94 | 176 | 5 | 5 |
3 | 107 | 283 | 5.6 | 5.6 |
軟工實踐第五次作業