从0到1队——项目系统设计与数据库设计
| 这个作业属于哪个课程 | 2023年福大-软件工程实践-W班 |
|---|---|
| 这个作业要求在哪里 | 团队作业三——概要设计与数据库设计 |
| 这个作业的目标 | 将项目的设计落地,继续完善设计类图,并在正式开始开发之前设计好系统和数据库、制定好计划和分工 |
| 其他参考文献 | 《构建之法》 |
目录
- O、相关链接
- 一、系统和数据库设计
- 1.1 体系结构设计图
- 1.2 功能模块层次图
- 1.3 数据库ER图设计
- 1.4 数据库表结构设计
- 二、类图
- 三、接口设计
- 四、系统安全和权限设计
- 4.1系统安全性设计
- 4.2 系统权限设计及说明
- 五、改进分析
- 六、团队绩效
- 6.1 工作流程
- 6.2 任务分工和贡献度
- 6.3 commit记录
- 七、开发计划安排
- 7.1 开发计划时间安排
- 7.2 预期开发计划分工安排
O、相关链接
一、系统和数据库设计
1.1 体系结构设计图
系统采用三层结构,分别是控制层、业务逻辑层和数据访问层。控制层接收用户请求并将请求交给业务逻辑层处理;业务逻辑层对接收数据进行逻辑处理,实现数据的修改、获取、删除等功能;数据访问层操作数据库,主要实现对数据的增、删、改、查,将存储在数据库中的数据。

1.2 功能模块层次图
前台功能模块层次图

后台功能模块层次图

1.3 数据库ER图设计
- ER图

1.4 数据库表结构设计
设计思路
- 1.先确定主要的实体有哪些。对于Sofu小程序而言主要的实体可以参考之前的用况图和之前所设计的类图来判断,主要是有“用户”“管理员”“评论”“想法”“问题”“举报”。然后这些实体只是初步判断,要确定具体的实体有哪些则需要结合需求分析的内容对这些实体的关系进行分析从而确认得到比较可靠的实体集
- 2.确定实体的属性。实体的属性首先得结合需求分析中对数据的限制等描述来规定属性的数据类型,在结合实体在系统中的作用和分析实体所需要被描述的信息有哪些,最后结合实体间的关系来确定实体的外键
- 3.完成以上步骤,已经得到基本的数据库了,但是这样仍然不够完美,通过对数据结构的分析,适当通过添加一个字段(比如type)来实现对相同结构数据表的整合,来优化数据结构
- 4.最初定义的一些属性名可能存在比较随意或者存在遗漏,在最后的阶段与前后端人员共同修改了属性名达到内部的基本统一,同时发现遗漏或者存在矛盾的地方进一步改进优化
- 5.在部分表中预留一些可能有用的字段用于后续扩充使用
数据库表:
- 分类表

- 问题表

- 管理员表

- 同问关系表

- 喜欢关系表

- 想法表

- 回答表

- 用户表

- 消息表

- 官方消息表

- 评论表

- 举报表

- 用户兴趣关系表

- 用户收藏表

二、类图
设计思路:
- 0.对不同层次进行类的设计,表现出系统层次化模块化
- 1.通过数据库的设计选取实体作为基本类
- 2.若发现类中有结构相似的部分进一步提取抽象出基类
- 3.结合系统需求设计出其他有关的类,比如XXXList类等聚合类
- 4.结合需求和功能分析,确定类需要具有什么样的操作和接口
- 5.结合数据库的实体关系来构造类之间的关系。当然这样不全面,因此还要结合需求和功能来确定具体的关系
- 6.设计完这些最后进行优化,提高系统的可维护性和可扩展性
类图:
- Controller层

- Service层

- DAO层

