[软工顶级理解组] 团队规划和任务拆解(Beta)
需求再分析
在Alpha阶段,我们的产品得到了用户的广泛好评,但是还是存在一些问题。
- 登录不稳定,登录速度慢等问题:这是北航VPN本身的不稳定和服务器带宽性能的限制导致。
- 功能太少,没有核心功能:我们规划的核心功能“课程评价”在Alpha阶段没有上线,因为我们是完全从头开始开发的软件,需要一些时间对软件进行“打地基”,牺牲了课程评价的时间去开发了版本更新等功能。
- 界面不够美观:设计层面上存在一些不美观的地方,用模拟器展示的效果也不太好,画面比较模糊。
Beta阶段我们会针对以上三个问题进行改进,完善我们的软件。
功能增减
Beta阶段,我们不会删除原有的功能,而是会新增一些功能,新增功能如下:
类别 | 功能 | 说明 |
---|---|---|
面向用户 | DDL截止推送 | 当用户课程中心DDL即将截止而作业还未提交时,软件会在用户的手机上进行消息提醒,从而提醒用户提交作业。具体的提醒时间可以设置。 |
校历功能 | 显示北航校历,显示教学周和自然周的对应关系,显示节假日日期,与DDL功能有机结合 | |
课程评价 | 对于数据库里的所有课程,用户可以对课程进行评价,打分,发表评论,分享意见,且意见可以得到其他人的赞或者踩。大家的评论全部匿名。 | |
意见栏 | 在软件中设置意见反馈,如果用户对软件有改进建议可以实时反馈。 | |
iOS适配 | 将软件移植到iOS端,并尝试上架App Store。 | |
界面美化 | 听取用户建议,将界面打磨的更好看 | |
面向开发者 | 爬虫重构 | 使用requests来取代如今的selenium来重构爬虫,加快响应速度,减少请求量,减少内存占用 |
爬虫状态监控 | 爬虫无论正常运行还是出现异常,均将信息返回给后端,让开发者知晓爬虫状态 |
管理改进
上一阶段,我们的项目管理有许多不足的地方,也有许多制定了但没有完全执行的规则。这次借着新人的加入,对之前的项目管理进行一定的反思和修改,再次重申管理制度。
-
代码风格
-
前端
基于Android Studio进行开发,而AS又使用了IDEA的框架,有Checkstyle插件,但是没有Dart语言的现成的配置,所以前端在编程时自觉遵循OO课程中Checkstyle的相关规则。
-
后端&爬虫
基于Python进行开发,引入pylint和pylint-django进行代码风格检查。pylint的代码风格审查非常严格,对文件、类、方法的注释也有要求,请尽力修改代码,成为拥有良好代码风格的程序。
-
-
目录管理
- 完善.gitignore和README.md,保证代码中不存在无用文件(如缓存文件、数据库迁移文件等)。
- 文档放在GitHub Wiki中,并建立Wiki目录,设置好对应的跳转链接。
- 文档包括但不限于:编译运行指导文档、接口规格文档、错误信息文档、更新日志文档(前端Release时更新)
- README.md中存放的内容:Introduction,How to Start,Wiki Link,这些信息需要能帮助项目无关者在一无所有的环境下配置成功。后端提供的信息需要能够满足持续部署/集成的条件。
-
代码签入
- 无论前端后端,master分支都是不能直接进行push,PM在GitHub上也进行了对应的设置,任何成员都无权直接修改master分支。
- 所有代码签入全部使用Pull Request进行。每个Pull Request由修改代码的开发者亲自开启,经过郭骏或单彦博的代码复审后签入。根据Alpha阶段助教的意见,我们需要在Pull Request中体现出有Review,可能是多次commit,亦或是一些comment。
- 如果PR是在仓库中进行,每次合并后会删除原有分支。
-
任务管理
- 所有的任务以Issue形式发布。每个Issue至少带有两个标签:bug/enhancement,以及size,分别标记Issue的类别和工作量。非计划阶段,而是后期加入的Issue也需要设置size。
- 如果Issue的任务精确到人,请设置Assignee。
- 如果Issue的任务需要通过签入代码来完成,请将PR与Issue进行绑定。
-
错误处理
- 前端、后端、爬虫务必同一错误处理格式。
- 错误处理信息有必要写入Wiki文档,注释中仅建议提及。因为错误信息是给不同部门的开发者看的,其他开发者不会看源代码的具体实现。
- 对于认为“不可能”发生的错误也需要处理,例如http参数错误。调试bug的阶段,任何bug都有可能出现,需要将错误信息局部化、最小化,且有明确的信息提示。磨刀不误砍柴工。
任务分解
任务分配依然延续之前的分配规则,以下是GitHub上的Issue分配图。
人员管理
本阶段不尝试新的分工。新加入的同学直接接手离开同学的前端开发工作。
由于前端开发本身由3个人进行,所以即使少了一个人,也没有什么不可或缺的技术被带走。新人入会培训有两位老开发者进行指导培训,入门上难度相对较低。
新人入会的学习,主要是重复Alpha阶段前端开发者的学习经历,学习Flutter框架和Dart语言的使用,配置Android Studio环境进行开发,遇到困难点由前端开发者进行指导。