NABCD 需求分析
以下是对本次团队项目的 NABCD 需求分析。
Need 需求
概述
当前计算机学院的核心专业课程《操作系统》的理论部分和实验部分建设都趋于成熟,实验平台也需要进一步开发完善。实验平台的主要使用者包含课程教师、助教和选课学生,这是产品的三类典型用户。该平台用于完成课下实验、课上考试等功能。现有的平台对上述功能的实现尚不完善,用户体验不佳。与此同时,校内各类课程平台的建设日臻完善,为了适配核心专业的课程定位,我们计划实现一个供教师、助教、学生使用的统一的课程平台。
对于教师用户群体而言,教师对总体的教学进度进行把控,主要进行:
- 了解每周上机的通过情况、实验报告提交情况
- 管理助教权限,便于每年助教人事变动时进行调整
助教用户 需要协助教师开展工作,主要进行实验、考试内容的部署与管理。具体而言,包含如下内容:
- 在每个新的 lab 开始之前部署好代码仓库,完成教程的编写并部署
- 定时开启、结束课上考试,并能根据考试的情况及时调整考试时间(如延长考试时间等)
- 考试过程中发布通知
- 在讨论区回复学生疑难问题
学生用户 在该产品的使用者中占比最高,主要进行课下实验、课上考试等活动,具体如下:
- 查看并学习每一 lab 的实验教程
- 拉取每一 lab 的代码并进行代码编写、提交、评测
- 根据评测反馈的结果对已有的代码进行修改,并再次评测
- 完成课上考试(操作流程与课下实验相似)
- 提交实验报告
- 完成挑战性任务
- 在讨论区发布问题
需求采访与交流
我们对部分用户的具体需求进行了采访交流。
采访对象:wty(《操作系统》课程教师)
- gyp:请问您在使用现有的 OS 课程平台时,觉得有哪些可以改进的地方?
- wty:目前基本功能都实现了,但整体还是太分散,收同学的实验报告还要去课程中心。
- wty:还有一方面,每次上机之后,我想看同学得分的分布情况不太方便,希望能有直观一些的图表。
助教讨论:yzr、gyp、ptw(OS 助教,小组成员)
- yzr:在考试的时候要是发个通知,都不能预览,有时候还不如直接去考场通知。
- gyp:考试需要延长时间的情况下,修改考试时间比较麻烦;另外,考试开始也是助教手动操作的,应该改成助教设定好时间后,自动开始、结束考试。
- yzr:评测系统也需要改进。目前这门课已经开到其他学院去了,现有的评测机有点不够,应该要设计成一个能够动态扩充的集群。
- ptw:教程部分可以参考目前最新的方式,用 Markdown 写好之后 push 到服务器,然后用 CI 调用 mkdocs 编译出来。
采访对象:2020 级选修《操作系统》课程的同学
- fxj:请问在 OS 的课程平台使用上,你觉得有什么不太方便或者可以改进的地方吗?
- 同学 A:上机的时候看题目太不方便了,有时候都打不开。
- 同学 B:评测的时候输出的信息太多了,但是里面有用的信息其实只有几行,查看不太方便。
- 同学 B:讨论区我看的不太多,但是就我看过的几篇而言,都是给的链接跳转到博客看的,不知道是不是排版不太方便。
- yzr:目前的讨论区确实排版不太好,Markdown、公式都还不支持。
Approach 方法
为了满足用户的使用需求,我们将要实现如下的功能:
- 统一的课程平台,将三类典型用户所需的功能集成到同一站点
- 实验主体、报告提交、教程查看、讨论区等功能原本分散在不同平台。而本平台将所有的功能整合到统一站点,无需在多个平台间来回切换。
- 直观的信息展示
- 无论是教师、助教还是学生,所有的统计信息和历史记录都可以在可视化界面中查看,各类统计指标图形化展示,一目了然。
- 可动态扩充的评测系统
- 课程正在向其他系扩展,学生越来越多,将建立一个便于扩展的评测机集群,满足新的性能需求
- 更便捷的后台管理功能
- 对助教权限进行分组,后续修改助教权限直接依照分组完成,无需逐个手动设定
- 教程实现自动编译,无需手动导入教程网站
- 考试信息的修改更加方便,灵活调整考试时间
我们将采用如下的技术来实现上述功能:
- 前端
- Vue.js 框架
- echarts 数据可视化
- mkdocs 实现教程的现代化管理与自动化编译
- mavonEditor 实现 Web 端 Markdown 编辑与实时预览
- 后端
- openresty 代理请求
- Golang + Gin 框架
- Postgresql 主数据库
- Redis 缓存数据库
- 评测
- Golang + Shell
- Docker 容器技术
- 分布式可扩容的评测机
Benefit 好处
新上线的 OS 课程平台,将会使用户群体获得如下好处:
用户 | 好处 |
---|---|
教师 | - 成绩展示更加直观,采用图标形式展示,通过情况等可一目了然 - 管理助教权限更加容易 - 集中的报告、实验平台,便于最终成绩管理 |
助教 | - 发布通知可预览 - 通过可视化接口修改考试信息 - 可根据课程人数的增加,轻易调整评测机数量 - 教程统一管理,上传和编译更加容易 |
学生 | - 讨论区支持使用 Markdown 和数学公式 - 可视化查看历次提交的 timeline trace 及其评分,便于查看课程进度 - 将教程并入平台,考试时无需来回切换 |
Competitors 竞争
本品的竞品是正在使用的 OS 课程平台。从教师、助教和学生三类典型用户的使用体验上,原有的课程平台存在如下问题:
- 教师体验:
- 考试通过情况缺少直观展示
- 实验报告提交与现有系统割裂感较强
- 权限管理依托现有项目,与课程实际需求脱节
- 助教体验:
- 没有集中的通知发送功能
- 编辑文档、信息等无法预览
- 考试、评测管理机制自动化缺失、鉴权简单
- 学生体验:
- 评测机制实现方式原始、维护困难
- 课下上机、考试时题目查看不便
- 学生难以查看自己的课程进度
- 讨论区发送消息时,无法插入 Markdown 或数学公式
上述问题可整理为:
- 平台集成度不够高
- 可视化、自动化程度低,信息展示不友好
- 平台可扩展性不好,权限管理困难
而本平台开发的宗旨在于解决上述问题,因此将所有功能集成到同一平台。完善了数据的可视化功能,并让部分操作也可通过可视化方法完成,无需在控制台下输入指令。重新构建了评测机系统和权限管理系统,让平台更加完善、健壮。
Delivery 交付
本产品的主要用户是《操作系统》课程教师、课程助教与选修了该课程的学生,用于满足课程的实验部分平台需求。开发阶段,该平台将部署于课程组提供的临时开发服务器上。完成开发后,将由《操作系统》课程组教师验收,并迁移到《操作系统》课程组的生产服务器上投入使用。
Data 数据
发布阶段中,总活跃量达到 500。其中,日活跃用户约占 30%,即 150 日活跃用户量。