結對第二次—文獻摘要熱詞統計及進階需求

課程:軟工實踐(連接)

做業:結對第二次—文獻摘要熱詞統計及進階需求 (連接)

Github基礎需求項目地址(連接)

Github進階需求項目地址(連接)

結對學號:221600219 221600212

做業目標:

1、基本需求:實現一個可以對文本文件中的單詞的詞頻進行統計的控制檯程序。

2、進階需求:在基本需求實現的基礎上,編碼實現頂會熱詞統計器。

1、Github簽入記錄

基礎需求

進階需求

自動測試

爬蟲數據分析

2、基礎需求

項目結構

├── PairProject1-Java  
│   └── 221600219&221600212  
│       └── src  
│           ├── Main.java  
│           └── Lib.java

類圖

核心代碼

3、進階需求

項目結構

├── PairProject2-Java  
│   └── 221600219&221600212  
│       └── cvpr
│           ├── Main.java  
│           └── result.txt  
│       └── src  
│           ├── Main.java  
│           └── Lib.java

類圖

核心代碼

使用Junit 進行了單元測試:

單元測試的覆蓋率:

使用Jprofiler進行性能測試

本次性能測試的數據都是爬蟲爬取到的result.txt數據,一共502篇論文

優化前各項的耗時狀況

分析:

咱們發現早期的性能瓶頸是由於對文件進行了屢次讀取,並在每次讀取都進行了排序,因此致使Lib.sortWordMap時間佔用長。

java

對於這樣的耗時狀況,是不能接受的:

咱們推翻的以前的方法,經過商討,摒棄的以前較慢的字符串處理,而是採用了更快的二進制字節處理,同時本來的屢次讀取文件也改成了一次讀取,屢次使用。
main調用只讀取一次文件:

收集單詞使用二進制判斷:
python

優化後各項的耗時狀況

從本來的87s左右下降到了僅有3s,大幅度的提高了程序的運行速度:
git

爬蟲

爬蟲部分使用java編寫,結合了Jsoup,先匹配CVPR網站上的ptitle類,而後查找類中的 標籤,獲取論文連接。

github

python編寫的自動測試工具

爲了方便對基礎代碼進行自動測試,我使用了python的subprocess庫進行對Java代碼的自動編譯和執行,用unitest來對Java程序的運行結果進行測試,用HTML_Runner_Chart庫來對測試結果進行呈現。算法

代碼已經開源至Github倉庫:https://github.com/numb-men/wordCountAutoTest網絡

代碼目錄和核心代碼

使用Python自動測試結果(動圖加載可能較慢)

4、附加題

咱們使用Python的pyecharts、subprocess庫,對Java的爬蟲代碼和WordCount進行了調用,對詞組詞數分別爲1-5的狀況進行了圖表數據呈現。
github倉庫地址:https://github.com/numb-men/cvpr2018DataAnalysisecharts

當詞組單詞數爲1時,發現最常常出現的詞是learning,是啊,這是個learning的時代,一方面是機器學習、深度學習的火熱,一方面是在這個時代IT不保持學習就會落後..

當詞組數爲2時,neural networks(神經網絡)、convolutional neural(卷積神經)都出如今了熱詞裏...


詞組數爲3時,前二都是卷積神經網絡

咱們對詞組爲2時進行了詞雲圖分析

5、PSP表格

PSP2.1 Personal Software Process Stages 預估耗時(分鐘) 實際耗時(分鐘)
Planning 計劃 2310 2870
  Estimate   估計這個任務須要多少時間 2310 2870
Development 開發 800 1000
 Analysis  需求分析 (包括學習新技術) 100 100
 Design Spec  生成設計文檔 60 30
 Design Review  設計複審 30 50
 Coding Standard  代碼規範 (爲目前的開發制定合適的規範) 20 20
 Design  具體設計 180 250
 Coding  具體編碼 800 1000
 Code Review  代碼複審 110 110
 Test  測試(自我測試,修改代碼,提交修改) 100 150
Reporting 報告 50 50
  Test Repor   測試報告 30 30
  Size Measurement  計算工做量 30 30
 Postmortem &
 Process Improvement Plan
 過後總結, 並提出過程改進計劃 60 50
All 合計 2310 2870

6、遇到的困難與解決

  • 使用字符串來進行單詞的頻率計算,效率低下。後面使用二進制字節來進行了全部的檢測流程,效率提升了,可是編碼的難度也提升了,好在付出了更多的時間以後仍是解決了這個問題。
  • 因爲平時沒有使用IDE,編寫代碼後都使用命令行運行,致使對IDEA並不熟悉,花了不少時間來進行程序的性能分析和單元測試覆蓋率分析。

7、隊友評價

  • 感受此次能和長平同窗結對是一次很愉快的合做。在整個做業的分析,設計,開發,調試過程當中,長平一直很認真的在對待,一塊兒溝通問題解決問題。他較爲豐富的開發經驗以及對Bug的一絲不苟,保障了做業的高質量 完成同時也少走許多歪路。真的是一位很可靠的搭檔!

8、總結

  • 此次做業,小組遇到了很多的困難,但也收穫了很多新的技能。此次在對需求的分析上,咱們遇到了不少的障礙,其實不少需求在做業中已經給明瞭清晰的定義,只是咱們在閱讀需求文檔的經驗不足,致使不可以很敏銳的挖掘出這些潛在的信息。在此次做業裏,我以爲我和個人隊友都獲得了很好的一次鍛鍊,也充分意識到了,在對需求沒有一個清晰的理解下就動手編碼,只會讓做業的完成事半功倍。在之後的工做崗位上,咱們必定會遇到更多的更苛刻的需求,因此很開心能夠在此次做業中鍛鍊本身的這方面的閱讀能力。
  • 除了掌握基本的算法知識以外,掌握一些額外的技能也是很重要的,如使用python來進行數據的分析和處理,而後圖表化呈現、使用Jprofiler進行Java的性能分析,這些技能能更好的輔助咱們進行代碼的編寫。
相關文章
相關標籤/搜索