团队作业3--需求改进&系统设计
团队作业3--需求改进&系统设计
| 这个作业属于哪个课程 | 软件工程 | 
|---|---|
| 这个作业要求在哪里 | 作业要求 | 
| 这个作业的目标 | 需求改进和系统设计 | 
一、需求改进
(一)课堂讨论问题及修改
- 问题1:如何对接学校系统进行获取数据
修改1:使用API接口,通过学校提供的RESTful API或SOAP服务获取实时数据(如学生信息、课程表、成绩)。 - 问题2:如何针对核心用户进行增删功能
修改2:核心用户为学生,针对学生开发
1.备忘录(考试或代办);
2.课表换背景;
3.在课表请假;
4.当堂课评价;
5.查课表点外卖;
6.每次点击弹出人文关怀鸡汤。 
(二)需求规格说明书改进
- 原初稿不足:
- 
风险分析(如开发进度延迟、技术复杂度风险)
 - 
附录:
- 术语表(如SSM、MVP)
 - 接口文档链接(与学校API的对接样例)
 
 - 
验收标准(如系统响应时间<1秒为及格指标)
 
 - 
 
(四)功能分析四个象限
| 实现难度低 | 实现难度高 | |
|---|---|---|
| 用户价值高 | 第二象限:选课冲突检测 | 第一象限:成绩查询、课程表 | 
| 用户价值低 | 第四象限:IoT监控 | 第三象限:移动端适配 | 
(五)调整任务分解WBS及项目进度计划
调整后的WBS(工作分解结构)
| 任务层级 | 任务名称 | 负责人 | 交付物 | 优先级 | 
|---|---|---|---|---|
| 1. 项目启动 | ||||
| 1.1 | 需求澄清会议(用户访谈) | 项目经理 | 用户需求清单(签字确认版) | ★★★★★ | 
| 2. 核心功能开发 | ||||
| 2.1 | 学生模块功能 | |||
| 2.1.1 | 学生成绩查询功能(支持按学期筛选) | 前端开发 | 接口文档+可交互页面 | ★★★★★ | 
| 2.1.2 | 课程表展示与订阅提醒 | 日历组件+邮件/短信通知服务 | ★★★★★ | |
| 2.2 | 教师模块功能 | |||
| 2.2.1 | 成绩录入模板校验与分批次保存 | 后端开发 | Excel解析接口+校验规则文档 | ★★★★★ | 
| 2.3 | 教务模块功能 | |||
| 2.3.1 | 选课冲突检测基础版(时间/教室) | 后端开发 | 冲突检测API(支持1000并发) | ★★★★ | 
| 3.支撑功能开发 | ||||
| 3.1 | 权限系统(RBAC模型设计) | 权限流程图+数据库表设计 | ★★★★ | |
| 3.2 | 数据对接(学校LDAP同步) | 后端开发 | 单点登录接口+定时同步脚本 | ★★★ | 
| 4. 测试与交付 | ||||
| 4.1 | 压力测试(选课模块高并发验证) | 测试 | JMeter测试报告+SQL慢查询优化方案 | ★★★ | 
项目进度计划(示例周次)
| 周次/阶段 | 核心任务 | 关键产出物 | 依赖关系 | 
|---|---|---|---|
| 第6周 | 需求分析定稿 | 需求规格说明书V2.0 | 无 | 
| 第7-8周 | 原型设计+技术验证 | 高保真原型(Figma) | 需求确认后启动 | 
| Spring Security权限模块开发 | RBAC权限表结构设计 | 需完成权限设计评审 | |
| 第9周 | Alpha冲刺阶段启动 | 每日Scrum会议记录 | 原型评审通过 | 
| 学生成绩查询功能联调 | 学生端功能演示 | 依赖后端接口完成 | |
| 第10周 | 选课冲突检测(第一版) | 冲突检测逻辑白皮书+测试用例 | 依赖教室/课程数据准备 | 
| 第11周 | 用户测试+反馈迭代 | 测试报告(10个核心场景通过率≥95%) | Beta版发布前必须完成 | 
| 第12周 | 风险应对(预留缓冲时间) | 风险处理报告(如学校API延迟应对方案) | 根据实际风险触发 | 
二、系统设计(架构设计)
基于高并发、可扩展性需求,采用前后端分离 + 分布式微服务架构,以下为关键技术选型与模块划分:
1. 架构分层与技术栈
系统架构技术方案
| 层级 | 技术方案 | 说明 | 
|---|---|---|
| 前端 | Vue3 + Vite + Element-Plus + Axios | - 响应式界面 - 动态路由 + 权限指令控制  | 
| 网关层 | Spring Cloud Gateway + JWT | - 统一鉴权、限流 - 路由分发( /api/user → 用户微服务) | 
| 微服务层 | Spring Boot 3.x + Nacos(注册中心) | - 核心服务:用户服务、课程服务、选课服务、成绩服务 - 使用 OpenFeign 实现服务间通信  | 
| 数据库层 | MySQL 8.0(主从复制) + Redis 7.0 | - 读写分离 - Redis 缓存选课库存、分布式锁  | 
| 安全权限 | Spring Security + RBAC 模型 | - 接口级权限控制(@PreAuthorize)- 数据权限隔离(教师仅能访问任课班级)  | 
| 监控运维 | Prometheus + Grafana + SkyWalking | - 接口性能监控 - SQL 慢查询报警  | 
2. 服务拆分与通信设计
- 
前端
- 技术栈: Vue SPA
 - 通信方式: 调用网关接口
 
 - 
