团队作业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图

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甘特图

四.测试计划
产品名称: 在线考试系统
在替代传统线下考试,提升教学考核效率。本次测试针对系统 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 测试实例 |
测试工具
- TestLink 1.9.20(用例管理);
- JIRA 9.0(缺陷跟踪);
- JMeter 5.5(性能测试);
- BurpSuite 2023.9(安全测试);
- 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%。 参考《构建之法》测试章节,确保早发现早修复。
浙公网安备 33010602011771号