团队作业3——需求改进&系统设计
| 这个作业属于哪个课程 | 广工2023软件工程课程 |
|---|---|
| 这个作业要求在哪里 | 团队作业3——需求改进&系统设计 |
| 这个作业的目标 | 1、需求&原型改进 2、系统设计 3、Alpha任务分配计划 4、测试计划 |
| 参考文献 | 架构设计 Scrum/Sprint 测试的计划和执行 如何编写测试计划 |
目录
- 一、需求&原型改进
- 1. 针对课堂讨论环节老师和其他组的问题及建议,对修改选题及需求进行修改
- 2. 给目标用户展现原型,与目标用户进一步沟通理解需求。他们的痛是什么?场景是什么?
- 3. 修改完善上周提交的需求规格说明书
- 4. 场景故事
- 5. 参考《构建之法》5节功能的定位和优先级,给出功能分析的四个象限
- 6. 根据修改后的需求,调整任务分解WBS及相应的项目进度计划
- 二、系统设计
- 1. 架构设计
- 2. 数据库设计
- 三、Alpha任务分配计划
- 四、测试计划
- 1. 功能测试
- 1.1. "创作"板块
- 1.2. "社区"
- 1.3. “我的”
- 2. 兼容性测试
- 2.1. 是否兼容不同设备
- 2.2. 是否兼容不同版本的操作系统
- 2.3. 是否兼容不同版本的微信
- 3. 性能测试
- 4. 测试报告
一、需求&原型改进
1. 针对课堂讨论环节老师和其他组的问题及建议,对修改选题及需求进行修改
问题1:如何宣传?
修改1:在各平台向博主推荐与合作,靠内容创作者快速提供知名度,扩散使用,吸引更多普通用户。
问题2:优势在哪里,如何与其他软件竞争?
修改2:对其他软件如“两步路”等做调查,取长补短;另外靠“好用的路线规划”、“方便的社交”、“精美的画面”吸引并留住用户。
2. 给目标用户展现原型,与目标用户进一步沟通理解需求。他们的痛是什么?场景是什么?
调查手段:
- 网络平台调查
- 进行采访

使用小程序之前:
我在出行计划时需要通过各种互联网平台搜索、查阅攻略、美食、景点等信息,再将这些信息整理成一个行程表或笔记本,随后在旅途中不断地确认地点和路线。这个过程极其繁琐,并且容易出现遗漏或疏忽,导致旅途的不顺利。
使用小程序之后:
我可以在地图上直接标记和保存感兴趣的地点,并记录评分、评论以及相关图片和链接。通过小程序的路线规划功能,我可以快速创建自己的旅行路线,并利用导航功能更加方便地找到目的地。此外,我还可以在社区内与其他用户分享自己的地图和攻略,获取有用的旅游建议和帮助。
也就是说,在使用我们的小程序后,用户无需进行艰难的搜索和组织,而可以快速轻松地创建自己的旅行计划并分享和获取其他用户的攻略,更好地享受旅途带来的乐趣。
使用场景:旅游规划路线,探店体验分享,游玩、美食地点推荐
用户痛点:能否自动给我生成路线,不用自己动手规划
粗略思路:使用某些算法,结合各类权重,进行自动路线规划
3. 修改完善上周提交的需求规格说明书
上周的《需求规格说明书》初稿不足:
- 分享功能不够详细,而这是产品推广的重要部分
- 路线的规划不够详细
- 功能的划分主要是按前端界面思维,在实现上考虑不够周到,任务分解不便
- 缺少后台的一些情况
- 增加AIGC相关创新内容
改进发布在需求文档与博客中:https://j08splv7vhl.feishu.cn/docx/RQwedr7eMof53uxClQkc7yZJn7f%EF%BC%8Chttps://bbs.csdn.net/topics/614531605
4. 场景故事
小明本周末在微信朋友圈中看到了一篇他感兴趣的旅游攻略。攻略介绍了这个城市的美食、景点和购物,还包含很多有用的小贴士和建议。小明决定去这个城市旅行,但他发现在攻略里标注的地点太多了,他不知道应该如何计划自己的行程路线。
于是,小明从应用商店下载了我们设计的小程序。他打开小程序后发现可以在地图上标记、保存、评分、备注地点,并且创建自己的路线规划。他立即开始利用程序,在地图上选择了几个有趣的景点,并且附带评论、图片、评分以及种草链接。
随后,小明使用程序的“创建路线”功能,根据这些景点创建了自己的路线规划。他通过小程序中的导航功能,快速找到了自己记录的景点,最终完成了整个旅行过程。除此之外,小明还在社区中发现了其他用户分享的关于这个城市的地图和攻略,对他的旅行计划也提供了很多宝贵建议。
借助我们设计的小程序,小明能够更轻松地计划自己的旅行路线,保存自己感兴趣的地点,并分享和获取其他用户提供的攻略。这款小程序为他的出行增添了更多的趣味性和便利性,也让他更好地享受了这次旅行的每一个瞬间。
5. 参考《构建之法》5节功能的定位和优先级,给出功能分析的四个象限
| 外围功能 | 杀手功能 | |
|---|---|---|
| 必要需求 | 地图标点,规划路线 | 路线的自动规划与社区的攻略分享 |
| 辅助需求 | 好友协作,地点的多维度信息标注 | 精美的界面与地图,社交价值,AIGC |
6. 根据修改后的需求,调整任务分解WBS及相应的项目进度计划

