「MOSS - 05」MOSS队:功能规格说明书
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2023年北航敏捷软件工程 |
这个作业的要求在哪里 | 团队项目-Alpha阶段项目计划 |
我们在这个课程的目标是 | 熟悉敏捷开发的方法论,并通过实际开发产品进行实践。 |
这个作业在哪个具体方面帮助我实现目标 | 通过明确功能规格说明书,以书面的形式确定Alpha阶段开发的核心和重点,确保团队工作始终围绕最重要最有价值的部分进行 |
Author: MOSS队
Date: 2023.04.05
Part 1 概念说明
概念 | 含义 |
---|---|
本项目/本平台/本软件/ShieAsk | 均特指“士问士答”(ShieAsk)项目/平台,这是为士疑解惑活动配套的网站平台 |
学生 | 在本项目中特指2022级士谔书院大一学生 |
辅导师 | 报名士疑解惑活动并担任“辅导师”的大二、大三、大四学生,承担答疑工作 |
管理员 | 士谔书院负责士疑解惑活动的辅导员和其他工作人员 |
issue | issue是本平台的核心概念,学生以issue为单位进行提问,辅导师以issue为单位进行解答 |
奖励 | 本平台上基于辅导师的虚拟奖励。将由管理员折算成对应的志愿时长分配给辅导师 |
用户类型 | 学生、辅导师、管理员三者之一 |
用户 | 对学生、辅导师、管理员的统称 |
issue缩略 | issue的缩略图。包含issue的问题名、所属二级目录分类、标签、提出者、解答者 |
科目 | 士疑解惑活动答疑的科目,共有工科数学分析(2)、数据结构、离散数学(1)、基础物理学四门 |
Part 2 典型用户与对应的应用场景
本产品为面向士谔书院提供的服务,用户群体固定且不涉及付费
典型用户 | 应用场景 |
---|---|
学生 | 成绩有较大提升空间,希望通过士疑解惑活动提升自己的成绩,分流进心仪的专业 |
辅导师 | 擅长某一(几)科目,希望通过士疑解惑活动帮助学弟学妹,并以此获得志愿时长 |
管理员 | 负责士疑解惑的辅导员,希望进一步推广士疑解惑活动惠及学生,并更高效地了解活动进展并进行奖励激励 |
Part 3 典型应用场景
3.1 学生
大一士谔书院学生小A。当前的大类成绩按照往年经验进入心仪专业有一定不确定性,希望通过士疑解惑活动提升自己的成绩,在分流中掌握主动权,成功进入心仪的专业。小A在大一上时通过微信群参加士疑解惑时,在C语言语法上遇到了一些困难。小A记得之前有人在微信群中问过类似的问题,想通过微信聊天记录看看之前有没有人提过类似的问题,但由于之前的问题和回答交错在一起,组织混乱,小A在查了若干条聊天记录后放弃继续寻找。小A由于担心自己的问题过于基础或曾有过讲解但自己没听清/没记住而不好意思实名提问,在一番纠结后最终提出了自己的问题,但很快被其他人后提的问题冲到消息队列的前面,最终没有辅导师回答。
在我们的平台上,小A可以通过以下流程进行提问。
3.2 辅导师
大二计算机学院学生小B。擅长编程,希望通过士疑解惑活动帮助学弟学妹,并获得志愿时长。在上学期也报名参加了士疑解惑成为了一名程设辅导师,在微信群中回答学生的问题。小B有空时,群里没人提问。而当群里有问题时,小B没有时间回答,群里其他辅导师也相互推诿,最终问题不了了之。此外,由于统计工作量时只统计微信群内回答的问题数,许多私聊问的问题无法被统计,虽然对于服务学弟学妹的初心而言感到开心,但是也暗自为没有被计算的工作量感到一丝伤心。
在我们的平台上,小B可以通过如下流程回答问题:
小B在登录平台后发现没有未认领的issue,则取查阅是否有待复审的issue:
3.3 管理员
士谔书院半脱产辅导员小C。在上学期也担任士疑解惑活动的组织者。由于士疑解惑活动给每个科目都建了很多个答疑群,小C需要管理多个微信群聊,负担较重。在统计工作量时,小C只能在每个答疑群中手动统计每个辅导师回答了多少问题,费时费力。
在我们的平台上,小C可以通过表格为学生和辅导师批量注册账号,无需建多个群聊。在月末统计志愿时长时,小C可以一键进入管理端界面,通过统计图直观了解每个辅导师的绩效,并自动折算成对应的志愿时长,一键导出为表格。
Part 4 界面原型设计
4.1 登录
链接:https://modao.cc/app/Qg9EyKNarsh4i96HNT1Zan#screen=skvggm365n5lfyzp6yritzjrh
4.2 发布issue弹窗
链接:https://modao.cc/app/Qg9EyKNarsh4i96HNT1Zan#screen=slfz1lu7mjix7rb
4.3 issue详细页面
链接:https://modao.cc/app/Qg9EyKNarsh4i96HNT1Zan#screen=slfz1lu7mjix7rb
4.4 issue的检索与认领
链接:https://modao.cc/app/kIXF4juDrsjajhGsYsfOJz#screen=slg0nwtebhfli1g
4.5 账号注册页面
链接:https://modao.cc/app/ohbcKCMLrsim7hXXNPmMlW#screen=sksu793t0qclg054vwejwumk0
4.6 账号管理页面
链接:https://modao.cc/app/ohbcKCMLrsim7hXXNPmMlW#screen=slg08lcoh4nwui1
4.7 个人主页视图
链接:https://modao.cc/app/ohbcKCMLrsim7hXXNPmMlW#screen=slg0jmxcw7utovg
4.8 个人issue列表视图
链接:https://modao.cc/app/ohbcKCMLrsim7hXXNPmMlW#screen=slg0ofjwaequfo2
Part 5 系统功能描述及验收验证标准——Alpha版本
5.1 通用功能
登录功能
输入学号、密码
- 若学号不存在,则提示用户不存在
- 若学号存在但密码与该账号不匹配,则提示密码错误
- 否则登录成功,在登录成功后再识别用户类型
个人信息查询与修改功能
个人信息包含必填信息和选填信息
- 必填信息包含学号、姓名、密码,均由初始导入时自动生成。
- 学号姓名不允许修改。
- 密码允许修改。修改时需要同时输入原始密码和新密码。若原始密码错误需给出相应提示。
- 选填信息包含头像、邮箱,初始默认为空。
- 用户均可以修改。
- 支持用户自己上传图片作为头像。(图片上传存储方法需调研)
issue的检索与组织
以科目-章节的二级目录形式组织issue。
- 科目只能在数据库后端预先设定,每个科目下默认有一个“未分类”章节。
- 管理员有权限在科目下新增章节,也可以删除章节。“未分类”章节无法被删除。被删除章节下的issue会被自动归到“未分类”章节。
(思考以何种形式展示二级目录,是类似csdn技能树那种左侧边栏吗?)
当科目-章节选定后,会自动展示符合条件的issue,也可以在符合条件的issue中进一步进行搜索。
- 展示的顺序待定。(考虑按照issue的可推广性来排序,可推广性的计算方式为 issue的赞数 - issue的踩数 + C * issue的价值数,C为待定系数)
- 若issue数大于页面最大展示数,是翻页还是鼠标下拉自动扩充?(倾向后者)
- 科目为必选,章节支持多选,不选默认为全选。
- 可以选择检索issue的状态。状态表见后文。学生仅能检索有效提问issue。辅导师和管理员可以自选。
- 搜索时可采用关键字和标签两种搜索方式,可以并用。
- 关键字可用空格分隔,后端对关键字进行分割,分割后的关键字构成“与”关系,返回的每个issue都必须包含所有关键字。
- 关键字为空时视为没有关键字,即在关键字上对issue不做限制。
- 用户可在标签栏内输入,输入后会自动联想补全标签提示。用户只能从已有的标签中选择。标签之间构成“或”关系,返回的每个issue需包含至少一个标签。
- 标签为空则视为没有标签,即在标签上对issue不做限制。
issue的阅览
可以看到issue的标题、问题正文、提出者(匿名则显示匿名)、最终回答者、最终复审者。可以对issue进行点赞/点踩
反馈机制
若用户认为平台上存在性质恶劣的行为,可以进行举报。
若用户对平台有改进建议,可以进行反馈。
举报类似于issue,区别在于没有复审这一环节。由学生/辅导师提出,由管理员认领。管理员和提出者均可以关闭issue。
所有issue仅对管理员可见。个人主页可以查看自己提出的issue的进度。
(或者如果嫌多,可以改成留邮箱,发邮件反馈)
5.2 学生功能
issue的提出
点击issue发布按钮、选择issue所属的科目和章节、输入issue的标题、输入issue的问题正文、选择实名/匿名、点击发布。
发布时,会自动生成该issue的id、发布时间、发布者id。匿名只是一种前端显示技术,所有的issue在后端都是实名的。
issue的交互
发布后,issue的标题、问题正文、是否匿名、所属章节支持修改,所属科目不支持修改。
发布后,默认issue处于“未认领”状态。当有辅导师认领后,会被修改未“已认领”状态。若学生对目前认领该issue的辅导师不满意,可以选择更换辅导师。更换辅导师后,该issue会重新处于“未认领”状态。
学生和辅导师可以在issue下通过发消息进行交互。消息会按时间顺序展示到issue下面。用户能且仅能在该issue处于未认领/已认领状态下,删除和修改自己发的消息。(更改,自己发的消息不支持修改和删除)
若学生觉得该问题已得到解决,可选择关闭issue。注意提示该操作不可逆,学生自己无法在关闭后重新打开issue。关闭的issue会从已认领状态切换为未认领复审。
在复审阶段,若复审的辅导师认为该issue下的回答有误,则可以重新打开该issue。重新打开后该issue会自动成为已认领issue,默认复审辅导师为认领者。学生继续和该辅导师在该issue下交互,直至问题解决,学生再次关闭issue。关闭的issue会从已认领状态切换为未认领复审。
若学生关闭未认领的issue,则默认学生自行解决了该问题,该issue会直接切换到无效提问状态。
下面附上issue的状态转换图
个人主页
学生可以在个人主页追踪自己提出的issue
issue首先按状态分类,在状态内按issue提出时间排序。
issue过多超出展示范围?
5.3 辅导师功能
个人主页
个人主页上会多一个信息:负责答疑的科目。至少选一项,最多全选。支持修改编辑(不支持的话不便于一键自动导入?)
个人主页上会显示自己已认领的issue。按issue提出时间顺序排序。
issue的认领
在主页会根据辅导师负责答疑的科目,分别显示该科目下所有未认领的issue、未认领复审的issue。按照issue发布时间排序,越早发的issue顺序越靠前。对于发布时间较长的issue,会显示一个额外附加奖励值。
- 奖励值公式由管理员设置。前端显示的奖励值在查询时自动计算生成。奖励值按照辅导师认领issue的时刻为准。
- 辅导师不能认领未认领复审的issue中,自己回答的issue。
issue的交互
辅导师可在其认领回答的issue下,修改issue的标题、问题正文、所属章节,以对学生表述不准确的地方进行修正。
学生和辅导师可以在issue下通过发消息进行交互。消息会按时间顺序展示到issue下面。用户能且仅能删除和修改自己发的消息。
若辅导师认为该issue与另一个issue属于同质问题,可以在回答时直接粘贴另一个issue的链接。(对同质issue的处理还有待明确,直接暴力合并感觉不太现实)
issue的复审
辅导师可在其认领复审的issue下,检查该issue下回答的正确性。
- 若认为该issue回答正确,则点击确认。
- 若认为该issue属于有效提问,对其他人有帮助。在确认页面需要对该issue添加标签。可在该页面创建标签。在确认页面需要对该issue进行“issue的价值数”评分,评价该issue对于其他学生的帮助性。该issue会进入“有效提问”状态。
- 若认为该issue属于同质问题,或是非常个性化、对其他人没有价值的问题,则将该issue归为无效提问。
- 若认为该issue回答错误,则点击更正。之后该issue会进入已认领状态,该辅导师会自动成为该issue对应认领的辅导师。
5.4 管理员功能
注册功能
支持单个账户注册和批量账户注册两种模式。
单个账户注册需输入:学号、姓名、密码、用户类型。
批量账户注册需输入用户类型,并上传包含学号、姓名、密码的相应文件。(文件格式需调研)
账号管理功能
支持账户冻结/解冻。可冻结学生/辅导师的账号。冻结后将无法再登录,无法进行操作。(默认所有API接口都需要传用户的鉴权id,后端会先检查该用户是否有这个权限,再进行操作回应)
工作量导出功能
设置奖励值到志愿时长的映射关系,一键自动导出所有辅导师的志愿时长。
Part 6 系统功能描述及验收验证标准——Beta版本
6.1 通用功能
邮箱验证与邮件提示
公告查询功能
issue评论功能
6.2 学生功能
打卡功能
参与打卡
6.3 管理员功能
打卡管理功能
发布新的打卡活动
统计打卡信息
公告发布功能
统计图功能
Part 7 可能存在的问题和副作用
7.1 标签粒度
- 问题:标签的粒度可能过粗或过细,不够合适
- 解决方案:由辅导师和辅导员讨论对标签进行增删
7.2 激励机制
- 目前的奖励机制较为粗糙,主要依据辅导师解决issue的数量,可能不够精确
- 后续结合其他统计数据辅助确定更精细的工作量统计