团队作业3--需求改进&系统设计
一、需求规格书修改说明
1. 《需求规格说明书》改进
- 数据备份与恢复:未说明用户误删任务后的恢复机制或定期备份功能
- 用户个性化设置缺失:未提及用户自定义提醒方式(如仅短信/仅邮件/两者结合)、提醒时间提前量(如提前1小时/1天)的设置
- 边界场景未覆盖:用户同时修改同一任务时的冲突处理(如Web端和桌面端同时编辑)
- 任务依赖关系:复杂任务可能需要子任务或前后依赖(如“买食材”必须在“做饭”之前完成)
2. 用户故事
场景:大学生小林的考试周任务管理
(1)任务创建与自动分类
- 小林输入任务:“完成机器学习大作业,参考教材第5章”,系统通过关键词“作业”“教材”自动分类为“学习”。
- 他手动添加标签“#紧急”和子任务:“收集数据集→编写代码→撰写报告”。
(2)智能提醒与情感化交互
- 截止时间前2天,系统发送邮件提醒:“你的‘机器学习大作业’还剩48小时!加油,你可以的~”
- 任务完成后,界面显示鼓励动画:“今日已完成3/5任务,效率超90%同学!”
(3)多端同步与冲突处理
- 小林在手机Web端修改了作业截止时间,桌面端实时同步更新。
- 若同时修改,系统提示“检测到冲突,请选择保留哪个版本”。
3. 功能分析的四个象限
| 用户需求明确 | 用户需求不明确 |
|---|---|
| 核心功能 | 任务增删改查,多端实时同步,基础提醒(邮件/短信) |
| 辅助功能 | 任务标签/手动分类,数据备份与恢复,冲突解决(多端编辑) |
4. WBS与进度调整
- 任务依赖关系 → 智能分类模块扩展(第8周)
- 冲突处理测试 → 桌面端与Web端联调(第10周)
风险控制:若延期,优先保证核心功能(任务管理、同步)
二、需求&原型改进 - 20分
- 问题1:任务自动分类的准确性不足
修改1:
- 改进自动分类算法,引入更全面的关键词库和机器学习模型(如朴素贝叶斯分类器)。
- 允许用户手动纠正分类错误,并将用户反馈数据用于模型优化。
- 示例:任务描述包含“代码”“调试”时,分类为“开发”而非“学习”。
- 问题2:提醒方式单一,易被忽略
修改2:
- 增加多级提醒(提前1天、1小时、10分钟),支持自定义提醒时间。
- 集成微信/钉钉等常用平台通知,避免短信/邮件的低到达率。
- 添加“紧急任务”红色高亮标识,强化视觉提醒。
- 问题3:多端同步存在延迟
修改3:
- 采用WebSocket实现实时双向同步,替代轮询机制。
- 增加“同步状态”提示图标(如绿色√表示同步成功)。
- 问题4:情感化设计流于表面
修改4:
- 根据任务完成情况推送个性化鼓励(如“连续3天完成任务,继续保持!”)。
- 允许用户选择UI主题(如“极简模式”“卡通模式”)。
- 问题5:缺乏任务优先级管理
修改5:
- 增加 “优先级”标记(高/中/低),支持按优先级排序和筛选。
- 智能推荐优先级:根据截止时间、任务类型(如“考试复习”自动设为高优先级)。
- UI优化:高优先级任务显示为红色,并在列表顶部置顶
- 问题6:团队协作功能缺失
修改6:
- 共享任务列表:允许用户创建小组并分配任务(如“小组作业分工”)。
- 进度追踪:显示每个成员的完成情况(如“3/5 任务已完成”)。
- 权限管理:创建者可编辑任务,其他人仅能标记完成。
- 问题7:数据分析与复盘功能薄弱
修改7:
- 任务完成统计:按周/月展示完成率、拖延情况(图表可视化)。
- 拖延分析:识别用户常延迟的任务类型(如“学习类任务延迟率40%”)。
3.改进建议:基于数据推送时间管理技巧(如“你常拖延写作任务,试试番茄钟法”)。
- 用户痛点与场景
- 痛点:
- “常忘记小组作业的细分任务”(学生用户A)。
- “紧急工作被淹没在琐事中”(职场用户B)。
- 照片:用户手机备忘录杂乱无章的截图。
-
使用前场景:纸质便签易丢失,电子清单无分类(视频展示用户翻找便签的过程)。
-
使用后场景:
- 自动分类将“课程报告”归入学习类,并提前1天提醒(视频演示提醒弹窗)。
- 用户反馈:“颜色区分让我一眼看到优先级”(访谈片段)。
调研方法:
- 情景模拟:让用户在原型中处理“考试复习+聚餐安排”的冲突任务。
- A/B测试:对比用户对“机械提醒”vs.“鼓励性语言”的情绪反应(记录微笑次数)。
关键改进依据:
- 80%用户希望增加“团队任务分配”功能(后续版本规划)。
- 所有用户认为分类准确性比AI推荐更重要(优先级调整)。
三、系统设计 - 50分
1.系统架构图
┌───────────────┐ ┌───────────────┐
│ Client │ │ Third-Party │
│ (Web/Mobile) │◄─────►│ SMS/Email │
└───────┬───────┘ └───────────────┘
│
│ HTTPS/WebSocket
▼
┌───────────────┐
│ API Gateway │
└───────┬───────┘
│
│ Service Router
▼
┌───────────────────────────────┐
│ Application Layer │
├─────────────┬───────┬─────────┤
│ Task Service│Reminder│ Sync │
│ │ Service│ Service │
└───────┬─────┴───┬───┴────┬────┘
│ │ │
▼ ▼ ▼
┌───────────────────────────────┐
│ Service Layer │
├─────────────┬─────────┬───────┤
│ Classification│ Auth │ Cache │
│ Engine │ Service │ (Redis)│
└───────┬───────┴─────────┴───────┘
│
│
▼
┌───────────────┐
│ Data Layer │
│ MySQL │
└───────────────┘
2. 数据库设计(MySQL)
用户表 (users)
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, phone VARCHAR(20), password_hash CHAR(60) NOT NULL, timezone VARCHAR(50) DEFAULT 'UTC', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
任务表 (tasks)
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, title VARCHAR(100) NOT NULL, description TEXT, due_time DATETIME NOT NULL, status ENUM('未开始','进行中','已完成') DEFAULT '未开始', category_id INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (category_id) REFERENCES categories(id) );
CREATE INDEX idx_user_status ON tasks(user_id, status); CREATE INDEX idx_due_time ON tasks(due_time);
分类表 (categories)
SQL CREATE TABLE categories ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) UNIQUE NOT NULL, description VARCHAR(200), is_system BOOLEAN DEFAULT 1 -- 标识系统预设分类 );
-- 初始数据
INSERT INTO categories (name, description) VALUES
('工作', '工作任务'),
('学习', '学习任务'),
('娱乐', '娱乐活动');
标签表 (tags)
SQL CREATE TABLE tags ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) UNIQUE NOT NULL, user_id INT, -- NULL表示系统标签 color VARCHAR(7), FOREIGN KEY (user_id) REFERENCES users(id) );
CREATE TABLE task_tags ( task_id INT NOT NULL, tag_id INT NOT NULL, PRIMARY KEY (task_id, tag_id), FOREIGN KEY (task_id) REFERENCES tasks(id), FOREIGN KEY (tag_id) REFERENCES tags(id) );
提醒记录表 (reminders)
SQL CREATE TABLE reminders ( id INT AUTO_INCREMENT PRIMARY KEY, task_id INT NOT NULL, user_id INT NOT NULL, notify_time DATETIME NOT NULL, channel ENUM('email','sms') NOT NULL, status ENUM('pending','sent','failed') DEFAULT 'pending', retries INT DEFAULT 0, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (task_id) REFERENCES tasks(id), FOREIGN KEY (user_id) REFERENCES users(id) );
CREATE INDEX idx_notify_status ON reminders(notify_time, status);
- 核心模块设计
-
自动分类引擎
使用预定义关键词匹配(工作:会议/项目/报告;学习:考试/课程/阅读;娱乐:电影/游戏/旅行)
可扩展为机器学习模型(BERT文本分类) -
提醒服务
定时任务每分钟扫描reminders表
使用Redis sorted set实现高效提醒调度
失败重试机制(最多3次) -
同步服务
使用WebSocket实现实时同步
版本号机制保证数据一致性
增量更新传输
- 安全设计
- JWT身份验证
- 敏感数据加密存储(AES-256)
- 请求速率限制
- SQL注入防护
- 性能优化
- Redis缓存:
用户任务列表缓存
分类元数据缓存 - 数据库读写分离
- 异步任务队列(Celery)
6.扩展性设计
- 支持插件式分类算法
- 可配置的提醒规则
- Webhook第三方集成接口
四、Alpha任务分配计划 - 20分
- 人员分工矩阵
| 角色 | 人员代号 | 主要职责 |
|---|---|---|
| PM | PM1(黄娟英) | 需求管理、进度跟踪、资源协调 |
| 前端 | FE1(黄熙儿)/FE2(杨子俊) | 实现前端界面与接口联调 |
| 后端 | BE1(袁卓妍)/BE2(吴其锦) | 接口开发、数据库设计、系统集成 |
| 智能分类 | IC1(黄娟英) | 智能分类算法开发与优化 |
| 提醒推送 | RP1(钟鸣) | 邮件/短信提醒功能开发与测试 |
| 测试 | QA1(夏钦涛) | 用例编写、测试执行、缺陷管理 |
- 里程碑计划
gantt
dateFormat YYYY-MM-DD
section 核心功能
任务管理模块 :active, 2025-04-15, 7d
任务分类模块 :crit, 2025-04-22, 8d
日程提醒模块 :2025-04-30, 6d
数据同步模块 :2025-05-06, 5d
section 质量保障
接口联调 :crit, 2025-05-03, 5d
系统测试 :2025-05-08, 7d
- 详细任务分配(按周拆分)
第1周(04.15 - 04.21)基础框架搭建
| 任务 | 负责人 | 交付物 | 关键依赖 |
|---|---|---|---|
| 需求确认与接口定义 | PM1 + 全体 | 接口文档v1.0 | 需04/17前冻结核心接口 |
| Web端基础框架搭建 | FE1 | 可交互的Web端基础页面框架 | 等待接口文档 |
| 桌面端基础框架搭建 | FE2 | 可运行的桌面端基础框架 | 需要服务器资源 |
| 数据库设计与建表 | BE1 | 初始化SQL脚本 | PM确认字段定义 |
| 测试环境搭建 | QA1 | 测试用例模板 | 需要服务器资源 |
第2周(04.22 - 04.28)核心功能开发
| 任务 | 负责人 | 交付物 | 关键依赖 |
|---|---|---|---|
| 任务创建功能 | BE1 + FE1 | 可成功创建任务并保存到数据库的完整流程 | 需调用数据库接口 |
| 任务修改功能 | BE1 + FE1 | 支持修改任务各项信息及状态的功能 | 需要前端页面提供修改入口 |
| 任务删除功能(单/批量) | BE1 + FE2 | 可实现单个和批量删除任务的功能 | 需前端提供操作触发 |
| 自动分类功能 | IC1 | 可根据关键字自动分类任务的算法 | 需要任务描述数据 |
| 手动分类功能 | FE2 | 可手动调整分类及添加自定义标签的界面 | 需要BE1提供数据接口 |
第3周(04.29 - 05.05)功能完善与优化
| 任务 | 负责人 | 交付物 | 关键依赖 |
|---|---|---|---|
| 日程提醒逻辑开发 | RP1 | 可根据任务截止时间发送邮件/短信提醒的逻辑 | 需联调邮件/短信服务 |
| 数据同步机制开发 | BE2 | 实现Web和桌面端数据实时同步的功能 | 需要前后端配合测试 |
| 智能分类优化 | IC1 | 提高智能分类准确率的优化算法 | 需要大量测试数据反馈 |
| 前端界面优化 | FE1/FE2 | 更美观易用的前端界面设计 | 等待各功能接口稳定 |
| 压力测试方案 | QA1 | 核心接口压测报告 | 需要部署预发布环境 |
第4周(05.06 - 05.12)联调测试与收尾
| 任务 | 负责人 | 交付物 | 关键依赖 |
|---|---|---|---|
| 端到端测试 | QA1 + FE + BE | 完整的ToDoList系统功能验证 | 需要所有接口就绪 |
| 安全审计 | BE1 | 敏感数据加密验证报告 | 需PM协调第三方扫描 |
| 部署上线 | BE2 | 生产环境部署包 | 需要运维手册 |
| 用户培训材料 | PM1 | 用户使用手册及培训PPT | 需要核心功能截图 |
每日执行节奏
- 09:00 - 09:15 每日站会(全员)→ 同步进度/阻塞问题
- 10:00 - 12:00 编码时间(开发)
- 14:00 - 15:00 接口联调(FE + BE结对)
- 16:00 - 17:00 测试用例评审(QA主导)
- 19:00前 提交当日代码(强制要求)
风险应对方案
- 接口延迟风险
- 采取“接口先行”策略,BE提前1天提供Mock数据
- FE使用EasyMock工具模拟接口
- 邮件/短信服务故障
- 准备备用提醒方式,如系统内弹窗提醒(隐藏功能)
- 及时联系邮件/短信服务提供商解决问题
- 性能瓶颈
- 对数据同步接口做优化(BE2负责)
- 启用缓存机制提高常用数据读取速度(BE1实施)
五、测试计划 - 10分
1.引言
- 项目背景
本系统旨在为用户提供智能化的任务管理服务,支持任务创建、分类、提醒及多端数据同步功能,目标用户为学生、开发者和团队,通过情感化设计和AI推荐提升用户体验。 - 测试术语
黑盒测试:基于功能需求验证输入输出是否符合预期。
压力测试:模拟高并发场景检验系统稳定性。
同步延迟:数据在多端同步所需的时间阈值(目标≤2秒)。
2. 任务概述
- 测试范围
功能测试:任务管理(增删改查)、自动分类、提醒推送、跨端同步。
兼容性测试:Chrome/Edge浏览器;Windows 10/11桌面端。
性能测试:500并发任务处理、同步延迟≤2秒、提醒准时率100%。
安全性测试:用户数据加密存储、权限控制(仅所有者可修改任务)。 - 测试目标
确保核心功能符合需求,无阻塞性缺陷。
验证多端数据一致性及同步稳定性。
达到用户量基础目标(500人)下的系统可用性。
3. 测试策略
(1) 测试人员需求与分工
| 角色 | 人员 | 职责 |
|---|---|---|
| 前端测试工程师 | 黄熙儿、杨子俊 | 负责 Vue.js 前端功能测试、组件单元测试、跨浏览器兼容性测试。 |
| 后端测试工程师 | 夏钦涛、吴其锦 | 负责 Spring Boot 接口测试、数据库操作验证、性能压测。 |
| 自动化测试工程师 | 黄娟英 | 使用 Selenium/Cypress 实现端到端自动化测试,集成 CI/CD 流程。 |
| 系统测试工程师 | 钟鸣、袁卓妍 | 负责多端同步测试、提醒推送验证、用户权限管理测试。 |
(2) 测试方法
| 测试类型 | 方法/工具 | 说明 |
|---|---|---|
| 前端功能测试 | 手动测试 + Vue Test Utils | 验证 Vue 组件渲染逻辑、用户交互(如任务增删改查)、表单校验。 |
| 后端单元测试 | JUnit 5 + Mockito | 测试 Spring Boot 业务逻辑(如分类算法、提醒调度)、DAO 层数据操作。 |
| 接口测试 | RestAssured + Postman | 验证 RESTful API 的请求响应、状态码、数据一致性。 |
| 自动化测试 | Cypress + Selenium | 模拟用户端到端操作(如登录-创建任务-同步-提醒),覆盖核心业务流程。 |
| 性能测试 | JMeter + Gatling | 模拟高并发用户操作(如 100 用户同时添加任务),测试 API 吞吐量。 |
| 安全测试 | OWASP ZAP + Spring Security 测试 | 检查 XSS、CSRF 漏洞,验证用户权限控制(如 JWT 鉴权)。 |
(3) 工具引用及测试培训
- 工具引用:
- 后端测试:JUnit 5(单元测试)、RestAssured(接口测试)、H2 内存数据库(隔离测试环境)。
- 前端测试:Cypress(端到端测试)、Jest(单元测试)。
(4) 测试阶段计划
| 阶段 | 工作内容 | 人员安排 |
|---|---|---|
| 单元测试 | - Vue 组件单测(任务列表渲染、表单提交) - Spring Boot 业务逻辑单测(分类算法、提醒触发) | 黄熙儿、夏钦涛 |
| 集成测试 | - 前后端接口联调(任务创建与同步) - Spring Boot 与 MySQL 集成测试 | 杨子俊、袁卓妍 |
| 系统测试 | - 端到端业务流程测试(登录-任务管理-提醒推送) - 性能压测(500 并发用户) | 吴其锦、钟鸣 |
| 验收测试 | - 用户试用反馈收集(500 人基础目标) - 修复关键缺陷并复测 | 全员参与 |
(5) 测试停止及恢复条件
- 停止条件:
后端核心接口(如任务同步)返回 500 错误或响应时间 > 5 秒。
前端 Vue 路由守卫失效(如未登录用户可访问任务列表)。 - 恢复条件:
修复 Spring Boot 接口逻辑并验证通过。
重新执行关联的端到端测试用例。
(6) 测试文档及缺陷管理
- 测试文档:
测试用例:使用 TestRail 管理,按模块分类(用户管理、任务管理、同步服务)。
测试报告:通过 Allure 生成可视化报告(集成 JUnit 和 RestAssured)。 - 缺陷管理:
工具:JIRA(标记为 前端/后端-Java/同步/安全)。
流程:测试人员提交缺陷 → 开发修复 → 测试验证 → 关闭。
(7) 测试环境
| 环境类型 | 配置 |
|---|---|
| 前端环境 | - Node.js v16+、Vue CLI 5.x、Chrome 100+ - 桌面端:Windows 10 + .NET 6 |
| 后端环境 | - Java 17、Spring Boot 3.x、MySQL 8.0 - 服务器:Tomcat 10 + Docker 容器化部署 |
4.测试资源
(1) 硬件资源需求
测试服务器:AWS EC2 实例(4核 CPU/8GB RAM/50GB SSD)。
客户端设备:
Web 端:3 台 Windows PC、2 台 MacBook。
桌面端:2 台 Windows 10/11 物理机。
(2) 软件资源需求
后端:IntelliJ IDEA(开发工具)、JMeter 5.5、Postman。
前端:VSCode + Vue Devtools、Cypress 12.0+。
(3) 测试环境需求
数据库:测试使用 H2 内存数据库(单元测试)与 MySQL 8.0(集成测试)。
网络环境:使用 Charles Proxy 模拟高延迟、断网场景。
(4) 测试人员需求
专职测试人员:4 人(2 前端测试、2 后端测试)。
开发支持:2 人(协助调试复杂场景)。
(5) 其他资源
测试数据生成:使用 Java Faker 库生成模拟任务数据。
5. 风险评估
| 风险类型 | 描述 | 应对措施 |
|---|---|---|
| 技术风险 | Spring Boot 依赖冲突导致启动失败 | 统一管理 Maven 依赖版本,每日构建验证。 |
| 协作风险 | 前后端接口定义变更未及时同步 | 使用 Swagger 维护实时 API 文档,每日晨会确认接口状态。 |
| 环境风险 | Docker 容器化部署与物理机环境差异 | 在物理机和容器环境并行测试关键功能。 |
| 人力风险 | Java 测试工程师对 Spring Boot 不熟悉 | 安排结对编程,由开发人员(袁卓妍)指导测试代码编写。 |
| 安全风险 | JWT 令牌泄露导致越权访问 | 使用 OWASP ZAP 扫描接口,增加 Token 有效期和刷新机制测试。 |
6. 补充说明
(1) 后端技术适配:
Spring Boot 的单元测试需覆盖 Service 层逻辑和 Controller 层接口。
使用 Testcontainers 验证 MySQL 集成操作的真实性。
(2) 持续集成:
Jenkins 流水线集成 Maven 构建、JUnit 测试、Allure 报告生成。
(3) 监控与日志:
测试环境集成 ELK(Elasticsearch + Logstash + Kibana)追踪接口调用日志。

浙公网安备 33010602011771号