三、接口设计
四、系统安全和权限设计
4.1系统安全性设计
安全问题:
- SQL注入
- XSS
- CSRF
- JSON劫持
解决办法:
- 对用户的输入以及操作的数据进行加密,防止报文明文传输
- 对用户的输入以及操作的数据进行数据加签验签,保证数据传输过程不被篡改
- 对登录的用户进行token授权机制
- 使用时间戳timestamp超时机制,防止用户数据被抓包进行恶意请求
- 数据参数合法性校验,对用户的输入进行参数校验,如发帖时的标题和内容,登录时的邀请码等等
- 通过参数化进行查询,避免参数和查询句拼接,避免出现SQL注入
- 避免出现XSS,在数据输入输出时做好字符转换,使恶意代码不被执行,而是解析成字符
- 使用限流机制,防止用户恶意频繁调用接口
- 利用黑名单机制,屏蔽用户的恶意请求
4.2 系统权限设计及说明
设计:
- 未认证用户:未经过认证过程,没有使用权限,无法使用该小程序
- 认证用户:认证用户需要通过身份验证(邀请码认证),获得使用权限
认证用户之中又有细分是否为封禁用户[封禁的是用户的发表修改权限]:正常状态的用户支持发表内容、查询浏览内容、修改和删除内容,而被管理员封禁的用户其发表修改和删除权限被禁用只支持浏览查看内容
- 认证用户:认证用户需要通过身份验证(邀请码认证),获得使用权限
- 管理员:负责管理问答社区,包括审核、下架问答、管理用户等操作
权限说明:
- 提问权限:认证用户都可以提问,但需要遵守社区规范和法律法规
- 回答权限:认证用户都可以回答问题,但需要遵守社区规范和法律法规
- 评论权限:认证用户都可以对问题和回答或想法进行评论,但需要遵守社区规范和法律法规
- 点赞权限:认证用户都可以对问题、回答和评论进行点赞操作
- 收藏权限:认证用户可以收藏帖子
- 同问权限:认证用户可以对问题进行同问
- 举报权限:认证用户可以对不遵守社区规范的帖子或者评论进行举报
- 用户修改权限:认证用户/管理员可以修改自己的信息
- 数据查看权限:认证用户可以查看自己的消息、收藏、同问等数据,查看他人的回答、想法、问题
- 删除权限:管理员可以删除违规的问题、回答和评论
- 冻结权限:管理员可以冻结违规用户的账号,禁止其进行任何操作
- 管理员修改权限:管理员可以修改用户的信息
- 管理员数据查看权限:管理员可以查看所有人的数据以及统计数据
五、改进分析
- Q1:前6位同学的贡献度过于接近,是否有绩效考核依据?
A1:前六名同学的分数接近是因为工作完成量接近。我们小组有完善的绩效考核制度,综合考量会议参与度、具体贡献、态度、加分项这些方面。对于每次的作业,我们会先统计每个成员完成的具体任务,再采用组内成员互评的方式来得出个人分数,也就是在之前需求分析博客中看到的表格
- 每人填写各自的工作总结

- 各个组员根据每个人的工作总结进行组内互评

- 组内互评规则

- 互评结果公布,同时调查每位组员意见,普遍希望是组内互评的近似值

六、团队绩效
6.1 工作流程
- 在阅读完作业要求后,我们先进行了一次初步的分工
-
- 之后大家根据自己的初步分工分头完成任务
完成前台功能模块层次图

完成系统结构设计图、用况图

完成后台功能模块层次图

完成数据库设计

完成接口设计总览

- 总体时间安排

6.2 任务分工和贡献度
| 学号 | 姓名 | 工作内容 | 贡献度 |
|---|---|---|---|
| 222000201 | 鲍仁俊 | ER图 ,数据库表设计,Controller类图、Service类图、DAO层类图的绘制,设计思路,分配任务,PPT演讲答辩,数据库设计书 | 13.15 |
| 222000329 | 甘佳欣 | 系统体系结构设计,系统功能模块(前台),系统安全,ppt制作,系统设计说明书审核与整理、数据库设计书 | 12.23 |
| 222000330 | 林诗怡 | 参与系统设计的讨论、参与数据库设计的讨论、完善和补充数据库和系统设计、参与接口讨论、设计和文档编写、参与答辩PPT制作、数据库设计书 | 12.32 |
| 222000331 | 林玥利 | 搭建接口文档结构图,编写前后台接口文档,参与数据库的设计,撰写博客,制作汇报ppt、数据库设计书 | 12.37 |
| 222000332 | 吴笛 | 接口设计、答辩PPT制作、博客撰写、数据库表的完善、数据库设计书 | 12.37 |
| 222000334 | 郑慧铃 | 整理前后端交互思路,设计接口,撰写接口文档,数据库结构修改完善,汇报ppt | 12.37 |
| 222000301 | 蔡旭阳 | 编写《系统设计说明书》引言部分、编写《数据库设计说明书》引言部分、格式、负责团队部分成员的commit | 9.18 |
| 222000409 | 黄昭彬 | 后台功能模块,权限设计 | 10.39 |
| 222000335 | 迪力亚尔 | commit 和说明书 | 5.62 |
6.3 commit记录

