做业描述
结对过程
快速组好了队,以后就是进行需求分析。参考《构建之法》第八章第8.1节《软件需求》指出的步骤,咱们分析以下:前端
- 需求捕捉:题目已经代咱们完成了这个步骤。
- 分析和定义需求:这个是咱们最核心的步骤,明确这个需求到底是为了什么而出现的。
咱们分析认为,咱们的产品面向的人员是高校内相关领域的师生,根据需求得出的用户画像以下:程序员
- 用户是高校从事科研的师生。
- 提出需求的用户关注计算机视觉, CVPR、ICCV、ECCV 等会议是该领域的顶会。
而目的则是为这些人提供论文检索与数据分析,方便他们查找到相关论文。咱们整理需求得出如下核心需求:数据库
- 用户须要快速下载/查询一系列论文。
- 用户须要各种关键词对比等数据分析。
咱们参考知网等论文查询网站,写下了基本需求。但知网等做为通用型查询网站,须要知足全部人的需求,势必只能提取出公共部分。相似什么论文推荐都属于这一部分。但咱们不一样的是,咱们的客户有指向性。咱们需求的初期目标针对的是计算机视觉领域,这个领域和其余领域比有如下不一样:后端
- 至关一部分论文在GitHub上开源了源码,供你们Clone。GitHub是一个程序员社交平台,能够看出一个项目的热度。
- 计算机视觉有一些公共数据集供你们benchmark,涉及某个子领域的论文通常都会写明本身benchmark的数据。
所以,咱们找到了这个项目的需求和创新点,接下来的事情就是结队写需求+墨刀原型了。架构
NABCD模型
Needs
用户的原始需求
- 用户可给定论文列表
- 经过论文列表,爬取论文的题目、摘要、关键词、原文连接;
- 可对论文列表进行增删改操做(今年、近两年、近三年);
- 对爬取的信息进行结构化处理,分析top10个热门领域或热门研究方向;
- 可对论文属性(oral、spotlight、poster)进行筛选及分析;
- 造成如关键词图谱之类直观的查看方式;
- 可进行论文检索,当用户输入论文编号、题目、关键词等基本信息,分析返回相关的paper、source code、homepage等信息;
- 可对多年间、不一样顶会的热词呈现热度走势对比(这里将范畴限定在计算机视觉的三大顶会CVPR、ICCV、ECCV内)。
- 可进行数据统计,例如每一个国家录用文章的分析、每一个学校录用文章的分析、哪一个学校哪方面的研究方向比较强等。
分析
《构建之法》第八章,8.1节《软件需求》指出,咱们须要“对从各个方面获取的需求进行规整,定义需求的内涵”。咱们认为,目前布置的这个需求,只是一个给高校内相关领域成员使用的论文检索与数据分析平台,一切都围绕着这个点进行设计与开发。所以,咱们不该该作太多不相关需求。既要作加法,也要作减法。app
为此,咱们整理需求以下:编辑器
用户
系统支持多用户登陆。工具
用户新增论文
- 用户给定列表。该列表多是一组论文标题,也多是会议名称。
- 当用户输入为一组论文标题时,先进行内部查询。如该论文未被入库,尝试从互联网查找到相应论文URL。
- 当用户输入为会议名称时,尝试抓取该会议全部论文标题,并从标题查找对应URL。
- 分析指定列表,列入论文爬取待处理队列。 用户可随时对待处理队列进行修改。
- 论文爬取:
- 从待处理队列中取出相应URL,得到论文的题目、摘要、关键词、原文连接、领域、研究方向、源码、数据集等,对爬取的信息进行结构化处理,并存入公用论文库。
- 对公用论文库内的论文,按期更新其下载量及被引量(若是被爬取方可提供的话)。当其被其余论文引用时,一并收录引用其的论文。
用户我的页面
- 显示用户关注的领域、做者、机构的最新论文。
- 显示用户关注的论文的最新动向(如被引列表)。
- 为用户个性化推荐最新论文。这部份暂时预留,不作实现。
检索论文
- 用户可依据如下维度检索论文:论文编号、论文题目(模糊)、关键词(模糊)、发表时间(年份及月份区间)、属性(oral、spotlight、poster)、领域、做者、单位、研究方向、会议、对当前用户是否可见。
- 检索结果列表需知足:
- 检索摘要包括论文题目、属性、做者、单位、会议、下载量、被引量。
- 可按照指定列排序。
- 点击进入论文详细页面。
- 提供论文批量管理:
- 容许有删除权限的用户(如管理员)删除本篇论文。
- 容许当前用户标记本论文为当前用户永不可见。
- 容许当前用户设置是否关注本篇论文。
- 详细页面需知足:
- 点击“关键词”等可被数据分析的范围,进入数据分析页面。范围见数据分析一节。
- 显示论文题目、属性、做者、单位、会议、下载量、被引量、摘要、关键词、引用列表、被引列表、可能相关论文列表。
- 显示源码下载连接、做者我的主页(若是有的话)。
- 可直接下载论文,或跳转到论文所在杂志页面/会议页面,或跳转到索引页面。
- 提供论文管理功能,即:删除、是否可见、是否关注。
数据分析
数据分析指针对论文库总体的分析,“当前用户不可见”的选项对其无效。post
整体监控
- 显示最近抓取的新论文列表。
- 显示最近关注最多的新论文列表,计算维度包括:
- 若该论文在GitHub上有提供源码,以GitHub Star和Issue的数量为其中之一计算维度。
- Twitter等社交媒体的说起数量。
- 被引用次数。
关键词
列表
- 依据关键词,显示 Top 10 热门领域或热门研究方向。同时绘制关键词云图,以便直观显示出哪些关键词最引人注目。
- 显示以论文数量倒序排序的关键词排行。
- 展现多年间不一样顶会的热词对比。(顶会:暂只考虑CVPR、ICCV、ECCV)
- 每一个顶会各一个柱状图。柱状图取当年Top X关键词,每一个关键词为一组,每组内含三个柱,分别表明这三年的该词论文数量。
详细
- 容许用户关注或取消关注。
- 显示热度趋势(按月?按年?待细化)。
- 显示该领域论文,可经过排序得到:
- 该领域最新论文
- 显示该领域指定时间(默认为1年内)被引最多论文。
- 该领域最近最热论文
- 显示折线图:该关键词每一年的热度。
- 数据集对比。
数据集对比
每个关键词对应的数据集均不一样,能够针对每个关键词设置不一样的数据集,由爬虫对论文内提到的数据集进行分析,提取出该数据集的对比数据。 该页面须要:学习
- 准确率进展趋势。
- 领域排行榜。
国家
国家数据过于泛,对于单个领域的研究几乎是没什么做用的。所以国家数据应当依托于关键词,在关键词之上对不一样国家进行对比。
列表
- 显示以论文数量倒序排序的国家排行。
- 展现TOP X国家的历年论文发表数量,以折线图显示。
- 展现不一样国家论文发表比例,以饼图显示。
详细
- 显示以论文数量倒序排序的机构排行。
- 显示国家论文,可排序得到:
- 该国家在该领域的最新论文。
- 显示该国家指定时间(默认为1年内)被引最多论文。
- 显示折线图:该国家每一年(月?)在该关键词发表论文的数量,即热度趋势。
机构
基本同国家。
Approachs
基于 Web 开发技术,前端采用 React + ant.design。后端使用 MySQL 数据库,并包括如下几个部分:
- 后端API:Java,配合Spring Boot + MyBatis。
- 搜索:ElasticSearch。
- 服务间通讯:Kafka。
- 爬虫:从Kafka接收队列并爬取数据,爬取后存储入对象存储并将结构化数据入库。
论文存储:上云使用阿里云OSS,自建使用Minio(Amazon S3 API 兼容)。
目前因为数据分析需求不复杂,暂不须要专用数据处理端并保存结果,直接由大后端统一处理便可。以上架构可方便地上云或自建。
Benefits
用户
- 贴近学术前沿,相对通用性查询网站来讲会更贴合相关方向的课题组。
- 提供个性化论文推荐,可以使用户快速获知所在领域最新动态。
- 可自动分析不一样论文对相同公共数据集的准确性并排序,快速筛选效果最好的一系列论文。
开发机构
- 自主知识产权,避免受制于人。
- 对于开发机构自身,可经过本身定制化开发完成本身的特殊需求。
- 自动化爬取最新信息,避免手动下载与分享带来的繁琐。
- 锻炼相关课题组学生开发与工程水平。
Competitors
优点
优点和“B”彷佛意义相近。
劣势
- 爬取速度。相似知网、万方等数据库都可接触到一手资源,本项目只能爬取二手资讯,时效性差。
- 数据量。须要至关长一段时间可能才能爬取数目足够的论文。考虑到即便机构订阅了相关数据库,对方也禁止使用爬虫下载,这违反了使用协议,且对方也有相关反制措施,必须控制爬虫速度。
- 稳定性。项目初期稳定性相对差。
- 搜索。本身作的搜索效果远比不上对方专业搜索,这须要以后进一步维护。
Delivery
对外开放部分只能开放索引查询及数据分析。考虑到,至关一部分论文不处于Public Domain,下载与存储部分涉嫌侵犯版权,且CDN流量相对贵,初期暂不容许校外机构下载论文。
咱们不认为盲目面向非特定目标人群推广存在乎义,推广应当“快、准、狠”。因为学术圈自己较小,咱们认为,应当在初期交由学生及相关导师,请其使用。由导师以及学生私下交际圈口口相传并提出进一步改进需求,逐渐完善程序自己的同时根据用户使用状况来制定下一步推广策略。
协做工具
- 关于Markdown文档,咱们采用 https://hackmd.io 进行协做。
- 关于原型开发工具,咱们采用墨刀。
原型模型
《构建之法》第七章,7.2.7节《投资质量》指出,“在作快速原型的过程当中,有些部分能够作得粗糙一点。”。咱们认为,原型只是为了指出这个页面有哪些功能,并非具体到去作某个页面设计。何况,咱们的初步需求仍是有至关大的被推翻的可能性。所以,咱们作了如下较为粗糙的原型。
论文列表
待爬取队列

