幸存者小队——概要设计与数据库设计

幸存者小队 团队 2022-04-16 10:41:06
这个作业属于哪个课程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中的数据改为存储在服务器云端。

  • 添加了用例图

    设计用例图

  • 用户总用例

    在这里插入图片描述

    • 用户注册登录用例

      在这里插入图片描述

  • 用户查看图鉴及背包用例

    在这里插入图片描述

  • 用户地图界面交互用例

    在这里插入图片描述

  • 开发者增删改用例

    在这里插入图片描述

  • 修改了类图

    团队绩效

    工作流程

  • 首先进行了职责的分配

img

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

img

img

img

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

img

  • 最后进行了添加开发者角色,为数据库增添了开发者表以及决定用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镜头测试

相关链接

...全文
441 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jingbin-Wang 教师 2022-04-16
  • 打赏
  • 举报
回复

系统设计环节还需要明确采用的系统结构。

幸存者小队 团队 2022-04-16
  • 举报
回复
@Jingbin-Wang 系统结构,指的是要明确采用的是MVC设计模式吗?
幸存者小队 团队 2022-04-16
  • 举报
回复
@幸存者小队 哦,应该是MVVM软件架构设计模式
Jingbin-Wang 教师 2022-04-16
  • 打赏
  • 举报
回复

ER分析和数据库设计完成的不错,赞!
流程处理逻辑部分的顺序图有些问题,要针对不同的出流程明确对应的界面对象、控制器对象和数据类对象。

幸存者小队 团队 2022-04-16
  • 举报
回复
@Jingbin-Wang 对于顺序图的流程我们会进行修改!

139

社区成员

发帖
与我相关
我的任务
社区描述
2022年福大-软件工程;软件工程实践-W班
软件工程 高校
社区管理员
  • FZU_SE_teacherW
  • 丝雨_xrc
  • Lyu-
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