| 第7周 | 1.原型改进(给目标用户展现原型,并进一步理解需求) |
|---|---|
| 2.架构设计,WBS, 团队成员估计各自任务所需时间 | |
| 3.测试计划 | |
| 4.开会、团队项目Alpha任务分配计划 | |
| 第8、9周 | 1. 连续7天的Alpha敏捷冲刺,7 篇 每日Scrum Meeting博客+代码提交 |
| 第10周 | 1.用户反馈+测试计划改进 |
| 2. 团队Alpha阶段个人总结 | |
| 3. 团队项目Alpha博客:发布说明、测试报告、展示博客、项目管理 | |
| 第11周 | 1. 团队项目Alpha博客:事后分析 |
二、系统设计
1. 架构设计

| 分层 | 简短描述 |
|---|---|
| 前端页面 | 提供视觉效果,与用户进行交互 |
| 后端系统(含第三方) | 负责处理用户的请求,为用户提供其想要的数据 |
| AIGC | 增强互动,辅助搜索与推荐 |
2. 数据库设计
用户表 t_user
| 字段名 | 描述 | 可NULL | 长度 | 类型 |
|---|---|---|---|---|
| user_id | 自增主键,从100001开始 同时作为用户唯一标识 | × | bigint | |
| openid | 微信小程序openid | √ | 40 | varchar |
| nickname | 昵称 | × | 12 | varchar |
| sex | 性别(未知/男/女) | × | 2 | varchar |
| head_img静态存储 | ||||
| phone | 手机号码 | × | 15 | varchar |
| 邮箱 | √ | 40 | varchar | |
| profile | 个人简介 | √ | 255 | varchar |
| create_time | 创建时间 | × | datetime |
头像等图片资源按规律放在对象存储服务器中,直接获取
地图表 t_map
| 字段名 | 描述 | 可NULL | 长度 | 类型 |
|---|---|---|---|---|
| map_id | 自增主键,同时作为地图唯一标识 | × | bigint | |
| user_id | 所归属的用户 | × | bigint | |
| name | 地图名 | × | 15 | varchar |
| poi_count | 包含的地点数 | × | int | |
| coop_id | 在协作表中的id(-1表示没有开放协作) | × | bigint | |
| public | 是否公开到社区(1-true/0-false) | × | tinyint | |
| create_time | 创建时间 | × | datetime | |
| edit_time | 上一次编辑时间 | × | datetime |
封面默认用第一张图片,无就……
地图协作表t_map_cooperation
| 字段名 | 描述 | 可NULL | 长度 | 类型 |
|---|---|---|---|---|
| map_coop_id | 自增主键 | × | bigint | |
| map_id | 对应的地图 | × | bigint | |
| owner | 创建者(user_id) | × | bigint | |
| reader | 协作者(可读不可写)最多10个 存储user_id数组,以英文逗号,分割 | √ | 110 | varchar |
| collaborator | 协作者(可读可写)最多10个 存储user_id数组,以英文逗号,分割 | √ | 110 | varchar |
| 操作记录? |
地点表t_poi(point of interest)
腾讯地图使用的坐标系统是GCJ-02
返回时同腾讯地图

