松果星球委员会——项目系统设计与数据库设计
这个作业属于哪个课程 | 2019学年02学期单红老师软件工程实践 |
---|---|
这个作业要求在哪里 | 团队作业第二次——团队Github实战训练 |
团队名称 | 松果星球委员会 |
这个作业的目标 | 完成项目系统设计和数据库设计 |
作业正文 | 本博文 |
其他参考文献 | 构建之法 |
团队项目的开发计划安排
时间区间 | 任务 | 完成状态 |
---|---|---|
3.3->3.7 | 完成组队、团队展示 | 已完成 |
3.3->3.10 | 确定项目并展示 | 已完成 |
3.15 | 团队第二次作业——团队Github实战训练 | 已完成 |
3.18->3.24 | 完成项目原型设计和需求分析报告 | 已完成 |
3.24->3.30 | 完成需求规格说明书 | 已完成 |
3.31->4.7 | 完成基本数据库设计 | 已完成 |
4.8->4.16 | 完成注册登录、发布动态及查看动态功能,前端基本页面(静态)及框架搭建 | 未完成 |
4.17->4.25 | 完成对他人动态的点赞(评论和关注作为保留功能)以及虚拟角色互动功能 | 未完成 |
4.26->5.3 | 完成搜索、分类查看以及消息功能 | 未完成 |
5.4->5.12 | 完成个人资料编辑功能(包括修改并保存昵称、简介、性别、年级、城市等个人资料) | 未完成 |
5.13->5.21 | 完成设置功能(绑定教务处信息、检测更新、清理缓存、注销账号、退出登录,同时课查看用户隐私说明和关于松果生活) | 未完成 |
5.22->6.1 | 完善项目(如成就系统、消息等保留功能) | 未完成 |
团队分工安排
学号 | 职责 |
---|---|
221701311 | iOS客户端 |
221701325 | Android客户端 |
221701410 | 后端 |
221701231 | 前端、后端 |
221701213 | 后端 |
131700127 | 后端 |
221701129 | 后端 |
221701433 | 前端 |
221701110 | 后端 |
系统设计与数据库设计
软件总体结构设计
采取MVC架构,也是事实上的标准架构。如果你不知道要用什么架构,那就用它。这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口通信。虽然没有明确约定,软件一定要分成多少层,但是四层的结构最常见。
表现层(presentation):用户界面,负责视觉和用户互动使用AndroidStudio进行安卓端开发;Xcode进行iOS开发
业务层(business):实现业务逻辑
持久层(persistence):提供数据,SQL 语句就放在这一层,使用spring boot框架进行后端开发,适合敏捷开发,学习成本低
数据库(database) :保存数据,使用MySQL作为数据源,简单易用,免费。
功能模块层次图
松果生活客户端的主要功能有:主题论坛功能模块、设置功能模块、账号管理功能模块、成就功能模块和虚拟角色功能模块,其中又包括多个子功能模块,如下图示例:
松果生活后台的功能主要有:系统信息模块、文章数据模块、用户数据模块、公告系统模块以及信息列表模块,其中又包括多个子功能模块,如下图所示:
类图
设计思路如下:
由原始需求提取出几大模型 如用户、文章、点赞、评论、标签等 再构建这几大模型的关系
采用单例设计模式 将网络请求、图片操作、设置操作等操作抽象出来 并直接服务于上层
采用MVC架构模式 刚才提到的服务于上层即为C层,C层写将一些如网络请求请求下来的数据和模型粘合到一起 并展示到视图上
V层由于比较灵活 本类图中并没有明显体现 还需结合具体实现来操作
ER图与数据库表结构设计
表结构设计参考如下属性图进行设计
表与表之间的联系 参考如下E-R图
RBAC部分
用户部分
文章部分
系统权限管理
对于权限管理 我们采用RABC对系统进行权限管理
在系统中,每个身份应该对应有不同的权限,在权限的限制下,可以访问自己需要且合法有效的资源。根据每个身份拥有的不同权限,可以对APP的功能进行使用,这种权限的存在可以大大避免数据的泄露,同时又可以满足用户对于APP功能的需求。
其实所谓的权限信息就是不同身份的用户对于系统数据拥有不同程度的使用权利,他们之间是一种上下级的关系,更准确的说是一种树状结构,从上到下依次是:
系统管理员
用户管理员
普通用户、游客。
而具体的权限有:系统管理、用户管理、文章管理。这里的系统管理拥有全部且绝对的权限,而用户管理包括新增用户、删除用户、修改用户、查看用户。而文章管理就是对发布的文章进行增删改查操作。具体如下:
系统管理
用户管理
新增用户
删除用户
修改用户
查看用户
文章管理
发表文章
删除文章
修改文章
查看文章
评论文章
点赞
评论
其中还包括对于权限的分配,一个是可访问,一个可授权。可访问是只能对文章等信息进行相应操作,不能分配权限给其他用户,而可授权则可以分配权限。
①系统管理员
系统管理员在整个系统中拥有的权限从某种意义上来说是最高的,拥有至高无上的权限,他可以设置用户管理员,赋予用户管理员用户管理和文章管理的权限,同时也可以赋予用户管理员等赋予其他角色身份权限的权限。这种身份相当于树状结构的根节点。
②用户管理员
顾名思义,用户管理员就是对用户信息进行相关的操作,对用户进行管理,拥有权限的用户管理员可以对用户进行新增用户、删除用户、修改用户、查看用户等操作,在特定情况下分担了系统管理员的压力。同时,用户管理员还可以对用户发表的文章等进行增删改查等操作,避免一些错误信息或者非法信息的发表,在一定程度上可以限制用户,避免非法用户的使用。同时如果拥有赋予其他用户权限的权限,他还可以对普通用户进行权限的限制,比如不允许他们在一段时间内发表文章,或者不允许他们进行评论等功能。同时用户管理员在系统管理员的角度来看,也可以是一种普通用户(没有多余的权限)。
③普通用户
普通用户是APP使用的主要人员,他们可以拥有自己的权限信息,也可以拥有自己的用户信息,可以修改自己的相关信息,还可以有自己的发表文章等的详细记录。普通用户(不被禁止权限的情况下)在我们这个系统中,可以发表文章,对自己发表的文章进行修改,删除,查看等操作。还可以对其他用户的文章进行评论和点赞等操作。
④游客
游客在我们这款APP中没有权限,不能评论,不能点赞,不能发表文章等,必须要进行登录。
系统安全设计
后端设置过滤机制,使用过滤器对没有注册登录用户的请求进行拦截,不予放行,防止非法用户恶意操作,只有经过常规途径注册并登录的用户才能使用系统进行数据操作。登陆注册时对电话号码,验证码和密码等信息进行严格验证,只有信息合法通过验证才能注册或登录成功。
后台设置拦截器防止同一IP在短时间内进行大量的恶意请求,造成服务器资源紧张,瘫痪的现象。
后端对前端提交的数据进行校验,防止有用户通过非正规途径使用恶意的数据包对服务器发送请求造成服务器端出现异常。
数据库安全性,当数据库增删改操作异常时,对当前修改请求进行撤回,保证数据的安全性和完整性。
对登录用户,游客用户和管理员进行权限分配,不得越权操作,例如游客不能进行点赞操作。
对数据库进行数据操作时需要注意以下几个安全问题:
访问安全 、网络安全 、传输安全 、备份安全 、数据安全
对数据库进行定时维护。
根据提出的问题所进行的改进
1.推荐算法
关于推荐算法,我们会记录用户常看的文章标签类型,根据相似度高的用户进行对方的内容推荐,实现推荐用户可能感兴趣的内容。
2.与同质App的区别
相比小红书和大众点评之类的亮点,我们不仅有成就系统增强用户黏性,还有虚拟角色可以提供更多的可玩性,以弥补我们用户量较少的缺点。
3.用户需求
需求方面我们正在优化类图和部分功能。本博文所发类图即为优化后的类图
本次作业的工作流程与组员分工
1.工作流程
由组长阅读要求 并下发委派任务
在完成任务时遇到的一些问题在群内交流讨论进行解决
最后在全部工作完成时进行汇总
2.组员做出的贡献
学号 | 工作内容 | 贡献度 |
---|---|---|
221701311 | 类图设计、博客撰写 | 10 |
221701325 | 系统设计说明书设置模块和论坛模块,ppt制作 | 14 |
131700127 | 系统安全,系统设计说明书存储分配及出错处理 | 10 |
221701213 | 系统设计说明书功能模块中部分算法设计 | 10 |
221701231 | 系统设计说明书后台数据展示、信息列表、公告系统模块 | 13 |
221701410 | 数据库设计说明书中表结构设计、ER图 | 13 |
221701129 | 权限设计相关内容,部分权限表 | 10 |
221701110 | 整合文档 | 10 |
221701433 | 前端部分设计 | 10 |
附加材料
Github团队仓库链接
松果星球委员会_系统设计说明书.pdf
松果星球委员会_数据库设计说明书.pdf
松果星球委员会_系统设计和数据库设计答辩ppt.pdf