142
社区成员




这个作业属于哪个课程 | 2022年福大-软件工程;软件工程实践-W班 |
---|---|
这个作业要求在哪里 | 团队作业三—概要设计与数据库设计 |
这个作业的目标 | 将项目的设计落地,继续完善设计类图,并在正式开始开发之前设计好系统和数据库、制定好计划和分工 |
其他参考文献 | 《软件设计国家标准——概要设计说明书》《软件设计国家标准——详细设计说明书》 |
本项目采用了C/S模式,后端采用了RESTful风格的接口。
客户端采用Unity引擎以及在组件上挂载C#脚本,用户通过与组件进行交互,触发脚本。脚本调用云端接口获取需要的数据信息。
云端服务器采用了RESTful风格的接口,客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。
开发者后台通过Yii框架基于MVC模式集成在云端服务器上,不再对外提供数据接口。
客户端界面层次设计图
服务器端层次设计图
后台功能层次设计图
先设计各个实体,再合成局部E-R图,最后合并为全局E-R图
1.首先对APP中的功能和用户需求等进行归纳,从中找出各个实体以及其属性。
2.根据功能部分找出实体之间的联系,形成局部E-R图
3.将局部E-R图合并为全局E-R图
分为两部分:用户养成部分和用户拥有物品部分
1、用户养成部分
此部分描述的是游戏的核心部分——养成部分,该部分描述了用户在探索的过程中,与NPC培养好感度,在此过程中阅读NPC的好感度剧情故事或者了解一些关于联动活动的知识(部分NPC支持)并最终达成成就的功能。
2、用户拥有物品部分
此部分描述的是游戏的探索过程中用户获得道具(普通道具或者NPC专属道具)并查看道具的功能,为与NPC的养成打下基础。
3.开发者设计新的NPC、活动、物品以及成就部分
此部分描述的是游戏开发者设计出新的NPC、活动、物品以及成就。
1、用户表(user)
3、用户_NPC表(un)
4、物品表(item)
5、用户_物品表(ui)
6、成就表(ward)
11、开发者表(developer)
该类为用户类,主要属性包括用户ID,(用户账号),(password)用户密码,(token)登录令牌,UserController中有用户登录,注册以及修改密码的方法。
背包与用户为一对一的关系,主要属性为giftList,BagController类拥有使用物品和获取物品列表的方法。物品类的主要属性有gfitID,name(物品名称),buff(物品效果),description(物品描述),type(物品类型)。gift类描述Bag 的giftList中的一项物品,一个Bag拥有多个gift。
NPC类中属性有id,type(值有普通(0)和特殊(1)),name(NPC姓名),title(NPC称号),background(NPC背景故事)。Activity类中属性有id,host(举办者),name(活动名称),profile(活动简介)。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中的数据改为存储在服务器云端。
添加了用例图
用户总用例
用户查看图鉴及背包用例
用户地图界面交互用例
开发者增删改用例
修改了类图
首先进行了职责的分配
学号姓名 | 具体分工 | 贡献度 |
---|---|---|
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镜头测试 |
系统设计环节还需要明确采用的系统结构。
ER分析和数据库设计完成的不错,赞!
流程处理逻辑部分的顺序图有些问题,要针对不同的出流程明确对应的界面对象、控制器对象和数据类对象。