300
社区成员
这个作业属于哪个课程 | 软件工程实践-2023 学年-W 班 |
---|---|
这个作业要求在哪里 | 软件工程实践团队作业三 |
这个作业的目标 | 根据上次答辩的建议进行修改,同时完成概要设计和数据库设计 |
其他参考文献 | 《构建之法》 |
系统设计说明书
数据库设计说明书
系统设计和数据库设计答辩ppt
根据先前的需求分析,我们将ER图分为前台和后台两个部分,包含用户模块、店铺模块、商品模块、专业模块、聊天模块、交易信息模块、评价模块、标签模块、图片模块、购物车模块、键模块、后台人员模块、退款信息模块、审核信息模块、举报信息模块、身份模块、权限模块。
商品实体
专业实体
聊天实体
交易信息实体
评价实体
标签实体
图片实体
购物车实体
键实体
后台人员实体
退款信息实体
审核信息实体
举报信息实体
身份实体
权限实体
店铺
店铺表:id:店铺的唯一标识。name:店铺名称。user_id:关联user表,表示店铺的拥有者。
商品管理
商品表:id:商品的唯一标识。name:商品的名称。description:商品的详细描述,包括品牌、新旧程度、功能特点等。price:商品的售价。moderate_id:与users表关联的外键,表示商品所属的用户。shop_id:购买者的id。is_active:商品是否在出售。
举报
举报表:id:举报信息的唯一标识。reporter_id:提出举报的用户id。reason:举报的理由。generate_time:提出举报的时间。handle_time:处理时间。user_id:被举报用户的唯一标识。commodity_id:表示被举报的商品的唯一标识。review_id:表示被举报的评论的唯一标识。result_id:关联report_result表,表示处理的结果。
后台用户
后台用户表:id:用户的唯一标识。name:用户的姓名。email:用户的电子邮件地址,用于账号注册、找回密码等。phone:用户的电话号码,便于联系或验证身份。password:用户的加密密码,确保账号安全。image_id:连接image表,表示用户头像。
交易
交易表:id:交易订单的唯一标识。trade_time:交易时间。trade_place:交易地点。trade_status:交易状态。user_id:用户的唯一标识。commodity_id:关联商品表,商品的唯一表示。
退款
退款表:id:退款申请的唯一标识。generate_time:申请时间。handle_time:处理时间。status:当前状态。trade_id:关联交易表,交易的唯一标识。backend_user_id:关联后台用户表,表示处理该申请的后台用户。
评论
评论表:id:评论的唯一标识。friendliness:友好度。credit:信用分。from:评价人。to:被评价的人。content:评价内容。star:评价的等级。time:评价的时间。trade_id:关联trade表,表示被评价的交易。moderate_id:关联moderate表,表示处理该评论的后台用户。
跨站请求伪造 (CSRF):
CSRFSecurity类:启⽤ CSRF 防护,在 Spring Boot 应⽤程序的配置中,可以通过配置csrf().disable() 来禁⽤ CSRF 保护,或者使⽤默认的启⽤ CSRF 保护。
跨站脚本攻击 (XSS):
InputSecurity、OutputSecurity类:对⽤户输入进⾏有效的输入验证和输出转义,确保⽤户输入的内容不会被作为原始 HTML 渲染。具体做法:使⽤合适的 HTML 编码来转义⽤户输入,例如将 < 替换为 <,将 > 替换为 >。在前端和后端都实施输入验证,限制⽤户输入的内容,避免恶意脚本注入。
Session 攻击、会话劫持:
SecurityConfig类:可以配置会话管理策略来限制会话的有效性和安全性,例如设置会话超时时间、启⽤会话固定保护、禁⽤ URL 重写等。
SQL 注入:
SQL注入是一种常见的网络安全攻击技术,攻击者利用该技术向应用程序的数据库发送恶意的SQL查询,以执行未经授权的操作或获取敏感数据。
解决方案:使⽤ MyBatis 的 @Param 注解来传递参数。如下图所示。
DDoS 攻击:
使⽤防火墙、负载均衡器等网络安全设备来识别和过滤恶意流量。
IPBlacklistFilter类:使⽤流量限制、IP 黑名单、基于规则的访问控制等技术来限制对系统的访问。
考虑使⽤云服务提供商的 DDoS 防护服务,以及使⽤ CDN(内容分发网络)来分散和缓解攻击流量。
密码加密
流程如下:
CORS问题
首先在后端配置类中添加CorsFilter类来允许所有的请求来源、请求⽅法和请求头,并且允许带有认证信息的请求。
和安全性不同的是,健壮性是出了错误或者异常,程序仍然能够进⾏下去的能力。
异常处理:
系统在遇到异常情况时记录异常信息并返回适当的错误信息给前端。
数据库连接池配置:
合理配置数据库连接池,提高管理数据库连接资源的有效性
数据验证:
在控制器层或服务层对输入数据进⾏有效性验证,避免恶意输入或不合法数据对系统造成
影响。
日志记录:
记录系统运⾏时的日志⽤于排查问题、监控系统运⾏状态,并及时发现异常。
数据库事务管理:
使⽤事务管理功能来确保操作的原子性和⼀致性。
角色定义:
审核员:负责审核发布的商品信息和审核⽤户发布的评论。
客服:处理⽤户的举报和退款,并且与客户进⾏交流。
管理员:拥有最高权限,可以查看所有数据、管理⽤户和分配权限。
权限定义:
商品审核:对⽤户提交的商品信息进⾏审核
评论审核:对⽤户在交易或者商品下发表的评论进⾏审核
处理退款:对⽤户提交的商品退款进⾏审核和处理
处理举报:对⽤户提交的关于商品、评论或者⽤户的举报进⾏审核和处理
聊天:对⽤户客服请求与⽤户进⾏交流
查看数据:可以查看平台所有的数据,包括交易信息、⽤户信息、商品信息等
管理⽤户:可以手动新增⽤户或者删除⽤户
分配权限:可以管理后台人员的权限
数据库表设计:
⽤户表(user):id(主键)username(⽤户名)password(密码)role_id(外键,关
联到角色表)
角色表(role):id(主键)role_name(角色名称)
权限表(power):id(主键)permission_name(权限名称)
⽤户角色关联表(user_role):user_id(外键,关联到⽤户表)role_id(外键,关联到
角色表)
角色权限关联表(role_power):role_id(外键,关联到角色表)power_id(
外键,关联到权限表)
实现⽤户认证和授权:
使⽤ Spring Security 进⾏⽤户的身份认证和授权,结合 JWT 进⾏ token 管理和⽤
户会话管理。
配置合适的认证提供者、⽤户DetailsService,以及安全过滤器链等来实现⽤户的登录
认证和权限控制。
编写业务逻辑:
根据⽤户的角色和权限信息,编写业务逻辑来限制⽤户对资源的访问。例如,在发布
商品时,普通⽤户可以发布商品,但是后台⽤户和管理员⽤户不具备此权限。
管理界面:
提供管理界面供管理员进⾏⽤户管理、查看数据、分配权限的操作,确保管理员⽤户
能够⽅便地管理系统。
审核与优化:
审核权限设计⽅案,确保安全性和完整性,对于可能存在的安全漏洞和权限缺失进⾏
修复。
根据实际应⽤情况对权限系统进⾏优化和调整,提升系统的性能和⽤户体验。
定期维护:
定期对权限系统进⾏维护和更新,包括添加新的角色和权限、移除过期或无⽤的角色
和权限、修复已知的安全漏洞等。
确保权限系统与业务需求保持同步,并及时响应⽤户的反馈和需求变化。
A:我们更新了对应的类图:
一个商品具有多个CompareValue,如原型中的下图中的表,Commodity含有多个CompareValue,这些Pair的实例依次是:
当前商品的CompareValue对象包含: | key | valueString |
---|---|---|
一个CompareValue对象 | 价格 | ¥60 |
一个CompareValue对象 | 卖家信用分 | 4.2 |
一个CompareValue对象 | 卖家友好度 | 4.7 |
用户在ShoppingCart进行了商品多选之后,执行compareCommodities操作,ShoppingCart新建一个CompareTable对象,然后遍历所有选择的商品,将这些商品的CommodityValue进行连接,形成一个比较表格,然后找出所有的key,为每一个key生成一个CompareItem。例如将所有key="价格"的value放在一行里。
如果没有对应的value(例如有一个商品没有key=“使用程度”的CompareValue,但另外一个商品有key=“使用程度”的CompareValue,连接之后会出现空白),则显示一个跳转至聊天界面的超链接,此时买家可以联系卖家填充信息,填充的信息将会放入商品本身的CompareValue里,即使当前买家没有购买意愿,下一位买家也能看到当前买家提醒卖家填充的信息,实现信息的高效交流。
A:在需求分析的过程中,我们有考虑,闲鱼等二手交易平台本身是不配备批量交易(例如:购物车)的功能的,可能只有“喜欢列表”这个暂存平台。但在原型设计过程中,我们考虑到,对于一部分购物发烧友而言,购物车确实能够满足他们的需要,而且维护这个功能也比较简单,所以便保留了购物车这个内容。但是后续忘记更新类图了,因此,我们对类图进行了以下修改:
新增了购物车(ShoppingCart)这个类,组合到前台用户,支持选择商品、进行交易、删除商品、货比三家等操作。
A:是的,这样可能会模糊核心用况,同时让类图更难理解,因此我们修改了前台类图,删去了不重要的浏览界面等用况,大大减少了include嵌套。以下是修改后的结果:
A:我们修改了页面,虽然页面仍然是浮动的,但是遮挡的问题减少了很多。当鼠标没有在导航栏上时,中间的logo消失。
A:货比三家一定要有一个暂存区,而我们首先想到的是购物车,在了解到一部分用户的需求后,我们进行了一次调研,调研结果如下:
贡献度通过OKR(60)+项目额外工作(20)+团队额外工作(20)确定。
成员 | 第一轮分数(5) | 第二轮分数(5) | 贡献度 |
---|---|---|---|
熊桂根 | 57.33333333 | 56.83333333 | 15.21% |
陈智翔 | 70.66666667 | 57 | 17.00% |
陈卓杨 | 57 | 57 | 15.18% |
戴聪 | 57.33333333 | 57.16666667 | 15.25% |
蓝有润 | 76.66666667 | 90.33333333 | 22.24% |
谢凌云 | 56.66666667 | 56.83333333 | 15.12% |
总计 | 375.6666667 | 375.1666667 |
成员 | 分工 | α冲刺 | 更新讨论 | β冲刺 |
---|---|---|---|---|
陈卓杨 | 项目经理 | 与开发人员沟通,确保用户界面符合需求 协调团队工作,确保项目按时完成 参与文档和ppt设计 | 组织更新会议 调研用户反馈 整理归纳更新内容 | 与开发人员沟通,确保用户界面符合需求 协调团队工作,确保项目按时完成 参与文档和ppt设计 |
戴聪 | 前端 | 负责用户界面、登陆、首页、交易模块的前端开发与设计 | 从前台界面的角度,定位优化的空间 进行vue的高阶学习 | 对于用户界面、登陆、首页、交易模块,修复已有的bug,优化代码结构 实现后续的更新内容的前端部分 |
谢凌云 | 前端 | 负责客服、审核、管理员、聊天模块的前端开发与设计 | 从后台界面的角度,定位优化的空间 进行vue的高阶学习 | 对于客服、审核、管理员、聊天模块,修复已有的bug,优化代码结构 实现后续的更新内容的前端部分 |
熊桂根 | 后端 | 负责用户界面、登陆、首页、交易模块的后端开发与设计 | 寻找数据库和算法的优化空间 学习springboot的高阶代码 | 对于用户界面、登陆、首页、交易模块,修复已有的bug,优化代码结构 优化数据库结构和算法 实现后续的更新内容的后端部分 |
蓝有润 | 后端 | 负责客服、审核、管理员、聊天模块的后端开发与设计 | 寻找数据库和算法的优化空间 学习springboot的高阶代码 | 对于客服、审核、管理员、聊天模块,修复已有的bug,优化代码结构 优化数据库结构和算法 实现后续的更新内容的后端部分 |
陈智翔 | 测试 | 负责对前后端的测试,确保各项功能正常运作 测试评价举报、登陆、首页、聊天等模块,报告错误和问题 在项目前期,尽可能参与前后端的设计 | 根据软件测试结果,找到项目潜在的bug 深入学习软件质量测试 | 负责对前后端的测试,确保各项功能正常运作 测试新的模块,报告错误和问题 在项目前期,尽可能参与前后端的设计 |
数据流图中的表示数据存储的图例有误,与外部实体一样了,应该是用双划线表示详见:https://cloud.tencent.com/developer/article/2247936%EF%BC%8Chttps://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E6%B5%81%E5%9B%BE/4136477?fr=ge_ala
OKR方案很赞!
博客写的很不错,作业完成度很高,继续加油