这是一篇软件工程课程博客

Q A
这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健)
这个作业的要求在哪里 团队项目选择
我们在这个课程的目标是 团队协作实践敏捷开发
这个作业在哪个具体方面帮助我们实现目标 选定题目、梳理需求

本组为自选课题:知识路书(暂定名)

Need

很多人在泛读文献时常常会自行整理笔记或博客,将某个研究方向的发展过程或某个特定问题的解决过程作出一个概括性介绍。这个工作的极简形式是几行潦草的笔记,终极形式则是一篇文献综述。

比如这篇博客简短地总结了(那个年代)style transfer的发展过程,这篇文章则简单梳理了后rcnn时代目标检测的研究脉络

据我所知,几乎每一个研究人员都学习过如何写综述,因为它是了解某个领域研究实质、整顿思路而催化灵感的过程。因此即使作为综述的简化形式,这种总结式的文章依然能有效帮助我们找寻某个问题或某个问题的答案。

然而我们注意到如下事实:

  • 以博客文章或笔记的形式对已有工作进行梳理,只能以顺序的方式介绍每一篇论文、每一个相关工作,因为“一条线”的书写顺序是符合人脑思维习惯的。但很不幸,研究发展的过程往往是树状的,常常有好的论文可以引出多条分支,因此这样线性地讲故事很难体现科研工作间的承接关系,很难直观展现“谁解决了谁”和“谁推翻了谁”
  • 这样的文章更多是写给自己的笔记性质的学习材料,因此一篇中规中矩的小论文未免太耗时耗力了。
  • 就呈现效果而言,夹杂学术概念的大量文字很难突出重点,经常变得晦涩难懂,不是知识记录与分享的最佳方式

于是我们的结论是:在这件重要的工作上,我们的思维过程缺少好的、快的呈现形式,难以直观、高效地表现知识脉络。这就是我们想要解决的问题。

实际上思维导图或许正是我们需要的东西——树状地具象化思维关系,画几个随性的圈圈就能非常直观地展现概念间的跳跃与顺承。可惜思维导图并不是专门为文献阅读所设计的,因此常见的思维导图工具(如XMind等)依然不能让我们高效地呈现自己的学术见解。它们大而全,但我们需要小而美。因此我们受思维导图启发,希望开发一款应用软件,能够快速导入并绘制出文献(或概念)间的层次关系,并让用户可以基于此在浏览器中高效完成自己的交互式笔记。

我们预期它可以像拉力赛时赋予驾驶员方向的road map一样,为广大科研者照亮路况,因此我们称其为知识路书。

具体来说,为了解决这个需求我们希望其具备如下功能:

  • 简单的文献管理

    • 用户可以本地上传文献.bib格式数据将文献导入
    • 用户可以借助GUI工具手动整理文献间的引用关系
    • 用户可以标注文献已读/未读
    • 【extra】用户可以借助设备管理,将文献关联到本机路径并调用外部阅览器打开文献阅读
    • 【extra】借助字段嗅探或学术搜索引擎,自动关联文献间的引用关系
  • 单篇文献笔记
    • 用户可以为每一篇文献作出笔记梳理
  • 【extra】单个作者/团队标注
    • 用户可以为关注的作者与团队建立标注,并关联其发表的工作
  • 【extra】单篇知识随笔
    • 用户可以编写题目自由的随笔
  • 多篇文献路书(编辑模式)
    • 用户可以将文献和知识随笔引入一篇路书,每篇文献、随笔分别对应一个独立节点
    • 文献间可以根据引用关系自动在路书中绘制引用路线图
    • 用户可以在文献和文献、文献和随笔间连接强、弱关系线路
  • 多篇文献路书(阅览模式)
    • 用户可以直观查看每个文献对应的文献笔记
    • 用户可以生成阅览链接,将路书在站内分享
    • 【extra】用户可以将路书以html或其他可交互文档的形式发布

