軟工1816 · 第三次作業 - 結對項目1
阿新 • • 發佈:2018-09-21
單元測試 ecc 增刪 行處理 開發 info 時間 對比 時代
軟工1816 · 第三次作業 - 結對項目1
優秀的結對隊友:蔡子陽
- 他的博客戳這裏
- 他這次博客作業戳這裏
原型模型
原型模型設計工具:Axure RP 8.0
- 模型首頁:
功能說明:- 選擇文件按鈕:可從本地磁盤中選取論文列表文件用作查詢
- 檢索按鈕/更新數據按鈕 :在選擇文件之後點擊檢索按鈕可將爬取到的數據展示在下面的文本框中
- 熱詞統計按鈕/熱詞趨勢按鈕/來源分析按鈕:在檢索按鈕按下後使用,功能分別為呈現熱詞和近三年的熱詞趨勢
- 選擇文件按鈕:可從本地磁盤中選取論文列表文件用作查詢
設計文檔
1.背景
小櫻是一名大三的學生,一直癡迷於吃雞類遊戲,某日聽聞同宿舍的小狼剛和導師去參加了CVPR會議,內心羨慕不已,便下定決心痛改前非、努力鉆研,希望能在畢業前完成一篇站在時代前沿的優秀論文。但令人苦惱的是,他不知道近幾年頂會的熱門領域和研究方向,根據論文list去一篇一篇查找總結效率又著實太低,於是求助於“軟工實踐互助愛心組織”,希望我們能幫助他設計一個平臺解決現階段的需求。
2.設計目標
- 2.1需求分析
- 用戶給定一個論文列表
- 1.要求實現通過論文列表爬取論文的題目、摘要以及原文鏈接。
- 2.可實現對論文列表的增刪改操作(今年、近兩年、近三年)。
- 對爬取的信息進行結構化處理,分析top10個熱門領域或熱門研究方向
- 1.可對論文屬性(oral、spotlight、poster)進行篩選及分析。
- 2.形成如熱詞圖譜之類直觀的查看方式。
- 可進行論文檢索,當用戶輸入論文編號、題目、作者等基本信息,分析返回相關的paper、source code、homepage等信息。
- 可對多年間、不同頂會的熱詞呈現熱度走勢對比(這裏將範疇限定在計算機視覺的三大頂會CVPR、ICCV、ECCV內)。
- 可進行數據統計,例如每個國家錄用文章的分析、每個學校錄用文章的分析、哪個學校哪方面的研究方向比較強等。
- 附加需求:
在不改變設計理念、符合用戶使用習慣的前提下,在上述需求的基礎上進行擴充升級,或發揮想象能力為原型添加自己的idea。
- 用戶給定一個論文列表
- 2.2性能指標
- 從需求來看,最主要的時間耗費在爬去論文信息以及存儲論文結構體上,用戶的目標體量在9000篇論文左右(3年的論文3大頂會每大頂會1000篇)。論文題目不超過200個字符,總體量為200W字符。
- 1.完成全部論文標題遍歷及存儲需5s的響應時間。
- 2.(爬取時間待檢測)
- 3.檢索論文題目及相應信息、形成熱詞圖譜的時間各在1s內。
- 4.添加功能可以通過論文編號、論文關鍵詞查找相關論文。
3.模塊設計
- 3.1模塊流程圖及說明
- 設計實現流程如下:
通過用戶給定的論文列表從網頁上爬去論文信息(論文編號、作者、原文鏈接等) - 使用C++數據結構以及map<string,class>容器存儲爬去到的論文信息
- 通過map容器實現數據檢索,熱詞統計(添加通過文章關鍵詞檢索相關文章的功能)以及數據分析
- 將統計結果以圖像的形式展現出來
- 設計實現流程如下:
- 3.2數據結構說明
//偽代碼
論文類:
{
屬性:
論文ID;論文題目;論文摘要;論文年份;論文作者;論文屬性(oral、spotlight、poster);關鍵詞(用作詞頻統計);type(表明屬於哪一個會議)
成員函數:
獲取類屬性的各個值;
};
- 3.3算法描述
- 首先使用python編寫爬蟲內嵌至C++中,將得到的數據存儲於文件中,對文件遍歷存儲於map容器中(基於key,value值存儲功能)
- 通過map容器的紅黑二叉樹進行數據查詢訪問,作出詞頻統計分析,以及檢索篩選算法。
- 3.4與其它模塊的接口
- 1.爬蟲接口
- 2.類接口
- 3.5異常處理
- 1.讀取論文列表失敗。
- 2.爬取論文信息失敗。
- 3.讀入爬取數據失敗。
- 4.論文列表中無用戶輸入的論文標題。
- 3.6測試考慮
- 單元測試:爬蟲測試,類讀取信息測試,詞頻統計排序測試
- 集成測試:測試能否得到預期需求的效果
- 測試工具:Visual Studio 2017
4.系統集成包裝
- 將系統包裝成一個擁有界面的windows窗體軟件
5.文檔總結
- 我們的產品“爬爬樂”是為了方便用戶獲取批量論文信息,他們需要通過給定的論文列表獲取想要得到的信息以及相應的檢索統計功能,但現有的產品並沒有很好地解決這些需求,我們有獨特的批量獲取網頁信息的方法,它們能極大地方便用戶查找論文以及更清晰地呈現出總體論文的研究走勢方向。
遇到的問題及解決方法
- 問題:論文信息的獲取
- 應對方式:百度python爬蟲嵌入C++的做法
- 問題:熱詞的統計
- 應對方式:個人作業1的詞頻統計
- 問題:信息的存儲處理及分析
- 應對方式:使用文件處理數據,構造相應數據結構進行統計分析
PSP表格
PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
---|---|---|---|
Planning | 計劃 | 90 | 120 |
· Estimate | · 估計這個任務需要多少時間 | 90 | 120 |
Development | 開發 | 310 | 440 |
· Analysis | · 需求分析 (包括學習新技術) | 180 | 240 |
· Design Spec | · 生成設計文檔 | 60 | 90 |
· Design Review | · 設計復審 | 10 | 20 |
· Coding Standard | · 代碼規範 (為目前的開發制定合適的規範) | 0 | 0 |
· Design | · 具體設計 | 60 | 90 |
· Coding | · 具體編碼 | 0 | 0 |
· Code Review | · 代碼復審 | 0 | 0 |
· Test | · 測試(自我測試,修改代碼,提交修改) | 0 | 0 |
Reporting | 報告 | 25 | 40 |
· Test Repor | · 測試報告 | 0 | 0 |
· Size Measurement | · 計算工作量 | 5 | 10 |
· Postmortem & Process Improvement Plan | · 事後總結, 並提出過程改進計劃 | 20 | 30 |
合計 | 425 | 600 |
結對過程及照片
- 和蔡子陽同學根據博客上的內容一一討論,主要的討論內容是如何從不同的網頁上爬取信息以及如何對爬取得到的信息進行處理存儲統計分析,如何一一實現用戶的具體需求(看看有哪些可以偷懶不做),還有實現簡單又能方便用戶的加分項。作業中的很多內容其實我們兩個都不是很了解,只能各自回去瘋狂查資料再分享整合各自得到的有用信息,實現1+1>2的效果。
- 帥照如下:
學習進度條(每周更新)
第N周 | 新增代碼(行) | 累計代碼(行) | 學習小時數(小時) | 累計學習小時數(小時) | 重要成長 |
---|---|---|---|---|---|
1 | 100 | 100 | 15 | 15 | Axure的使用,設計文檔的書寫,復習了數據庫的基本操作 |
按照慣例用一句話結束這個博客
再長的路,一步步也能走完,再短的路,不邁開雙腳也無法到達。
軟工1816 · 第三次作業 - 結對項目1