unity从入门到入土——项目系统设计与数据库设计
这个作业属于哪个课程 | 2021春软件工程实践|W班 (福州大学) |
---|---|
这个作业要求在哪里 | 团队作业四——数据库设计和系统设计 |
团队名称 | unity从入门到入土 |
这个作业的目标 | 完成团队作业的系统结构与数据库 编写系统结构说明书与数据库结构说明书 |
作业正文 | 正文 |
参考文献 | 《构建之法》 国家说明书 防护手段 |
团队安排
团队项目的预期开发计划时间安排
团队项目的预期开发计划分工安排
结构设计
体系结构设计
我们采用面向对象软件体系结构设计方法以及客户端- 服务端的CS软件体系结构。
面向对象设计与编程方法可以使程序员将数据封装起来,使数据的访问受到限制,任何一个函数都必须通过一个特殊的方法才能访问这些数据。该方法与数据一起被封装在一个结构体中。
可以改变对象的内部结构或方法,而不需要修改程序的其余部分。
我们在编写程序遵循了以下四个原则:
1.单一职责原则:一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。
2.开闭原则:软件实体应当对扩展开放,对修改关闭。
3.接口隔离原则:当一个接口太大时,需要将它分割成一些更细小的接口
4.合成复用原则:优先使用对象组合,而不是继承来达到复用的目的。
功能模块层次图
ER图
表结构设计
拓扑图
表结构
1.卡片基础信息表
2.卡片边类型表
3.对局结果记录表
4.对局日志记录表
5.用户表
设计思路
er图的log是日志类,记录了对局的记录信息,即游戏进程的对局操作都储存在里面。
房间并未设置成类,因为是暂时存储在内存中,一旦对局结束,游戏玩家离开,房间就应该自行解散,避免无用数据存入数据库。我们将房间设置为一个len数组,根据租赁的云服务器的带宽,设置最大可以同时开始游戏房间的游戏个数,一旦游戏房间解散,立刻释放数组,便于其他玩家创建游戏。
log信息对应数据表结构里的record。
设计类图、系统安全和权限设计
设计类图
游戏逻辑类图
界面类图
系统安全性
1.登录用户爆破
为提高数据库强度,防止被人恶意侵入端口,获取数据库信息。
措施:mysql限制访问IP,这个利用alter user语句就可以做到,root账户尽量只给localhost权限,慎用user@%;
不要使用弱密码,尽量采用字母+数字+特殊字符的密码;
服务器使用放暴力破解服务,可以针对非法访问恶意操作进行锁IP防御。
2.服务器端口漏洞
通过nmap很容易扫描到服务器暴露的端口,比如139端口外露。
因此,本项目开启防火墙,且只开放有需要的端口,敏感端口如139,445不外露。
3.操作系统漏洞
window等系统作为服务器安全性差,漏洞过多。
因此,本项目使用Linux作为服务器,并采取防火墙,提高服务器操作系统的安全性。
4.用户加密
客户端返回的数据使用非对称(RSA)算法传到服务器,使用 MD5+盐摘要算法保护用户的密码,进行哈希散列,再保存到数据库。这样可以有效应对彩虹表破解法。
彩虹表(Rainbow Tables)就是一个庞大的、针对各种可能的字母组合预先计算好的哈希值的集合,不一定是针对MD5算法的,各种算法的都有,有了它可以快速的破解各类密码。越是复杂的密码,需要的彩虹表就越大,现在主流的彩虹表都是100G以上。
5.DDOS
DDoS高防(新BGP)和DDoS高防(国际)都支持为阿里云ECS或非阿里云服务器提供DDoS防护,也都支持防护通过阿里云域名服务或第三方域名服务平台开通的域名。
权限设计
客户端所有登录用户设置为统一权限标准,而非登录用户只有访问登录和注册的权限。系统具备基于角色的权限验证能力,为将来提供权限控制的基础。
设计思路
1.安全性,因为项目前端并不是web端,使用的是客户端与服务器c-s模式,重点主要在数据库的安全性设置和用户信息的加密、服务器防止DDOS攻击上。
2.因为我们的用户没有本质区别,所以在权限设置中所有玩家的权限都是使用游戏界面类的功能。管理员可以通过直接修改数据库信息来完成掌控服务器。
回答问题及改进过程
回答问题
1.类图绘制的过于简单,有些方法的位置也有问题?
anwser:我们在逻辑类的基础上添加了界面类,让类的内容更加充实。还有上次傅老师说的游戏类应该从房间类独立出来,我们也重新修改过了。
2.安全性的理解有错误,写的只是一些简单的东西,没有加密和提高系统安全性健壮性的方法。
anwser:我们这次使用非对称算法将数据从客户端传入服务器并使用md5+盐摘要算法保护用户的密码,进行哈希散列,再保存到数据库。为 防止DDOS,我们的阿里云服务器也用DDOS防护。
3.如果一个用户恶意不进行游戏(在5分钟的自主操作之内,进行一次有效操作,但是不结束自己的操作回合),如何采取有效地方法结束游戏?
使用计数器,在规定的时间内不完成所有操作,即视为该玩家放弃抽卡和放置棋子,将这枚卡片交给下一玩家使用。
改进流程
1.改进的game类在上方的游戏逻辑类图使用蓝框标出,包含卡片类
2.安全性,因为项目前端并不是web端,使用的是客户端与服务器c-s模式,重点主要在数据库的安全性设置和用户信息的加密、服务器防止DDOS攻击上。
工作流程、组员分工与贡献度
工作流程
工作流程:
1.在网上找到有关说明书的参考,并制定第一次的说明书目录。
2.根据团队作业的要求开展线下讨论会,并分配好工作。
3.各成员完成自己有关部分的文档编写。
4.完成对上次需求分析作业的改进,并开会改进文档部分的结构与具体内容。
5.绘制泳道图与数据流图
6.编写PPT,制定下一阶段的工作计划与人员安排,提前开始学习有关技术。
贡献度表格
学号 | 工作内容 | 贡献度 |
---|---|---|
041801206 | 数据库设计说明书的编写 接口文档的制作 | 15 |
221801402 | 数据库设计说明书的编写 | 8 |
221801403 | 系统设计说明书的编写 数据流图 ppt制作 宣讲 | 11 |
221801407 | 系统设计说明书的编写 | 9 |
221801409 | 系统设计说明书的编写 | 8 |
221801417 | 系统设计说明书的编写 | 8 |
221801418 | 数据库设计说明书的编写 泳道图 | 11 |
221801419 | 数据库设计说明书的编写 泳道图 分工与计划安排 | 11 |
221801433 | 系统设计说明书的编写 泳道图 类图改进 | 11 |
221801434 | 数据库设计说明书的编写 | 8 |