幸存者小队——概要设计与数据库设计
| 这个作业属于哪个课程 | 2022年福大-软件工程;软件工程实践-W班 |
|---|---|
| 这个作业要求在哪里 | 团队作业三—概要设计与数据库设计 |
| 这个作业的目标 | 将项目的设计落地,继续完善设计类图,并在正式开始开发之前设计好系统和数据库、制定好计划和分工 |
| 其他参考文献 | 《软件设计国家标准——概要设计说明书》《软件设计国家标准——详细设计说明书》 |
目录
- 系统和数据库设计
- 体系结构设计
- 功能模块层次图
- ER分析
- E-R设计思路
- 各个实体之间的E-R图
- 局部E-R图
- 总体E-R图
- 表结构设计
- 类图、系统安全和权限设计
- 类图
- 用户类
- 背包及物品类
- NPC类和活动类
- 成就图鉴及NPC图鉴以及NPC详情和好感度故事
- 系统安全和权限设计
- 系统安全
- 权限设计
- 改进分析
- 设计用例图
- 团队绩效
- 工作流程
- 本次任务分工和贡献度
- 开发计划安排
- 客户端&服务器端后续开发安排
- 人员职责和后续分工安排
- 相关链接
系统和数据库设计
体系结构设计
本项目采用了C/S模式,后端采用了RESTful风格的接口。
客户端采用Unity引擎以及在组件上挂载C#脚本,用户通过与组件进行交互,触发脚本。脚本调用云端接口获取需要的数据信息。
云端服务器采用了RESTful风格的接口,客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。
开发者后台通过Yii框架基于MVC模式集成在云端服务器上,不再对外提供数据接口。

功能模块层次图
客户端界面层次设计图

服务器端层次设计图

后台功能层次设计图

ER分析
E-R设计思路
先设计各个实体,再合成局部E-R图,最后合并为全局E-R图
1.首先对APP中的功能和用户需求等进行归纳,从中找出各个实体以及其属性。
2.根据功能部分找出实体之间的联系,形成局部E-R图
3.将局部E-R图合并为全局E-R图
各个实体之间的E-R图

开发者实体 (开发者号,开发者密码,登录令牌,加密令牌)

局部E-R图
分为两部分:用户养成部分和用户拥有物品部分
1、用户养成部分
此部分描述的是游戏的核心部分——养成部分,该部分描述了用户在探索的过程中,与NPC培养好感度,在此过程中阅读NPC的好感度剧情故事或者了解一些关于联动活动的知识(部分NPC支持)并最终达成成就的功能。

- 用户与NPC是多对多的关系,NPC信息存储在云端,一个用户可以遇到或解锁并培养多个NPC,一个NPC也能够被多个用户遇到或解锁。
- 同理,用户与成就也是多对多的关系。
- NPC与活动之间也是多对多的关系,一个活动可以包含多个NPC,一个NPC也能够参与多个活动
- NPC与好感度故事是一对多的关系,一个NPC拥有多个好感度故事,而好感度故事只对应一个NPC
2、用户拥有物品部分
此部分描述的是游戏的探索过程中用户获得道具(普通道具或者NPC专属道具)并查看道具的功能,为与NPC的养成打下基础。

- 与NPC和用户的关系类似,物品信息存储在云端,是多对多的关系,用户拥有多种物品,物品可以被多个用户拥有。
- 物品是有分类的,物品分为通用物品和专属物品,物品中的专属物品与NPC之间的关系是一对一的,一个NPC只拥有一种专属物品,一种专属物品只对应一个NPC
3.开发者设计新的NPC、活动、物品以及成就部分
此部分描述的是游戏开发者设计出新的NPC、活动、物品以及成就。

- 开发者与相关联的实体皆为多对多关系。
总体E-R图

表结构设计

1、用户表(user)

2、 NPC表(npc)

3、用户_NPC表(un)


4、物品表(item)

5、用户_物品表(ui)

6、成就表(ward)


7、用户_成就表(uw)

8、活动(activity)

9、Npc_活动表(na)

10、好感度故事表(story)

11、开发者表(developer)

类图、系统安全和权限设计
类图

用户类
该类为用户类,主要属性包括用户ID,(用户账号),(password)用户密码,(token)登录令牌,UserController中有用户登录,注册以及修改密码的方法。

背包及物品类
背包与用户为一对一的关系,主要属性为giftList,BagController类拥有使用物品和获取物品列表的方法。物品类的主要属性有gfitID,name(物品名称),buff(物品效果),description(物品描述),type(物品类型)。gift类描述Bag 的giftList中的一项物品,一个Bag拥有多个gift。

