課程:軟工實踐(鏈接)
結對第一次—原型設計(文獻摘要熱詞統計)(鏈接)
結對學號:221600219 221600212
PDF附件:鏈接
作業目標:
一、閱讀《構建之法》第3章和第8章的內容,並在下方作業里體現出閱讀后的成果。特別是第8章中的NABCD模型。
二、結對合作,閱讀下方的客戶描述的現實困擾,以共同發布一份博客隨筆的形式,設計一套方案,向客戶推銷。描述大致方案,以向客戶證明你正確理解了客戶的需求、提供給客戶可行的優化的使用建議,給出原型模型,並提供大概的解決方案預期規划。
三、最終客戶將以評論的方式給出接納與否或修改完善的建議。
一、問題和需求
小櫻是一名大三的學生,一直痴迷於吃雞類游戲,某日聽聞同宿舍的小狼剛和導師去參加了CVPR會議,內心羡慕不已,便下定決心痛改前非、努力鑽研,希望能在畢業前完成一篇站在時代前沿的優秀論文。但令人苦惱的是,他不知道近幾年頂會的熱門領域和研究方向,根據論文list去一篇一篇查找總結效率又着實太低,於是求助於“軟工實踐互助愛心組織”,希望我們能幫助他設計一個平台解決現階段的需求。希望此平台至少具備以下功能:
- 用戶可給定論文列表
- 通過論文列表,爬取論文的題目、摘要、關鍵詞、原文鏈接;
- 可對論文列表進行增刪改操作(今年、近兩年、近三年);
- 對爬取的信息進行結構化處理,分析top10個熱門領域或熱門研究方向;
- 可對論文屬性(oral、spotlight、poster)進行篩選及分析;
- 形成如關鍵詞圖譜之類直觀的查看方式;
- 可進行論文檢索,當用戶輸入論文編號、題目、關鍵詞等基本信息,分析返回相關的paper、source code、homepage等信息;
- 可對多年間、不同頂會的熱詞呈現熱度走勢對比(這里將范疇限定在計算機視覺的三大頂會CVPR、ICCV、ECCV內)。
- 可進行數據統計,例如每個國家錄用文章的分析、每個學校錄用文章的分析、哪個學校哪方面的研究方向比較強等。
頂會背景:
- 計算機視覺領域世界三大頂級會議分別為國際計算機視覺與模式識別會議(CVPR)、國際計算機視覺大會(ICCV)和歐洲計算機視覺國際會議(ECCV)。
- 以CVPR 為例,據會議官網顯示,2018年大會有超過 3300 篇論文投稿,其中錄取 979 篇。錄取的論文有三種介紹形式:oral、spotlight、poster。
特別說明:以上是本次作業的基礎要求,希望同學們可以在滿足總的設計思路和用戶需求不變的前提下,盡量發揮自己的想象能力,幫小櫻設計出一個比較滿意的平台。
二、設計思路(NABCD)
1、需求(Need)
用戶的需求點
-
核心需求:
(1)目前基本只有國外網站可以獲取頂會論文,用戶希望可以擁有一個中文平台,解決閱讀障礙;(ICCV: http://www.informatik.uni-trier.de/~ley/db/conf/iccv/index.html)
(2)用戶希望該平台無論是在手機端或者電腦端,都可以較方便的使用;
(3)可以進行論文檢索,並且增加更多人性化的搜索方式,例如按年份或者按主題搜索以及組合搜索(如:年份+頂會名稱+論文主題);
(4)用戶給定論文列表,軟件自動爬取論文的題目、摘要、關鍵詞、原文鏈接;
(5)用戶可以對論文列表進行增刪改查等操作;
(6)通過論文屬性(oral、spotlight、poster)進行篩選及熱點分析,形成關鍵詞圖譜;
(7)可對多年間、不同頂會的熱詞呈現熱度走勢對比;
(8)可進行數據統計,例如每個國家錄用文章的分析、每個學校錄用文章的分析、哪個學校哪方面的研究方向比較強等; -
擴展需求:
(9)在頂會期間,實時推送會議的熱點新聞;
(10)用戶希望可以擁有賬號功能,在登錄賬號的前提下,可以享受對已下載的論文進行雲備份,查看自己的瀏覽記錄,收藏喜歡的論文,關注其他感興趣的用戶等實用操作;
(11)用戶希望平台可以提供與某論文的其他讀者進行交流的功能,以及信息交流,資源共享;
2、做法(Approach)
-
針對需求(1)與需求(2):
通過使用最新的uni-app技術,輕松實現編寫一套代碼,可編譯到iOS、Android、H5、小程序等多個平台。 -
針對需求(3),需求(4),需求(5)與需求(9):
針對付費論文,我們尊重作者的版權,僅提供論文鏈接與查看論文的屬性,不支持下載功能;針對免費的論文,我們在提供原文鏈接外,通過使用python爬蟲框架scapy和代理IP池,用戶將論文列表按照規定的格式列好並存儲成文件上傳至平台,我們對用戶所需的論文主流論文網站進行了爬取,爬取成功的論文信息和鏈接集中保存在數據庫中。並在后端實現對論文列表的增刪改查功能,支持批量處理,多種查找方式更好保證用戶准確查找到需要的論文,避免對搜索結果進行額外的篩選。爬取會每天在已設置好的時刻自動開始,保證用戶不錯過每一條新的熱點資訊。 -
針對需求(6),需求(7)與需求(8):
爬蟲獲得的數據存儲在mysql數據庫后,搭建hadoop與spark這兩個數據處理平台,使用sqoop等工具將sql數據庫中的數據轉入HBase,再通過使用主流的英語分詞器爬到的數據進行分詞和過濾常見的無用的詞以及符號,對分好的詞使用LDA模型進行文檔主題的生成,之后使用SparkStreaming進行主題詞頻統計,最后可以使用matplotlib+python畫出可視化交互式圖表展示信息。 -
針對需求(10)與需求(11):
后端使用數據庫技術以用戶賬號為主鍵存儲用戶信息,同時使用雲技術實現同步功能。為論文開設一個評論或者筆記功能,方便論文讀者的交流。也可以開發一個類似社區的板塊,用於用戶進行信息交流,資源共享。
3、好處(Benefit)
(1)用戶不必通過一個個網站去翻論文,我們的應用自動把所有的論文進行了集中爬取,用戶可以直接檢索;
(2)用戶不必擔心難以把握熱點,通過自然語言分析和大數據技術處理,我們把每年的熱點都進行了歸納和整理,同時提供了走勢圖和關鍵詞圖譜;
(3)用戶不必擔心閱讀英文論文會有困難,我們集成了英文翻譯功能,提供中英對照,逐句翻譯以及單詞查詢;
(4)通過使用uni-app技術,可以實現iOS、Android、H5、小程序等多個平台流暢使用,同時更新和維護都會更快更同步;
(5)雲存儲功能,收藏夾功能方便了用戶在不同機器上的使用體驗,評論與社區功能也可以為用戶提高額外的交流方式;
4、競爭者(Competitors)
- 競爭者的優勢:
- 競爭者如果通過使用android或ios技術開發產品,相比我們使用uni-app技術,有着更好的原生支持;
- 競爭着可能有着更好地創意,值得我們去學習。
- 我們和競爭者都實現的功能:
- 較為完整的基本功能
- 通過爬蟲搜集論文信息;
- 可以進行檢索;
- 可以生成圖表,描述當下熱點和趨勢;
- 我們的優勢:
- 我們使用uni-app技術,支持多種客戶端,方便用戶在不同的設備上使用;
- 通過集成翻譯功能,我們可以翻譯論文,用戶用的更加舒心;
- 通過使用代理IP池技術,我們實現了更加快速和高效的爬取;
- 交互式圖表讓用戶更直觀的獲取信息。
- 雲儲存技術方便用戶的使用
5、推廣(Delivered)
考慮到我們的產品主要面向的是研究計算機前沿技術的部分人群,因此在宣傳上我們希望減少不必要的宣傳,盡可能將產品精准的推廣到目標用戶群。
(1)前期先在班級內試用,根據同學的反饋完善產品的不足,通過參與比賽,提高產品的知名度。
(2)在產品質量較穩定后,可以通過同學們口頭推薦,數計學院QQ群,學院媒體的微信公眾號,在數計學子活動較頻繁的地區進行海報宣傳,將用戶擴大至整個學院。
(3)根據更多用戶的反饋,不斷完善優化自己的產品后,最后可以通過與相鄰高校合作,將產品推廣到校外,同時借助網絡渠道,在全國各大高校板塊以及計算機討論板塊宣傳自己的產品,歡迎大家的使用與建議。
三、原型模型
詳細功能介紹
- 主頁
- 主頁會推送最新的頂會資訊和論文,在頁面的頂部點擊搜索,進入搜索頁面,在頁面的右下角點擊懸浮的圖標可以進入收藏夾中。
- Top 10
- 在導航欄欄右側點擊彈出下拉列表,可以選擇指定的收藏夾進行10大熱點論文分析
- 熱詞
- 在導航欄欄右側點擊彈出下拉列表,可以選擇指定的收藏夾進行熱詞分析,統計出一段時間里出現次數較多的主題
- 趨勢
- 在導航欄欄右側點擊彈出下拉列表,可以選擇指定的收藏夾進行熱點趨勢分析,以折線圖形勢直觀地展示給用戶
- 我的
- 在該界面你可以進行賬戶管理,進入自己的收藏夾,瀏覽歷史以及系統設置。
- 搜索
- 您可以再搜索框里輸入自己想要的內容,獲得想要的結果。
- 收藏夾
- 收藏夾里保存着你收藏的論文,對其進行增刪改查以及統計等功能。
- 添加論文
- 在該界面您可以輸入論文編號,論文標題和論文鏈接添加自己想要的論文。
- 論文詳情
- 該界面用於展示一篇論文的具體內容,你可以在這里看到論文作者,發表日期,摘要,DOI,原文以及現場圖片等信息。
- 自動中英對照
- 該功能主要用於解決閱讀障礙,支持單詞翻譯以及全文翻譯等功能。
四、困難和解決
-
困難:
1、 由於使用墨刀的次數不多,導致上手時操作不熟練,像是沒找到怎么修改圓角,降低了效率。還有發現狀態欄和圖片之間總是有一條白線影響觀感,但是沒找到解決方法。
2、 在討論NABCD模型的時候,耗費了較多的時間在上面,這主要是以往較少從用戶角度進行基於NABCD的模型的分析。
3、 時間上的緊張,在有限的時間內出了完成這項作業外,還要復習考研,私事。因此想要較好的完成作業難度較大。 -
解決
1、 通過兩人的不段摸索,在完成任務的同時也慢慢的熟悉了墨刀的基本操作。
2、 盡管以往經驗較少,但是在和隊友的討論當中還是迸發出了許多有趣的點子。
3、 時間總是有限的,能做的就是盡可能充分利用時間。隊友間的相互理解與承擔也讓這項作業有條不紊的進行着。
五、效能分析和PSP
PSP2.1 | Personal Software Process Stages | 預估耗時(分鍾) | 實際耗時(分鍾) |
---|---|---|---|
Planning | 計划 | 30 | 20 |
• Estimate | • 估計這個任務需要多少時間 | 30 | 20 |
Development | 開發 | 300 | 370 |
• Analysis | • 需求分析 (包括學習新技術) | 90 | 90 |
• Design Spec | • 生成設計文檔 | 60 | 30 |
• Design Review | • 設計復審 | 30 | 10 |
• Coding Standard | • 代碼規范 (為目前的開發制定合適的規范) | 0 | 0 |
• Design | • 具體設計 | 120 | 240 |
• Coding | • 具體編碼 | 0 | 0 |
• Code Review | • 代碼復審 | 0 | 0 |
• Test | • 測試(自我測試,修改代碼,提交修改) | 0 | 0 |
Reporting | 報告 | 50 | 40 |
• Test Repor | • 測試報告 | 0 | 0 |
• Size Measurement | • 計算工作量 | 20 | 10 |
• Postmortem & Process Improvement Plan |
• 事后總結, 並提出過程改進計划 | 30 | 30 |
All | 合計 | 380 | 430 |
六、總結
關於這次作業,結對兩人受益頗多:
(1)清晰地認識到,在開發過程中,代碼絕不是最重要的一個環節。開發過程前期的NABCD需求分析也是及其重要的。全面的分析可以讓后面的設計更有目的性和效率。
(2)大三后各種事情讓時間變得緊張起來,但正是在這種環境鍛煉;了我們的適應能力,去努力利用時間,合理分配精力在不同的事情上。
(3)一個團隊里,優秀的隊友是極其重要的。不僅僅是在能力上可以解決開發中遇到的難題,更多的是在搭檔的過程中,互相激勵對方,一起完成任務。