团队作业3——需求改进与系统设计

这个作业属于哪个课程 班级链接
这个作业要求在哪里 作业要求
这个作业的目标 <需求与原型改进、系统设计、Alpha阶段任务分配计划、测试计划>

项目:在线考试系统

一、需求分析与原型优化

在前期完成选题确认与《需求规格说明书》初稿编写的基础上,通过课堂展示与集体讨论,我们收集到师生提出的多项具体改进建议。本次团队作业3将围绕这些问题展开需求细化与原型优化工作。

1.1 课堂反馈问题及解决方案
在上周课堂讨论中,老师针对我们的选题和需求提出了宝贵建议。我们认真梳理并进行了针对性修改,以提升项目的实用性和完整性。本次更新特别结合老师在提问环节指出的核心问题
问题1:为考虑系统安全部分例如非法访问等
在系统的安全性上未进行全方面的考量,没有考虑到整个系统的安全访问及遇到他人恶意入侵,非法啊访问无权限资料

修改1.在原有的基础上强化身份认证:杜绝非法访问,通过实名认证的方式实现”一人一号“,并且在学生端,教师端及管理员账号上进行分别管理,防止发生越权访问的情况
,在数据的传输上实现可查可追溯,在出现问题时可精准定位到个人。

问题2:系统功能覆盖不全,缺少AI 辅助主观题判分功能,教师手动阅卷效率低

修改2:集成 “关键词匹配 + 语义相似度” 双模型的 AI 判分模块,支持简答题、论述题的自动打分,教师可在系统内调整评分阈值(如设置 “核心关键词命中≥3 个得 60% 基础分,语义相似度≥80% 得剩余 40% 分”)

问题3:用户体验差,移动端适配不足,学生无法在手机端顺畅答题

修改3:重构前端页面为响应式布局,适配手机、平板等多设备;优化答题页交互,如单题切换时自动保存答案、缩小触屏按钮误触区域

问题4:防作弊手段单一,存在替考、使用作弊软件等风险

修改4:集成 “人脸活体检测 + 考试过程双机位录像” 功能,考试前通过人脸核验确认考生身份,考试中自动录制考生正面及桌面画面,系统智能识别作弊行为(如画面中出现多个人脸、异常操作动作)并预警

问题5:成绩统计维度单一,仅显示总分,教师无法精准定位学生知识点薄弱环节

修改5:新增 “知识点掌握度统计” 模块,按试题关联的知识点维度分析得分率,生成班级 / 个人知识点薄弱报告,支持教师针对性教学

问题6:系统并发能力不足,期末集中考试时出现页面卡顿、答题提交失败

修改6:进行性能优化,采用 “数据库读写分离 + Redis 热点数据缓存” 架构,对高频访问的试题库、用户登录信息进行缓存,同时优化数据库查询语句,提升系统在高并发场景下的响应速度

2. 目标用户调研与场景分析
为验证需求合理性,我们选取2类典型目标用户,采用 线下1v1访谈+ 线上问卷 的调研方式,收集痛点与使用反馈:
(1)典型用户:高校教师 王老师
痛点:每学期需批改 200 + 份课程论文,人工逐份打分耗时 3 天以上,且主观题评分标准难统一。
场景(产品前):王老师在办公室逐份打印学生论文,对照评分细则手动打分,遇到歧义题需反复核对,日均工作时长增加 2 小时。
场景(产品后):王老师在系统中上传论文题的 “核心关键词库” 和 “评分细则”,系统自动对学生答案进行 AI 初判,王老师仅需对争议分数微调,300 份论文的批改时间缩短至 4 小时。
(2)典型用户:大学生 小李
痛点:期末复习时需跨校区参加多场考试,时间冲突且线下考试交通成本高;担心考试时网络波动导致答题数据丢失。
场景(产品前):小李为了一场选修课考试,需从新校区坐 1 小时公交到主校区,考试中因网络卡顿被迫重启电脑,丢失部分答题内容。
场景(产品后):小李在宿舍通过手机端登录系统,参与 “断点续考” 模式的在线考试,系统每 30 秒自动保存答案,即使中途断网,重连后可继续从断点处答题,考完直接在手机查看客观题得分。

