软工实践第二次做业(结对第一次做业)

做业描述

做业描述 连接
这个做业属于哪一个课程 https://edu.cnblogs.com/campus/fzu/SoftwareEngineering1916W
这个做业要求在哪里 https://edu.cnblogs.com/campus/fzu/SoftwareEngineering1916W/homework/2642
结对学号 22160013一、221600439
做业目标 了解NABCD模型,学习分析用户需求,利用相关软件设计原型
PDF PDF

结对过程

快速组好了队,以后就是进行需求分析。参考《构建之法》第八章第8.1节《软件需求》指出的步骤,咱们分析以下:前端

  1. 需求捕捉:题目已经代咱们完成了这个步骤。
  2. 分析和定义需求:这个是咱们最核心的步骤,明确这个需求到底是为了什么而出现的。

咱们分析认为,咱们的产品面向的人员是高校内相关领域的师生,根据需求得出的用户画像以下:程序员

  1. 用户是高校从事科研的师生。
  2. 提出需求的用户关注计算机视觉, CVPR、ICCV、ECCV 等会议是该领域的顶会。

而目的则是为这些人提供论文检索与数据分析,方便他们查找到相关论文。咱们整理需求得出如下核心需求:数据库

  1. 用户须要快速下载/查询一系列论文。
  2. 用户须要各种关键词对比等数据分析。

咱们参考知网等论文查询网站,写下了基本需求。但知网等做为通用型查询网站,须要知足全部人的需求,势必只能提取出公共部分。相似什么论文推荐都属于这一部分。但咱们不一样的是,咱们的客户有指向性。咱们需求的初期目标针对的是计算机视觉领域,这个领域和其余领域比有如下不一样:后端

  1. 至关一部分论文在GitHub上开源了源码,供你们Clone。GitHub是一个程序员社交平台,能够看出一个项目的热度。
  2. 计算机视觉有一些公共数据集供你们benchmark,涉及某个子领域的论文通常都会写明本身benchmark的数据。

所以,咱们找到了这个项目的需求和创新点,接下来的事情就是结队写需求+墨刀原型了。架构

NABCD模型

Needs

用户的原始需求

  • 用户可给定论文列表
    • 经过论文列表,爬取论文的题目、摘要、关键词、原文连接;
    • 可对论文列表进行增删改操做(今年、近两年、近三年);
  • 对爬取的信息进行结构化处理,分析top10个热门领域或热门研究方向;
    • 可对论文属性(oral、spotlight、poster)进行筛选及分析;
    • 造成如关键词图谱之类直观的查看方式;
  • 可进行论文检索,当用户输入论文编号、题目、关键词等基本信息,分析返回相关的paper、source code、homepage等信息;
  • 可对多年间、不一样顶会的热词呈现热度走势对比(这里将范畴限定在计算机视觉的三大顶会CVPR、ICCV、ECCV内)。
  • 可进行数据统计,例如每一个国家录用文章的分析、每一个学校录用文章的分析、哪一个学校哪方面的研究方向比较强等。

分析

《构建之法》第八章,8.1节《软件需求》指出,咱们须要“对从各个方面获取的需求进行规整,定义需求的内涵”。咱们认为,目前布置的这个需求,只是一个给高校内相关领域成员使用的论文检索与数据分析平台,一切都围绕着这个点进行设计与开发。所以,咱们不该该作太多不相关需求。既要作加法,也要作减法。app

为此,咱们整理需求以下:编辑器

用户

系统支持多用户登陆。工具

用户新增论文

  1. 用户给定列表。该列表多是一组论文标题,也多是会议名称。
    1. 当用户输入为一组论文标题时,先进行内部查询。如该论文未被入库,尝试从互联网查找到相应论文URL。
    2. 当用户输入为会议名称时,尝试抓取该会议全部论文标题,并从标题查找对应URL。
    3. 分析指定列表,列入论文爬取待处理队列。 用户可随时对待处理队列进行修改。
  2. 论文爬取:
    1. 从待处理队列中取出相应URL,得到论文的题目、摘要、关键词、原文连接、领域、研究方向、源码数据集等,对爬取的信息进行结构化处理,并存入公用论文库。
    2. 对公用论文库内的论文,按期更新其下载量及被引量(若是被爬取方可提供的话)。当其被其余论文引用时,一并收录引用其的论文。

用户我的页面

  1. 显示用户关注的领域、做者、机构的最新论文。
  2. 显示用户关注的论文的最新动向(如被引列表)。
  3. 为用户个性化推荐最新论文。这部份暂时预留,不作实现。

检索论文

  1. 用户可依据如下维度检索论文:论文编号、论文题目(模糊)、关键词(模糊)、发表时间(年份及月份区间)、属性(oral、spotlight、poster)、领域、做者、单位、研究方向、会议、对当前用户是否可见。
  2. 检索结果列表需知足:
    1. 检索摘要包括论文题目、属性、做者、单位、会议、下载量、被引量。
    2. 可按照指定列排序。
    3. 点击进入论文详细页面。
    4. 提供论文批量管理:
      1. 容许有删除权限的用户(如管理员)删除本篇论文。
      2. 容许当前用户标记本论文为当前用户永不可见。
      3. 容许当前用户设置是否关注本篇论文。
  3. 详细页面需知足:
    1. 点击“关键词”等可被数据分析的范围,进入数据分析页面。范围见数据分析一节。
    2. 显示论文题目、属性、做者、单位、会议、下载量、被引量、摘要、关键词、引用列表、被引列表、可能相关论文列表。
    3. 显示源码下载连接、做者我的主页(若是有的话)。
    4. 可直接下载论文,或跳转到论文所在杂志页面/会议页面,或跳转到索引页面。
    5. 提供论文管理功能,即:删除、是否可见、是否关注。

