軟工1816 · 第三次做業 - 結對項目1
優秀的結對隊友:蔡子陽html
原型模型
原型模型設計工具:Axure RP 8.0python
- 模型首頁:
功能說明:
- 選擇文件按鈕:可從本地磁盤中選取論文列表文件用做查詢
- 檢索按鈕/更新數據按鈕 :在選擇文件以後點擊檢索按鈕可將爬取到的數據展現在下面的文本框中
- 熱詞統計按鈕/熱詞趨勢按鈕/來源分析按鈕:在檢索按鈕按下後使用,功能分別爲呈現熱詞和近三年的熱詞趨勢
設計文檔
1.背景
小櫻是一名大三的學生,一直癡迷於吃雞類遊戲,某日聽聞同宿舍的小狼剛和導師去參加了CVPR會議,心裏羨慕不已,便下定決心痛改前非、努力鑽研,但願能在畢業前完成一篇站在時代前沿的優秀論文。但使人苦惱的是,他不知道近幾年頂會的熱門領域和研究方向,根據論文list去一篇一篇查找總結效率又着實過低,因而求助於「軟工實踐互助愛心組織」,但願咱們能幫助他設計一個平臺解決現階段的需求。git
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與其它模塊的接口
- 3.5異常處理
- 1.讀取論文列表失敗。
- 2.爬取論文信息失敗。
- 3.讀入爬取數據失敗。
- 4.論文列表中無用戶輸入的論文標題。
- 3.6測試考慮
- 單元測試:爬蟲測試,類讀取信息測試,詞頻統計排序測試
- 集成測試:測試可否獲得預期需求的效果
- 測試工具:Visual Studio 2017
4.系統集成包裝
5.文檔總結
- 咱們的產品「爬爬樂」是爲了方便用戶獲取批量論文信息,他們須要經過給定的論文列表獲取想要獲得的信息以及相應的檢索統計功能,但現有的產品並無很好地解決這些需求,咱們有獨特的批量獲取網頁信息的方法,它們能極大地方便用戶查找論文以及更清晰地呈現出整體論文的研究走勢方向。
遇到的問題及解決方法
- 問題:論文信息的獲取
- 應對方式:百度python爬蟲嵌入C++的作法
- 問題:熱詞的統計
- 應對方式:我的做業1的詞頻統計
- 問題:信息的存儲處理及分析
- 應對方式:使用文件處理數據,構造相應數據結構進行統計分析
PSP表格
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的效果。
- 帥照以下:
1 |
100 |
100 |
15 |
15 |
Axure的使用,設計文檔的書寫,複習了數據庫的基本操做 |
按照慣例用一句話結束這個博客
再長的路,一步步也能走完,再短的路,不邁開雙腳也沒法到達。github