用心聚落步——项目系统设计与数据库设计
这个作业属于哪个课程 | 软件工程 (福州大学至诚学院 - 计算机工程系) |
---|---|
这个作业要求在哪里 | 团队作业第四次—项目系统设计与数据库设计 |
这个作业的目标 | 在需求分析原型设计作业中,大家很好的阐述了项目的用户场景和功能描述,并且绘制了精美的原型; 但是大家的设计还是停留在产品角度,而不是开发角度;绘制的用例图和类图还比较粗糙;开发计划还不够完善; 这次作业的目的就是接着上一次的成果,将项目的设计落地,继续完善设计类图,并在正式开始开发之前设计好系统和数据库、制定好计划和分工; 磨刀不误砍柴工,希望大家重视这次作业,为下一次的团队Alpha冲刺作业提前做好准备。 |
作业正文 | 用心聚落步——项目系统设计与数据库设计 |
github地址 | 项目地址 |
其他参考文献 | 无 |
一、 团队项目的预期开发计划时间安排
二、 团队项目的预期开发计划分工安排
组员 | 学号 | 角色 | 设计阶段分工 | 开发阶段分工 | 测试阶段分工 | 部署阶段分工 |
---|---|---|---|---|---|---|
李英梦 | 211706181 | 前端 | 1.前端视图层及控制层(Nodejs) 2.后端架构 3.职责分配 4.确定人员配备 5.制定开发接口 |
页面渲染 | 1.API完成之前,模拟测试 2.API完成之后,接口对接 |
利用nginx 做反向代理 |
林航 | 211706186 | 后端 | 1.后端控制层(estRful API) 2.后端架构 3.制定开发接口 |
提供Restful API,并给出详细文档说明 | 1.API完成之前,单元测试 2.API完成之后,接口对接 |
利用nginx 做反向代理 |
林汐 | 211706528 | 前端 | 1.前端视图层 2.API风格 3.制定开发接口 |
页面渲染 | 1.API完成之前,模拟测试 2.API完成之后,接口对接 |
利用nginx 做反向代理 |
赵帅 | 211706218 | 前端 | 1.前端视图层 2.制定开发接口 |
页面渲染 | 1.API完成之前,模拟测试 2.API完成之后,接口对接 |
利用nginx 做反向代理 |
陈锦玲 | 211706104 | 前端 | 1.前端控制层(Nodejs) 2.制定开发接口 |
页面渲染工作 | 1.API完成之前,模拟测试 2.API完成之后,接口对接 |
利用nginx 做反向代理 |
冉斌 | 211706123 | 后端 | 1.后端服务层 2.制定开发接口 |
提供Restful API,并给出详细文档说明 | 1.API完成之前,单元测试 2.API完成之后,接口对接 |
利用nginx 做反向代理 |
林浩洋 | 211706119 | 后端 | 1.后端数据访问层 2.制定开发接口 |
提供Restful API,并给出详细文档说明 | 1.API完成之前,单元测试 2.API完成之后,接口对接 |
利用nginx 做反向代理 |
沈志宏 | 211706124 | 前端 | 1.前端控制层(Nodejs) 2.开发协助模式 3.制定开发接口 |
页面渲染工作 | 1.API完成之前,模拟测试 2.API完成之后,接口对接 |
利用nginx 做反向代理 |
三、 设计图表及思路
体系结构设计
功能模块层次图
该功能模块图分为两个模块:用户端与管理员端。学生端拥有注册登录功能、加入创建小组、聊天功能、查看他人消息、举报他人功能以及个人信息管理功能,管理员端拥有用户信息管理,举报核实功能,还有小组管理功能
类图
我们设计了用户、组员、组长、辅导老师类,各类所拥有的属性、操作以及各类之间的关系如下图,组员、组长、辅导老师都继承于用户类。
ER分析
整体ER图
我们有管理员、小组、用户三个实体,管理员与用户之间为多对多,用户与小组之间为多对一,管理员与小组之间为多对多。
局部ER图
用户模块
用户功能
管理员
管理员功能
小组
小组功能
表结构设计
user表用来存储用户的个人信息
小组表用来存储小组的相关信息
管理员表用来存储管理员的个人信息
辅导老师表用来存储辅导员的个人信息
模式
表结构
User表
team表
Admin表
Teacher表
系统安全和权限设计
权限设计
权限 | 注册 | 登录 | 创建小组 | 加入小组 | 修改个人信息 | 修改密码 | 查看用户信息 | 删除小组 | 删除用户 |
---|---|---|---|---|---|---|---|---|---|
组员 | √ | √ | √ | √ | √ | √ | √ | ||
组长 | √ | √ | √ | √ | √ | √ | √ | √ | √ |
管理员 | √ | √ | √ | √ | |||||
辅导老师 | √ | √ | √ | √ | √ | √ | √ | ||
系统管理员 | 重置 | √ | √ | √ |
系统安全设计
数据库安全保密
- 首先对用户发出实名登记注册的请求进行认证,身份正确并且合法的用户才能登录和操作。同时,系统对每个人的身份信息建立保护措施。
- 权限限制:本产品软件的数据库中对普通用户的访问控制设置权限,以防消息泄露。
- 最小权限原则:降低代码在被恶意用户利用时,造成的损失。
- 备份与恢复:本产品软件数据库采用记录生产日志文件、个人信誉度备份等方式保证信息安全。
- 审计:对于服务端每一次非自动的数据库操作进行审计记录,方便事后追究,控制数据泄露。
Web安全防御
-
首先,常见的web安全问题.CSRF比较多,全称是跨站请求伪造(cross site request forgery),指通过伪装成受信任用户的进行访问,通俗的讲就是说我访问了A网站,然后cookie存在了浏览器,然后我又访问了一个流氓网站,不小心点了流氓网站一个链接(向A发送请求),这个时候流氓网站利用了我的身份对A进行了访问。
这个问题主要是因为用户本地存储cookie,攻击者利用用户的cookie进行认证,然后伪造用户发出请求。
在我们的应用中大多采取实名认证,资料比较真实,若这些个人资料流露出去将会给用户带来很大麻烦,所以我们在这方面要很重视,必须保证用户的资料安全。具体实施是避免cookie认证,采用token认证,每一个提交的表单随机生成一个token存储在session中,每次验证表单token,检查token是否正确。 -
其次,XSS问题。全称是跨站脚本攻击(Cross Site Scripting),指攻击者在网页中嵌入恶意脚本程序。然后用户不小心直接下载到本地数据库,下次使用时执行了该脚本,那么就调入陷阱了。这个问题我们可以转移和过滤用户提交的信息,将输入的数据进行转义处理,比如说讲 < 转义成<;
Session攻击我们还是可以用token校验来避免 -
SQL注入是通过sql命令伪装成正常的http请求参数,传递到服务器端,服务器执行sql命令造成对数据库进行攻击
我们防御措施:在java中,我们可以使用预编译语句(PreparedStatement),这样的话即使我们使用sql语句伪造成参数,到了服务端的时候,这个伪造sql语句的参数也只是简单的字符,并不能起到攻击的作用。
四、 需求分析作业的改进部分和改进过程
日期 | 版本 | 说明 | 作者 |
---|---|---|---|
2020.3.31 | V1.0 | 初版 | 全体组员 |
2020.4.1 | V2.0 | 修改了验收标准,用户场景,用户功能,增加页眉页脚,图名表名和封面。 | 全体组员 |
五、 这次作业的工作流程、组员分工、组员贡献度比例
工作流程
泳道图
组员分工及组员贡献度比例
组员 | 学号 | 分工安排 | 贡献 |
---|---|---|---|
李英梦 | 211706181 | 分配任务、体系结构设计、工作流程图、时间流图、修改类图 、汇总审查、编写博客 | 14% |
林航 | 211706186 | 需求分析规划说明书优化、系统设计说明书(接口设计)、UML类图 、优化 、审查、优化博客 | 13% |
林汐 | 211706528 | 数据库设计说明书(数据字典)、ppt制作 、审查、优化博客 | 13% |
赵帅 | 211706218 | 数据库设计说明书(文档编写)、审查、优化博客 | 11% |
陈锦玲 | 211706104 | ER图、数据库设计说明书(文档编写)、审查、优化博客 | 13% |
冉斌 | 211706123 | UML用例图、系统设计说明书(文档编写)、审查、优化博客 | 11% |
林浩洋 | 211706119 | 系统设计说明书(系统出错处理设计、系统功能设计)、数据库设计说明书(文档编写) 、审查、优化博客 | 13% |
沈志宏 | 211706124 | 数据库设计说明(大纲设计)、审查、优化博客 | 12% |