七、开发计划安排
7.1 开发计划时间安排
| 里程碑 | 具体事项 | 时间 |
|---|---|---|
| Alpha冲刺准备 | 购买服务器,完成域名备案;自学技术,了解小程序开发流程及相关知识,了解后端知识,懂得编写接口的具体方法。 | 4.17-4.22 |
| github团队实训 | 完成团队实训 | 4.22 |
| Alpha冲刺第一周 | 前端:完成静态页面的开发 服务器端:完成用户模块接口、想说模块接口、想问模块接口 | 4.24-4.30 |
| Alpha冲刺第二周 | 前端:设计页面逻辑,并调用接口渲染页面 服务器端:完成搜索接口、热搜接口、发布接口等其余接口开发 | 5.1-5.7 |
| 冲刺缓冲期第一阶段 | 由PM带领大家继续深入探讨用户需求,可以用发布调查问卷的方式收集用户需求 根据Alpha阶段开发的具体情况研究决定需要添加哪些附加功能(这些附加功能在项目启动初期已经被放入Beta冲刺待完善名单中) | 5.7-5.17 |
| 冲刺缓冲期第二阶段 | 确定需要添加的附加功能并补充相关接口、类图、结构图、数据库的设计 | 5.17-5.27 |
| Beta冲刺第一周 | 前端:根据测试结构完善Alpha设计阶段代码;完成补充功能静态页面 后端:编写补充功能接口 | 5.27-6.3 |
| Beta冲刺第二周 | 前端:编写补充功能的逻辑代码,渲染页面结构 后端:根据实际开发和前端的需求修改接口代码 | 6.3-6.10 |
| Beta冲刺第三周 | 测试人员对整个项目做最后的测试,并邀请一部分用户参加系统内测 修改完善内测过程中发现的问题 | 6.10-6.17 |
7.2 预期开发计划分工安排
| 学号姓名 | 角色 | 分工 |
|---|---|---|
| 222000201鲍仁俊 | 设计人员 | 负责系统结构图、数据库设计、后台后端开发 |
| 222000332吴笛 | 后端 | 负责系统结构图、数据库设计、前台后端开发 |
| 222000330林诗怡 | PM、前端 | 负责调研用户需求、跟进项目进度、前台前端开发 |
| 222000331林玥利 | 前端 | 负责系统结构图、数据库设计、前台前端开发 |
| 222000334郑慧铃 | 后端 | 负责系统结构图、数据库设计、前台后端开发 |
| 222000329甘佳欣 | 前端 | 负责系统结构图、数据库设计、后台前端开发 |
| 222000301蔡旭阳 | 代码审查 | 使用代码审计工具结合个人经验完成项目的源代码审计工作,对发现的漏洞进行审核 |
| 222000335迪力亚尔 | 代码审查 | 使用代码审计工具结合个人经验完成项目的源代码审计工作,对发现的漏洞进行审核 |
| 222000409黄昭彬 | 测试人员 | 负责在开发过程中测试,保证开发质量 |
相关推荐
《数据库课程设计》_大作业_体育项目比赛管理系统设计与开发.docx
物超所值 本次课程设计的题目是体育项目比赛管理系统,系统内容要求是:参加比赛的有多个代表团,每个代表团有多名运动员,但每个运动员只能属于一个代表团。 一个运动员可以参加多个运动项目,同时一个运动项目可由多个运动员参加。一个比赛类别有多个比赛项目,但每个比赛项目隶属于一个比赛类别。 系统的使用者分为管理人员和普通用户。他们对该数据库系统有不同的操作: 管理人员:可以对代表团以及每个运动员信息进行删除和添加操作,也可以改变代表团和运动员的编号,可以在有新的项目进行时,对信息进行添加,包括该比赛项目的比赛类别及类别编号,类别名,主管;在比赛结束时,进行比赛信息的删除。可以在不同的比赛项目进行信息的更改;总之,管理人员可以对数据库系统进行增加、删除、更新、查询。 普通用户:普通用户可以根据自己的一些基本信息来查询。比如根据自己的编号查询自己的比赛项目,比赛时间,比赛得分,比赛类别。同时还可以查询隶属于代表团的团编号,地区以及住址等等。总之,普通用户可以对数据库系统进行查询操作。
Oracle 10g 10.2.0.1 的ole db 驱动
客户端程序连接oracle数据库可以抛离安装oracle的痛苦了。感觉比oracle instant client 好用 ,里面附带了vb ado 方式连接字符串。测试连接通过 。
Teradata Database 13.0_Database Design
Teradata数据仓库设计流程,方法等
DB文件打开教程
db格式的文件识别与查看。包含文件识别工具winhex的下载地址和数据查看工具sqlitebrowser_200_b1_win的下载地址。
Java数据库dao层框架(DataBase1.0)
本框架 DataBase对数据库的JDBC的连接进行的封装,大大简化了对dao层的开发效率,用本框架只需注解(配置servlet都是可选可不选的),附上了使用文档,希望能与大家学习交流