其中标注【extra】的功能为我们认为对提升用户体验有帮助,但较难实现或实行性价比较低的功能,因此它们的实现优先级次于其他功能。

Approach

综合考虑跨平台能力、交互效果与开发难度,我们决定以web应用的形式展开这个项目。为了便于分工合作,我们自然地选择了前后端分离的技术路线。

前端:计划基于vue.js框架及相关组件库实现,UI组件库选用较成熟的View UI(原iView),其中较难实现的绘图部分我们已经检索到了如下开源实现或参考代码:

后端:计划基于django+rest-framework实现,借助这个框架我们可以快速搭建restful api,将开发重心移至前端

UI设计:原型阶段整体设计保留View UI提供的类antd风格,待核心功能完善后尝试配合功能效果定制扁平化或拟态化风格的界面

我们的目标用户,显然是和我们一样有文献阅读与梳理需求的科研工作者,尤其是需要频繁接触新领域的年轻科研人员,如硕士生、博士生。

在商业模式的选择上,由于这个项目是以解决我们自身需求为导向提出的,相比于盈利我们更看重其使用体验,并且由于目标受众群体较小也不足以支撑起足够鲁棒的盈利模式,因此我们考虑将其作为开源项目维护,希望依赖强大的开源社区将其打磨为一款出色的软件产品。

Benefit

用户可以借助我们的产品更好地进行知识梳理,优化、简化文献阅读流程,直观地记录与展示自己的阅读工作。

Competitors

思维导图竞品

XMIND :

  • 深受欢迎的专业思维导图绘制工具,支持十分完善的绘制功能

    • 优点

      • 多平台支持,有良好的移动端适配
      • 功能强大,支持多种结点连接模式,支持多媒体内容插入
      • 良好的自动排版算法
      • 界面美观且提供多种设计模板
    • 缺点
      • 很多功能需要付费且价格昂贵,不适于收入较少的学生群体
      • 纯粹的知识导图编辑软件,没有文献管理等专为科研场景提供的功能

mindmeister:类似XMIND

文献管理竞品

mendeley:

  • 轻量的文献管理工具,自带用户社区与文献推荐

    • 优点

      • 配有用户社区,可以查看其他用户对某篇文献的评论与笔记
      • 自带的PDF阅读器可以标记并高亮文献内容、记录贴士。所有编辑都可以同步记录至个人账户
      • 每周会发送文献推荐邮件
    • 缺点
      • 只能以列表形式呈现所管理的文献,当管理的文献数目较多时难以快速找到某篇特定文献,同时也没有办法体现文献间的引用关系

电子笔记竞品

  • oneNote:

    • Microsoft开发的数字笔记产品,也是很多人目前使用频率很高的论文笔记工具。
    • 优点
      • 多平台适用;
      • 支持手写和键入等多种方式;
      • 为不同使用场景做了功能优化。如拍照时可以自动识别PPT区域并在拍照后自动将该区域拉伸形变至适合屏幕的形状
    • 缺点
      • 无法类似展现文献知识脉络;
      • 不支持Markdown或LaTeX笔记;
      • 不支持插入编程语言。
    • 定位
      • 面向一般用户的专业数字笔记工具
  • jupyter notebook:

    • jupyter notebook是一个交互式笔记本,支持运行 40 多种编程语言。
    • 优点
      • 支持Markdown笔记及多种后端编程语言(Python以外的后端需要插件或定制);
      • 支持插入编程代码并运行;
      • 支持安装插件进行功能扩展
    • 缺点
      • 对于论文笔记而言,无法展现文献之间的知识脉络;
      • 需要在本地运行,文件保存在本地;
    • 定位
      • 面向开发者的代码演示与轻量IDE
  • notion:

    • notion是一款结合文档、知识库以及任务管理功能的全能协作工具。
    • 优点
      • 支持Markdown笔记;
      • 有效支持团队协作:例如有看板任务管理、日历、OKRs、会议记录等功能;
    • 缺点
      • 用户系统较简陋,每次登陆时都需要繁琐地邮箱验证,体验较差
      • 无法展现文献之间的知识脉络;
      • 主要为团队协作开发。对于科研论文整理而言,有很多不必要的功能(会稍显臃肿)。
    • 定位
      • 内容驱动的个人工作流

