写点什么

架构实战营 - 模块三作业

作者:无名
  • 2021 年 11 月 10 日
  • 本文字数:2730 字

    阅读完需:约 9 分钟

学生管理系统架构设计文档

前言

[可选,用于总体上描述本篇文档的内容和目的]

   本文是学生管理系统详细架构设计文档,用于指导学生管理系统后续的开发,测试和运维。

 

词汇表

[可选,用于明确定义和说明一些英文缩写、术语等,请用表格来呈现,infoq 写作平台不支持表格,所以只能一个一个的列]

 

1. 业务背景

[必选,从以下常见的角度来回答,你准备构建或者重构系统的目的和所处的位置是什么,可以是 1 个角度,也可以是多个角度,一般挑选重点的 3 个目的就差不多了:1.解决什么问题;2.带来什么价值;3.实现什么目标;4.完成什么任务;5.处于什么地位。

]

[技巧:使用系统边界黑盒图来描述系统与外界的边界和交互关系]

随着学校的规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大。不仅花费大量的教师资源,处理效率也十分低下。现有的资料通过电子表格文档管理,由于都是单文件和目录分类的方式实现管理的,由此带来几个明显的问题:

1.查找慢:要通过多层目录,才能找到文件,打开文件的速度取决于电脑的性能。

2.修改难:修改一个信息,需要修改多个文件,还容易漏改,造成资料信息不一致。

3.容易丢:文件容易误删和损坏,等不可恢复性。

基于以上背景,我们需要开发学生管理系统,系统主要应用于学校学生信息管理,总体任务是实现学生信息管理的系统化、规范化和自动化,其主要任务是管理学生相关信息,如学籍、课程、成绩、奖惩。系统边界图如下:

 


2. 约束和限制

[必选,列出明确的约束和限制,常见的约束和限制有:1.投资方的成本要求;2. 监管方的监管要求;3. 技术选型的硬性要求;4. 项目时间要求;5. 质量要求]

[技巧:约束和限制越多越好]

1. 成本不能超过 30 万。

2. 数据库采用 Mysql。

3. 项目实施周期 3 个月。

4. 后端采用 Java 语言开发。


 3. 总体架构

 3.1 架构分析

[可选,这部分主要是架构复杂度的分析,基本上从备选架构文档中提炼关键内容过来即可]

[样例:

3.1.1 高可用

对于微博子系统来说,如果消息丢了,导致没有审核,然后触犯了国家法律法规,则是非常严重的事情;对于等级子系统来说,如果用户达到相应等级后,系统没有给他奖品和专属服务,则 VIP 用户会很不满意,导致用户流失从而损失收入,虽然也比较关键,但没有审核子系统丢消息那么严重。

 

综合来看,消息队列需要高可用性,包括消息写入、消息存储、消息读取都需要保证高可用性。

]

[技巧:常见的复杂度都要覆盖到,即使分析后不涉及也要描述,避免评审的时候被人认为遗漏了关键点]

3.1.1 高性能

一个学校学生的人数加上老师的人数,也就几万人,几万人的对于系统的性能要求并不高,没有高性能的需求。

 

3.1.2 高可用

如果学生管理系统突然挂掉,一般对学校的影响不大。所以计算高可用可以不用考虑。但如果数据全部丢失,影响很大。丢失少量数据可以接受,需要存储高可用。

 

3.1.3 可扩展

学生管理系统的业务还是有一定复杂度的,并不是那么容易容易理解,需求考虑可扩展。

 

3.1.4 低成本和安全性

一般面向单个学校,成本不需要考虑;不涉及到金融,证券,资金,个人信息一般是学生的公开信息,安全性也不需要考虑。

 

3.2 总体架构

[必选,描述总体架构设计]

 

 

1. Nginx:负责请求接入,然后将请求反向代理到子系统

2. 学生子系统:实现学生账号生成,学生信息管理,上传下载相关文档等功能。

3. 课程子系统:实现课程录入,学生选课,老师排课等功能。

