局域网通讯软件:概要设计
rCore第四章目前对我来说还是太有难度了,所以先启动这个项目练练手先。
一、需求分析
功能需求和非功能性需求
下面的需求分析是我让 kimi 给我的,感觉中规中矩吧(我没上过需求分析的课)。
功能性需求
即时通讯
- 文字聊天 :支持单人和多人聊天,能够发送文字、表情等。
- 语音视频通话 :支持一对一和多人语音、视频通话。
- 消息推送 :在局域网内,消息能够实时推送,及时提醒用户有新消息。
文件共享
- 文件传输 :支持在局域网内传输各种格式的文件,包括文档、图片、视频等。
- 文件共享目录 :能够设置共享文件夹,用户可以访问和下载共享目录中的文件。
- 文件版本管理 :对于共享文件,能够记录版本信息,方便用户查看文件的历史版本。
安全性能
- 数据加密 :对传输中的数据和存储的数据进行加密,防止数据泄露。
- 用户认证 :支持多种认证方式,如用户名密码、数字证书等,确保只有授权用户能够使用软件。
- 访问控制 :能够根据用户的角色和权限,限制对特定功能和数据的访问。
用户管理
- 用户认证 :支持多种认证方式,如用户名密码、数字证书等,确保只有授权用户能够使用软件。
- 权限分级 :根据用户的角色和职责,分配不同的权限,如普通用户、管理员等。
- 用户信息管理 :能够添加、删除、修改用户信息,方便系统管理员对用户进行管理。
非功能性需求(这我自己给自己要求的)
1.可修改性:模块之间高度独立,在接口不变的情况下,修改功能只用改一个模块;
2.安全性:数据传输要加密,过程无法被窃听或篡改;
3.可用性:服务端稳定不崩溃,持续运行可用性达到99.9%(就是服务器我想做成多端部署的,崩一两个都不会完全掉线)
基本功能点
我先做服务端,就先列一下服务端需要做到什么事情
1.支持多用户的同时连接
2.能够接收和处理用户的请求
具体点就是可以支持用户的注册和登录,以及个人信息管理和局域网多媒体通讯的需求
3.能够向用户返回必要的消息
4.数据传输加密安全
5.稳定不崩溃
二、概要设计
还是先做服务端的概要设计
首先都是服务端了,架构肯定有C/S架构
然后整个功能需求的操作还是比较线性的(对于单个用户的请求来说),所以还采用分层架构的思想
1. 模块图
下面就是我目前设想的模块图(虽然看着简单,但是还是想了蛮久的)
主要就分为三大模块
1.消息接收和发送
负责接收来自客户端的消息和发送服务端想要发给指定用户的消息
所以这个模块是要维护用户的连接状态的,而且也要负责客户端的连接的建立
虽然这个模块接收和发送的数据包都是加密的,但是并不影响其实现功能。
2.消息处理
这个模块按照业务的处理逻辑可以继续细分成一下几个模块
首先来自消息接收和发送模块的包是加密的,并且还是字节流
所以首先需要将发送过来的包解密,需要一个安全模块
解密完成之后,需要对字节数据进行信息整理,转换成可以被统一处理的类的实例,需要一个整理模块
有了可以被统一处理的实例,接下来就是按照请求类型进行不同的业务操作,需要一个业务模块
最终处理完成之后,返回给消息接收和发送模块需要的提示信息,同时将需要返回给客户端的内容加密,交给消息接收和发送模块返回给客户端。
3.数据模型
这个模块比较简单
就是使用ORM方便管理数据库中的数据
2. 时序图
我就画一个大概的总的业务处理过程的时序图。主要是为了方便理清整个操作流程。
3. 数据库设计
先画E-R图
然后把这个E-R图转成数据库表格,得到以下两张表
user表,字段如下
user_id 整数型
username 字符串型(长度我想让ai定,因为我写完了概要设计之后是想把这个文档喂给ai试试看的)
password 字符串型(加密过的)
status 布尔型(在线或不在线)
info表,字段如下
sender,外键user表的user_id,整数型
receiver,外键user表的user_id,整数型
type,枚举型(目前我想到的有message和file)
time,时间戳,整数型
content,message就直接是字符,file就是路径(突然想到那图片算什么呢,后面想想怎么解决)
dead_time,时间戳,整数型(临时想到可以加上的,就可以方便实现消息记录)
好,目前概要设计就这样,今天已经比较晚了,先休息了。明天再打磨下就开始喂AI试试看(目前感觉自己做详细设计还是比较吃力,看看AI怎么做的,参考学习下)
💬 评论区
暂无评论,来发表第一条吧。