其他相关产品

citespace:

  • 可视化文献挖掘工具,通过查阅文献数据库自动分析、挖掘学术热点

    • 优点

      • 支持多种聚类算法与聚类形式,用户可以灵活定制关注的学术方向
    • 缺点
      • 较难理解使用,有一定的学习门槛
      • 基于jdk6开发,目前缺少有力的维护,因此逐渐出现各种兼容性问题

Delivery

最终发布一个带有可部署服务程序的web应用,可以在部署配置后为用户提供个人文献梳理的相关功能。

我们准备参考Overleaf和Gitlab的发布形式:既提供官方站点,使个人用户可以开袋即食而免去部署的繁琐步骤,帮助迅速建立用户社区;也提供必要的部署工具,使潜在的团体用户(高校、企业等)可以自行部署并灵活定制

在推广方式的选择上,由于我们的目标用户群体在高校圈内富集,可以借助推广邮件、代理人推荐等方式定向投送。

电梯演说:

嗨,哥们儿,

你平时读论文的时候会划拉两笔吗?我们最近有个项目专门做文献脉络梳理和内容呈现,想象一下你能通过很简单的编辑就构建一个描述论文发展的树状图谱——对,类似你熟悉的思维导图,但它专门为文献阅读者的习惯做了细节优化,比如公式、代码和任何图片、音视频都可以以你熟悉的latex或markdown导入。下次组会试试看用我们的知识路书给老板做汇报,保证你成为全组最靓的仔。感兴趣的话上GitHub搜一下我们的开源项目:知识路书,欢迎使用,更期待你参与我们的项目!

用户量预估

ALPHA:预计用户量:50

BETA:预计用户量:300

RC:预计用户量:500