高级检索
基本参考知网设计。

检索结果

添加论文

论文详细页面

数据分析
整体监控

关键词

关键词详细信息

领域最新方法

国家分析

国家详细信息

论文推荐

结对照片

PSP表格
Planning |
计划 |
|
|
- Estimate |
估计这个任务须要多少时间 |
30 |
10 |
Development |
开发 |
|
|
- Analysis |
需求分析 (包括学习新技术) |
180(学习新技术被计入具体编码部分) |
240 |
- Design Spec |
生成设计文档 |
360 |
240 |
- Design Review |
设计复审 |
240 |
120 |
- Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
1 |
|
- Design |
具体设计 |
1440 |
|
- Coding |
具体编码 |
13440 |
项目未开始 |
- Code Review |
代码复审 |
贯穿代码开发过程,不做为单独流程 |
0 |
- Test |
测试(自我测试,修改代码,提交修改) |
贯穿代码开发过程,不做为单独流程 |
0 |
Reporting |
报告 |
|
|
- Test Report |
测试报告 |
240 |
0 |
- Size Measurement |
计算工做量 |
120 |
|
- Postmortem & Process Improvement Plan |
过后总结, 并提出过程改进计划 |
240 |
|
|
合计 |
16051 |
|
遇到的困难及解决方法
困难1
困难描述
需求设计后难以取舍。
解决尝试
讨论。
是否解决
已解决。
有何收获
需求设计不能一口吃成个大胖子,必须紧扣核心需求,围绕核心需求进行扩展。
困难2
困难描述
博客园的编辑器太难用。
解决尝试
使用Hackmd
是否解决
已解决。