| 字段名 | 描述 | 可NULL | 长度 | 类型 |
|---|---|---|---|---|
| poi_id | 自增主键 | × | bigint | |
| map_id | 所属地图 | × | bigint | |
| longitude | 经度 | × | double | |
| latitude | 纬度 | × | double | |
| address | 地址(暂不细分为省市区单位) | × | 255 | varchar |
| real_name | 真地点名 | × | 50 | varchar |
| name | 备注名 | √ | 10 | varchar |
| intro | 简介 | √ | 255 | varchar |
| photo静态存储 | ||||
| url | 来源链接,可贴多条 用引号包围,以英文逗号,分割 | √ | 2550 | varchar |
| score_dimension | 评分维度数组 以英文逗号,分割 | √ | 255 | varchar |
| score | 评分数组,必须和维度一一对应 -1为空,以英文逗号,分割 | √ | 255 | varchar |
| tag | 标签 | √ | 10 | varchar |
| icon | 地点标记用的图片编号 按编号去静态资源获取 | √ | 255 | varchar |
路线表t_route
| 字段名 | 描述 | 可NULL | 长度 | 类型 |
|---|---|---|---|---|
| route_id | 自增主键 | × | 20 | int |
| map_id | 所属地图 | × | 12 | int |
| name | 路线名 | × | 10 | varchar |
| poi_count | 包含地点数 | × | int | |
| distance | 总路程长度(单位公里?) | × | float | |
| time | 总花费时间(单位分钟?) | × | float |
路线地点关联表t_route_poi
创建地图时默认有一条“全部”路线,用来存不在其他路线的地点,地点放入某路线时直接修改路线id即可
(是否需要在存储中体现地点顺序?还是取出来后在程序里排序吧)
(路程时间需要计算资源,所以持久化)
(这个表不一定合理)
| 字段名 | 描述 | 可NULL | 长度 | 类型 |
|---|---|---|---|---|
| route_poi_id | 自增主键 | × | bigint | |
| map_id | 所属地图 | × | bigint | |
| route_id | 所属路线 | × | bigint | |
| poi_id | 地点 | × | bigint | |
| transport_mode | 到下一地点的交通方式 | √ | tinyint | |
| distance | 到下一地点的路程 | √ | float | |
| time | 到下一地点的时间 | √ | float |
当对地点操作时,要修改好几个表的数据,再考虑到事务相关,实在不算满意的设计
TODO
日志表
会员表
三、Alpha任务分配计划


