线上地址:http://roadmap.imcoming.tophtml
前端仓库:https://github.com/MinJieDev/Roadmap-Frontend前端
后端仓库:https://github.com/MinJieDev/Roadmap-Backendnginx
博客目录:http://www.javashuo.com/article/p-frlyuyzw-ne.htmlgit
功能规格:http://www.javashuo.com/article/p-wqsswgyj-nh.htmlgithub
技术规格:http://www.javashuo.com/article/p-fwhgjhii-nh.htmlchrome
发布说明:http://www.javashuo.com/article/p-cybouagw-nm.html数据库
前端代码文档:https://github.com/MinJieDev/Roadmap-Frontend/wikidjango
入门指南:http://www.javashuo.com/article/p-xyibjenk-nb.html编程
请参考团队介绍博客 http://www.javashuo.com/article/p-hzzarakr-nm.htmlubuntu
PM:zwx
前端:zwx yzn ljy ym cc
后端:zzy zxz
Realease Beta v1.0.0: 发布声明
[新增功能]参见发布声明博客
部署形式:nginx+uwsgi,双环境
数据库开放了测试环境与生产环境,经过替换服务器配置文件实现对不一样环境的链接(默认开发时使用测试环境,线上使用生产环境)
发布流程:
前端:打包dist并推至服务器,nginx分发容许了热更新
后端:服务器上拉取生产分支prod,(迁移数据库后)uwsgi --reload roadmap.pid
实现热更新
Beta阶段预期用户数量:超过200人
实际注册用户数量:230人(截至6月11日)
分析:
推广思路:咱们的目标用户为有大量阅读文献需求的科研工做者,主要是研究生、博士生、导师等。
在alpha阶段咱们的推广思路发生了误差,只是像其余团队同样在学生大群中进行广告投放。考虑到群内本科生(多为2017及2018级的大2、大三学生)大多还对文献阅读没有需求,这样的推广收效甚微。
在beta阶段,咱们调整思路,针对目标用户进行定向投放,向实验室中的实习生、研究生同窗进行推广,让其在组会报告时使用咱们的软件,这样可让整个实验室的师生都了解咱们的产品,用户量快速增长。
另外,咱们的成员也在其各自的科学方法论课堂展现中推广咱们的产品,这门课程正是培养咱们本科生阅读文献整理文献能力的,若是使用咱们的产品,将使同窗们的思路更清晰、展现效果更理想。下图为咱们组员在课上推广时的截图:
相信下一届学弟学妹在上科学方法论这门课时就能够更加愉快地使用咱们的产品了。
咱们在页面中设置了反馈入口,Beta期间收到75条反馈:
滤除无效信息,列举有参考意义的反馈以下:
72 这个分享功能蛮不错的呀,今天上课看到一个大佬拿大家的网站作的导图,很好看
51 方法论课上看到yzn作了attention相关的roadmap,蛮实用的
49 看到那个篇GAN的作的好认真呀。\n用这个作文章梳理还挺不错的。\n能够作一套科研的工做流嘛?
路书就是为了向他人清晰地展现本身对于文献间脉络但梳理的,当咱们在科学方法论课堂上展现咱们的产品后,获得了不少好的反馈,咱们的产品后续还会推出其它功能更好地帮助你们实现与文献调研相关的科研工做流。
54 应该早出来点......\n我方法论做者都是手写统计的.....
55 挺好,用了这个方法论做业写得快了很多\n文献管理加一个搜索功能就更好了
51 这个Arxiv推荐能够直接发到个人邮箱里面吗
做者统计是咱们在beta阶段实现的一个新功能,能够清晰的对所选的文献集进行做者统计,画出统计图,哪位是真正的领域大咖一目了然,有助于科研人员分析该领域内做者的关系。固然此项功能也迎合了科学方法论课程的一些做业要求,所以广受好评。
67 须要一个社区功能,就是大佬发博客讲论文那种
84 怎么样看到别人的路书呀?想学习一下
37 有没有交友功能啊
咱们在beta阶段只实现了一些常见的社区功能,如点赞、评论、分享、最新论文推荐等。分析用户反馈咱们得知,应该搭建更完善的社区功能,让用户更容易接触到优质的路书示例。
76 是否能加个云盘功能呢?\n把论文PDF存在云盘上,而后能够用浏览器页面进行读取、标注\n每一个设备均可以看到\n很实用!\n若是有云盘功能我必定冲会员!
77 随笔能够加一些模板吗?\n便于咱们直接在模板上整理内容
59 挺好,用了这个方法论做业写得快了很多\n文献管理加一个搜索功能就更好了
51 这个Arxiv推荐能够直接发到个人邮箱里面吗?
65 和文献相关的基本功能都实现了,鼓励一下。\n另外,可否实现Mendeley那样的文献数据库呢?
咱们也收到了不少用户的新需求建议,可见咱们的产品有较高的人气,可提高改进的空间很高,适合进行下一步迭代开发。
78 bug 反馈\n路书编辑页里面,文献若是名字太长了会看不到所有....\n
81 路书编辑那里,会有文献拖不进画布的状况
固然,咱们也收到了一些bug反馈,能够在后续的开发过程当中解决
咱们的开发协做是网状的:每次同步会你们肯定接下来一个小阶段的开发目标与各自负责方向,而后采用分散开发的形式各自完成开发工做。若是遇到问题须要协做解决,由PM组织小规模会议迅速聚焦问题。在两至三天的迭代后再此进行全体同步会继续推动。期间穿插结对编程与互动式review,实现项目的异步-同步推动。
即,咱们的整体流程是:同步会 - 小规模会与分散开发 - pr与review - 小规模会与分散开发 - ... - 同步会
在关键开发节点(如冲刺末尾、发布前),根据进度须要安排集中开发,共同解决最后余留的问题,并集体review发布前的代码,完成冲刺
此部分详细可参考咱们的这篇博客[技术博客]使用Github进行软工开发管理
全部的代码首先要从主分支(dev分支)迁出,修改后提交到一个新分支(或本身的fork),再发起pull request合入dev分支。要求合并至dev前必须被至少一名其余开发者复审
发布时将dev分支的代码并入prod分支,要求必须至少2人参加复审
这样的双主分支工做流,容许在发布前拥有一个汇总分支(dev),全部测试工做在其上完成无误后再实际并入发布分支(prod),为生成环境创造一个错误缓冲区,也方便以后引入CICD
Q: 团队如何平衡 时间/质量/资源 争取如期完成任务的
在不可替代性与可替代性中取得平衡
咱们的分工安排,每一个人主要专精一个小方向的开发,使他/她能够大幅节约开发时的学习成本,这是开发者的不可替代性。同时同步会又要求全部人必须理解、熟悉其余人的代码,使得每一个人都具有可替代性。
这样,开发能够高度并行化展开,每一个人总主要负责推动本身所负责的小方向;当某个方向的开发遇到阻力时,即可以抽调其余方向的开发人员进行协助。
这能够自适应地最大化时间利用效率。
同时,咱们频繁引入、穿插结对编程,以此进一步优化开发效率。
测试方法论:后端狠,前端稳
前端随发布随测,团队成员的开发环境覆盖了windows、ubuntu1604/1804和mac xos,浏览器覆盖safari、chrome。
单元测试主要针对后端展开,前端主要以表格枚举测试为主(参考beta测试报告)
后端目前为全部模型接口的CURD行为与权限添加了单元测试,共12个case
借助coverage实现后端测试覆盖率分析:
Name Stmts Miss Cover [1/1932] ----------------------------------------------------------------------- manage.py 12 2 83% roadmapBackend/__init__.py 0 0 100% roadmapBackend/settings.py 22 0 100% roadmapBackend/urls.py 3 0 100% roadmapData/__init__.py 0 0 100% roadmapData/admin.py 5 0 100% roadmapData/apps.py 3 0 100% roadmapData/migrations/0001_initial.py 9 0 100% roadmapData/migrations/0002_auto_20200531_1303.py 6 0 100% roadmapData/migrations/0003_auto_20200601_2235.py 6 0 100% roadmapData/migrations/0004_auto_20200601_2247.py 4 0 100% roadmapData/migrations/0005_auto_20200601_2250.py 4 0 100% roadmapData/migrations/0006_auto_20200601_2301.py 4 0 100% roadmapData/migrations/0007_auto_20200601_2307.py 4 0 100% roadmapData/migrations/0008_essayshareid.py 5 0 100% roadmapData/migrations/0009_auto_20200602_2349.py 5 0 100% roadmapData/migrations/0010_auto_20200603_1222.py 4 0 100% roadmapData/migrations/__init__.py 0 0 100% roadmapData/models.py 71 0 100% roadmapData/serializers.py 74 0 100% roadmapData/tests.py 214 0 100% roadmapData/urls.py 18 0 100% roadmapData/utils.py 50 4 92% roadmapData/views.py 196 4 98% ----------------------------------------------------------------------- TOTAL 719 10 99%
对于前端代码,咱们使用eslint进行自动化的代码质量检查
对于后端代码,咱们要求全部提交的代码必须经过ide自带的格式化(基于pep8)
此外在review时会进行必定程度的代码质量复审,如命名等。原则上,不影响理解的代码都能经过,咱们只追求自注释的清晰代码,不但愿把大部分时间花费在维护commit与注释上。
前端:咱们在前端仓库的wiki中写了详细的文档,首先介绍代码的总体架构,使用的框架和工具,以后详细说明代码仓库中每一个文件的意义,再按功能模块说明每一个功能的实现思路、编码细节等,方便之后本身查看或其它团队接手。
后端:自动化文档。借助django restful framework与coreapi生成的自动api文档,便利先后端协做的同时解放后端同窗双手
产品:为方便用户尽快上手咱们的产品,咱们为其撰写了一份上手文档,利用随笔功能发布在咱们的知识路书平台,同时发布在博客园。
在github中咱们将beta的project截止时间定位冲刺的截止时间,可是为了方便任务量统计咱们将测试和发布阶段的bug修复也算入此project中,所以燃尽图中结束点后移了,这并不是咱们拖延怠工的结果,特此说明。
姓名 | 任务 | 按时(-5~1) | 质量(-2~2) | 任务量(1~5)x10 | 得分 |
---|---|---|---|---|---|
cc | cc test-nouse | 1 | 1 | 1 | 12 |
cc | 修改删除文献结点 | 1 | 1 | 1 | 12 |
cc | 路书链接曲线拖动 | 1 | 2 | 4 | 43 |
cc | 路书阅览界面的链接拖动 | 0 | 0 | 1 | 10 |
cc | 路书编辑时链接拖动的bug修正 | 1 | 1 | 2 | 22 |
cc | 路书节点颜色自定义修改 | 1 | 2 | 3 | 33 |
cc | 路书:文献的alias别名 | 0 | 1 | 1 | 11 |
总 | 143 | ||||
ljy | tag前端 | 0 | 1 | 4 | 41 |
ljy | 面包屑改进 | 0 | 1 | 3 | 31 |
ljy | 社区功能:推荐系统相关 | 0 | 1 | 5 | 51 |
ljy | 文献推荐导入:导入文献做者分隔符问题 | 0 | 1 | 2 | 21 |
ljy | Get New Paper 脚本部署 + 推荐界面更新 | 1 | 2 | 2 | 23 |
ljy | 修正 推荐文献导入 字段 | 1 | 1 | 1 | 12 |
ljy | 部署脚本请求Arxiv,写入数据库 | 0 | 1 | 4 | 41 |
总 | 220 | ||||
ym | Article Table 多选删除 & 仅显示第一做者 | 1 | 1 | 3 | 32 |
ym | Add MindTable expanded | 0 | 1 | 2 | 21 |
ym | Article Read Unread status & Pagination in FrontEnd | 0 | 2 | 3 | 32 |
ym | 批量导出bibtex | 0 | 1 | 3 | 31 |
ym | 改进文献管理表格UI | 0 | 2 | 2 | 22 |
ym | Article: Bibtex 批量导入时存入后端字段,导出时读取 | 0 | 1 | 2 | 21 |
ym | article 页面分页 | 0 | 1 | 3 | 31 |
ym | 前端的路书分页 | 0 | 1 | 2 | 21 |
ym | 随笔管理界面 | 0 | 1 | 3 | 31 |
ym | 社区功能:注册页面加感兴趣方向的选择 | 0 | 1 | 2 | 21 |
ym | 社区功能:我的中心 | 1 | 1 | 5 | 52 |
ym | 文献统计:所有文献的做者出现频次统计 | 0 | 1 | 4 | 41 |
ym | 文献导入:做者分割与bib导入问题 | 0 | 1 | 1 | 11 |
ym | 文献笔记完成状态:根据后端接口作修改 | 0 | 1 | 2 | 21 |
ym | 我的中心:和后端新增我的信息对接 | 1 | 1 | 1 | 12 |
ym | 文献统计:添加文献管理页向文献统计页面的跳转按钮 | 0 | 1 | 1 | 11 |
ym | 导出:复制功能 | 0 | 1 | 2 | 21 |
ym | 文献管理:打开文献修改drawer时没法显示 | 0 | 1 | 1 | 11 |
总 | 443 | ||||
yzn | 路书管理卡片布局 | 1 | 1 | 3 | 32 |
yzn | switch致使的卡片对齐问题 | 0 | 2 | 1 | 12 |
yzn | 路书的导出与缩略图 | 0 | 1 | 5 | 51 |
yzn | 路书卡片界面浮窗显示 | 0 | 2 | 3 | 32 |
yzn | 路书管理界面:卡片/表格使用偏好的缓存 | 0 | 1 | 1 | 11 |
yzn | Attention is All You Need 样例路书 + 用户使用简介 -> 博客形式 | 0 | 1 | 4 | 41 |
yzn | 优化路书卡片的预览浮窗 | 1 | 1 | 1 | 12 |
总 | 191 | ||||
zwx | 路书解决节点重名 | 1 | 1 | 4 | 42 |
zwx | 路书编辑器:拖拽添加文献节点 | 0 | 1 | 3 | 31 |
zwx | 路书编辑器,查看文献笔记,跳转编辑文献笔记页面 | 0 | 1 | 1 | 11 |
zwx | 路书阅览界面处理路书重名问题 | 1 | 2 | 1 | 13 |
zwx | 后端的api分页引发的roadmap变化 | 0 | 1 | 1 | 11 |
zwx | 前端路书编辑器和阅览器改回获得所有api | 0 | 1 | 1 | 11 |
zwx | 新路书保存后跳转路由 | 1 | 1 | 1 | 12 |
zwx | 随笔相关启动 | -1 | 2 | 3 | 31 |
zwx | 社区功能:点赞评论前端 | 0 | 0 | 3 | 30 |
zwx | 根据文献反查路书 | 0 | 1 | 3 | 31 |
zwx | 路书:文献的alias别名 | 0 | 1 | 1 | 11 |
zwx | 随笔节点引入路书编辑器 | 0 | 1 | 3 | 31 |
zwx | 路书引入随笔节点、编辑路书随笔、分屏显示阅览器 | 0 | 1 | 4 | 41 |
zwx | 路书随笔节点,打开跳转连接,节点多行显示 | 1 | 2 | 2 | 23 |
zwx | 路书删除:删除失败 | 2 | 1 | 1 | 13 |
zwx | 解决share的bug,添加essay的share | 0 | 2 | 3 | 32 |
zwx | Comment 接入API | 1 | 0 | 3 | 31 |
zwx | Like功能接入API | 0 | 1 | 3 | 31 |
zwx | bug: 跳转url 增补http | 0 | 1 | 1 | 11 |
zwx | fixbug: 分享,文献和随笔权限:字段变化 & 添加随笔分享 | 1 | 1 | 4 | 42 |
zwx | zwx--fixbug-share-auth | 0 | 0 | 3 | 30 |
zwx | articel model page to charfield | 0 | 1 | 1 | 11 |
zwx | ZWX: add article abbrtitle | 0 | 1 | 1 | 11 |
zwx | PM工做 | 10 | 100 | ||
总 | 641 | ||||
zxz | 提供一个返回所有article和所有roadmap的api | 0 | 2 | 1 | 12 |
zxz | 添加文章别名alias | 1 | 1 | 2 | 22 |
zxz | 添加感兴趣的领域 | 0 | 1 | 1 | 11 |
zxz | Essay属性添加state & abstract & author 以及分页功能 | 0 | 1 | 3 | 31 |
zxz | 用户我的信息 | 1 | 2 | 3 | 33 |
zxz | 添加表newpaper | 0 | 1 | 3 | 31 |
zxz | add time | 0 | 1 | 1 | 11 |
zxz | Article:read_state从bool值改成字符串类型 | 0 | 1 | 2 | 21 |
zxz | 添加点赞功能 | 1 | 1 | 3 | 32 |
总 | 204 | ||||
zzy | tags | 1 | 1 | 3 | 32 |
zzy | 添加bib | 0 | 1 | 2 | 21 |
zzy | 添加filter | 0 | 1 | 2 | 21 |
zzy | 添加分页 | 0 | 1 | 3 | 31 |
zzy | page | 0 | 0 | 2 | 20 |
zzy | add tag search | 0 | 1 | 3 | 31 |
zzy | 添加评论功能 | 0 | 2 | 3 | 32 |
zzy | hash view | 0 | 1 | 3 | 31 |
总 | 219 |
根据[知识路书]团队贡献分数分配方案获得最终分配:
姓名 | zwx | ym | ljy | zzy | zxz | yzn | cc | 总 |
---|---|---|---|---|---|---|---|---|
总分 | 641 | 443 | 220 | 219 | 204 | 191 | 143 | 2061 |
比例 | 0.31101407 | 0.2149442 | 0.1067443 | 0.1062591 | 0.09898108 | 0.09267346 | 0.06938379 | 1 |
实际量化分 | 10.8854925 | 7.52304706 | 3.73605046 | 3.71906841 | 3.4643377 | 3.24357108 | 2.4284328 | 35 |
去重量化分 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 35 |
总分 | 53 | 52 | 51 | 50 | 49 | 48 | 47 | ——— |
zwx:一学期的软件工程课收获满满。软件工程课就应该在作中学、学中作。团队项目中,我从一个开发小白的身份在alpha开发阶段一点点摸爬滚打,从咱们的前PM大佬学到了不少开发技术、项目管理方法。进入beta阶段后,我有幸接替原PM大佬的工做成为PM,和团队成员一块儿不断完善咱们的产品。PM的经历让我实践了更多软件工程领域的学问,我学会了如何与人沟通、如何分配任务、如何督促监管任务的执行、如何与团队合做等等。看着咱们的产品从无到有再到基本健全、收到用户的积极反馈,真的是一件无比享受且欣慰的过程。我会珍惜此次软件开发经历、珍惜一块儿结对编程的小伙伴、珍惜在北航度过的软件工程时光~