3.需求规格说明书完善

不足 改进
功能颗粒度粗,“在线考试” 模块仅笼统描述,未拆分 “答题、判分、成绩查询” 等子功能的交互逻辑 拆分 “在线考试” 模块为 “答题管理(含自动保存、题序切换)、判分规则配置(客观题 / AI 主观题)、成绩多维度查询” 子功能,明确每个子功能的输入、操作步骤、输出结果
未明确 “AI 判分规则配置”“多设备断点续考” 等核心功能的具体逻辑,教师和学生端操作流程描述模糊。 仅罗列功能列表,未结合用户场景说明功能价值,如 “在线考试” 功能未说明如何解决 “考试时间冲突、地域限制” 等痛点。
用户角色覆盖不全,未考虑 “残障学生(如视障)”“监考管理员” 的特殊功能需求 补充 “残障学生” 功能:支持 “语音读题、放大字体、快捷键操作”;新增 “监考管理员” 功能:实时监控考生答题状态、处理作弊预警,覆盖特殊角色需求
无功能验收标准,开发边界模糊 新增核心功能验收指标,明确设备联动为“设想功能”,暂不纳入开发范围,避免资源浪费

4. 功能分析的四个象限

象限 功能类型 功能示例
第一象限(核心 + 紧急) 直接影响系统可用性的基础功能 1. 在线考试答题(含实时保存)2. 客观题自动判分
第二象限(核心 + 不紧急) 提升用户体验的长期价值功能 1. AI 主观题判分(语义相似度 + 关键词匹配)2. 多设备断点续考
第三象限(非核心 + 紧急) 临时补位的辅助功能 1. 考试异常情况人工申诉(如系统故障导致的成绩争议)2. 临时增加的防作弊监控(如切屏次数统计)
第四象限(非核心 + 不紧急) 锦上添花的拓展功能 1. 考试数据分析可视化(如成绩分布热力图)2. 与 LMS 平台(如 Moodle)的对接

5.任务分解 WBS 及进度计划调整
根据修改需求,我们调整WBS:新增AI 判分模块,移动端适配等任务,细分子码后台打磨子任务。进度计划使用Gantt图表示(详见Alpha计划部分)。总时长从原8周调整为9周,增加1周缓冲测试等功能。

调整后WBS示例:

阶段 任务细分 耗时(周)
需求阶段 1. 课堂问题收集与需求分析 2. 目标用户调研(教师 / 学生各 10 人) 1
设计阶段 1. 功能四象限优先级确认 2. 技术方案设计(AI 判分算法、响应式布局) 3
开发阶段 1. 后端:AI 判分模块开发 + 规则配置接口 2. 前端:移动端响应式界面开发 3. 测试:多设备兼容性测试 + AI 判分准确性验证 3
部署阶段 1. 功能灰度发布(小范围教师 / 学生试用) 2. 问题收集与迭代优化 1

二、系统设计

2.1 整体架构概述

系统采用基于服务端渲染的经典分层架构,包括表现层、业务逻辑层、数据持久层和支撑层。这种单体架构设计适合快速开发和部署,便于维护和功能扩展。具体而言:

  • 表现层:基于Thymeleaf模板引擎的服务端渲染架构,结合Bootstrap和jQuery实现响应式UI。按功能模块组织模板(如exam、question、user),支持多角色界面适配(学生考试界面、教师管理界面、管理员控制台)。Controller接收请求并返回视图名称,Thymeleaf负责页面渲染和数据绑定。

  • 业务逻辑层:Spring MVC架构,实现有状态会话管理。核心服务包括UserService(用户认证和权限管理)、ExamService(考试流程控制)、QuestionService(题库管理)、PaperService(试卷组卷)和ScoreService(成绩处理)。Service层封装复杂业务规则,确保逻辑一致性。

  • 数据持久层:结合MySQL(核心业务数据持久化)和Redis(会话管理和缓存优化),如考试临时数据、用户会话和热点数据缓存。MyBatis负责数据库操作,Druid连接池管理数据库连接,确保系统性能和数据一致性。

  • 支撑层:集成文件上传服务、邮件通知和定时任务,使用Spring Scheduling处理定时任务(如考试自动开始/结束、成绩统计)。基于Session的身份认证,RBAC权限控制,密码BCrypt加密,以及考试防作弊机制,保障系统稳定安全运行。