NPC类和活动类
NPC类中属性有id,type(值有普通(0)和特殊(1)),name(NPC姓名),title(NPC称号),background(NPC背景故事)。Activity类中属性有id,host(举办者),name(活动名称),profile(活动简介)。NPC和活动之间为多对多关系。

成就图鉴及NPC图鉴以及NPC详情和好感度故事
Handbook类的主要属性为Honorbook和NPCHandbook,其下为HonorHandbook类和NPCHandbook一对一聚合到Handbook类,HonorHandbook中属性为Honor列表、UserID,NPCHandbook类中属性为NPC列表,UserID。其中Honor类聚合到HonorHandbook,属性有id,name(成就名称),description(成就描述)。NPC类中属性有id,type(值有普通(0)和特殊(1)),name(NPC姓名),title(NPC称号),background(NPC背景故事)。并且有Story(好感度故事)类聚合到NPC类中,一个NPC对应多个好感度故事,Story类中属性为基本信息等


系统安全和权限设计
系统安全
防止SQL注入设计
采用PreparedStatement,即预编译指令集,这样即使使用sql语句伪造成参数,到了服务端也只是一个参数(简单的字符),并不能起到攻击作用。密码加密设计
用户输入密码后,后端随机生成一个加密令牌,按照算法对用户的密码进行某种方式的拼接,再采用SHA_2进行加密,将加密令牌和SHA_2加密后的散列值存入数据库
数据访问权限
用户在登录后会得到系统返回的登录令牌,后续的请求接口需要验证登录令牌,只有令牌匹配成功,系统才会对请求作出正确响应。防止用户直接操作数据库
用户所有涉及对数据库的请求均使用的是服务器开放的接口,从根本上规范了用户对数据库的操作,用户只能通过特定的接口来间接操纵数据库。防止暴力破解
设定一个合理的阈值,若单位时间内的请求次数超过该阈值,则暂时封禁该用户(或IP地址)一段时间。权限设计
基于角色的RBAC权限管理。(借助Yii框架成熟的RBAC策略)
参考文档普通开发者:只含有设计功能
高级开发者:在普通开发者的基础上,可以通过开发者的注册。改进分析
Q:从类图上没有看出场景与活动有何联系,是遗漏活动类了吗?
A:这确实是我们考虑不周,原本的企划只是活动方联合制定一个联动NPC,起到对学校组织活动的一个宣传引导作用,我们只考虑到这种NPC也是属于可培养好感度的NPC,因此只想到让他直接归属于从原本的可培养NPC类中,经过老师的指点,我们意识到确实需要增加一个活动类,方便以更鲜明的方式表示活动NPC。

改进:将原本存储在Unity本地的easysave中的数据改为存储在服务器云端。
添加了用例图
设计用例图
用户总用例

- 用户注册登录用例

- 用户注册登录用例
用户查看图鉴及背包用例

用户地图界面交互用例

开发者增删改用例

修改了类图
团队绩效
工作流程
首先进行了职责的分配

- 经过团队讨论后,我们团队决定了需要把数据库也业务逻辑从单机变为云端服务器提供



- 由于数据存储和业务处理实现在服务器端,所以我们对类图和接口进行了完整详细的多次重构

