团队作业3--需求改进&系统设计
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/CSGrade22-12 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/CSGrade22-12/homework/13220 |
这个作业的目标 | 需求&原型改进、系统设计、Alpha任务分配计划、测试计划 |
队员 | 学号 |
王展锐 | 3122004665 |
李卓荣 | 3122004440 |
吴健民 | 3122004667 |
达仁·江布尔 | 3122004420 |
林诗淇 | 3122004657 |
一、需求&原型改进
1.针对课堂讨论环节老师和其他组的问题及建议,对修改选题及需求进行修改
1.1问题与修改
- 问题:在课堂讨论中,老师和其他组提出系统的用户界面不够简洁直观,可能会影响用户体验。
- 修改:组织团队成员对用户界面进行重新设计,采用简洁明了的布局和清晰的图标,提高用户操作的便捷性。同时,增加一些操作提示和引导,帮助用户更快地熟悉系统功能。
1.2给目标用户展现原型,与目标用户进一步沟通理解需求。他们的痛是什么?场景是什么?(用产品之前/之后,有照片或视频显示用户调查的过程,使用了各种调查手段的)
用户痛点:
- 教师方面:在使用产品之前,教师管理学生信息、成绩和课程内容较为繁琐,需要手动录入和整理大量数据,容易出现错误。使用产品之后,教师可以通过系统方便地进行学生信息管理和成绩录入,提高了教学管理效率。
- 学生方面:在使用产品之前,学生查看成绩、课程信息和个人资料需要分别登录不同的系统或查询纸质记录,非常不方便。使用产品之后,学生可以在一个平台上轻松查看自己的学习情况,及时了解课程安排和成绩变化。
用户场景: - 教师场景:教师在办公室准备课程时,使用系统创建和更新课程信息,录入学生成绩,并查看学生的学习情况。在课堂上,教师可以通过系统快速了解学生的出勤情况和作业完成情况,以便更好地进行教学管理。
- 学生场景:学生在宿舍或图书馆使用系统查看自己的课程安排和成绩,了解自己的学习进度。在选课期间,学生可以通过系统查看课程评价和教师信息,选择适合自己的课程。
2.修改完善上周提交的需求规格说明书
2.1上周的《需求规格说明书》初稿有哪些不足?特别是:功能考虑不全或需求文档描述缺少的地方
不足之处:
- 初稿中对系统的安全性考虑不足,没有明确说明如何保护用户数据的安全。
- 对系统的性能要求描述不够详细,没有给出系统的响应时间和并发用户数等指标。
- 功能描述部分不够具体,例如学生信息管理功能中,没有明确说明学生可以修改哪些个人信息。
具体改进内容(功能性需求):
- 安全性需求:增加用户身份验证和授权机制,确保只有合法用户可以访问系统。对用户数据进行加密存储,防止数据泄露。
- 性能需求:明确系统的响应时间不得超过 3 秒,并发用户数不少于 100 人。
- 功能描述细化:在学生信息管理功能中,明确学生可以修改自己的联系方式、密码等个人信息,但不能修改成绩等敏感信息。
2.2用一个场景,像讲故事那样,描述用户怎么使用几个相联系的功能,解决了用户的问题
场景故事:小明是一名大学生,他在新学期开始时需要选择课程。他登录教育系统,首先查看了课程安排,了解了各个课程的时间、地点和授课教师。然后,他查看了课程评价,了解了其他同学对这些课程的评价和建议。根据这些信息,小明选择了自己感兴趣的课程。在课程学习过程中,小明可以通过系统查看自己的成绩和作业情况,及时了解自己的学习进度。如果他有问题,可以通过系统向教师提问,教师会及时回复他的问题。通过使用教育系统,小明轻松地完成了课程选择和学习,提高了自己的学习效率。
3.参考《构建之法》5 节功能的定位和优先级,给出功能分析的四个象限 - 功能分析四个象限如下:
- 重要且紧急:用户管理、学生信息管理、课程管理等核心功能,这些功能直接影响系统的可用性和用户体验,必须优先实现。
- 重要不紧急:系统的安全性、性能优化等功能,这些功能虽然重要,但可以在系统上线后逐步完善。
- 紧急不重要:一些临时的需求或问题,需要及时处理,但不会对系统的整体功能产生重大影响。
- 不紧急不重要:一些可有可无的功能或优化,可以在有时间和资源的情况下进行考虑。
4.根据修改后的需求,调整任务分解 WBS 及相应的项目进度计划 - 任务分解 WBS:
- 需求分析与设计:包括用户需求调研、功能设计、数据库设计等任务。 - 开发与测试:包括前端开发、后端开发、数据库开发、功能测试、性能测试等任务。
- 部署与维护:包括系统部署、用户培训、系统维护等任务。
- 项目进度计划:
二、系统设计
1. 系统架构设计
- 各层次功能设计
1.1前端层(表示层)
技术:使用 Vue.js 和 Vue Router 实现动态、响应式的单页应用(SPA)。
功能:
-用户界面:提供教师和学生不同角色的用户界面。
-路由管理:根据用户角色显示不同的页面,利用 Vue Router 管理前端路由。
-状态管理:可以采用 Vuex 进行前端状态管理,以方便在不同页面间共享数据。
与后端交互:通过 Axios 等 HTTP 库调用后端 RESTful API,与服务层进行数据交互。
1.2服务层(后端业务逻辑层)
技术:使用 Spring Boot 框架实现。
功能:
-RESTful API 提供:对外暴露 RESTful API,供前端调用,实现前后端分离。
-业务逻辑处理: - 用户管理模块:包括用户的注册、登录、权限管理。通过基于角色的访问控制 (RBAC) 进行权限分配。
- 成绩管理模块:教师管理学生成绩的 CRUD 操作,学生查看自己的成绩。
- 学生信息管理模块:教师管理学生基本信息,学生查看个人信息。
- 课程管理模块:教师管理课程信息,学生查看课程安排。
-安全管理:包含认证(JWT 或 OAuth2)、授权、数据加密等措施,保护用户数据。
-异常处理:统一处理后端服务层的异常,确保系统稳定性和容错性。
1.3数据访问层
技术:Mybatis-Plus 用于简化数据库访问。
功能:
-数据持久化:与数据库层交互,负责对数据库的 CRUD 操作。
-数据访问对象(DAO):封装数据访问逻辑,提供统一的接口与服务层交互。
-数据查询优化:针对成绩、用户信息等较复杂的数据查询,可以使用缓存(如 Redis)提高查询速度,减轻数据库压力。
1.4数据库层
技术:使用关系型数据库 MySQL
功能:
-数据存储:存储用户信息、成绩、课程数据等。
-数据库设计:根据需求进行数据库表设计,例如用户表、课程表、成绩表。
-数据一致性管理:设置外键约束,防止数据不一致情况发生。
1.5系统交互流程 - 用户登录:前端发送登录请求至后端服务层,服务层验证用户信息并返回 JWT Token,前端存储 Token。
- 数据访问:前端通过携带 Token 访问 RESTful API,服务层验证 Token 并根据用户角色提供相应的数据。
- 成绩和课程管理:教师用户可以发送 CRUD 请求,服务层处理后更新数据库。
- 学生查看数据:学生用户请求查看成绩、课程信息,服务层根据学生身份返回对应数据。
1.6部署与扩展 - 分布式部署:可以将前端与后端分开部署,前端托管于 CDN,后端服务托管于云服务器。
- 服务扩展:未来若需增加其他模块,可根据业务功能划分微服务,实现横向扩展。
2.数据库
2.1数据库表概览
数据库主要包含以下几张表:
- 用户表(Users)
- 角色表(Roles)
- 用户-角色关系表(UserRoles)
- 学生信息表(StudentInfo)
- 课程表(Courses)
- 成绩表(Grades)
2.2各表设计
- 用户表(Users)
存储系统中的用户基本信息,包括教师和学生用户。 - 角色表(Roles)
存储用户的角色信息,用于区分教师和学生的不同权限。 - 用户-角色关系表(UserRoles)
用于存储用户和角色的多对多关系(可选,若设计用户可以拥有多个角色)。 - 学生信息表(StudentInfo)
存储学生的详细个人信息,由教师用户管理。 - 课程表(Courses)
存储课程的基本信息。 - 成绩表(Grades)
存储学生的成绩信息,由教师录入。
2.3关系设计
用户与角色:用户表与角色表之间是多对多关系,可通过 UserRoles 中间表实现(如果允许用户有多个角色)。
学生与课程:通过 StudentInfo 和 Courses 表的关系,学生可以参加多门课程,一门课程也可以有多个学生,因此 Grades 表记录了学生与课程的多对多关系以及对应的成绩。
教师与课程:Courses 表的 teacher_id 字段建立了课程与教师之间的一对多关系,一个教师可以管理多门课程。
2.4索引设计与优化
主键索引:每张表的主键字段默认会建立主键索引。
外键索引:在外键字段上建立索引,以加速查询和外键关联。
联合索引:在 Grades 表中创建联合索引,以提高成绩查询效率。
三、Alpha任务分配计划
1. 根据项目组能提供的总时间,评估可完成的工作量。根据功能模块的优先级以及模块之间的依赖关系,从Product Backlog中选取待实现的功能项。选择与Alpha阶段目标紧密相关的功能项,确保所选功能项可以支持项目目标,并满足用户需求
1.1 项目组能提供的总时间
项目周期为7周,具体时间为第九周至第十五周。
1.2 功能模块的优先级
功能编号 | 功能描述 | 优先级 |
---|---|---|
1 | 前端技术(Vue.js、Vue Router) | 5 |
2 | 后端技术(Java、Spring Boot) | 5 |
3 | 数据库(MySQL、PostgreSQL) | 5 |
4 | API设计(RESTful API) | 5 |
5 | 用户管理 | 5 |
6 | 成绩管理 | 5 |
7 | 学生信息管理 | 5 |
8 | 课程管理 | 5 |
9 | 开发工具(Maven、Git) | 4 |
1.3 模块之间的依赖关系
- 前端技术提供动态和响应式的用户界面和实现前端路由管理
- 后端技术开发后端服务和提高开发效率
- 使用API设计进行前后端数据交互
- 用户管理、成绩管理、学生信息管理、课程管理依赖于数据库存储信息
- 使用开发工具进行项目管理和版本控制
1.4 选定功能项
- 用户管理、成绩管理、学生信息管理、课程管理
- 前端和后端技术
- 数据库和API设计
- 开发工具
2 对已选择的功能项进行进一步分解,分解为1-10小时左右的具体任务,确保每个任务都是具体的、可度量的、可实现的、相关的、时限的(SMART原则)。将分解后的任务构成Sprint Backlog。成员进行任务认领,确保任务分配平衡,避免个别成员工作量过大
Sprint Backlog
- 前端技术和后端技术
-预计时间:8+
-包括代码的撰写、加载、训练和预测功能的实现
-负责人员:李卓荣、林诗琪 - 数据库、API设计
-预计时间:8+
-对于先前的代码进行进一步的完善和补充,测试环境的优化
-负责人员:李卓荣、林诗琪 - 项目经理
-预计时间:7+
-对于整个项目开发以及跟进步骤
-负责人员:王展锐 - 测试
-预计时间:7+
-数据的检录和项目运行后收集数据的分析、测试
-负责人员:达仁·江布尔 吴健民
3.拟定迭代冲刺计划
使用甘特图的方式拟定迭代冲刺计划,明确每个任务的开始和结束时间,以及依赖关系。(本次迭代计划只关注Alpha阶段)使用leangoo作为敏捷项目协作工具,跟踪任务进度和团队协作。
Sprint计划示例(甘特图)
任务ID | 任务描述 | 开始时间 | 结束时间 | 负责人 |
---|---|---|---|---|
1 | 开发 | 第11周 | 第13周 | 李卓荣 |
2 | PM | 第11周 | 第16周 | 王展锐 |
3 | 开发 | 第13周 | 第15周 | 林诗琪 |
4 | 测试 | 第13周 | 第16周 | 达仁·江布尔 |
5 | 测试 | 第13周 | 第16周 | 吴健民 |
四、测试计划
1. 主要产品
本次测试的主要产品为面向教师和学生的教育管理系统,旨在提高教学管理效率,满足教师和学生在教学管理过程中的需求。
2. 测试范围
- 功能测试:对系统的各项功能进行测试,包括用户管理、学生信息管理、课程管理、自动刷新课表功能以及优化后的 UI 交互等。
- 性能测试:测试系统的响应时间、并发用户数、数据处理能力等性能指标。
- 安全测试:检测系统的用户身份验证、授权机制、数据加密等安全措施是否有效。
- 兼容性测试:测试系统在不同操作系统、浏览器和设备上的兼容性。
3. 测试时间表
3.1 测试准备阶段
时间:第十周至第十一周
任务:
- 制定详细的测试计划,明确测试范围、测试方法和测试用例。
- 搭建测试环境,准备测试数据。
- 对测试人员进行培训,使其熟悉测试流程和测试工具。
3.2 测试执行阶段
时间:第十二周至第十四周
任务:
- 按照测试计划执行功能测试、性能测试、安全测试和兼容性测试。
- 记录测试过程中发现的问题,及时反馈给开发团队进行修复。
- 对修复后的问题进行回归测试,确保问题得到彻底解决。
3.3 测试总结阶段
时间:第十五周
任务:
- 对测试结果进行分析和总结,编写测试报告。
- 评估系统的质量和稳定性,提出改进建议。
- 整理测试文档,为系统上线做好准备。
4. 资源分配
人力资源:
- 测试经理:李卓荣,负责测试计划的制定、测试过程的管理和测试结果的分析。
- 测试工程师:吴健民,达仁,负责具体的测试执行工作,包括功能测试、性能测试、安全测试和兼容性测试。
设备资源: - 测试服务器:1 台,用于搭建测试环境。
- 测试设备:若干台,包括不同操作系统的电脑、手机和平板等,用于进行兼容性测试。
- 时间资源:按照测试时间表合理分配测试时间,确保测试工作按时完成。