敏杰开题——软工团队项目选择与NABCD分析的更多相关文章

  1. [2019BUAA软工]团队项目选择

    Team V1 项目分析 写在前面 项目 内容 这个作业属于哪个课程 BUAA2019软件工程 这个作业的要求在哪里 团队项目选择 参考链接 如何提出靠谱的项目建议 NABCD 我们在这个课程的目标是 ...

  2. “妈妈再也不用担心我忘交作业了!”——记2020BUAA软工团队项目选择

    写在前面 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 团队项目选择 项目简介 项目名称:北航学生资源整合和作业提醒平台 项目内容: 设计实现一 ...

  3. BUAA2020软工团队beta得分总表

    BUAA2020软工团队beta得分总表 [TOC] 零.团队博客目录及beta阶段各部分博客地址 团队博客 计划与设计博客 测试报告博客 发布声明博客 事后分析博客 敏 杰 开 发♂ https:/ ...

  4. 软工团队 - UML设计

    软工团队 - UML设计 分工 对于分工我们没有不是按"自己负责部分的核心模块做练习"(每个人对每个图的某一模块来依次做完四个UML)的原因,是在于画这些图并不是都能彻底分成各个& ...

  5. 软工团队 - 预则立&&他山之石

    软工团队 - 预则立&&他山之石 团队任务计划 时间 人员 任务 10.23-10.29 张昭锡 初拟Android代码规范 李永盛 初拟PHP代码规范 刘晨瑶 初拟Git代码规范 刘 ...

  6. 软工团队项目之团队展示&选题(OnTime——S.L.N)

    软工团队项目之团队展示&选题(OnTime——S.L.N) 一.团队展示 队名:『S.L.N』即Seigelion——乃“攻城狮”之意. 队员学号: 团队项目描述:(项目名称:OnTime) ...

  7. 软工团队作业--Scrum冲刺集合贴

    软工团队作业--Scrum冲刺集合贴 团队 团队名称:广东靓仔六强选手 团队成员: 黄清山 黄梓浩 钟俊豪 周立 邓富荣 郑焕 博客链接 Scrum 冲刺 第一篇 Scrum 冲刺 第二篇 Scrum ...

  8. [敏捷软工团队博客]Beta阶段项目展示

    团队成员简介和个人博客地址 头像 姓名 博客园名称 自我介绍 PM 测试 前端 后端 dzx 秃头院的大闸蟹 大闸蟹是1706菜市场里无菜可卖的底层水货.大闸蟹喜欢音乐(但可惜不会),喜欢lol(可惜 ...

  9. [敏捷软工团队博客]The Agiles 团队介绍&团队采访

    项目 内容 课程:北航-2020-春-敏捷软工 博客园班级博客 作业要求 团队作业-团队介绍和采访 团队名称来源 The Agile is The Agile. 敏捷就是敏捷.我们只是敏捷的践行者罢了 ...

随机推荐

  1. mybatis-plus的Could not set property 'updateDate' of 'class com.example.pojo.User' with value 'Fri Jul 24 10:29:39 CST 2020' Cause: java.lang.IllegalArgumentException: argument type mismatch解决方案

    按照官网在写mybatis-plus的自动填充功能一直报错,发现官网的解说不全,数据库是datetime类型,java程序又是date,类型不匹配 org.mybatis.spring.MyBatis ...

  2. 【C/C++】面向对象开发的优缺点

    原创文章,转发请注明出处. 面向对象开发的优缺点 面向对象开发 是相对于 面向过程开发 的一种改进思路. 由于流水线式的面相过程开发非常直接,高效.在面对一些简单项目时,只需要几百行,甚至是几十行代码 ...

  3. mvn 报错 - The POM for <name> is invalid, transitive dependencies (if any) will not be available

    核心:  通过 mvn dependency:tree -X 分析依赖解决方案:  解决依赖冲突版本 1. MILGpController 编译突然报错 14:10:28 [ERROR] Failed ...

  4. thinkphp添加excel更新数据表数据(优化篇)

    由于主管说使用saveAll更新数据效率太低,要改用sql语句一次执行现在修改 /** * excel开启上传 * author: panzhide * @return array * Date: 2 ...

  5. 【MQ中间件】RabbitMQ -- SpringBoot整合RabbitMQ(3)

    1.前言说明 前面一篇博客中提到了使用原生java代码进行测试RabbitMQ实现多种交换机类型的队列场景.但是在项目中我们一般使用SpringBoot项目,而且RabbitMQ天生对于Spring的 ...

  6. Seata搭建与分布式事务入门

    在单体架构下,我们大多使用的是单体数据库,通过数据库的ACID特性支持,实现了本地事务.但是在微服务架构下复杂的业务关系中,分布式事务是不可避免的问题之一.Seata是Spring Cloud Ali ...

  7. 6. Mybatis resultMap

    resultMap 元素是MyBatis中最重要最强大的元素.它就是让你远离90%的需要从结果集中取出数据的JDBC代码的那东西,而且在一些情形下允许你做一些JDBC不支持的事情.事实上,编写相似于对 ...

  8. 面试系列<3>——java并发

    面试系列--java并发 一.使用线程 有三种使用线程的方法: 实现Runnable接口 实现Callable接口 继承Thread类 实现 Runnable 和 Callable 接口的类只能当做一 ...

  9. C#入门到精通系列课程——第2章编写C#程序

    ◆本章内容 (1)熟悉Visual Studio 2017开发环境 (2)编写第一个C#程序 (3)C#程序结构预览 (4)程序编写规范 (5)难点解答 ◆本章简述 要学习C#编程,必然要熟悉C#程序 ...

  10. k8s configmap 挂载配置文件

    转自https://blog.csdn.net/weixin_34102807/article/details/85965725 1.新建ConfigMap apiVersion: v1 kind: ...