4. 权限子系统:实现不同角色的权限管理,如:学生、教师、管理员、辅导员。

5. Mysql:负责存储学生、课程、权限的数据。

 

4. 详细设计

[必选,描述核心场景或者流程的实现机制]

学生管理子系统

1.系统登录:此功能面向所有用户角色,根据用户角色权限不一,功能权限也不一样。

2.账号分配:学生账号由系统生成,给定相应权限,可进行密码更改,无法对系统成绩评定等功能做出相应干

涉。教师账号由管理者(教务)通过系统生成,教师有对学生成绩评定和试卷评定的权限,同时兼容学生权

限。管理(教务)权限由系统固有账号,是系统 root 权限,对教师有分配管理权限,对数据有增加、修改、

删除、查询权限。

3.账号绑定:学生账号可通过第三方如:手机号码、微信等自行绑定,可实现账号自助找回等。

4.组织管理层级:按学生实际情况划分归属。 例如:软件学院—数字传媒方向(专业)—软件 1306—苗雨

乔。

5.文件上传/下载:此功能针对所有用户开放,学生可以将自己课堂笔记、日常作业等相关信息在线传输,教

师通过学生上传的相关作业、试卷信息进行相应评定,完成对学生平时成绩的评定。此功能一旦评定结束,所

有用户只有查询、浏览的权限,除管理员外其他用户没有对成绩修改的权限。

6.信息查询:此项功能包含课程查询(含课程体系、课时安排、课表、教师、教材等)、成绩查询、文件查

询。

 

课程管理子系统

1.课程录入:由管理员对相应课程体系进行录入,供学生、教师进行在线选择。

2.选课功能:学生可以在线对自己的课程体系进行选择,相对应的课程选择功能类比。

3.排课功能:此功能根据学生选定的课程和教学体系安排,对相应教师、教室、时间进行统一规划安排。

排课功能备选开发方向为在线排课和人工录入,在线排课是系统根据课程要设置课程的名称、课时、上课

的班级、代课老师等信息,除此之外,还可以选填排课时的优选项,例如:上课时间有限上午等系统自动

生成课程信息,管理员有权限对课程安排作出添加、删除、修改等判定。

4.教材选择:此功能由教务统一管理,根据每门课程选定相应教材。

 

权限管理子系统

1.系统使用者有学生、教师、管理员、辅导员。

2.学生、教师、辅导员可以注册、登录、修改自己的信息,但注册信息需要管理员审核通过。

3.学生只能查看自己的成绩,教师可以修改学生的成绩。

4.辅导员可以查看学生的信息,可以设置学生的奖惩信息。

5.教师可以上传考试试题,学生可以做题。

 

4.1 核心功能

[必选,描述核心场景或者流程的实现机制,对应 4R 架构中的 Rule,每个核心场景一个小节]

4.2 关键设计

[必选,描述系统的一些关键设计点是如何实现和取舍的]

[技巧:常见的关键设计点包括高性能、高可用、可扩展、安全等]

高性能不需要考虑

高可用采用 Mysql 主备方案

可扩展按业务模块划分为:学生子系统、课程子系统、权限子系统

成本和安全性不需要考虑

 

4.3 设计规范

[必选,描述 Role 和 Relation 相关的开发框架、连接协议、数据包格式等]

1. SpringBoot2.3.3 开发

2. Mysql 使用 Innodb 存储引擎

3. 子系统通讯采用 HTTP

4. 接口请求采用 JSON

5. Mysql 主备方式

 

5. 质量设计

[必选,描述和质量相关的设计,包括:可测试性、可维护性、可观测性、成本等设计]

可测试性不需要考虑

可维护性不需要考虑

可观测性采用输出系统日志

低成本采用虚拟化

 

 6. 演进规划

[必选,可以是演进规划,也可以是项目计划,需要描述每个里程碑或者版本具体要实现的能力]

用户头像

无名

关注

还未添加个人签名 2018.03.14 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营-模块三作业