四、测试计划
1. 功能测试
1.1. "创作"板块
- ①地图信息
- 名称
- 测试方法:
- 输入名字,查看保存是否有效
- 修改名字,查看是否修改成功
- 测试用例:
- 一位wayfarer(第一次输入后保存)
- 等人(第二次修改)
- 测试方法:
- 封面设置
- 测试方法:
- 拍摄一张照片,查看能否保存为封面
- 从相册选择一张照片,查看能否保存为封面
- 测试方法:
- 地点数
- 测试方法
- 添加或删除一个地点,查看地点数是否会发生相应的改变
- 测试方法
- 最近编辑时间
- 测试方法
- 编辑后保存,查看最近编辑时间是否会发生相应的改变
- 测试方法
- 是否公开
- 测试方法
- 选择公开或不公开,在社区中查看是否符合对应的状态
- 测试方法
- 地图排序
- 查看排序是否有效
- 是否需要缩略图概览
- 测试方法
- 选择使用缩略图,能否显示对应的变化
- 取消缩略图,能否显示对应的变化
- 测试方法
- 分享地图
- 不需要公开地图的前提,由后台生成链接
- 测试方法
- 点击分享链接,查看是否有效跳转
- 测试方法
- 分享某区域的海报,可选显示标点
- 测试方法
- 从路线中选择若干地点,生成分享海报,从另一个微信号中点击分享海报查看是否有效
- 测试方法
- 微信、朋友圈、复制链接
- 测试方法
- 点击对应的地方,能否有效跳转
- 测试方法
- 不需要公开地图的前提,由后台生成链接
- 名称
②查看地图
地图显示
- 地图风格
- 测试方法:
- 切换不同的风格,(简约风,暗黑风……)查看地图风格是否会放生相应的变化
- 切换不同类型的地图,(卫星地图,交通地图……)查看地图是否会发生相应的变化
- 测试方法:
- 回到自己的定位
- 测试方法:
- 移动地图,使自己的定位脱离屏幕中心,点击回到自己的定位,查看是否有效
- 更改地点,重复上一步,查看是否有效
- 测试方法:
- 隐藏地点
- 测试方法:
- 选择隐藏一个地点,然后在社区中设置公开,并查看是否显示该地点
- 取消隐藏,在社区中设置公开,查看是否显示该地点
- 测试方法:
- 路线选择
- 测试方法:
- 查看是否显示所有添加的地点
- 更改路线,查看是否显示对应的地点
- 查看某条路线
- 路程计算
- 测试方法:
- 在百度地图中选择若干地点,计算相应的路程,将百度地图计算的结果与小程序的计算结果相比较,查看比较的误差是否足够小
- 测试方法:
- 路程计算
- 测试方法:
- 地图风格
创建/删除地图
- 创建地图
- 测试方法:
- 查看点击事件,能否产生对应的弹窗
- 能否创建空白地图(无名称)
- 点击创建,查看能否跳转地图编辑页面
- 编辑并保存地图信息后,查看地图信息,能否显示编辑后的地图信息
- 测试方法:
- 删除地图
- 测试方法:
- 创建一个地图,确保能查看地图信息后,删除该地图,查看能否删除成功
- 测试方法:
- 创建地图
地点信息
- 真实名称
- 测试方法:
- 填写真实姓名,查看是否显示
- 修改真实名称,查看是否显示修改后的真实姓名
- 删除真实名称,查看是否显示
- 测试方法:
- 备注
- 测试方法:
- 填写备注,查看是否显示
- 修改备注,查看是否显示修改后的备注
- 删除备注,查看是否显示
- 测试方法:
- 简介
- 测试方法:
- 填写简介,查看是否会显示
- 修改简介,查看是否显示修改后的简介
- 删除简介,查看是否显示
- 测试方法:
- 照片
- 测试方法:
- 添加照片,查看是 否显示
- 更换照片,查看是否显示更换后的照片
- 删除照片,查看是否会显示
- 测试方法:
- 来源
- 测试方法:
- 提前从别的平台复制若干个地点及相关信息,查看是否会自动识别
- 测试方法:
- 评分
- 只要数值,不需要文字描述
- 测试方法:
- 选择对应的数值,保存后,查看地图信息,查看是否显示对应评分
- 修改评分数值,保存后,查看地图信息,查看是否显示对应评分
- 测试方法:
- 预设好多个维度如口味、卫生、服务、环境、性价比,维度可由用户自定义
- 测试方法:
- 填写若干维度评价,保存后,查看地图信息,查看是否显示对应维度评价
- 修改其中一个维度的评价,保存,查看地图信息,查看是否发生改变
- 自定义维度"适合人群:网红(拍照打卡)",保存后,查看地图信息,查看是否显示
- 测试方法:
- 多边形评分图,够直观
- 只要数值,不需要文字描述
- 标签
- 可以作为评价的文字补充
- 测试方法:
- 添加若干标签,查看是否显示对应标签
- 修改标签,查看是否修改成功
- 测试方法:
- 也可以为社区搜索提供标签/关键词
- 测试方法
- 在社区中搜索相应的标签,查看是否显示对应搜索结果
- 测试方法
- 可以作为评价的文字补充
- 真实名称
添加/删除地点
- 添加地点
- 测试方法:
- 点击添加按钮,查看是否会产生对应的点击事件
- 直接搜索地图上有的地点
- 测试方法:
- 添加地点,查看能否添加成功
- 测试方法:
- 创建新的地点
- 测试方法:
- 创建新地点,并添加到地图中,查看能否添加成功
- 测试方法:
- 测试方法:
- 删除地点
- 测试方法:
- 删除若干地点,查看是否有效删除
- 测试方法:
- 添加地点
添加/删除路线
- 点击添加路线,弹出弹窗,编辑名称并创建,进入路线编辑页面
- 测试方法:
- 点击添加路线,查看是否有对应事件发生
- 无名称,点击创建路线,查看是否创建成功
- 输入名称,点击创建路线,查看是否有对应事件发生
- 编辑完成后,保存,查看是否会有对应的路线生成
- 测试方法:
- 路线规划
- 点击添加路线,弹出弹窗,编辑名称并创建,进入路线编辑页面
③共享
- 邀请创作
- 链接邀请好友一同创作地图
- 测试方法:
- 生成链接,发送给好友,查看链接是否有效
- 好友编辑后,查看看编辑是否有效
- 测试方法:
- 设置成员权限:可编辑、仅查看……
- 测试方法
- 设置好友可编辑,查看是否能够编辑路线
- 设置好友仅查看,查看是否能够进行其他操作
- 测试方法
- 链接邀请好友一同创作地图
- 邀请创作
1.2. "社区"
地图关键词搜索
- 测试方法:
- 生成若干地图并添加不同的标签和地面名称
- 关键词搜索对应的标签和地图名称,查看是否有效搜索
- 测试方法:
地图列表展示
- 测试方法:
- 添加地图或者删除地图
- 查看是否有效展示变化后的地图列表
- 测试方法:
地图详情
- 地图信息
- 测试方法:
- 修改地图信息,查看地图信息是否会发生相应的变化
- 测试方法:
- 流量数据:浏览数、评论数、收藏数
- 测试方法:
- 多次浏览地图,查看浏览数是否会发生变化
- 使用不同的账号浏览地图,查看浏览数是否会发生变化
- 发出若干评论,查看评论数是否会发生变化
- 使用不同账号收藏地图,查看地图收藏数是否会改变
- 测试方法:
- 评论
- 测试方法
- 对地图发表评论,查看是否显示对应的评论
- 更换账号,进入社区,查看评论是否能显示
- 测试方法
- 地图信息
1.3. “我的”
个人信息展示
- 头像
- 昵称
- 唯一ID
- 性别
- 个人签名
- 手机号码
- 邮箱
- 个人信息填写、修改
- 测试方法:
- 将各个个人信息填入,查看是否保存有效
- 修改个人信息,查看修改是否有效
- 测试方法:
收藏夹
- 测试方法:
- 从社区收藏几个地图,打开收藏夹,查看是否收藏成功
- 从收藏夹移除,再次打开收藏夹,查看是否移除成功
- 测试方法:
设置
- 测试方法:
- 打开设置,查看是否能进行设置
- 修改设置,查看对应设置是否起效
- 测试方法:
2. 兼容性测试
2.1. 是否兼容不同设备
测试方法:
- 在不同的设备上运行小程序进行测试。
测试用例:
- iPhone6、ipad
2.2. 是否兼容不同版本的操作系统
测试方法:
- 在模拟器上安装对应的操作系统及对应的版本进行测试。
测试用例:
- iOS
- iOS 14.0、iOS 14.6、 iOS 15.0
- Android
- Android 11.0、Android 12.0、Android 13.0
- Windows
- Window10、Window11
- iOS
2.3. 是否兼容不同版本的微信
测试方法:
- 下载并安装不同的版本的微信进行测试。
测试用例:
- Android平台
- 8.0.34版本
- 8.0.20版本
- 8.0.14版本
- Windows平台
- 3.9.2版本
- 3.7.0版本
- 3.4.5版本
- Android平台
3. 性能测试
测试方法:
- 使用微信小程序开发者工具提供的性能分析工具进行测试。
测试对象:
- 启动时间、渲染性能、JavaScript 执行性能等。
4. 测试报告
- 根据以上三方面的测试结果进行编写生成测试报告
相关推荐
实验七 团队作业4:团队项目需求建模与系统设计.doc
实验七 团队作业4:团队项目需求建模与系统设计.doc
基于SpringBoot的课程作业管理系统:从设计到部署的全流程实战解析
在软件开发领域,构建一个功能完备的业务系统是检验工程实践能力的重要标准。SpringBoot作为Java生态中主流的快速开发框架,以其‘约定大于配置’的理念和丰富的Starter依赖,极大地简化了企业级应用的搭建过程,是初学者入门和项目实战的首选技术栈。其核心价值在于通过自动配置和内嵌容器,让开发者能聚焦于业务逻辑,快速实现服务上线。结合MyBatis-Plus等持久层框架,可以高效完成数据访问层的CRUD操作。这种技术组合特别适用于教育信息化等需要快速迭代、功能明确的场景。本文以课程作业管理系统这一典型应
作业提交系统需求规格说明书
作业提交系统需求规格说明书 含有用例图 ER图 等
需求分析与系统设计 第3版
需求分析与系统设计 第3版 需求分析与系统设计 第3版 需求分析与系统设计 第3版 需求分析与系统设计 第3版
管理沟通与团队作业
管理沟通与团队作业 PPT 有可以借鉴的地方