网关层
- 组件: Spring Cloud Gateway (端口 8080)
 - 依赖服务发现: Nacos
 
 - 
微服务层
- 用户服务 (端口 8001)
- 核心功能: 登录/注册、权限管理
 
 - 课程服务 (端口 8002)
- 核心功能: 课程增删改查、教室时间分配
 
 - 选课服务 (端口 8003)
- 核心功能: 选课冲突检测、选课队列处理
 
 
 - 用户服务 (端口 8001)
 - 
公共依赖
- JWT 工具类、异常处理封装
 
 
3.数据库分析
采用符合第三范式的设计,确保数据一致性,同时针对性优化高频查询。
(1). 核心表结构
用户与权限相关
点击查看代码
-- 用户表(所有角色基础信息)
CREATE TABLE `user` (
  `user_id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
  `username` VARCHAR(50) UNIQUE NOT NULL COMMENT '学号/工号',
  `password` VARCHAR(100) NOT NULL COMMENT 'BCrypt加密密码',
  `real_name` VARCHAR(20) NOT NULL COMMENT '真实姓名',
  `role_id` INT NOT NULL COMMENT '关联角色表',
  INDEX `idx_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 角色表(RBAC模型)
CREATE TABLE `role` (
  `role_id` INT PRIMARY KEY AUTO_INCREMENT,
  `role_name` VARCHAR(20) NOT NULL COMMENT '学生/教师/教务'
);
-- 权限表(细粒度控制)
CREATE TABLE `permission` (
  `perm_id` INT PRIMARY KEY AUTO_INCREMENT,
  `perm_code` VARCHAR(50) NOT NULL COMMENT '如 course:add'
);
课程与选课相关
点击查看代码
-- 课程信息表
CREATE TABLE `course` (
  `course_id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  `course_code` VARCHAR(20) UNIQUE NOT NULL COMMENT '课程编号',
  `course_name` VARCHAR(100) NOT NULL,
  `credit` TINYINT NOT NULL COMMENT '学分',
  `max_students` INT NOT NULL COMMENT '最大选课人数'
);
-- 课程安排表(上课时间地点)
CREATE TABLE `course_schedule` (
  `schedule_id` BIGINT PRIMARY KEY,
  `course_id` BIGINT NOT NULL,
  `teacher_id` BIGINT NOT NULL COMMENT '任课教师',
  `semester` VARCHAR(10) NOT NULL COMMENT '如2024-SPRING',
  `week` TINYINT NOT NULL COMMENT '周次 (1-16)',
  `time_slot` VARCHAR(20) NOT NULL COMMENT '时间枚举:MON-MORNING2',
  `classroom` VARCHAR(50) NOT NULL,
  FOREIGN KEY (`course_id`) REFERENCES `course`(`course_id`),
  FOREIGN KEY (`teacher_id`) REFERENCES `user`(`user_id`),
  INDEX `idx_time` (`semester`, `week`, `time_slot`)  -- 加速冲突检测
);
-- 学生选课表
CREATE TABLE `student_course` (
  `sc_id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  `student_id` BIGINT NOT NULL,
  `schedule_id` BIGINT NOT NULL,
  `status` TINYINT DEFAULT 0 COMMENT '0-待确认 1-成功 2-已退选',
  `select_time` DATETIME NOT NULL,
  FOREIGN KEY (`student_id`) REFERENCES `user`(`user_id`),
  FOREIGN KEY (`schedule_id`) REFERENCES `course_schedule`(`schedule_id`),
  UNIQUE KEY `uk_student_schedule` (`student_id`, `schedule_id`)  -- 防止重复选课
);
成绩管理相关
点击查看代码
-- 学生成绩表
CREATE TABLE `student_score` (
  `score_id` BIGINT PRIMARY KEY AUTO_INCREMENT,
  `student_id` BIGINT NOT NULL,
  `course_id` BIGINT NOT NULL,
  `exam_type` VARCHAR(20) COMMENT '期中/期末/平时',
  `score` DECIMAL(5,2) CHECK (`score` BETWEEN 0 AND 100),
  `teacher_id` BIGINT NOT NULL COMMENT '录入教师',
  FOREIGN KEY (`student_id`) REFERENCES `user`(`user_id`),
  FOREIGN KEY (`course_id`) REFERENCES `course`(`course_id`)
);
三、Alpha任务分配计划
召开迭代计划会议,为下周进入Sprint做准备,具体内容如下:
1. 迭代计划会议准备
会议目标:基于当前团队资源(7人,总开发时间约240小时/周),从Product Backlog中筛选高优先级任务,拆分为可执行单元。
关键输入:
- 需求优先级排序结果(核心功能:学生成绩查询、教师成绩录入、选课冲突检测)
 - 技术风险清单(如Redis未部署可能影响选课性能)
 
2. Sprint Backlog生成(示例分解)
总原则:任务粒度控制在1人天内(约6-8小时),明确输出物与验收标准。
| 功能模块 | 分解任务 | 预计耗时 | 负责人 | 依赖关系 | 验收标准 | 
|---|---|---|---|---|---|
| 学生成绩查询 | 1. 后端:MyBatis多表查询接口开发(学生-课程-成绩) | 6h | 后端开发 | 需先完成数据库设计评审 | 接口返回符合Swagger定义,支持分页 | 
| 2. 前端:Element-Table动态渲染成绩表格 | 5h | 前端开发 | 依赖接口完成 | 表格支持按学期筛选,加载时间<1s | |
| 教师成绩录入 | 1. 后端:Excel导入工具类开发(POI + 校验规则) | 8h | 后端开发 | 需确定模板格式 | 解析1000行数据耗时<2s,错误提示定位准确 | 
| 2. 前端:上传组件+错误展示弹窗 | 4h | 前端开发 | 依赖工具类完成 | 用户可下载错误报告,支持断点续传 | |
| 选课冲突检测 | 1. 算法:时间冲突检测核心逻辑(基于课程Schedule) | 10h | 需获取教室时间数据 | 检测准确率100%,响应时间<50ms(压测) | |
| 2. Redis:库存扣减原子操作实现 | 6h | 后端开发 | 需完成Redis环境配置 | 并发测试无超卖,日志可追溯 | |
| 系统支撑 | 1. 权限系统:JWT令牌签发与校验 | 6h | 无 | 支持角色鉴定,Token过期自动刷新 | |
| 2. 日志监控:ELK日志收集配置 | 4h | 需服务器权限 | 可在Kibana中按模块检索错误日志 | 
3. 迭代冲刺甘特图(Alpha阶段)
时间范围:第6周至第9周(共4个Sprint,每周迭代)
关键里程碑:
- Sprint 1结束:完成基础框架搭建(6月10日)
 - Sprint 3结束:核心功能联调(6月24日)
![]()
 
                    
                

                
            
        
浙公网安备 33010602011771号