backend alpha review

纵然是瞬间 提交于 2019-12-04 20:14:54

[Backend] Alpha Review展示博客

  1. 团队成员介绍:仅限于Alpha阶段有贡献的成员。
  2. 典型场景描述:描述并说明你们认为的产品面向的典型场景。
  3. 团队管理与协作:包括但不限于团队内部如何协作,与其他团队如何协作,如何使用源代码管理工具,各成员工作量分配等。
  4. 项目质量控制:包括但不限于项目各方面(场景符合度,代码规范,测试,文档)的质量评估,开发中如何控制项目质量,燃尽图走势,代码签入统计等。
  5. 技术细节介绍:包括但不限于技术框架,技术难点(可以是算法上的,也可以是数据库设计等),独到的工作。
  6. 事后诸葛亮:对Alpha阶段工作的反思,主要内容可以参考邹老师的博客:http://www.cnblogs.com/xinz/archive/2011/11/20/2256310.html

团队成员介绍

Alpha阶段参与成员有

  • Zhikai Chen
    • 负责整体框架的搭建和前端和模型通讯的api部分

  • Jia Ning
    • 负责数据库的建立维护数据库相关接口api与数据录入部分

  • Hao Wang
    • 负责沙箱的构建与系统的调试维护


典型场景描述

我们的产品面向编程语言的初学者,当前产品暂时只支持python语言的学习,该产品通过题目推荐的方式可以让没有python语法基础的用户迅速地学习到基础的python语法,进一步,对有一定语法基础的用户可以推荐的题目来训练相关数据结构与算法;除此之外还能进行智能的代码报错与代码搜索功能。

团队管理与协作

## 内部协作

任务划分

我们组在Alpha阶段的参与人数为三人,所以协作管理的时候相对没有那么繁琐,只不过每个人的任务量多了些,主要可以划分为数据库管理、Restful API设计执行、代码运行环境管理以及文档的设计沟通四个部分(还有一个scrum管理),于是我们给每个issue分配了一个owner,实际工作的时候由它划分子任务交给固定的人来完成。
| 队员 | issue |
| ---- | ---- |
| Zhikai Chen | Restful API设计执行、Scrum管理 |
| Jia Ning | 数据库管理:表、属性、接口 |
| Hao Wang | 代码运行沙箱及使用沙箱的接口、文档设计 |

工具管理

我们使用Azure DevOps来管理项目,包括任务分配、燃尽图等等。

外部协作

文档

作为提供web服务、设计API连接模型组和前端组通信的枢纽,我们与前端组和模型组分别共同维护了一个API文档,根据设计文档协商好的参数格式、返回内容以及代码规范来编写代码。

对接

在对接阶段,我们为每个队员安排了新的任务来配合项目的上线工作:
| 队员 | issue |
| ---- | ---- |
| Zhikai Chen | API接口调整 |
| Jia Ning | 录入数据 |
| Hao Wang | 部署代码到服务器 |
| Xin Kang | 阅读代码 |

项目质量控制

关于团队代码的质量,我们给自己在四个方面进行打分:

  • 测试:6/10
  • 代码规范: 5/10
  • 文档: 7/10
  • 需求分析:5/10
  1. 关于测试:我们本次项目测试都有组内测试文件和对接测试,但是文档小修小改太多以及后端错误捕捉不到位导致模型组的问题有时候对前端不透明,后来确定格式之后这个问题基本得到了解决。

  2. 关于代码规范:代码规范没有文档,开发人员基本通过解耦任务、开发经验并阅读各自的代码来尽量保持变量命名等的一致性。实际上由于模型、接口、沙箱三个app基本分配给了三个队员来写,所以每个app内部的代码风格都是一致的,但是队员之间并没有协商好代码规范。

3.关于文档:我们与模型组所有的文档都通过devops来维护,每一篇文档都至少经过2~3次的修缮工作,比之前更加健全,考虑更加周到。我们与前端组的所有文档都通过hackmd.io来维护,双方都对api提出了设计思路,修改过很多次,尤其是返回的错误信息,后端逐步完善对erro的捕捉防止传递给前端。

技术细节介绍

作为AICoach项目的后端组,我们的主要任务是提供整个web服务的逻辑处理、数据存储和作为前端、模型的沟通桥梁。经过开会讨论,我们选择Python的Django web framework作为后端开发的框架。和前端以及模型组的沟通都走http,在alpha阶段的开发里我们的数据库就简单的使用Django默认的SQLite作为数据存储的工具。由于后端的同学们之前都缺乏web开发的经验,在整个开发的过程中我们学到了很多web开发方面的规范和技术,Django也确实是一个特别方便易学的框架。

总的来看,后端主要提供了以下功能:

功能名称 服务对象 涉及工具
用户信息 前端 Django
调查问卷 前端、模型 Django
题目信息 前端、模型 Django
做题 前端、模型 Docker、Django、pypi
推荐 模型 Django
部署 后端 Nginx、Docker、uwsgi

AICoach中需要用户提交代码,后端提供执行环境

事后诸葛亮

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!