整体流程:浏览器请求 → DispatcherServlet路由 → Controller处理 → Service业务逻辑 → DAO数据访问 → 数据库操作 → Thymeleaf渲染 → 返回HTML页面。这种服务端渲染架构确保系统兼容性和开发效率。


2.2 关键组件详细设计

组件 描述 关键技术
UserService 处理用户注册、登录、权限验证和个人信息管理 Session认证、BCrypt加密、RBAC权限模型、Thymeleaf数据绑定
ExamService 考试生命周期管理,包括创建、发布、监控和状态控制 时间状态机、权限验证、Redis缓存、服务端页面渲染
QuestionService 题库的CRUD操作,题目分类和难度管理 事务管理、JSON选项存储、分类树、模板表单处理
PaperService 试卷组卷策略,支持自动组卷和手动组卷 策略模式、题目随机算法、模板管理、服务端业务逻辑
AnswerService 答题过程管理,答案自动保存和防作弊机制 定时自动保存、表单提交处理、Session状态管理
ScoreService 成绩计算、统计分析和报表生成 自动阅卷、数据分析、Thymeleaf图表渲染

2.3 分层接口定义

**Controller层接口**(Web接口):
- AccountController:用户认证相关接口
- ContestController:考试管理接口  
- QuestionController:题目管理接口
- GradeController:成绩管理接口

**Service层方法契约**(业务接口):
- UserService:用户业务方法
- ExamService:考试业务方法
- QuestionService:题目业务方法

**DAO层接口**(数据接口):
- UserMapper:用户数据操作
- ExamMapper:考试数据操作
- QuestionMapper:题目数据操作

2.4 数据库设计

2.4.1 ER图

image

2.4.2 核心业务表结构

1、用户表 (t_account)

t_account - 系统用户表
├── 主键标识
│   └── id INT(8) AUTO_INCREMENT PRIMARY KEY
├── 账户信息
│   ├── name VARCHAR(63) - 真实姓名
│   ├── username VARCHAR(30) - 登录账号(学号/工号)
│   └── password VARCHAR(60) - 加密密码(MD5)
├── 联系信息
│   ├── qq VARCHAR(30) - QQ号码
│   ├── phone VARCHAR(30) - 手机号码
│   └── email VARCHAR(30) - 邮箱地址
├── 个人资料
│   ├── description VARCHAR(63) - 个人描述
│   └── avatar_img_url VARCHAR(63) - 头像图片路径
├── 权限状态
│   ├── state INT(8) DEFAULT 0 - 账号状态(0正常,1禁用)
│   └── level INT(8) DEFAULT 0 - 权限等级(0学生,1教师,2管理员)
└── 时间戳
    ├── create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP - 创建时间
    └── update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP - 更新时间

(2)考试表 (t_contest)

t_contest - 考试信息表
├── 主键标识
│   └── id INT(8) AUTO_INCREMENT PRIMARY KEY
├── 考试基本信息
│   ├── title VARCHAR(50) - 考试标题
│   └── total_score INT(8) - 考试总分
├── 关联信息
│   └── subject_id INT(8) - 所属学科ID
├── 时间控制
│   ├── start_time TIMESTAMP - 考试开始时间
│   └── end_time TIMESTAMP - 考试结束时间
├── 状态管理
│   └── state INT(8) DEFAULT 0 - 考试状态(0未开始,1进行中,2已结束,3已批卷)
└── 时间戳
    ├── create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP - 创建时间
    └── update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP - 更新时间

