需求再分析

在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环境进行开发,遇到困难点由前端开发者进行指导。

[软工顶级理解组] 团队规划和任务拆解(Beta)的更多相关文章

  1. [软工顶级理解组] 团队任务拆解(Alpha)

    一.任务概述 在alpha阶段,我们需要完成功能规格说明书中所提到的所有功能,在一个阶段的开发周期内,交付最小可行的可用版本. 二.任务分配及时长 分组&成员 具体任务 预计时长(小时) 前端 ...

  2. [软工顶级理解组] Alpha阶段测试报告

    [软工顶级理解组] Alpha阶段测试报告 在测试过程中发现了多少Bug? 测试阶段发现并已修复的bug: 尚且存在,但是难以解决或者不影响使用的bug: 计算重修课程的时候,如果重修课程的课程号和原 ...

  3. [软工顶级理解组] Beta阶段事后分析

    目录 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队的角色,管理,合作 总结 质量提高 会议截图 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰 ...

  4. [软工顶级理解组] Beta阶段项目展示

    目录 团队成员 软件介绍 项目简介 预期典型用户 功能描述 预期目标用户数 用户反馈 团队管理 分工协作 项目管理 取舍平衡 代码管理 程序测试 代码规范 文档撰写 继续开发指导性 用户沟通 需求分析 ...

  5. [软工顶级理解组] Alpha阶段事后分析

    目录 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队的角色,管理,合作 总结 质量提高 会议截图 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰 ...

  6. [软工顶级理解组] Alpha阶段项目展示

    目录 团队成员 软件介绍 项目简介 预期典型用户 功能描述 预期目标用户数 用户反馈 团队管理 分工协作 项目管理 取舍平衡 代码管理 程序测试 代码规范 文档撰写 继续开发指导性 用户沟通 需求分析 ...

  7. [软工顶级理解组] Beta阶段团队贡献分评分

    贡献分评分依据 下述表格适用于前端.后端.爬虫开发者的评分,在此基础上进行增减. 类别 程度 加减分 准时性 提前完成 +0 按时完成 +0 延后完成,迟交时间一天内或未延误进度 -2 延后完成,迟交 ...

  8. [软工顶级理解组] Alpha阶段团队贡献分评分

    评分总表 下述表格适用于前端.后端.爬虫开发者的评分,基础分数为50分,在此基础上进行增减. 类别 程度 加减分 准时性 提前完成 +0 按时完成 +0 延后完成,迟交时间一天内或未延误进度 -2 延 ...

  9. [软工顶级理解组] Beta阶段测试报告

    在测试过程中发现了多少Bug? 测试阶段发现并已修复的bug: 尚且存在,但是难以解决或者不影响使用的bug: 计算重修课程的时候,如果重修课程的课程号和原课程号不同,则GPA计算会出现误差.但我们无 ...

随机推荐

  1. NOIP模拟14「队长快跑·影魔·抛硬币」

    T1:队长快跑 基本思路:   离散化·DP·数据结构优化DP   这三个我都没想到....气死.   定义状态数组:\(c[i][j]\)表示在i时最小的a值是j时可以摧毁的最多的水晶数.   那么 ...

  2. CSP 2021 游记

    \(\text{Day -INF}\) 看见了 \(\text{SCP2021}\) 的报名通知,想着应该教练会让我们统一报名,就没放在心上 然后-- 然后过了二十多天教练根本没有提报名的事情,搞得我 ...

  3. openswan中ISAKMP交互过程关键函数接口

    1. ISAKMP交互过程中关键函数接口 下面分别说明不同的阶段和模式下的函数接口以及对应的报文. 2. 第一阶段(Phase I)主模式函数接口 发送端 响应端 main_outI1 主模式第一包 ...

  4. 反射应用和获取Class对象的三种方式

    一.写一个"框架",可以创建任何对象运行任何方法 1.配置文件 2.使用类加载器ClassLoader,Properties集合是可以和IO流结合使用完成读取和写入数据的集合,方法 ...

  5. JAVA反序列化漏洞基础原理

    JAVA反序列化漏洞基础原理 1.1 什么是序列化和反序列化? Java序列化是指把Java对象转换为字节序列的过程: Java反序列化是指把字节序列恢复为Java对象的过程: 1.2 为什么要序列化 ...

  6. 【Sass/SCSS 完整自学中文版教程02】SCSS 官方英文文档翻译整理

    Sass 调试 目录 Sass 调试 @error @warn @debug 如果对本文有任何问题,建议,或者在前端技术体系方面有任何问题,可以添加我的微信: drylint , 我会尽可能为你解答, ...

  7. php 开启报错

    // 开启报错提醒ini_set("display_errors", "On");error_reporting(E_ALL | E_STRICT); // 某 ...

  8. Java基础系列(3)- HelloWorld详解

    HelloWorld 1.新建一个java文件 文件后缀名为.java Hello.java [注意点]系统可能没有显示文件后缀名,我们需要手动打开 2.编写代码 public class Hello ...

  9. Docker系列(27)- 容器互联--link

    思考 思考一个场景,我们编写了一个微服务,database url=IP:,项目不重启,数据库ip换掉了,我们希望可以处理这个问题,可以使用名字来进行访问容器吗 实践 [root@localhost ...

  10. jenkins自动构建前端项目(window,vue)

    我们把一个多人协作的vue前端项目发布服务器,一般要经过以下步骤: git更新最新的代码 构建项目 把构建后的代码上传到服务器 如果用jenkins来构建的话,只需要点击一次构建按钮,就可以自动完成以 ...