目录

  • 引 言
  • 1 可行性分析
    • 1.1 技术可行性分析
    • 1.2 经济可行性分析
    • 1.3 社会可行性分析
  • 2 需求分析
    • 2.1 功能需求
      • 2.1.1 系统用例图
      • 2.1.2 用例规约
      • 2.1.3 领域对象模型
      • 2.1.4 状态图
    • 2.2 非功能需求
      • 2.2.1可靠性需求
      • 2.2.2安全性需求
      • 2.2.3开发性需求
      • 2.2.4性能需求
    • 2.3 数据库概念结构设计
      • 2.3.1数据实体描述及E-R图
      • 2.3.2数据库概念模型
  • 3 总体设计
    • 3.1 系统架构设计
    • 3.2 功能模块设计
    • 3.3 系统流程图设计
    • 3.4 系统类图设计
      • 3.4.1边界类图
      • 3.4.2控制类图
      • 3.4.3实体类图
    • 3.5 核心模块顺序图设计
    • 3.6 数据库逻辑结构设计
      • 3.6.1关系模式设计
      • 3.6.2关系模式规范化
      • 3.6.3数据库逻辑模型
      • 3.6.4数据库外模式设计
  • 4 详细设计
    • 4.1 用户界面设计
    • 4.2 数据库物理结构设计
      • 4.2.1数据库表结构设计
      • 4.2.2数据库表索引设计
    • 4.3 实体类详细设计
    • 4.4 功能模块详细设计
  • 5 测试
    • 5.1 测试计划
      • 5.1.1测试目的
      • 5.1.2测试范围
      • 5.1.3测试进度计划
      • 5.1.4测试环境和配置
      • 5.1.5测试人员
      • 5.1.6测试类型
    • 5.2 测试方案

引 言

  生活中,我们经常遇到这样的情况。好友的生日到了,可是我们却忘记了引发不必要的尴尬。作为社团部长,要照顾每个小干的感情,帮他们过生日,可小干人数实在太多了,我们记不过来。这时候,要是有一个简单便捷的软件帮我们解决这个问题,一个能受到大家的欢迎。
  基于此背景下,群组生日提醒系统设计孕育而生。这是一个基于微信小程序平台的简单系统。用户可以微信授权登录小程序,建立群组,邀请成员进群组。这样,当一个成员的生日即将到来时,一般为生日前7天,群组内的除了寿星之外的每一个成员都会收到系统推送的小程序微信通知,这样,再也不怕整个社团都忘了某个成员的生日这种尴尬的事情发生了。同时,用户也可以添加自己的特别关心,不错过每一个好友的生日。
以下为本系统的详细设计。

1 可行性分析

1.1 技术可行性分析

  系统可主要依托于微信小程序平台,这样方便推送消息提醒。另一方面,也有利于借助微信便捷增加用户及组群分享。技术上,后台代码可由java开发,项目使用springboot,交由maven管理,数据库方面使用mysql,及访问层使用mybatis框架。前端由微信小程序提供的标记语言开发。消息推送使用微信小程序提供的接口,数据库也可使用微信小程序提供的云数据库。

1.2 经济可行性分析

  微信小程序平台免费面向开发者,不过云数据库可能需要购买,总体开发经济成本很低。
  同时项目开发完成后,免费面向公众开放,可取得的经济效益较低。不过如果流量较大的话,可由广告获取较可观经济效益。

1.3 社会可行性分析

  市场方面个人认为这一小程序准确满足了人们的需求,具有较大市场。合理开发及运营应该能取得用户喜爱并推广。
  政策方面只要遵守微信小程序开发者守则即可顺利上线运营。

2 需求分析

2.1 功能需求

2.1.1 系统用例图

2.1.2 用例规约

用例编号 SRTX001
用例名 登录
用例描述 微信用户登录群组生日提醒小程序
参与者 微信用户
前置条件 无
后置条件 获取信息更新进数据库
基本路径 1.用户进入小程序
2.点击授权微信登录
3.小程序通过接口获取用户信息并更新进数据库
4.登录成功,微信用户已获取小程序身份

用例编号 SRTX002
用例名 管理个人信息
用例描述 微信用户管理个人在小程序记录的信息
参与者 微信用户
前置条件 登录小程序
后置条件 获取信息更新进数据库
基本路径 1.用户登录小程序
2.进入个人信息页面
3.管理各种信息(生日,头像,昵称)
4.小程序更新进数据库

用例编号 SRTX003
用例名 特别关心
用例描述 微信用户添加管理特别关心,不用在同一群组也会提醒生日
参与者 微信用户
前置条件 登录
后置条件 获取特别关系对象的信息添加进数据库
基本路径 1.用户登录小程序
2.进入特别关心界面
3.管理特别关心,包括添加,修改信息,删除特别关系
4.小程序更新数据进数据库

