写点什么

模块三作业

  • 2021 年 11 月 14 日
  • 本文字数:2058 字

    阅读完需:约 7 分钟

前言


本文为外包学生管理系统的详细架构设计文档,用于指导学生管理系统的开发、测试和维护等内容


1. 业务背景

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它需要解决学生信息管理数据信息量大修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息。

因此学生信息管理系统可以通过系统规范化地管理、科学性统计和快速查询、修改、增加、删除等,提高信息的准确度以及日常管理的工作效率。

本系统主要是应用于学生各类信息的管理,总体任务是实现学生信息关系的系统化、规范化、自动化,其主要任务是统计学生各类信息进行日常管理,如查询、修改、增加、删除、以及学生选课、成绩的查询等功能设计的管理系统。

本系统主要包含几个子系统,系统边界黑盒图如下图所示:


2. 约束和限制

系统主要应用于学校学生信息管理,总体任务是实现学生信息管理的系统化、规范化和自动化,其主要任务是管理学生相关信息。

由于本系统为普通高校外包项目,相关信息如下

1.学校在校人数约为 2~3 万人;

2.数据库存储采用 Mysql;

3.整个系统需要部署在学校内网中;

4.需要在新学期开始完成上线和稳定性测试。

3. 总体架构

下图为学生管理系统的总体架构图:


3.1 架构分析

作为学生管理系统,主要提供给高校使用,一般高校学生人数大概在 2~3 万人,总体用户规模不算大。考虑到学生选课、考试的场景。以选课为例,假设一个学生一个学期需要完成 15 门课程的学习。高峰使用时段会在 1、2 天内完成选课需求,平均到每天 3 小时内,课程子系统的高峰时段写入数据 TPS 为:30000*15/3/60/60=41。

按照这个指标,系统性能要求不算高。而管理系统涉及到学生学分、学校日常管理。所以该系统对质量要求比较高。在高性能和高可用方面则保障基本功能使用正常即可。

3.2 总体架构

参照当前的架构图:

1.负载均衡器使用 Nginx,按照不同系统、不同接口规则等,将请求转发到对应系统中。

2.结合上一节的系统分析可知,数据库使用 Mysql 足够满足日常数据写入和读取工作,为进一步保障数据安全,防止数据因机房线路等原因,Mysql 采用主备各 1 台机器。数据定期从主节点备份到备份节点。

3.系统分为学生子系统、课程子系统、权限子系统、考试子系统 4 个子系统。其中学生子系统管理学生信息,包括学籍管理 、学生信息、学生成绩管理等。是整个管理系统的核心和基础。其他系统在学生子系统的基础上进行不同需求场景的管理。课程子系统针对课程设置、教师开课、学生选课、选课开放等内容;考试子系统完成课程考试安排、考试信息、考场信息、考场学生 &教师管理等。权限子系统包括学生权限、教师权限管理等。

4. 详细设计

4.1 核心功能

4.1.1 学生管理子系统

1.系统录入功能:由于学生信息是需要高校在学生进入学校之前完成信息录入,从而不需要学生自主注册等逻辑。系统录入需要为相关权限的老师或者教职人员完成学生信息的录入和编辑功能、以及批量导入功能。生成学号,以及为学生设置邮箱账号、所属学院和专业、住宿管理等内容。

2.学生登陆功能:学生在进入相关后台后,可以基于学生姓名、学号和初始密码完成登陆。在登陆系统之后需完成学生手机号、微信号等修改。

3.学生授权功能:为学生进行授权,例如进入图书馆、相关实验室等权限配置、以及其他系统(如考试系统、课程系统)的权限配置


4.1.2 课程管理子系统

1.基本登陆 &登出

2.课程管理:包括课程信息管理、课程对应的老师管理、课程排期。

3.选课功能:在指定选课开放时间段内,为学生提供选课功能;


4.1.3 考试管理子系统

1.考试管理:考试排期、考场时间 &场所管理、监考老师管理

2.成绩管理:考试成绩打分老师安排、成绩打印等


4.1.4 权限管理子系统

1.权限设定:设定权限内容,包括对应权限名称和内容、对应系统模块

2.权限分配:按照用户、用户组为学生、教职工进行权限分配

4.2 关键设计

1.负载均衡

本系统分为多个子系统,以及多个管理模块。使用 Nginx 作为负载均衡器,路由请求到相关管理后台和接口等

2.数据库主备

为保障数据安全和可用性,定期将数据从主库备份到备用库。同时为数据库进行监控,在发生异常时,需要进行监控告警,以便由相关人员或者系统自动切换到备用库中。

4.3 设计规范

1.使用基于 Scala 的 PlayFramework 完成对应子系统逻辑实现

2.每个子系统之间采用 Restful 规范进行系统之间的功能调用

3.接口数据采用 JSON 格式

4.Mysql 使用 Innodb 引擎

5. 质量设计

1.基于 Postman 完成相关接口说明,需要按照模块组织,接口包含请求协议、请求头、请求参数、返回结果(正常和异常)说明

2.相关字段表说明

3.基于接口的可用性测试、监控

4.针对 Mysql 状态的监控、告警(短信、微信等)

6. 演进规划

1.按照 Sprint 迭代开发,每 2 周完成一个迭代。迭代计划前完成交付目标确定、交付内容和相关 Showcase 节点

2.计划完成 2 个迭代后进行系统测试,预期测试耗时 2 人周

3.计划测试完成后进行现场部署,预期交付 &测试耗时 3 人天

用户头像

还未添加个人签名 2017.11.04 加入

还未添加个人简介

评论

发布
暂无评论
模块三作业