【Alpha】Phylab 展示博客
Phylab Alpha 展示博客
一、团队简介
团队名称:WhatAHardChoice
照片 | 姓名&自我介绍 | 期望角色 |
---|---|---|
我是周BW,喜爱摄影、音乐及各种新奇的技术。技术上后端熟悉Java、Python,前端会一点vue,熟悉PS还可以当美工。总之什么都会一点但都不够深,希望能在与大家合作的过程中与大家一同学习进步! | 开发&PM/美工 | |
我是周GJ,喜欢体验生活,爱好挺多,运动旅游电影音乐。对C、Java、C#比较熟悉,各种语言都能快速上手。有缘能成为一个团队,合作愉快! | 开发 | |
我是何YF,平时喜欢追剧看番,能力不足,热情有余。偏向做测试,也愿意给开发的同学提供各种协助。很高兴能和大家成为一个团队,也希望接下来合作愉快! | 测试 | |
我是樊ZK,业余时间喜欢玩游戏看电影。比较熟悉C/C++,也可以开发也可以测试(哪边缺人去哪边)。技术可能不是非常好,但是愿意学习。 | 开发或测试 | |
我是王ZQ,喜欢电影、电视剧和综艺,能力一般水平有限,但愿意多学习。对C和Java比较熟悉,偏向做测试。非常高兴加入这个团队,希望在之后的任务里能一起努力,合作愉快。 | 测试 | |
我是杨S,喜欢游戏、电影、电视剧,当然也喜欢编程。对C和Java比较熟悉,偏向开发。能力还有很多不足,水平也有限,但愿意多多学习,跟大家共同进步 | 开发 | |
我是殷LXY,爱好是看小说、玩游戏,现在正抓紧时间锻炼自己的编程能力。对C/Java比较熟悉,偏向测试,也可也做一些测试以外的杂务及辅助pm工作。很高兴能和大家一个团队,会尽力为团队做出贡献 | 测试&文档 |
二、项目目标
2.1 典型用户
典型用户1 | 典型用户2 | 典型用户3 | |
---|---|---|---|
姓名 | 小王 | 小李 | 小张 |
性别、年龄 | 男、20 | 男、20 | 男、20 |
职业 | 大二 | 大二 | 大二 |
收入 | 无 | 无 | 无 |
知识层次和能力 | 本科在读,善于利用网络工具,物理系学生 | 本科在读,善于利用网络工具,非物理系学生 | 本科在读,善于编程,计算机系学生 |
生活/工作情况 | 上学 | 上学 | 上学 |
动机、目的、困难 | 动机:物理实验必修课;目的:想取得好成绩;困难:每次实验之前,得花大量时间查找资料写预习报告,在实验数据处理上存在困难 | 动机:物理实验必修课;目的:想取得好成绩;困难:每次实验都要花费大量时间,还有其他专业课的负担 | 动机:物理实验必修课,自己会编写脚本处理数据;目的:希望分享自己的脚本给他人使用;困难:没有途径分享,分享给他人后他人不会用 |
用户偏好 | 认真学习,善于利用电脑手机 | 喜欢社交、善于利用电脑手机 | 乐于助人、希望帮助大家学习 |
用户比例 | 40% | 50% | 10% |
典型场景 | 在网站上发现有很多实验的预习报告,以及对数据的处理 | 在网站上发现能自动处理数据,来检测自己的结果是否正确 | 申请管理员权限后,上传并调试自己的脚本 |
典型描述 | 认真严谨、踏实 | 追求简单、效率 | 乐于助人 |
2.2 功能描述
功能 | 功能描述 | 验收标准 | |
---|---|---|---|
用户 | 用户认证 | 用户注册 用户登陆/登出 邮箱认证 修改密码 |
能够正常注册 能够正常登陆,并维持登录状态 能够收到认证邮件并认证 能够修改密码 |
信息修改 | 查看个人信息 修改个人信息 |
能够浏览自己的个人信息 能够修改个人信息并于服务器同步 |
|
实验 | 预习实验 | 预习报告 | 每个实验能够看到相应的预习报告,预习报告内容正确 |
数据处理 | 数据处理运行 数据处理正确性 数据处理报错 |
实验的脚本能够根据输入数据运行得到结果 实验脚本能够得到正确的数据 实验脚本在遇到错误输入时能报错 |
|
评论 | 实验界面评论区评论 | 能够在实验界面看到他人评论,并能发送简单的评论信息 | |
收藏 | 收藏实验报告 查看收藏报告 下载收藏报告 删除收藏报告 |
能够在报告生成后收藏相应报告 能够查看自己收藏的报告 能够下载自己收藏的报告 能够删除(取消收藏)自己收藏的报告 |
|
社区 | 发表问题 | 发表问题,提供问题描述 点赞他人的回答 |
能够发表问题,并在问题描述中提供图文、附件等信息 能够对他人答案点赞,自己的答案能够被点赞 |
回复 | 回复某一文章/问题/答案 | 能够在某一文章/问题/答案下评论,并附带图文或附件等信息 | |
发表文章 | 发表文章 | 能够发表一篇文章,并附带图文、附件等信息 | |
控制台 | 新建实验 | 新建一个小实验 | 能够正确新建实验,新建后实验处于未发布状态,且自带实验模板 |
上传报告 | 上传预习报告至相应实验组下 | 能够上传PDF格式的预习报告,能够拦截错误的文件上传 | |
编辑脚本代码 | Python/Latex/Html编辑 html实时预览 |
能够编辑/保存某个实验的代码 能够在编辑html表格时实时预览 |
|
运行测试 | 输入数据运行测试 | 能够在输入数据的情况下运行测试,并返回服务端的运行日志 | |
发布/删除实验 | 发布实验 删除未发布实验 |
能够正常发布实验,发布后用户可以在实验区看到 能够删除未发布实验,删除后服务端文件也被清空 |
2.3 用户量
根据4月16日课上的估计,我们Alpha阶段的预估用户量是50人次,控制台估计用户量是15-20人。
网站于21日正式发布,截至22日晚,共有53人次在网站注册,其中大部分为大二同学。
控制台目前仅给8个新同学开放了权限,暂无更多同学申请体验控制台。
三、项目发布与展示
3.1 新功能
3.1.1 控制台
由于往届项目控制台并未发布,因此我们在完善后将这部分放在新功能部分。目前使用控制台需要向开发者申请。
3.1.1.1 整体界面
3.1.1.2 新增实验
点击“新增实验”按钮,输入实验信息后便可以新增一个空实验。
关于新增实验模板
往届的新增实验后直接生成三个空文件,没有帮助意义。目前我们新建实验后会生成三个模板文件,其中以python脚本模板为主。三者合起来为一个可以直接运行的“迷你实验”。
3.1.1.3 在线编辑
在线可以编辑一个实验所需的三个主要部分:Python、Latex和Html表格
其中Html表格的编辑可以实时在左侧的输入框处预览。
3.1.1.4 上传预习报告
可以根据实验组上传PDF格式的预习报告。
3.1.1.5 运行测试
实验脚本编写完毕后,可以在左侧的输入框输入数据,运行简单的测试,并可以收到服务端返回的运行输出及结果。
3.1.1.6 保存/发布/删除实验
可以对实验进行保存、发布,可以对未发布的实验进行删除操作。(需要权限设置)
3.1.2 新实验
新增了 2110114 与 2140113 两个实验
其他实验陆续完成中 😃
3.1.3 用户界面
完善了用户个人信息界面,可以修改个人信息了。
3.2 修复缺陷
3.2.1 网站整体功能
接受项目时网站又一次处于无法运行的状态,经过联系往届学长我们获得了数据库备份文件并重新部署了网站。并修改了代码中多个问题让网站可以正常运行
包括但不限于:
- 注册/登陆/注册邮件确认,添加等待转圈gif缓解邮件系统较慢的问题
- 社区功能正常使用
- 已有实验大部分正常运行
- 社区图片的正常显示
- 后台管理的正常使用
3.2.2 收藏夹
完整修复收藏夹功能,目前收藏功能大体可以正常使用,可以收藏新内容,查看并下载已收藏内容
3.2.3 评论区
大体修复小实验评论区,目前可以在实验界面直接进行简单评论
3.2.4 其他
修订了去年的部署文档,现在在拥有网站全量备份的情况下可以按照部署文档将整个网站部署到新服务器上。
将全部脚本升级为python3,便于部署和后期维护(python2.7在目前环境下安装matplotlib包时会出问题,并且到2020年将停止维护)
3.3 问题与限制
3.3.1 问题
- 移动端仍处于几乎不可用状态。
- 登出问题:社区和实验网站的登出不同步
- 1020实验在测试中发现奇怪的问题暂无法运行
- 收藏夹数字显示有bug,时好时坏,但不影响使用
- 实验评论区需要验证码时无法使用
- 修改密码无法使用
- 注册部分的年级信息没有和后端关联起来
- 控制台偶尔出现编辑器需要点击才能唤醒的情况
3.3.2 限制
- 用户生成实验报告部分没有接入类似控制台的出错系统,出错后无法得知具体原因
- 注册邮件由于使用了普通的个人邮箱进行发送,可能出现发送较慢或被识别为垃圾邮件的情况。
- 注册部分由于发邮件并不是异步过程,导致邮件必须发出后页面才能跳转,目前仅能添加一个加载gif缓解问题
- 验证码比较难看
- 新增实验仍较少
- 用户看到控制台需要开发者操作数据库添加权限
- 部分实验PDF生成可能较慢
- 报告生成界面的评论区与社区中的文章相关联,但新增实验仍需要手动在社区新建文章并操作数据库关联二者
3.4 反馈
在网站上线后我们收集了一部分同学的意见与建议
3.4.1 关于网站
PM注:一个插曲:在我们网站上线并进行宣传后,现任负责物理实验的老师联系了我们,并对我们的网站能否真的帮助大家学习提出了疑问。因此对于如何平衡同学们学习和便利之间的关系我们在Beta阶段对于需求还需要更多的思考。
3.4.2 关于控制台
PM注:关于如何降低控制台的门槛问题,这两天我也在思考,拖拽式的交互将实验设计的下限拉低了很多,并且实际上也可以帮助大家学习,但以何种方式呈现是一个需要仔细计划的问题,因为涉及到开发的方向,需要在计划之初更加谨慎。
四、项目管理
4.1 分工
由于一开始我们对于重建整个项目的难度没有明确的概念,因此分工在整个Alpha阶段过程中也有所变化。
分工图大体如下:
4.2 平衡
由于组内有几名同学重修OO/OS等,势必占用了较多时间,因此在PM任务分配上也将学习曲线较为平缓的任务分配给这些同学。
当某名同学的进度出现延误/技术上出现问题时,会及时找一名技术较强的同学或任务完成较早的同学帮助其开发,或重新为两人分配任务,以尽量减小对进度的影响。
总体而言虽然组内同学很忙,但整体项目进度却没有延误太多。
五、工程质量
5.1 测试
5.1.1 测试矩阵
测试矩阵 | 后端功能测试 | 前端功能测试 | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
测试机型 | 测试环境 | 注册功能 | 登陆功能 | email功能 | 信息修改 | 搜索功能 | 查看、生成及下载报告 | 数据录入与计算正确性 | 工具计算正确性 | 论坛发布、回复、关注、收藏 | 上传附件 | 用户私信 | 页面排版 | 图片显示 | 工具计算结果显示 | 搜索结果显示 | 页面切换 | 控制台界面显示 | 控制台新建实验 | 控制台脚本编辑 | 控制台删除实验 | 控制台运行测试 | 控制台保存/发布实验 |
联想小新Air14 | chrome71.0 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常、速率较好 | 正常 | 正常 | 正常 | 正常 | 较好 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 |
thinkpad t580 | chrome72.0 | 正常 | 正常 | 正常。Email会被拉入垃圾箱 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 无按钮 | 正常 | 好 | 正常 | 待定 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 |
荣耀8x | chrome | 正常 | 正常 | 长时间收不到 | 无法保存 | 无搜索功能 | 无法查看选中实验的预习报告 | 无法确定 | 待定 | 正常 | 无 | 正常 | 竖屏不正常,比例不对,无法移动。横屏正常。桌面版正常。 | 正常 | 界面崩坏 | 无搜索功能 | 两种模式无法切换 | 界面非常乱,显示比例不对 | 正常 | 体验很差 | 正常 | 正常 | 正常 |
Lenovo G50-70 20351 | chrome | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 无 | 正常 | 正常 | 正常 | 正常 | 正常,快捷 | 有时点进社区会进入邮件已发送界面 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 |
小米8青春版 | 小米自带浏览器 | 正常 | 正常 | 正常 | 一直更新失败 | 正常 | 无法查看预习及数据报告,显示无法加载插件 | 无法查看 | 正常 | 正常 | 无 | 正常 | 正常 | 正常 | 正常 | 正常,快捷 | 正常 | 界面非常乱,显示比例不对 | 正常 | 体验很差 | 正常 | 正常 | 正常 |
暗夜精灵一 | 360极速浏览器 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 |
clevo p750dm2 | Edge | 正常 | 正常 | 正常 | 可能出现修改错误 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 |
5.1.2 Alpha 版本的出口条件
因接手往届项目,由于一开始我们对项目的状态并不清楚,并且考虑到将原有代码部署运行起来花费了较长时间,因此我们设置的出口条件是:
网站整体功能能够正常运行,且可以通过网站控制台上传、修改及调试新实验。同时尽可能新增本学期实验内容。
目前看来,从网站的功能上讲以上出口条件算是初步达到了:
-
网站整体可用,原有实验大部分正常运行(虽然本学期可能并没有人使用)。社区可以正常使用,同时我们修复了原有的评论区、收藏夹等功能使其也能正常使用。
-
我们可以由网站的“控制台”完成一整套上传实验的流程,即上传预习报告、上传脚本、运行测试到最终发布。我们目前新增的实验便是通过此控制台完成上传的。
但从网站内容丰富性上来说,Alpha阶段做的还不够多,本学期的综合实验内容有很多,但目前我们只上传了两个实验。Alpha阶段由于对脚本编写不熟悉、以及环境配置等一系列技术上的原因让我们没有新增非常多的实验。但在目前控制台环境搭建完成以及脚本编写流程基本熟练后,我们可以尽快上线剩余的大部分实验,并考虑在Beta和Gamma阶段引入新的设计性控制台实验内容。
与此同时我们也计划在Beta阶段重构网站的部分功能,以提升运行性能,更好地服务于本学期以及将来需要做实验的同学们。初步计划的重构包括:以Markdown/html代替Latex/PDF(或先并存),优化移动端使用体验。
详见 测试报告
5.2 代码规范
由于接手往届项目,代码规范也进行了沿用: 代码规范
5.3 文档
本阶段我们对原有的部署文档进行了修订: 部署文档
同时新增了控制台使用说明:控制台使用说明
以及控制台的模板程序,包括Python、Latex和Html,新增实验便可开始使用模板。
5.4 关于工程质量的反思
是的,当你看到这里就会发现,我们没有提到单元测试。
我们组很诚实地说,我们在Alpha阶段由于计划上的不确定以及没有平衡好开发与测试的关系,还有大家个人开发过程中的原因,导致在软件发布前我们为了赶工而放弃了进行单元测试,选择了手动测试。
初期恢复系统/修bug花了快一周时间,开发时功能(脚本)写完就要立刻上线,手动跑一跑正确和错误情况可以用就要赶快写下一个功能(脚本)了,这样赶着写才在发布前写完大部分功能、上线两个实验。
对于新增的接口来说,大部分函数的分支比较简单,手动测试能够覆盖所有的分支。
对于新增的实验脚本来说,我们由于对这些实验了解甚少,只能通过对比已有的报告来确认数据计算的正确性。并且脚本中几乎不存在分支,均是顺序执行的计算。
但我们并不是想为没有进行完善的单元测试而开脱,这是我们本阶段软件工程最大的缺陷之一。反思我们没有做好单元测试的原因,主要归为以下几方面
- 计划不周到,一开始没有将单元测试的编写归到任务内。
- 对当前使用语言的单元测试框架不够熟悉,不清楚如何对网站接口和模块进行单元测试。
- 时间紧迫,平衡软件功能量和质量时我们选择了功能量。
- 往届项目代码中也没有找到任何单元测试内容,写测试动力不足。
因此从现在开始到下一阶段的初期(五一结束左右),我们整个团队计划补习关于当前网站语言的单元测试内容(后端主要为PHPUnit,前端可以考虑Selenium),并将当前阶段功能未完成的单元测试计入下一阶段一开始的任务中。在下一个阶段团队将贯彻“先写测试再写功能”的思路。
六、项目进展
从燃尽图可见,Alpha阶段制定的任务基本完成了。并且实际上在项目后期由于一开始计划没有考虑较多控制台方面的内容,实际上完成的任务要多于燃尽图显示的任务。
七、成员贡献
在统计了成员的工作量后,我们大致参照 这篇博客 中的做法,统计了团队贡献分
(其中未完成工作以0.5倍计算,写报告的两位同学超额完成的工作按1.2倍计算)
最终贡献分如下
姓名 | 虚拟贡献分 | 平均贡献分 | 取整后最终结果 |
---|---|---|---|
周博闻 | 300 | 67.1785 | 67 |
周国杰 | 245 | 54.8624 | 55 |
樊子康 | 200 | 44.7857 | 45 |
何雨峰 | 200 | 44.7857 | 45 |
殷刘霄羽 | 224 | 50.1600 | 50 |
王自强 | 224 | 50.1600 | 50 |
杨帅 | 170 | 38.0678 | 38 |
总计 | 1563 | 350 |
八、总结与展望
Alpha阶段在一番手忙脚乱中终于结束了,纵观整个Alpha我们的感觉是:
计划的时间总是不够长的,想做的事情总是很多的,精力和能力都是有限的
在Alpha阶段开始时,我们花了大把的时间研究往届的项目、制定计划。最大的问题是由于对往届项目的不了解,制定计划时实际上我们,尤其是PM,对于项目本身的认识浮于表面。这导致我们的一部分计划到最后发现完成的太提前了,另一部分计划发现一个阶段可能搞不定。与此同时计划初期我们对于需求分析的不足导致了目前部分计划基本被搁置/放弃(如那个数据统计系统)。
Alpha阶段结束时,我们完成的任务和起初计划要做的任务其实差了不少(准确地说起初的计划过于保守了)。与此同时在Alpha阶段过程中大家也都产生了很多关于网站未来开发的点子,却又担心技术上实现起来有困难/自己能力不够完不成任务。这也让我们提前开始考虑Beta阶段要做的事情了,因为本阶段完成的事情属于做铺垫/上手。
Beta阶段我们目前考虑的开发内容有:
- 继续修复网站剩余Bug,如修改密码问题
- 上线更多的物理实验内容,最好可以找一些别的同学帮忙写脚本
- 在保留Latex的同时新增Markdown实验模板及报告生成,生成更快,占用资源更小。可以以此进行A/B test
- 打磨前端,特别是移动端,提升其使用体验及代码质量,若时间充裕甚至可以为提升代码质量而重构前端(目前的Bootstrap框架非常松散,扩展性/维护性不强)
同时我们也将会努力提升软件工程质量,在测试、文档、注释方面下更多的功夫。做到即使功能较少也要保证质量完成。