用例编号 SRTX004
用例名 添加群组
用例描述 用户新建提醒群组
参与者 微信用户
前置条件 登录
后置条件 获取群组信息添加进数据库
基本路径 1.用户登录小程序
2.点击新建群组
3.设置群组信息
4.小程序添加进数据库

用例编号 SRTX005
用例名 邀请或管理成员
用例描述 微信用户邀请成员进群组,或管理群组成员
参与者 微信用户
前置条件 登录,邀请成员需自己在群组,管理成员需为群组建立者
后置条件 小程序获取信息添加进数据库
基本路径 1.用户登录小程序
2.进入所在群组
3.邀请成员,生成小程序分享链接分享到微信群或私聊
4.管理成员,在自己建立的群组可觉得成员为哪些
5.小程序更新数据进数据库

用例编号 SRTX006
用例名 删除群组
用例描述 微信用户删除群组
参与者 微信用户
前置条件 登录,用户为群组创建者
后置条件 更新数据库信息
基本路径 1.用户登录小程序
2.进入自己建立的群组
3.删除
4.小程序更新数据进数据库

用例编号 SRTX007
用例名 分享群组
用例描述 微信用户分享自己所在群组到微信
参与者 微信用户
前置条件 登录,自己在群组内
后置条件 若有新成员进入,更新信息
基本路径 1.用户登录小程序
2.进入群组
3.生成分享链接
4.分享到微信

用例编号 SRTX008
用例名 消息推送
用例描述 系统推送微信生日提醒到群组内的没一个成员
参与者 微信用户,系统
前置条件 系统监听即将到来的生日
后置条件 通过接口推送消息
基本路径 1.系统每天定时检查即将过生日的用户信息
2.获取用户所在群组
3.通过接口向群组内每一个成员推送微信消息提醒
4.系统检查特别关心队列即将到达的生日
5.发送消息提醒特别关心建立者

2.1.3 领域对象模型

2.1.4 状态图

2.2 非功能需求

2.2.1可靠性需求

  系统应保证全年365天24小时不间断运行,保证所有的生日在7天前准确提醒到群组中的每一人。发生执行错误应能回滚数据库,保证数据正确。用户每一个操作都准确执行,可靠度不应低于99.99%。

2.2.2安全性需求

  通过微信授权来统一进行认证,同时保证微信用户的个人信息应不被泄露。在数据库层面,保证屏蔽非法用户的访问,合法用户的非法访问。提供身份认证,授权管理,输入输出验证,配置管理,敏感数据保护,回话管理,加密,参数保护,异常管理,日志等。

2.2.3开发性需求

  遵循微信小程序开发规范,使用阿里巴巴java开发手册作为标准

2.2.4性能需求

  小程序打开速度3s以下
  微信认证登录速度5s以下
  API请求的平均响应时间1s以下
  支持同时在线用户数1000
  请求成功率高于99.9%
  一个接口允许100个用户并发操作

2.3 数据库概念结构设计

2.3.1数据实体描述及E-R图

  用户实体:包括各种用户数据,其中重要属性为生日
  群组实体:包括群组数据,包含用户等
  特别关心:包括名称,生日,由用户定义。
  群组创建者:属于用户,但有更高权限。

  E-R图:

2.3.2数据库概念模型

  小程序用户由微信用户授权登录是创建。是微信用户在小程序里的对应身份。微信用户可以在修改不同于微信的用户名,头像等,但每个用户一一对应一个微信账号。
  群组有小程序用户创建而来,一般同微信群一样,群组可有多名用户,生日提醒群发时基于此群组。
  特别关心由用户创建而来,不对应某具体用户,只有姓名及生日,生日提醒类似与个人备忘录。E-R图如上。

3 总体设计

3.1 系统架构设计

  系统采用传承MVC三层架构,即表现层-服务层-持久层-数据库,使用tomcat集群做并发处理。

3.2 功能模块设计

  总体分为四大模块,即用户模块,群组模块,特别关心模块,消息提醒模块。

3.3 系统流程图设计

3.4 系统类图设计

3.4.1边界类图

3.4.2控制类图

3.4.3实体类图

3.5 核心模块顺序图设计

3.6 数据库逻辑结构设计

3.6.1关系模式设计
用户{(用户id,用户名,头像,生日,微信账号),(用户id->用户名,用户id->头像,用户id->生日,用户id->微信账号)}
群组{(群组id,群组名,创建者用户id),(群组id->创建者用户id,群组id->群组名)}
特别关心{(id,姓名,生日,创建者用户id),(id->姓名,id->生日,id->创建者)}
群组成员{(群组id,用户id),主码:(群组id,用户id)}
3.6.2关系模式规范化