- 最后进行了添加开发者角色,为数据库增添了开发者表以及决定用Yii框架来实现开发者所涉及的功能模块的设计
本次任务分工和贡献度
学号姓名 具体分工 贡献度 221900407扶繁靖 数据库设计说明书一阶段设计,二阶段修改,三阶段修改,数据库ER图设计,表图设计,系统设计说明书四阶段修改 16% 171909049游嘉龙 系统设计说明书一阶段设计,系统设计说明书二阶段(云端接口提出与设计,架构图设计,系统功能层次图设计,类图统合),三阶段(接口文档完善和修改),四阶段修改(开发者设计提出和修改) 14% 221900421宋小斌 类图一阶段设计,系统设计说明书二阶段设计(图鉴模块接口文档设计和类图设计),三阶段(接口文档完善和修改),四阶段修改(开发者设计修改完善) 14% 221900332郑世杰 系统设计说明书二阶段(云端接口提出与设计,物品模块接口文档设计和类图设计),三阶段(接口文档完善和修改) 12% 221900224吴森森 系统设计说明书二阶段(登录模块接口文档设计和类图设计),三阶段(接口文档完善和修改) 10% 221801117池定天 系统设计说明书二阶段(NPC模块接口文档设计和类图设计),三阶段(接口文档完善和修改) 10% 221900318苏桂冬 数据库设计说明书二阶段修订 6% 221900426王坤伟 PPT的设计 6% 221900412黄祎杰 权限与安全设计 6% 221900410郭渊伟 需求分析改进建议 6% 开发计划安排
客户端&服务器端后续开发安排
(备注:因为我们的数据库存储方式和业务逻辑的处理改变为云端服务器,所以我们增加了服务器端的开发)里程碑 具体事项 时间 Alpha冲刺整备 自学技术,将谷歌地图导入Unity,商定前后端接口json格式详细,角色定位和位移,固定角色视角,实现NPC的基本动作 4.17-4.22 github团队实训 完成团队实训 4.23 Alpha冲刺第一周 客户端:通过AR镜头实现与NPC的基本对话,实现空背包界面,实现登录界面,实现空图鉴界面
服务器端:基本业务类和业务逻辑的构建,实现登录模块接口,图鉴模块接口,背包模块接口4.24-4.30 Alpha冲刺第二周 客户端:实现活动界面,NPC动作完善,NPC交互设计,AR镜头界面完善,AR触地功能实现,编写组件脚本与服务器端交互
服务器端:实现活动模块接口,实现NPC模块接口5.1-5.7 冲刺缓冲期 自学技术、队员自我反思、团队整体结构方向调整 5.8-6.1 Beta冲刺第一周 客户端:完善UI,完善NPC故事和背景,完善图鉴内容
服务器端:完善接口和服务器端业务逻辑6.1-6.5 Beta冲刺第二周 客户端:彩蛋设计,设计更丰富的活动
服务器端:完善接口和服务器端业务逻辑6.6-6.12 Alpha冲刺第三周 设计剧情和剧情存档功能,NPC丰富完善
服务器端:完善接口和服务器端业务逻辑,开发者接口实现6.12-6.18
人员职责和后续分工安排
| 学号姓名 | 职责 | 分工 |
|---|---|---|
| 171909049游嘉龙 | 总策划兼Unity开发 | 负责AR镜头NPC模型的展示处理和背包模块的开发 |
| 221900407扶繁靖 | NPC交互策划兼Unity开发 | 负责NPC模型设计和NPC交互界面的开发 |
| 221900421宋小斌 | 图鉴策划兼Unity开发 | 负责图鉴界面的开发和图鉴内容的设计 |
| 221900224吴森森 | Unity开发 | 负责活动界面的开发和登录界面的开发 |
| 221900332郑世杰 | 服务器端负责人兼服务器端开发 | 物品模块的接口开发和业务逻辑的处理,开发者接口设计 |
| 221801117池定天 | 服务器端开发 | NPC模块的接口开发和业务逻辑的处理 |
| 221900318苏桂冬 | 服务器端开发 | 活动模块和活动模块的接口开发和业务逻辑的处理 |
| 221900426王坤伟 | 服务器端开发 | 登录模块和活动模块的接口开发和业务逻辑的处理 |
| 221900412黄祎杰 | 服务器端开发 | 图鉴模块和活动模块的接口开发和业务逻辑的处理 |
| 221900410郭渊伟 | 测试人员 | 负责服务器端每个阶段的接口测试以及负责进行校园探索的AR镜头测试 |
相关链接
相关推荐
亲情小队在行动-小队活动方案设计.doc
亲情小队在行动-小队活动方案设计.doc
Hero_Squad:这是英雄小队的仓库,用户可以在其中添加小队和英雄
英雄小队 这是适用于Hero Squads的Java应用程序,2018年12月5日 由Davidlutta 描述 这是一个使用Java和Spark制作的应用程序,用户可以输入小队和英雄,例如,如果您喜欢复仇者联盟,创建小队,然后继续进行复仇者中的所有英雄。 您甚至可以添加自己。 眼镜 建立小队。 查看所有小队。 导航至小队,然后添加英雄。 导航回小队以查看小队中的所有英雄 设置/安装要求 克隆项目 打开命令行 Run $ gradle build Run $ gradle run Open your Browser and enter the link http://localhost:4567 已知错误 游戏未链接到数据库,因此,如果您重新启动服务器,则所有保存的工作都将被删除。 使用的技术 Java , Spark , Gradle 支持和联系方式 您可以通过我的Github与
编码小队
编码小队
少先队小队活动方案.doc
少先队小队活动方案.doc
少先队小队活动手册.docx
少先队小队活动手册.docx


