团队作业3--需求改进&系统设计
这个作业属于哪个课程 | 软件工程 |
---|---|
这个作业要求在哪里 | 作业要求 |
Github地址 | https://github.com/fjc663/cstery-lms/issues |
这个作业的目标 | 对课堂管理系统进行需求改进与系统设计 |
一.团队简介
队名:雄狮般的男人
姓名 | 学号 |
---|---|
周晨佳 | 3122004631 |
范健成 | 3122004475 |
李超 | 3122004484 |
郭梓佳 | 3122004945 |
林丙昆 | 3122004487 |
陈卓嘉 | 3122004473 |
李炫杰 | 3122004953 |
二.需求&原型改进
1.需求修改:
问题1:系统如何支持大规模用户并发访问?
修改1:系统将通过以下措施支持大规模用户并发访问:
可扩展架构:采用微服务架构,使得系统能够根据用户量动态扩展服务资源,应对不同规模的用户访问需求。
性能优化:对系统进行性能优化,包括数据库查询优化、缓存策略等,以提高系统的响应速度和处理能力。
问题2:系统如何帮助教师进行教学质量评估?
修改2:系统将提供教学质量评估工具,包括:
数据分析:收集学生的学习数据,如作业完成情况、成绩变化等,进行统计分析,帮助教师了解教学效果。
反馈机制:建立学生和家长的反馈渠道,收集他们对教学的意见和建议,为教师提供改进教学的参考。
加分部分:
展现原型:通过快速原型工具,向用户展示系统界面和核心功能,如作业提交、成绩查看等。
沟通需求:通过访谈和问卷,收集用户对系统的具体需求和期望。
用户痛点:
教师:作业批改繁琐、成绩管理耗时、难以跟踪学生进度。
学生:作业反馈不及时、成绩查询不便、缺乏互动和资源获取。
使用场景:
使用前:教师手动记录成绩,学生在多个平台寻找资料。
使用后:教师一键发布作业和成绩,学生一站式完成作业和成绩查询。
2.修改完善需求规格说明书:
上周的《需求规格说明书》初稿有哪些不足?
- 功能模块描述不够详细,缺少具体用户场景。
- 用户权限管理:需求文档中未明确描述不同用户角色的权限管理机制,系统的安全性和数据隔离需要重视。
改进:
用户故事场景:
李华老师和王小明同学的互动
背景:
李华老师是一位忙碌的高中物理老师,他需要一个系统来简化他的教学管理工作。王小明是李华老师班上的一名学生,他希望有一个平台来帮助他更好地学习和跟踪自己的进度。
功能使用:
创建和管理班级:
李华老师通过教师端登录系统,快速创建了一个新的班级,并为班级设置了课程计划和教学资源。
发布作业:
李华老师在系统中发布了一个关于牛顿运动定律的作业,并设置了截止日期。
学生提交作业:
王小明在手机上的学生端查看了新发布的作业,并在截止日期前通过系统提交了他的作业。
成绩录入和查看:
李华老师批改完作业后,将成绩录入系统,王小明登录系统查看了他的成绩和老师的反馈。
参与讨论:
王小明在系统的讨论区提出了他对牛顿第二定律的疑问,李华老师和其他同学在讨论区给予了解答。
场景总结:
通过这个教育管理系统,李华老师能够更高效地管理他的教学任务,而王小明则能够更方便地完成作业和参与学习活动。系统不仅减轻了李华老师的行政负担,还提高了王小明的学习效率和参与度。此外,系统的数据分析功能帮助李华老师识别了学生在学习中的薄弱环节,为教学提供了有针对性的改进方向。王小明也因为能够随时随地通过手机访问系统,而感到非常满意,这让他即使在校外也能保持学习进度。
功能分析的四个象限:
核心功能(Must-Have):如成绩录入与导出、作业发布与提交,这些是系统的核心功能,是用户选择使用系统的决定性因素。(高优先级)
外围功能(Wants):如文件共享、学生间讨论,这些功能可以提升用户体验,但不是用户选择系统的主要因素。(中优先级)
必要非核心功能(Should-Have):如签到、班级活动管理,这些功能对系统的完整性有帮助,但不是最核心的需求。(高优先级)
增值功能(Could-Have):如数据分析、教学质量评估,这些功能可以为系统增加额外价值,但不是必需的。(低优先级)
任务分解WBS及相应的项目进度计划:
核心功能开发:创建/管理班级;发布/批改作业;成绩录入/导出等。(1周)
辅助功能开发:文件共享;签到功能等。(1周)
增值功能开发:数据分析;教学质量评估等。(1周)
测试:单元测试;集成测试;系统测试。 (1周)
三.系统设计
系统架构设计
1.技术栈选择
- 前端:React或Vue.js,以构建动态的单页应用(SPA),提供流畅的用户体验。
- 后端:Spring Boot,利用其强大的RESTful API开发能力。
- 数据库:MySQL或PostgreSQL,根据性能和成本效益选择。
- 身份验证:JWT(JSON Web Tokens)或OAuth 2.0,实现安全的用户认证和授权。
- 文件存储:AWS S3或类似服务,用于存储课件等大型文件。
- 缓存:Redis,用于提高数据访问速度,减少数据库负载。
2.架构分层
- 表现层:前端应用,负责用户界面和用户体验。
- 业务逻辑层:后端服务,处理业务逻辑和API请求。
- 数据访问层:与数据库交互,执行CRUD操作。
- 数据层:数据库,存储系统数据。
3.微服务架构
- 将系统拆分为多个微服务,如用户服务、班级服务、作业服务、成绩服务等,以提高系统的可扩展性和可维护性。
4.安全性设计
- 实现SSL/TLS加密通信。
- 使用JWT进行状态无关的身份验证。
- 实施角色基础的访问控制(RBAC)。
5.可用性和扩展性
- 使用负载均衡器分配请求到不同的服务器,提高系统的可用性和扩展性。
- 数据库采用主从复制和读写分离,提高数据库的读取性能。
数据库设计
- 用户(User):包含用户基本信息和认证信息。
- 班级(Class):包含班级信息,与教师和学生是多对多关系。
- 作业(Homework):包含作业详情,与班级是一对多关系。
- 成绩(Grade):包含学生的成绩信息,与作业和学生是多对一关系。
- 文件(File):包含文件信息,与作业是一对多关系。
- 讨论(Discussion):包含讨论帖子和回复,与班级是一对多关系。
四.Alpha任务分配计划
待实现的功能项:
根据需求规格说明书和优先级,我们选择以下功能项作为Alpha阶段的Sprint Backlog:
用户管理模块:
- 用户注册与登录
- 权限管理(教师/学生)
班级管理模块:
- 创建班级
- 管理班级(添加/删除学生)
作业管理模块:
- 发布作业
- 提交作业
成绩管理模块:
- 成绩录入
- 成绩查询
任务分解:
任务 | 预计时间 | 负责人 |
---|---|---|
用户管理模块 | 8小时 | 周晨佳 |
班级管理模块 | 7小时 | 范健成 |
作业管理模块 | 7小时 | 李超 |
成绩管理模块 | 6小时 | 陈卓嘉 |
迭代冲刺计划(甘特图):
任务 | 11周 | 12周 | 13周 |
---|---|---|---|
用户管理模块 | √ | ||
班级管理模块 | √ | ||
作业管理模块 | √ | ||
成绩管理模块 | √ |
五.测试计划
测试目标:
确保教育管理系统的各个功能模块按照需求规格说明书的要求正常工作,识别并修复缺陷,提高系统的稳定性和用户体验。
测试范围:
- 功能测试:验证所有用户故事和用例是否按预期工作。
- 性能测试:确保系统在预期负载下的性能表现。
- 安全性测试:检查系统对未授权访问的防护能力。
- 可用性测试:评估系统的易用性和用户界面的直观性。
测试策略:
- 单元测试:由开发人员在开发过程中完成以及测试人员在模块完成后进行,确保代码的最小可测试部分按预期工作。
- 集成测试:测试模块间的接口和数据流是否正确。
- 系统测试:全面测试整个系统的功能和性能。
时间安排:
- 单元测试:每个模块编码完成后一周内进行,确保每个模块的基本功能正常。
- 系统测试:结束项目后一周内完成,全面检查系统的性能和稳定性。
责任分配:
测试负责人(李炫杰):
- 负责功能测试、兼容性测试和可用性测试。
- 测试用例设计和执行。
- 测试报告编写。
测试负责人(林丙昆):
- 负责性能测试和安全性测试。
- 测试用例设计和执行。
- 缺陷跟踪和报告。
资源:
- 人力资源:两位测试负责人
- 环境资源:测试服务器、开发环境、生产环境模拟。
- 工具资源:自动化测试工具(Selenium)、性能测试工具(JMeter)、缺陷跟踪系统(JIRA)。
测试总结:
随着每个测试阶段的结束,我们将总结测试结果,详细记录发现的问题及其解决方案,评价测试成果,并为接下来的开发周期提供针对性的改进建议。