(3)题目表 (t_question)

t_question - 题目信息表
├── 主键标识
│   └── id INT(8) AUTO_INCREMENT PRIMARY KEY
├── 题目内容
│   ├── title VARCHAR(255) - 题目标题
│   └── content TEXT - 题目详细内容
├── 题型配置
│   └── question_type INT(8) - 题目类型(0单选,1多选,2问答,3编程)
├── 选择题选项
│   ├── option_a VARCHAR(50) - 选项A
│   ├── option_b VARCHAR(50) - 选项B
│   ├── option_c VARCHAR(50) - 选项C
│   └── option_d VARCHAR(50) - 选项D
├── 答案系统
│   ├── answer TEXT - 标准答案
│   └── parse TEXT - 答案解析
├── 关联信息
│   ├── subject_id INT(8) - 所属学科ID
│   └── contest_id INT(8) - 所属考试ID
├── 题目属性
│   ├── score INT(8) - 题目分值
│   ├── difficulty INT(8) DEFAULT 1 - 难度等级(1-5)
│   └── state INT(8) DEFAULT 1 - 状态(0未考试题目,1已考试题目)
└── 时间戳
    ├── create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP - 创建时间
    └── update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP - 更新时间

三、Alpha任务分配计划

3.1. Product Backlog功能列表

编号 功能模块 功能描述 优先级 依赖关系
F01 用户认证与权限管理 系统需要区分不同角色的用户并控制其访问权限。 最高
F02 学科管理 对考试科目进行分类管理,为题目和试卷提供分类。
F03 题库管理(核心) 提供对考试题目的全面管理功能,支持多种题型。 最高 F02
F04 试卷管理(手动组卷) 允许教师从题库中手动选择题目来创建试卷 F03
F05 考试执行与自动判分(核心) 学生可以参加考试并即时获得客观题成绩 最高 F04
F06 成绩查询与分析 为学生和教师提供成绩查看和分析功能 F05
F07 论坛讨论模块 提供一个师生课后交流的平台 F01

3.1.2 Alpha 阶段待实现功能(MVP)
选择依据:
优先级:​ 优先实现最高优先级的功能,形成核心业务闭环(用户登录 -> 参加考试 -> 查看成绩)。
依赖关系:​ 严格按照依赖关系选择(F01 -> F02 -> F03 -> F04 -> F05)。
工时约束:​ 团队总工时为90小时。F01至F05的总估算工时为 15+10+25+20+30 = 100h,与90h接近,可通过效率提升或简化功能(如简化UI)来完成。
选择的Product Backlog项:​ F01, F02, F03, F04, F05。

3.2、 任务分解与认领(Sprint Backlog)

模块/功能项 任务ID 任务描述 预估工时 负责人
F01: 用户认证 T01 数据库设计:用户表 2 邢子昂
T02 后端:注册/登录/注销API 8 邢子昂
T03 前端:登录/注册页面组件 5 庄成杰
T04 前端:路由守卫与Token管理 3 庄成杰
T05 前后端联调 2 邢子昂/庄成杰
F02: 学科管理 T06 数据库设计:学科表 1 张翔
T07 后端:学科的增删改查API 4 张翔
T08 前端:学科管理页面(基础CRUD) 5 庄成杰
F03: 题库管理 T09 数据库设计:题目表 3 邢子昂
T10 后端:题目的增删改查API(支持单选、多选、判断) 10 邢子昂
T11 前端:题目管理页面(增删改查表单) 12 庄成杰
F04: 试卷管理 T12 数据库设计:试卷表、试卷-题目关系表 3 张翔
T13 后端:试卷的增删改查、手动添加题目API 10 张翔
T14 前端:试卷创建/编辑页面(拖拽或选择题目) 7 庄成杰
F05: 考试执行 T15 数据库设计:考试记录表、考生答案表 3 邢子昂
T16 后端:开始考试、获取试卷详情API 5 邢子昂
T17 后端:保存答案、提交试卷(含自动判分)API 8 邢子昂
T18 前端:考试倒计时与试卷展示页面 10 庄成杰
T19 前端:答题卡、答案保存与交卷功能 7 庄成杰
T20 成绩查询页面开发 5 庄成杰
T21 后端:成绩查询API 4 张翔
T22 核心流程端到端测试 4 全体
总计 112h