数据分析

数据分析指针对论文库总体的分析,“当前用户不可见”的选项对其无效。post

整体监控
  1. 显示最近抓取的新论文列表。
  2. 显示最近关注最多的新论文列表,计算维度包括:
    1. 若该论文在GitHub上有提供源码,以GitHub Star和Issue的数量为其中之一计算维度
    2. Twitter等社交媒体的说起数量。
    3. 被引用次数。
关键词
列表
  1. 依据关键词,显示 Top 10 热门领域或热门研究方向。同时绘制关键词云图,以便直观显示出哪些关键词最引人注目。
  2. 显示以论文数量倒序排序的关键词排行。
  3. 展现多年间不一样顶会的热词对比。(顶会:暂只考虑CVPR、ICCV、ECCV)
    1. 每一个顶会各一个柱状图。柱状图取当年Top X关键词,每一个关键词为一组,每组内含三个柱,分别表明这三年的该词论文数量。
详细
  1. 容许用户关注或取消关注。
  2. 显示热度趋势(按月?按年?待细化)。
  3. 显示该领域论文,可经过排序得到:
    1. 该领域最新论文
    2. 显示该领域指定时间(默认为1年内)被引最多论文。
    3. 该领域最近最热论文
  4. 显示折线图:该关键词每一年的热度。
  5. 数据集对比。
数据集对比

每个关键词对应的数据集均不一样,能够针对每个关键词设置不一样的数据集,由爬虫对论文内提到的数据集进行分析,提取出该数据集的对比数据。 该页面须要:学习

  1. 准确率进展趋势。
  2. 领域排行榜。
国家

国家数据过于泛,对于单个领域的研究几乎是没什么做用的。所以国家数据应当依托于关键词,在关键词之上对不一样国家进行对比。

列表
  1. 显示以论文数量倒序排序的国家排行。
  2. 展现TOP X国家的历年论文发表数量,以折线图显示。
  3. 展现不一样国家论文发表比例,以饼图显示。
详细
  1. 显示以论文数量倒序排序的机构排行。
  2. 显示国家论文,可排序得到:
    1. 该国家在该领域的最新论文。
    2. 显示该国家指定时间(默认为1年内)被引最多论文。
  3. 显示折线图:该国家每一年(月?)在该关键词发表论文的数量,即热度趋势。
机构

基本同国家。

Approachs

基于 Web 开发技术,前端采用 React + ant.design。后端使用 MySQL 数据库,并包括如下几个部分:

  1. 后端API:Java,配合Spring Boot + MyBatis。
  2. 搜索:ElasticSearch。
  3. 服务间通讯:Kafka。
  4. 爬虫:从Kafka接收队列并爬取数据,爬取后存储入对象存储并将结构化数据入库。
  5. 论文存储:上云使用阿里云OSS,自建使用Minio(Amazon S3 API 兼容)。

    目前因为数据分析需求不复杂,暂不须要专用数据处理端并保存结果,直接由大后端统一处理便可。以上架构可方便地上云或自建。

Benefits

用户

  1. 贴近学术前沿,相对通用性查询网站来讲会更贴合相关方向的课题组。
  2. 提供个性化论文推荐,可以使用户快速获知所在领域最新动态。
  3. 可自动分析不一样论文对相同公共数据集的准确性并排序,快速筛选效果最好的一系列论文。

开发机构

  1. 自主知识产权,避免受制于人。
    1. 对于开发机构自身,可经过本身定制化开发完成本身的特殊需求。
  2. 自动化爬取最新信息,避免手动下载与分享带来的繁琐。
  3. 锻炼相关课题组学生开发与工程水平。

Competitors

优点

优点和“B”彷佛意义相近。

劣势

  1. 爬取速度。相似知网、万方等数据库都可接触到一手资源,本项目只能爬取二手资讯,时效性差。
  2. 数据量。须要至关长一段时间可能才能爬取数目足够的论文。考虑到即便机构订阅了相关数据库,对方也禁止使用爬虫下载,这违反了使用协议,且对方也有相关反制措施,必须控制爬虫速度。
  3. 稳定性。项目初期稳定性相对差。
  4. 搜索。本身作的搜索效果远比不上对方专业搜索,这须要以后进一步维护。

Delivery

对外开放部分只能开放索引查询及数据分析。考虑到,至关一部分论文不处于Public Domain,下载与存储部分涉嫌侵犯版权,且CDN流量相对贵,初期暂不容许校外机构下载论文。
咱们不认为盲目面向非特定目标人群推广存在乎义,推广应当“快、准、狠”。因为学术圈自己较小,咱们认为,应当在初期交由学生及相关导师,请其使用。由导师以及学生私下交际圈口口相传并提出进一步改进需求,逐渐完善程序自己的同时根据用户使用状况来制定下一步推广策略。

协做工具

  1. 关于Markdown文档,咱们采用 https://hackmd.io 进行协做。
  2. 关于原型开发工具,咱们采用墨刀。

原型模型

《构建之法》第七章,7.2.7节《投资质量》指出,“在作快速原型的过程当中,有些部分能够作得粗糙一点。”。咱们认为,原型只是为了指出这个页面有哪些功能,并非具体到去作某个页面设计。何况,咱们的初步需求仍是有至关大的被推翻的可能性。所以,咱们作了如下较为粗糙的原型。

论文列表

待爬取队列

高级检索

基本参考知网设计。

检索结果

添加论文

论文详细页面

数据分析

整体监控

关键词

关键词详细信息

领域最新方法

国家分析

国家详细信息

论文推荐

结对照片

PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
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

是否解决

已解决。

相关文章
相关标签/搜索