这个作业属于哪个课程 | 2021秋软工实践 |
---|---|
这个作业要求在哪里 | 2021秋软工实践第一次结对编程作业-CSDN社区 |
这个作业的目标 | 需求分析与原型设计 |
学号 | 031902218 |
结对信息
学号 | 任务 |
---|---|
031902218 | 需求分析、原型设计、博客撰写 |
031902226 | 需求分析、原型设计、博客撰写 |
需求
基于 NABCD 模型进行需求分析:
N——need
基本需求
-
需要有一款博饼应用能够把线上和线下的大家都组织起来一起博饼
-
能够应对骰子装备不够齐全的情况
-
博饼的结果能够自动判定
-
需要保证博饼游戏过程和结果的公平性
-
界面风格应景活泼大方,流程逻辑清晰,用户易懂易用
拓展需求
- 需要能够自定义奖品类型和数量
- 需要一个功能对博饼中每个人获得的奖品进行统计,并显示剩余奖品类型和数量
- 尽可能保留线下博饼的形式
A——Approach
设计一个微信小程序来模拟博饼的过程:
-
登录界面:
- 点击登录按钮获取玩家微信信息
-
组织者创建房间:
-
点击主界面创建房间按钮创建房间
-
通过链接或邀请码邀请玩家加入
-
设置奖品类型和数量
-
-
玩家加入房间:
- 打开小程序点击主界面加入房间按钮输入邀请码加入房间
- 通过点击分享链接加入房间
-
玩家掷骰子:
- 玩家可以通过点击按钮投掷出虚拟的骰子,自动判定投掷结果
- 玩家可以在线下投掷真实的骰子,拍照后通过多目标识别智能判定骰子点数
-
投掷结果与奖品领取:
-
判定骰子点数后显示是否获奖
-
若获奖,显示获奖级别及可领取的奖品
-
玩家可左右滑动选择想要的奖品
-
将玩家选择的奖品自动加入奖品清单供后续兑换
-
-
排行榜与奖品清单:
-
左滑显示排行榜,右滑显示奖品清单
-
排行榜中根据玩家博饼后获得的最高等级进行排名
-
奖品清单显示玩家已获得的奖品类型和数量
-
B——Benefit
-
让因各种原因不能一起线下博饼的同学朋友们参与进来,体会博饼的快乐
-
适用人群广泛,对所有有博饼需要的大众都适用
-
保留了线下使用真实骰子进行博饼的形式,使用目标识别让线上线下博饼统一起来
-
让线下博饼玩家免去了统计自己获得奖品的麻烦,使得兑奖更加简单
-
使用排行榜增加博饼的趣味性
-
基于微信端开发,免去注册的繁琐;不需要另外安装 App ,即开即用;微信使用者多,通用性广;几乎不需要学习成本
C——Competitors
优势
- 相比于其他同类型的博饼应用,增加了组织者自定义奖品类型和数量的功能,使得组织者能够更加灵活地使用应用进行管理;增加了添加奖品和奖品清单的功能,能让使用者更好地投入到游戏中,减少人工统计的麻烦;增加了排行榜,进一步提升博饼游戏的趣味性
- 使用拍照识别的方式保留了线下真实掷骰子的形式,增加博饼趣味性的同时,使得博饼应用更加灵活,适用范围比同类型应用更广泛
- 使用微信小程序作为博饼应用的载体。对于像博饼这样的轻量应用,使用微信小程序可以让使用者免去注册的繁琐,无需另外安装 App,即开即用
劣势
- 使用人数较少,一年一般只有一些节日有人使用
- 推广难度较大
- 借助算法需要强大的算力支持,成本较高
D——Delivery Data
- QQ、微信等平台宣传
- 在相关节日前后宣传
Use Case
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实践耗时(分钟) |
---|---|---|---|
Planning | 计划 | 45 | 60 |
Estimate | 估计这个任务需要多少时间 | 20 | 20 |
Development | 开发 | ||
Analysis | 需求分析(包括学习新技术) | 300 | 300 |
Design Spec | 生成设计文档 | 120 | 135 |
Design Review | 设计复审 | 30 | 30 |
Coding Standard | 代码规范 | ||
Design | 具体设计 | 480 | 720 |
Coding | 具体编码 | ||
Code Review | 代码复审 | ||
Test | 测试(自我测试,修改代 | ||
Reporting | 报告 | 120 | 180 |
Test Report | 测试报告 | ||
Size Measurement | 计算工作量 | 15 | 15 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 60 | 90 |
合计 | 1190 | 1550 |
原型展示
我们采用了墨刀作为原型制作的工具,原型展示在线链接如下:
封面与核心页面如下:
-
封面
-
核心页面
投掷:点击投掷按钮,投掷虚拟骰子,得出投掷结果
拍照:点击拍照按钮,拍下线下真实投掷结果,使用目标检测的方法智能识别骰子点数
照片展示
总结
难点与解决方案
-
难点一:原型设计历史经验为0,对墨刀的使用比较陌生
解决方案:以目的为导向较为系统地学习了原型设计,尝试了墨刀的多种功能
-
难点二:拍照识别骰子点数的可行性不确定
解决方案:在提出需求后了解了一些相关算法,发现YOLOvx比较适用于实现此功能,于是在这段时间内尝试学习了YOLOv5,标注了60张图片进行训练,大致效果如下:
效果还算不错,但是由于我们使用的数据集较小且较为单一,存在过拟合的现象,后续我们将继续增加数据集的大小,提高模型的泛化能力
结对体验
YJS:前期确定需求速度较快,也想出了一些有趣点子,也综合了开发的角度,对于一需要的技术,试着实现一个小demo,吸收经验,方便后期开发确定方向。另外,这是我第一次使用ui设计软件,感觉到ui设计还是需要天赋的,尽管参考了优秀的作品,但是真正鼠标来到自己手中,却不知道如何下手,也许,在此刻我能体验到那些被吐槽老年审美的APP,他们的设计者和我一样无力hhh。对于下一步的代码实现阶段,我很期待能看到我们的想法付诸实践之后的样子。这次开发经历第一次能全流程体验从ui设计到前后端开发,也希望自己能做好,learning by doing!
QJY:通过这次结对作业,我学习到了如何进行需求分析以及原型设计的基本方法,感觉还是挺奇妙的,能够将自己的想法通过原型设计的方式直观地展现出来,虽然由于水平有限,看上去还是比较老年风哈哈,但是总算是迈出了第一步。这次结对体验总体上来说非常不错,由于两个人都非常有想法,所以说经常会产生一些思维的碰撞,在这个过程中可以产生一些更有创造性的点子,拓宽思考的角度,同时也可以发现一些自己想法上的不足,能够互相学习,共同进步。期待后续具体实现这个应用的过程,希望自己能够收获满满!