3.3甘特图
image

四.测试计划

产品名称: 在线考试系统
在替代传统线下考试,提升教学考核效率。本次测试针对系统 V1.0 正式版,聚焦 “功能正确性、性能稳定性、数据安全性、多端兼容性”,确保系统满足高校课程测试、企业培训考核等场景的使用需求。

测试范围:
包含范围:

模块 测试重点
注册 / 登录(多角色)、个人信息修改、权限隔离 注册 / 登录(多角色)、个人信息修改、权限隔离
考试管理 考试创建(时间 / 科目 / 题型配置)、考试监控(切屏统计 / 异常预警)、成绩统计
题目管理 题目录入(单选 / 多选 / 主观题)、批量导入(Excel 模板)、智能组卷
在线答题 断点续考、自动存答、试卷提交
智能判分 客观题自动判分、主观题 AI 初判

不包含范围
第三方系统对接测试(如与学校教务系统、企业 LMS 平台的集成,后续版本单独测试);
极端硬件环境测试(如老旧手机(Android 7 以下)、低配置电脑(内存<4G)的兼容性);
离线考试功能测试(当前版本仅支持在线模式,离线功能暂未开发)。

测试环境:

后端环境 Spring Boot + JDK 1.8 + MySQL 5.7/8.0 + Redis 5.0/6.0
前端环境 Chrome/Edge/Safari 主流浏览器
测试工具 Postman、JMeter、JIRA、TestLink
数据库 MySQL 测试实例 + Redis 测试实例

测试工具

  1. TestLink 1.9.20(用例管理);
  2. JIRA 9.0(缺陷跟踪);
  3. JMeter 5.5(性能测试);
  4. BurpSuite 2023.9(安全测试);
  5. BrowserStack(兼容性测试)

测试方式:
黑盒测试:按用例覆盖正向 / 逆向场景;
探索性测试:模拟真实用户随机操作(如考试中途切屏、多次提交)
并发测试:模拟 500/800 人同时登录、答题、提交;
长稳测试:200 人持续考试 4 小时,监控系统稳定性
浏览器兼容性:覆盖 Chrome/Edge/Safari 主流版本;
设备兼容性:测试电脑(Windows 10/11、macOS 12+)、手机(iPhone 13+/ 华为 Mate 40+)
权限测试:验证 “学生不可查看其他考生成绩”“教师不可修改管理员账号”

测试目标
功能完整性:核心功能测试覆盖率≥98%,所有用户场景(如学生答题、教师判分、管理员运维)均覆盖;
功能正确性:客观题自动判分准确率 100%,AI 主观题初判准确率≥90%,无核心功能逻辑错误;
性能稳定性:500 人并发考试时,单题提交响应时间≤2 秒,服务器 CPU 利用率≤70%,无崩溃 / 数据丢失;
数据安全性:考生账号密码加密存储(MD5 + 盐值),成绩数据传输采用 HTTPS,无越权访问漏洞;
多端兼容性:支持 Chrome(90+)、Edge(90+)、Safari(14+)浏览器,手机端(iOS 13+/Android 10+)答题界面适配正常。

测试类型:
功能测试,性能测试,兼容性测试,安全测试

时间安排
开发中每日单元测试,迭代末系统测试,目标覆盖率>80%。 参考《构建之法》测试章节,确保早发现早修复。

posted @ 2025-11-22 18:41  jslisten  阅读(22)  评论(0)    收藏  举报