从0到1队——项目系统设计与数据库设计

从0到1队 团队 2023-04-14 23:17:22
这个作业属于哪个课程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层

    在这里插入图片描述

三、接口设计

  • 接口设计采用showDoc进行设计,利用团队协作功共同完成设计(Sofu接口文档)
  • 接口总览(采用博思白板的团队协作功能进行思维导图的绘制)
    分为前台和后台两部分

    在这里插入图片描述

四、系统安全和权限设计

4.1系统安全性设计

安全问题:

  • SQL注入
  • XSS
  • CSRF
  • JSON劫持

解决办法:

  • 对用户的输入以及操作的数据进行加密,防止报文明文传输
  • 对用户的输入以及操作的数据进行数据加签验签,保证数据传输过程不被篡改
  • 对登录的用户进行token授权机制
  • 使用时间戳timestamp超时机制,防止用户数据被抓包进行恶意请求
  • 数据参数合法性校验,对用户的输入进行参数校验,如发帖时的标题和内容,登录时的邀请码等等
  • 通过参数化进行查询,避免参数和查询句拼接,避免出现SQL注入
  • 避免出现XSS,在数据输入输出时做好字符转换,使恶意代码不被执行,而是解析成字符
  • 使用限流机制,防止用户恶意频繁调用接口
  • 利用黑名单机制,屏蔽用户的恶意请求

4.2 系统权限设计及说明

设计:

    1. 未认证用户:未经过认证过程,没有使用权限,无法使用该小程序
    1. 认证用户:认证用户需要通过身份验证(邀请码认证),获得使用权限
      认证用户之中又有细分是否为封禁用户[封禁的是用户的发表修改权限]:正常状态的用户支持发表内容、查询浏览内容、修改和删除内容,而被管理员封禁的用户其发表修改和删除权限被禁用只支持浏览查看内容
    1. 管理员:负责管理问答社区,包括审核、下架问答、管理用户等操作

权限说明:

    1. 提问权限:认证用户都可以提问,但需要遵守社区规范和法律法规
    1. 回答权限:认证用户都可以回答问题,但需要遵守社区规范和法律法规
    1. 评论权限:认证用户都可以对问题和回答或想法进行评论,但需要遵守社区规范和法律法规
    1. 点赞权限:认证用户都可以对问题、回答和评论进行点赞操作
    1. 收藏权限:认证用户可以收藏帖子
    1. 同问权限:认证用户可以对问题进行同问
    1. 举报权限:认证用户可以对不遵守社区规范的帖子或者评论进行举报
    1. 用户修改权限:认证用户/管理员可以修改自己的信息
    1. 数据查看权限:认证用户可以查看自己的消息、收藏、同问等数据,查看他人的回答、想法、问题
    1. 删除权限:管理员可以删除违规的问题、回答和评论
    1. 冻结权限:管理员可以冻结违规用户的账号,禁止其进行任何操作
    1. 管理员修改权限:管理员可以修改用户的信息
    1. 管理员数据查看权限:管理员可以查看所有人的数据以及统计数据

五、改进分析

  • Q1:前6位同学的贡献度过于接近,是否有绩效考核依据?

    A1:前六名同学的分数接近是因为工作完成量接近。我们小组有完善的绩效考核制度,综合考量会议参与度、具体贡献、态度、加分项这些方面。对于每次的作业,我们会先统计每个成员完成的具体任务,再采用组内成员互评的方式来得出个人分数,也就是在之前需求分析博客中看到的表格

  • 每人填写各自的工作总结

    在这里插入图片描述

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

    在这里插入图片描述

  • 组内互评规则

    在这里插入图片描述

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

    在这里插入图片描述

六、团队绩效

6.1 工作流程

  • 在阅读完作业要求后,我们先进行了一次初步的分工

    在这里插入图片描述

    -
  • 之后大家根据自己的初步分工分头完成任务

完成前台功能模块层次图

在这里插入图片描述

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

在这里插入图片描述

完成后台功能模块层次图

在这里插入图片描述

完成数据库设计

img

完成接口设计总览

img

  • 总体时间安排

    在这里插入图片描述

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郑慧铃整理前后端交互思路,设计接口,撰写接口文档,数据库结构修改完善,汇报ppt12.37
222000301蔡旭阳编写《系统设计说明书》引言部分、编写《数据库设计说明书》引言部分、格式、负责团队部分成员的commit9.18
222000409黄昭彬后台功能模块,权限设计10.39
222000335迪力亚尔commit 和说明书5.62

6.3 commit记录

img

七、开发计划安排

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黄昭彬测试人员负责在开发过程中测试,保证开发质量
...全文
1418 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

686

社区成员

发帖
与我相关
我的任务
社区描述
2023年福州大学软件工程实践课程W班的教学社区
软件工程团队开发软件构建 高校 福建省·福州市
社区管理员
  • FZU_SE_teacherW
  • aboutazhang
  • 郭渊伟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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