团队作业四——数据库设计和系统设计
团队作业四
这个作业属于哪个课程 | 2021春软件工程实践W班 (福州大学) |
---|---|
这个作业要求在哪里 | 团队作业四 |
这个作业的目标 | 团队项目的系统设计与数据库设计、制定计划和分工、完善类图和原型 |
其他参考文献 | 《构建之法》 |
项目开发计划时间安排
时间 | 产出 | 里程碑 |
---|---|---|
阶段1(4.18-4.23) 数据库设计和系统设计 |
进行数据库设计及系统设计 类图完善 原型修改 项目计划时间及分工 自学技术 |
准备阶段完成 |
阶段2(4.24-4.30) Alpha冲刺第一周 |
制定代码规范 微信登录授权 实现"首页"基础功能 测试首页基础功能 实现"发布"功能 测试发布功能 |
|
阶段3(5.1-5.7) Alpha冲刺第二周 |
实现"个人主页"基础功能 测试个人主页基础功能 准备答辩事宜 |
Alpha版本发布 |
阶段4(5.8-5.14) 软件评测第一周 |
进行软件测评 | |
阶段5(5.15-5.21) 软件评测第二周 |
进行软件测评 准备答辩事宜 |
软件测评阶段完成 |
阶段6(5.22-5.28) |
复习期末考相关内容 | |
阶段7(5.29-6.4) Beta冲刺第一周 |
Alpha版本细节调整 实现"名片"功能 实现"评价"功能 实现后台登录 测试以上功能 |
|
阶段8(6.5-6.11) Beta冲刺第二周 |
实现"举报"功能 实现"后台首页"功能 实现"后台审核举报"功能 测试以上功能 |
|
阶段9(6.12-6.18) Beta冲刺第三周 |
实现后台二手、任务、活动模块内容 测试以上功能 Beta版本收尾 准备答辩相关事宜 |
Beta版本发布 |
项目开发计划分工安排
前端分工
阶段 | 负责内容 | 负责人 |
---|---|---|
α冲刺 | 前台登录模块 | 王雨 |
前台首页模块 | 潘紫盈、吴铠嘉 | |
前台发布模块 | 黄明亮 | |
前台个人主页模块 | 王雨、邵涵洋、李建雄 | |
β冲刺 | 个人名片 | 王雨 |
前台评价 | 潘紫盈、吴铠嘉 | |
前台举报 | 李建雄、吴铠嘉 | |
后台登录模块 | 王雨 | |
后台首页模块 | 王雨 | |
后台二手、任务、活动模块 | 黄明亮、邵涵洋、潘紫盈 | |
后台举报审核 | 李建雄、吴铠嘉 |
后端分工
阶段 | 负责内容 | 负责人 |
---|---|---|
α冲刺 | 发布模块 | 王炜嘉 |
搜索、信息展示模块 | 张思萍 | |
个人信息展示 | 郑耀烽 | |
项目架构、安全防护、小程序登录 | 张晨星 | |
β冲刺 | 后台流量监控模块 | 张思萍 |
用户举报与反馈、评价信用分模块 | 郑耀烽 | |
公众号消息推送 | 张晨星 | |
后台内容监管模块 | 王炜嘉 |
相关设计图及设计思路
体系结构设计
本项目采用面向对象体系结构,后端项目使用MVC架构。
项目设计过程中遵循如下规则:
1.复用策略
我们将业务实体均进行了不同程度的抽象,程序设计面向抽象而不面向接口。
2.分而治之
把整个项目分成前台用户小程序端和后台管理Web端,各端功能分为多个模块,各个模块追求独立性,遵循高内聚低耦合的原则。
功能模块层次图
设计思路:
根据原型界面,结合需求分析阶段的功能分析来划分模块。同时遵循页面遵循从下往下,从左至右开始梳理,页面内容较多时,划模块进行区分的原则。主要的目标是梳理当前页面。
前台
后台
ER分析图
设计思路:
根据需求分析确定所需要的数据实体和相应的数据集合,再结合实际应用场景对实体之间的关系进行讨论分析,最后根据二手物品,任务委托,活动三类进行模块划分绘制er图,为数据库设计提供辅助的概念模型。
分开展示版本
1.二手物品模块
2.任务委托模块
3.活动信息模块
4.用户信誉模块
表结构设计
设计思路:
在建表的时候我们把er分析得到的每个表以及每个字段构建成数据库中的表,字段的命名以及索引的建立参考了阿里巴巴代码规范,同时,我们为每个有需要的表都设计了外键,保证关联的那个表发生修改时,对应的表都能级联修改。我们将部分字段一样的表拆分成了三个不同的表,为了增加语义以及可以设置外键,也增强了可维护性。同时,对于一些需要进行模糊查询的字段,如标题、内容、标签等,添加了全文索引以提高效率。
1.activity_category
2.activity_enshrine
3.activity_image
4.activity_info
5.activity_report_message
6.activity_tag
7.admin
8.credit
9.goods_category
10.goods_enshrine
11.goods_evaluation
12.goods_image
13.goods_indent
14.goods_info
15.goods_report_message
16.goods_tag
17.system_message
18.tag_of_activity
19.tag_of_goods
20.tag_of_task
21.task_category
22.task_delegate
23.task_enshrine
24.task_evaluation
25.task_information
26.task_report_message
27.task_tag
28.user
拓扑图
完整版——可能看不清
分开展示版本
设计用例图(答辩修改后)
设计类图(答辩修改后)
1.设计思路:
一个用户有五个列表,最顶层是列表接口,再根据出售状态跟任务状态,继续抽象出二手列表与任务列表抽象类,二手列表根据出售状态派生出二手物品信息列表与二手物品订单列表,当出售状态为在售则物品信息添加到二手物品信息列表,当出售状态为已售则生成对应订单项并加入二手物品订单列表,同时在二手物品信息列表移除对应的物品信息;任务列表根据任务状态派生出任务项列表与任务信息列表,当任务状态为未接受则任务信息添加到任务信息列表,当任务状态为已接受则生成对应任务项并加入任务项列表,同时在任务信息列表移除对应的任务信息。上述移除物品信息列表与任务信息列表中的条目的目的:当物品已售或任务已接受时,用户不应该看到这些买不到的物品或者已被其他人接受的任务。活动项主要是发布方发布信息起到宣传作用,没有接受者,所以没有活动状态,不再添加抽象层。
2.设计思路:
用户有三个收藏夹,分别是二手物品信息收藏夹,任务信息收藏夹,活动收藏夹,都实现了收藏夹接口,举报消息跟系统消息都继承消息类。用户有系统消息收信箱,管理员有举报消息收信箱,都实现了收信箱接口,一个用于接受系统推送的信息,一个用于接受用户发送的举报信息。管理员可以查看与删除二手物品信息、任务信息和活动信息
数据流图
设计思路:
顶层数据流图通过分析用户与系统交互中互相传递的数据得到,底层数据流图通过对顶层数据流图的进一步细化得到,更直观快速的了解到系统的数据流的流动方式
数据流顶层图
数据流底层图
系统安全和权限设计
1.注入问题
输入信息时对特殊字符如
<script>
标签等进行转义,防止 XSS注入;
在持久层的sql处理时对动态sql语句进行预编译,防止sql注入方式。
2.权限问题
使用安全框架(如shiro、springsecurity)对用户权限进行管理,用户无法访问超出自身权限范围的接口。
3.会话被窃取问题
用户在登录后,由服务端生成Token信息返回前端;对于需要登录或认证后才能访问的接口,发送请求时需要在请求头携带上这个Token认证信息,通过验证后才能访问,就算已认证后的会话被劫持,缺少Token信息,依然无法通过后端的拦截器。
4.数据库问题
防止用户直接操作数据库 用户只能通过给定的外部接口对数据库进行操作。
5.密码问题
后台管理员的账号密码储存在数据库里,密码传输前,前端进行简单的哈希加密,后端再进行哈希加盐加密。
Q&A及改进
原型设计
1.小程序端的首页只有一个搜索框,能否添加筛选功能?
我们思考了一下老师助教们提出了建议,决定在首页添加筛选功能,用户可以根据类别、发布日期等相关属性进行筛选,以方便用户们快速检索。
2.用户发布任务时能否添加自定义标签?
我们思考了一下,最终决定在发布页加入自定义标签。并将原有的后台定义的标签转化为类别(只能由后台定义),在搜索时可进行筛选。而标签(包含自定义标签)可在搜索框进行模糊查询。
3.在委托任务被用户接受后,若该用户因为个人原因,选择放弃该委托,这样的功能能否实现?
我们考虑让双方进行协商之后,由任务发布方或委托方进行取消委托,取消后仍会生成订单项,若本次取消行为存在单方面违约现象,可以通过给予对方差评,系统将会对其扣除信誉分。
4.其余自查更改
- 二手物品、活动宣传发布时均改为可上传多图,并在首页对第一张图片进行展示,在详情页用轮播图形式展示多图。
- 卖家、委托人信息页增加展示
信誉分
和好评、差评数量
的部分。 - 在个人主页增加
生成名片
按钮,以生成个人名片链接(不包含发布、委托、活动、收藏、关于我们
。 - 增加评价列表页,点击好评或差评时可跳转。
需求分析
1.前一次有提到将任务按照类别进行分类,目前的类图支持这个功能吗?类似的,活动也是如此,是否支持?
本次修改后对标签、类别进行了区分,二手、任务、活动均支持了按照类别进行分类这个功能。
2.需求类图建议适当泛化,以留出将来扩展的余地。
本次修改对于用户相关类图添加了列表接口、二手列表和任务列表的抽象层,同时添加了物品信息列表和任务信息列表类,以根据状态进行区分。
对于管理员相关类图添加了收信箱、收藏夹接口。把收信箱分为举报消息收信箱和系统消息收信箱,同时增加了抽象消息类。把收藏夹分为二手物品信息收藏夹、任务委托信息收藏夹、活动信息收藏夹三类。
3.建议用例图进行分层描述
已经将用例图进行修改。(在上方有体现)
工作流程及分工
工作流程
4.19日下午后端小组初步商讨数据库设计
4.19日晚全体成员进行线下会议商讨本次作业,对原型提出修改建议,并明确分工。
之后各司其职,进行线上讨论及复审修改。
分工
学号 | 姓名 | 工作内容 | 贡献度 |
---|---|---|---|
221801308 | 王雨 | 小组讨论会议记录、博客撰写、项目预期开发计划时间安排、开发分工安排、功能模块层次图、QA部分、评审表制作、学习新技术 | 10% |
221801327 | 黄明亮 | 参与小组讨论、PPT宣讲及答辩、学习新技术 | 8.5% |
221801301 | 邵涵洋 | 参与小组讨论、原型修改(前台增加名片、新增自定义类别选项、名片的分享、相关页面的跳转、页面布局调整)、学习新技术 | 8.5% |
221801304 | 吴铠嘉 | 参与小组讨论、改进类图,整合文档 | 9.5% |
221801326 | 王炜嘉 | 参与数据库、接口设计讨论、修改用例图、数据库设计、数据库搭建、接口文档编写、数据字典、整理接口文档 | 12% |
221801124 | 张思萍 | 参与数据库、接口设计讨论、接口文档编写、数据库搭建、数据库设计、数据字典 | 11% |
221801328 | 潘紫盈 | 参与小组讨论、答辩PPT制作、学习新技术 | 8.5% |
221801331 | 张晨星 | 接口设计、数据库设计会议记录、文档编写:体系结构设计、健壮性、安全性、接口规范、返回数据格式、数据库安全 | 12.5% |
221801420 | 郑耀烽 | 参与数据库、接口设计讨论、编写部分接口文档、er图、数据流图 | 11% |
221801414 | 李建雄 | 参与小组讨论、原型修改(前台评论列表,部分名片,二手详情页轮播图,后台退出登录,类别改动)、学习新技术 | 8.5% |
github链接
github团队仓库链接:点击进入github仓库
那你能帮帮我吗_系统设计说明书:github系统设计说明书、博客园系统设计说明书下载链接
那你能帮帮我吗_数据库设计说明书:github数据库设计说明书、博客园数据库说明书下载链接
那你能帮帮我吗_系统设计和数据库设计答辩PPT:github PPT、博客园PPT下载链接