在3.6.1的关系模型中,
属性值是原子值,满足第一范式。
消除了非主属性对键的局部函数依赖,满足第二范式。
消除了非主属性对键的传递函数依赖,满足第三范式。
消除了每一属性对键的传递函数依赖,BC范式。
规范化完成。

3.6.3数据库逻辑模型

3.6.4数据库外模式设计

用户{(用户名,头像,生日)}
群组{(名称,群组成员)}
特别关心{(名称,生日)}

4 详细设计

4.1 用户界面设计

4.2 数据库物理结构设计

4.2.1数据库表结构设计
CREATE TABLE `user_table` (`uid` int(11) NOT NULL,`uname` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,`head_picture` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,`ubirthday` datetime DEFAULT NULL,`weixin_number` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `group_table` (`gid` int(11) NOT NULL,`gname` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,`uid` int(11) DEFAULT NULL,PRIMARY KEY (`gid`),
KEY `uid` (`uid`),CONSTRAINT `group_table_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `user_table` (`uid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `g_u_table` (`gid` int(11) NOT NULL,`uid` int(11) NOT NULL,PRIMARY KEY (`gid`,`uid`),KEY `uid` (`uid`),CONSTRAINT `g_u_table_ibfk_1` FOREIGN KEY (`gid`) REFERENCES `group_table` (`gid`) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT `g_u_table_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `user_table` (`uid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `mylove_table` (`myloveid` int(11) NOT NULL,`mylovename` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,`mylovebirthday` datetime DEFAULT NULL,`uid` int(11) DEFAULT NULL,PRIMARY KEY (`myloveid`),KEY `uid` (`uid`),CONSTRAINT `mylove_table_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `user_table` (`uid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
4.2.2数据库表索引设计

索引位置 类型
user_table uid 主键索引,唯一索引,B+数索引
user_table uname 全文索引
user_table ubirthday B+树索引
user_table weixin_number B+树索引
group_table uid 哈希索引
group_id gid 主键索引,唯一索引
mylove_table id 主键索引,唯一索引
mylove_table uid 哈希索引
mylove_table mylovebirthday B+树索引
g_u_table gid uid B+树索引

4.3 实体类详细设计

略(懒得截图)

4.4 功能模块详细设计

  • 用户模块
    获取微信认证
    微信用户信息登入数据库
    修改资料
  • 群组模块
    建立群组
    加入群组
    邀请成员
    管理成员
    管理群组
  • 消息推送模块
    推送群组内生日提醒
    推送特别关心生日提醒
  • 特别关心模块
    添加特别关心
    管理特别关心
    修改特别关心

5 测试

5.1 测试计划

5.1.1测试目的

  为了发现错误而执行程序,尽量能多地发现软件产品中的缺陷,并对软件产品的质量水平做出尽可能准确的评估,进而保证产品质量,降低上线后的风险。

5.1.2测试范围

功能测试,主要做链接测试,表单测试,cookies测试,设计语言测试等
性能测试,考虑连接速度测试,以及负载测试。
可用性测试,图形测试,内容测试,整体界面测试等
兼容性测试。
安全性测试。

5.1.3测试进度计划

项目 安排
需求测试 xx月xx日
用例编写 xx月xx日
用例评审 xx月xx日
接口测试 xx月xx日
接口性能测试 xx月xx日
第一轮业务测试 xx月xx日
第二轮业务测试 xx月xx日
回归测试 xx月xx日
上线验收测试 xx月xx日
总结报告 xx月xx日

5.1.4测试环境和配置

微信小程序平台
数据库:mysql
系统:iOS/安卓
移动平台型号:多种

5.1.5测试人员
 友人A
5.1.6测试类型

数据和数据库完整性测试
白盒测试
Ui测试
功能测试
负载测试
操作系统兼容性测试

5.2 测试方案

@Author:sabot

一次完整的软件工程课程设计相关推荐

  1. 软件工程课程设计·SOA架构搭建SSM框架的网上商城系统

    软件工程课程设计·SOA架构搭建SSM框架的网上商城系统 项目简介 本系统利用SSM框架.Dubbo框架.Maven模块化开发等技术开发的一个网上商城项目,主要包括订单系统模块.购物车系统模块.搜索系 ...

  2. 软件工程测试旅游管理系统,软件工程课程设计---旅游信息管理系统

    软件工程课程设计---旅游信息管理系统 福建农林大学金山学院福建农林大学金山学院 课程设计报告课程设计报告 课程名称 软件工程 课程设计题目 旅游信息管理系统 姓 名 系 信息与机电工程系 专 业 计 ...

  3. 软件工程课程设计“作业管理系统”的总结和期望

    目录 一.软件工程课程设计"作业管理系统"的总结和期望 该系统研究的意义 功能概述 web网上作业管理系统的实现 注册与登录功能的实现 作业提交功能实现 教师批改作业的功能实现 总 ...

  4. 软件工程课程设计——技术栈【Go+Vue+PGSQL】的人事管理系统

    一.项目架构介绍 项目技术栈:Go+Vue+PGSQL 开发工具:IDEA2021.1 后端开发语言:Go 前端框架:Vue3.0(集成ElementUI组件) 后端框架:Gin.Gorm 数据库:P ...

  5. 现代软件工程课程设计——“黄金点游戏”课程报告一

    课程报告目录 黄金点游戏 系统需求分析 项目背景 任务概述与功能划分 需求分配 本次功能实现 GDEYE-002 用户信息确认 GDEYE-003 游戏开始 GDEYE-004 输入数字 GDEYE- ...

  6. Java课程设计|软件工程课程设计【招聘考试成绩处理系统】

    文章目录 第1章 前言 第2章 需求分析 2.1 考生需求分析 2.2 系统数据字典 第3章 概要设计 3.1数据库结构设计 3.2系统结构设计 3.3设计测试方案 3.5考前处理 在这里插入图片描述 ...

  7. 用 django 构建翻译网站——软件工程课程设计

    一.背景 1.1课程题目 构架一个名为Bonnie的翻译网站,要求网站具备翻译网站的基本功能,即前台用户注册登录功能,智能翻译功能和后台的用户管理,系统管理.同时本网站具备用户与翻译者直接沟通无中介干 ...

  8. 点餐系统---------软件工程课程设计

    一.功能需求分析 1.1实现用户登陆功能 可以实现对用户进行增删改查操作,可实现用户的登陆注销功能,并且针对不同的用户有不同管理权限,当用户登陆时,根据不同的用户身份(管理员.厨房工作人员.服务员)可 ...

  9. 基于java的企业人事管理系统设计--软件工程课程设计(含源码与论文设计).rar

    1 引言 4 1.1 课程设计目标 4 1.2 编程工具(编程环境)介绍 4 1.3 实施时间及主要实施步骤 4 2 需求分析 5 3 系统总体设计 6 4 数据库设计 6 5 主要功能模块的设计与实 ...

  10. 软件工程课程设计团队项目总结与项目报告

    1.      团队成员自评 漆艺: 身为团队的PM项目经理,开始的时候自己还不知道该做些什么,因为自己项目经验不足,团队把这个重要的角色交给我,那就有责任和义务把团队项目做好,并且发挥各个成员的作用 ...

最新文章

  1. 重磅突发!全球首富40颗卫星遭摧毁
  2. 排序算法总结之归并排序
  3. Java 线程池艺术探索
  4. 初学者适用的最新Java学习路线
  5. 【算法图解|5】javaScript求两个数的最大公约数
  6. xlwings删除数据_xlwings如何删除行和列?
  7. 动态规划——最大子段和(hdu1003,1231)
  8. SpringBoot yml 配置
  9. 项目之爬虫入门(豆瓣TOP250)
  10. Win10 WSL编译Android开启ccache(提高编译速度)
  11. 每天一道剑指offer-连续子数组的最大和
  12. 电线直径对照表_电线平方与直径对照表
  13. HTMLTestRunner测试报告美化
  14. C++模板的概念 定义和使用
  15. win10不让桌面上显示宽带连接服务器,Win10宽带连接不见了
  16. mysql查询最大packet_mysql max_allowed_packet 查询和修改
  17. 苹果企业开发账号申请三步走
  18. 题解 P1004 【方格取数】
  19. Gtarcade的Hunger Heroes游戏马拉松即将开始
  20. overleaf 图片排版

热门文章

  1. matlab 泛函极值,科学网—基于密度泛函理论(DFT),使用matlab求解原子状态 - 钱利江的博文...
  2. 【硬件】达林顿驱动电路ULN2000
  3. 模电笔记快速整理之《模拟电子技术基础(第四版)》上海交大网课版 1-2章
  4. 操作系统server 2012 r2 安装简体中文语言包
  5. CentOS下ftp服务器配置andWin7下cuteftppro连接
  6. C++汽车4S店管理系统
  7. 弹簧优化设计MATLAB,基于MATLAB的弹簧优化设计.pdf
  8. 密码安全攻防技术精讲
  9. 如何下载网页上的音频文件
  10. 音视频开发系列(49)视频编码标准发展史