軟工第三次做業

軟工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.添加功能能夠經過論文編號、論文關鍵詞查找相關論文。github

      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窗體軟件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

結對過程及照片

  • 和樂忠豪同窗進行需求的討論,起先對需求如何實現仍是隻知其一;不知其二,因而各自進行學習,再查找完資料的基礎上繼續對目標進行討論,在屢次的分析討論可行性後,才肯定了如今的實現方法。結對仍是很是有用的,能發現彼此的不足之處,相互促進,相互進步。
  • 醜照以下:
    image

學習進度條 (每週更新)

第N周 新增代碼(行) 累計代碼(行) 學習小時數(小時) 累計學習小時數(小時) 重要成長
1 100 100 15 15 學習了C++嵌入python的方法;Axure原型設計的方法
2 500 600 20 35 學習了python爬蟲的編寫以及Gephi的使用方法
相關文章
相關標籤/搜索