Sunny图表展示博客
项目与团队亮点
成员与分工简介
成员构成
团队由五人构成,1个PM+2个前端+2个后端。采用前后端分离架构,前后端分为两个不同的生产单位。大致分工如下
成员 | 分工 |
---|---|
xyl | 后端+前端 |
js | 后端 |
lsp | 前端 |
wyx | 前端 |
lxd | PM+前端 |
项目管理
项目管理基于gitlab
和飞书,gitlab
进行代码管理,飞书上进行文档同步和管理。
任务分配
任务分配,为了均衡任务进度,同时充分考虑大家的时间安排。采用PM分配+自我修改+前/后端确认的方式来对issue进行分配,再issue开始日期开始前都可以进行修改,大致流程如下
任务评审
为了保证任务质量,放置出现某个任务出现后遗留bug,采用任务复查机制。每个任务完成后需要同组成员对任务进行打分,打分占到任务分数的0.2。具体评审机制在第二部分。
例会交流
冲刺两日会进行例会交流,依据大家时间情况选择线上或者线下。以功能讨论和接口指定为主。
开发模式
在冲刺阶段主要为各自开发。在测试周由于bug的修复需要较多交流,主要进行集中开发。
典型用户场景
场景1
五一快到了,小新看着自己的支付宝、微信和银行卡中的余额默默叹气,骑车去见LSP。在4月初的清明节假期,小新和她的好朋友LSP一起出去玩了密室逃脱,两个人活动于北京各大商场、小吃街、名声古迹,玩的好不快活,当然钱花的很快活。LSP因为家庭原因和自己的私房钱所以还是有点家底的,这样的三天假期对他来说还是负担的起。其实小新也也和LSP差不多,但小新作为女孩子特别喜欢买一些可可爱爱的小东西,看到可爱的玩偶、手饰、头饰等都会忍不住买下来,虽然每次花的钱不多,但久而久之买的东西多了,花的钱自然也就多了。一整个假期下来,小新反而剩下的钱不多了。但好在还够支持到五一,并且稍微省一点点理论上还可以攒出钱五一去玩耍。
屋漏偏逢连夜雨,好景不长,一向很善良很聪明的小新,被骗了!她相信了某个"朋友"的要治病的鬼话,将自己的生活费的一半借给了这个朋友,并想着对方马上会还钱,便没有太过于在意这些,而且还特意的使用一些小聪明去验证朋友是否是真正的朋友。但小新还是太天真了,道高一尺魔高一丈,小新大E了,完全没有意识到对方给出的信息全是假的。于是,小新一半的生活费打水漂了。
骑在车上小新内心充满了后悔和痛苦,见到LSP之后,LSP听她讲述故事之后,哈哈一笑,拿出手机将Sunny图表小程序的内测的二维码展示了出来,小新扫码之后,按照LSP的指导,点击创建图表,然后小新将这几天在不同的*台的消费记录输入之后,出现了她最*的消费图表。小新对着这个图表开始仔细分析自己的花费,决定制定自己的五一前的消费计划,并将记录记录在小程序中每日进行分析和对比,科学管理自己的消费。
终于五一到了!小新看着Sunny图表中的每天、每周合理的消费露出了开心的笑容,和LSP开始了京城5日游的快乐生活。
场景2
又到了周三,小明叹气道:“唉~,晚上又需要去做可恶的基础物理实验!这每次计算方差,数据都要费好大的劲”,在小明一旁的LSP听到之后,心中暗暗窃喜,幸亏上周在学长的介绍下使用了Sunny图表小程序,我已经完全摆脱了基础物理实验的折磨!哈哈哈哈哈哈哈!物理实验课上,LSP打开Sunny图表,在熟练的操作:创建图表、选择模板、选择基础物理实验模板、应用模板,一个精美的物理实验图表出现在手机屏幕上。随着老师的讲解,紧张的实验开始了。实验过程中,他娴熟的记录数据,同时一键分析,生成均值、方差等、最小值最大值,漂亮的图表已经被记录下来。又见他点击导出csv文件、保存到本地,然后开开心心的准备离开物理实验室。就在这个时候,一直在LSP左边沉默做实验的小明,记录完数据之后,终于忍不住向LSP问:“你刚刚实验的时候一直在用手机记录数据吗?我看你全程基本没有记录也没有分析耶”。原来LSP实验过程中数据记录的过程全被小明看到眼里记在心里,当他看到LSP几乎全程不用纸和笔进行记录和分析时,他内心充满了好奇和羡慕,因为他已经饱受分析和记录的折磨很久了。LSP嘴角上扬说:”是啊,我一直在用手机记录数据,而且还可以使用别人的模板,还可以拟合曲线呢!“,一说到这个LSP就脸上出现了笑意,这可是他从学长软件工程作业那里白嫖到的小程序内测资格!小明一听到可以用手机分析数据竟是如此方便,带着喜悦和羡慕的眼神看着LSP,试图想让LSP将这个好用的工具分享给他。LSP看到他的神情之后,哈哈一笑,拿出手机将小程序的内测二维码展示给小明,小明急忙拿出手机扫码,从此之后这个世界上少了一个被基础物理实验数据记录所折磨的人。
杀手级功能
本项目主要围绕图表展开,针对用户收集端画图、记账行为进行分析支持,让用户能够得到美观、好用的数据分析结果。杀手级功能围绕图表展开。具体包括一下三点
- 模板、图、数据的分离
- 高度定制化的图表,能够进行多种属性设置,同时能够进行分享
- 丰富的导入导出功能,既能从导入导出excel,也能导出图片,语音录入
- 丰富的分析功能,对图表能够进行方差,曲线拟合,对账单能够生成统计视图。
首先是模板,数据,图的分离结构。与其他的绘图app相比,Sunny图表中图,表,模板三者是分离的概念。不同表和模板自由组合即可组合出一张不同的图。同时数据,模板和图可以分别进行导出,并且可以将导出的模板用于其他的数据和图片,用户能够方便快捷地对图表进行处理。同时丰富的导入导出功能,也能打通PC和手机,同时让用户有更加便捷的体验。
推广宣传
项目推广
在产品发布后,我们采用了以下几种方式进行推广:
- 制作海报
- 在微信群里进行推广
- 公众号帮忙发推送
Beta阶段注册人数应该会有200-300人,活跃用户数可能在100-200人。
用户反馈
软件工程质量
项目有完整的前后端接口、数据库设计等文档,代码结构清晰,按照文档实现,文档也按照实际情况进行实时更新。同时在每次会议记录以及任务分配中记录了完整的开发过程以及遇到的一些问题。
并且项目采用postman和junit进行单元测试和压力测试。关键层Service层和controller层代码覆盖率100%。具体测试结果可见”Sunny图表“小程序测试报告。
Demo展示
项目与团队总结
项目管理
beta阶段采取单一PM制度,摒弃了alpha阶段的轮值PM。基于飞书和gitlab进行项目管理。飞书的在线文档功能比较丰富,同时多维表格也能支持任务表格和看板,甘特图的互相转换。代码的版本管理还是基于gitlab,beta阶段引入互评机制,前/后端在对应的仓库issue下进行评论
团队成员及分工
姓名(博客园) | 成员简介 | 角色定位 |
---|---|---|
js | 大三,学过C/C++/Java/Python,上学期有做过Android的App,别的 问就是我可以学!希望能和大家共同进步! | 后端 |
wyx | 大三蒟蒻一枚,学习过C/C++/Java/Python,*时擅长于抱大腿的同时学到一些知识,希望在这次团队作业中做好自己的部分,贡献一份力量。 | 前端 |
lsp | 大三学生,学习过C/C++、Java,水*勉强入门,有做过前端,也搞过后端,*时比较喜欢折腾一些乱七八糟的东西,并以此为乐。希望能够在软工中收获知识、技术、快乐和友谊! | 前端 |
xyl | **无奇大三生一枚,C++,Python、java都会的同时也都不精通,比较擅长设计与写bug,希望团队作业中学好软件工程,和大家一起进步。 | 前端、后端 |
lxd | 会C/C++,java,python。会做一点ppt,之前有做过一些前端。希望能够和大家一起学习进步! | 前端,PM |
团队每人具体负责模块如下
成员 | 负责模块 |
---|---|
js | 模板分享逻辑,表达式解析逻辑,账单逻辑和接口,模板分享逻辑和接口 |
xyl | 账单数据库代码结构设计,文件导入逻辑,语音处理逻辑,模板分享功能结构设计,小程序教程,账单界面 |
lsp | 新增图表模板添加,账单图表分析,画图界面横屏,画图缩放 |
wyx | 表格数据分析,草稿箱,账单前端数据管理 |
lxd | 模板分享前端,主题颜色更换,属性修改页面,博客文档 |
开发管理
团队沟通对接
策略
团队按照计划,开发阶段每两天进行一次线下Scrum Meeting,汇报两天已完成的工作以及将要完成的工作,同时绘制燃尽图以及解决一些疑难问题。除此之外,在疑难问题较多影响工作进度时,我们会增加会议频率,线上开展一些额外的组会来解决这些问题。对于个人原因不能现场参会的成员,我们在开展线下Scrum Meeting的同时也在腾讯会议上同步进行,保证每个人都能参与会议,最终所有人都参加了全部的会议。每次Scrum Meeting我们都使用博客记录,可访问我们的万里阳光号Srcum Metting 博客汇总查看
落实情况
基本落实,每次Scrum Meeting时间在一个半小时以内,而且都是为了解决了实际开发中遇到的问题,或者定义不清的接口。
团队任务安排
策略
鉴于课程安排,团队会充分考虑到每个人空闲时间的不同,同时为了保证任务完成。任务分配上先由PM进行任务的估计和划分,然后每个人在任务开始前可向PM提出申请修改任务估时和截至日期等,经过同组同学或者PM同意后修改任务。任务积分原则可参考beta阶段贡献计算
落实情况
这种任务分配制度相较于alpha阶段,在保证任务准时完成上有了显著进步,不存在alpha阶段一个issue做半周的情况了,issue基本保证1~2天内完成。但是还有不足的地方,互评机制在前期还有执行,到了后期大家事情比较多了之后互评制度也就基本没有实施了。
团队沟通/进度控制
策略
团队沟通以微信群为主,有前/后端/总微信群三个群,不同问题在不同群里提问,或者有问题PM向具体同学询问。关于项目进度,主要采用任务池的方式,如果有同学没有时间做某个issue,会让有余力的同学来领取相应issue,同时获得相应issue加分。无人认领的情况下由PM指定团队成员认领。
落实情况
issue认领方式保证了任务*稳进行,避免了alpha阶段一个仓库还在拼命干活,另外一个仓库已经没活干的情况。其中xyl
同学同时承担了前后端的任务,非常给力
项目进展
燃烬图基本正确反映了项目进制,前期一直在对alpha阶段的界面进行美化和测试,进度偏慢。从中后期账单代码任务开始进度加快。
团队贡献分配
团队成员 | 总评分 | 完成任务 | 加分 | 加分说明 | 扣分 | 扣分说明 |
---|---|---|---|---|---|---|
lxd | 49 | 模板分享前端,主题颜色更换,属性修改页面,博客文档 | 0 | 无 | 0 | 无 |
wyx | 47 | 前端数据输入,数据处理及接口设计 | 0 | 无 | 0 | 无 |
lsp | 50 | 前端绘图模块 | 1 | 提供SVG图库技术方案 | 0 | 无 |
js | 48 | 模板分享逻辑,表达式解析逻辑,账单逻辑和接口,模板分享逻辑和接口 | 0 | 无 | 0 | 无 |
xyl | 56 | 账单数据库代码结构设计,文件导入逻辑,语音处理逻辑,模板分享功能结构设计,小程序教程,账单界面 | 0 | 无 | 0 | 无 |
互评得分
成员 | 评分 | 理由 |
---|---|---|
xyl | 48 | nb!全栈工程师 |
js | 49 | 后端大师!太牛啦! |
wyx | 45 | bug之神!!! |
lsp | 49 | 太积极啦!天天晚上冲!!! |
lxd | 48 | pm没话说 yyds! |
成员 | 评分 | 理由 |
---|---|---|
xyl | 50 | 完成任务,任务量较大,且同时开发前端和后端 |
js | 43 | 完成任务,但任务量偏低,基本无bug! |
wyx | 47 | 完成任务,但bug较多,导致实际最终发布时间较晚 |
lsp | 50 | 完成任务,bug较少,且任务难度较大 |
lxd | 48 | 完成任务,bug较少 |
成员 | 评分 | 理由 |
---|---|---|
xyl | 49 | 前端后端兼顾 |
js | 47 | 按时完成后端任务 |
wyx | 45 | 有时会超时 |
lsp | 49 | 解决了很多bug |
lxd | 47 | 建立了很多规章制度 |
成员 | 评分 | 理由 |
---|---|---|
xyl | 50 | 任务完成质量高,主动承担前端任务,赞 |
js | 48 | 任务完成质量高,沟通交流及时,宣传推广卖力,赞 |
wyx | 45 | 工作量在线,最后测试阶段积极参与debug,赞 |
lsp | 49 | 任务量拉满,模板设定bug修复一条龙,赞! |
lxd | 47 | 任务质量高,积极主动与人沟通,赞! |
成员 | 评分 | 理由 |
---|---|---|
xyl | 45 | 任务完成还是可以的,任务量也比较多,一些事情也比较负责 |
js | 45 | 承包了后端大部分任务 |
wyx | 43 | bug有点多 |
lsp | 45 | 任务量较大,完成度也可以 |
lxd | 45 | pm做的较好 |
用户场景
项目开发前的目标
实现一个能够让用户随时随地随心所欲的进行输入、绘制图表的小程序。
实现一个具有高度可定制、多种输入方式、美观的图表绘制分析小程序
预期功能描述
- 输入模块要实现基本手动输入数据功能,能够将用户输入的数据正确的输入到绘图模块。
- 账单模块实现语音录入,让用户能够通过给定语音模板实现录入功能。
- 绘图模块能够根据数据和用户选择的模板来正确的绘图。
- 定义出比较完善的模板统一数据格式,并允许用户对模板的属性进行修改和保存,并根据修改对图进行更新
- 能够将图表按照用户要求格式准确无误的保存到本地,并能够正常打开和使用。
- 能够准确解析txt,csv格式文件中的数据,并能将数据准确无误的交付给图表绘制功能模块
- 后端能够准确的查找到时间段内用户的数据信息并进行整合后传送到前端图表绘制模块,图表绘制模块能够根据后端传入信息进行各种基本数据的准确计算和分析
预期的典型用户场景
场景1
五一快到了,小新看着自己的支付宝、微信和银行卡中的余额默默叹气,骑车去见LSP。在4月初的清明节假期,小新和她的好朋友LSP一起出去玩了密室逃脱,两个人活动于北京各大商场、小吃街、名声古迹,玩的好不快活,当然钱花的很快活。LSP因为家庭原因和自己的私房钱所以还是有点家底的,这样的三天假期对他来说还是负担的起。其实小新也也和LSP差不多,但小新作为女孩子特别喜欢买一些可可爱爱的小东西,看到可爱的玩偶、手饰、头饰等都会忍不住买下来,虽然每次花的钱不多,但久而久之买的东西多了,花的钱自然也就多了。一整个假期下来,小新反而剩下的钱不多了。但好在还够支持到五一,并且稍微省一点点理论上还可以攒出钱五一去玩耍。
屋漏偏逢连夜雨,好景不长,一向很善良很聪明的小新,被骗了!她相信了某个"朋友"的要治病的鬼话,将自己的生活费的一半借给了这个朋友,并想着对方马上会还钱,便没有太过于在意这些,而且还特意的使用一些小聪明去验证朋友是否是真正的朋友。但小新还是太天真了,道高一尺魔高一丈,小新大E了,完全没有意识到对方给出的信息全是假的。于是,小新一半的生活费打水漂了。
骑在车上小新内心充满了后悔和痛苦,见到LSP之后,LSP听她讲述故事之后,哈哈一笑,拿出手机将Sunny图表小程序的内测的二维码展示了出来,小新扫码之后,按照LSP的指导,点击创建图表,然后小新将这几天在不同的*台的消费记录输入之后,出现了她最*的消费图表。小新对着这个图表开始仔细分析自己的花费,决定制定自己的五一前的消费计划,并将记录记录在小程序中每日进行分析和对比,科学管理自己的消费。
终于五一到了!小新看着Sunny图表中的每天、每周合理的消费露出了开心的笑容,和LSP开始了京城5日游的快乐生活。
场景2
又到了周三,小明叹气道:“唉~,晚上又需要去做可恶的基础物理实验!这每次计算方差,数据都要费好大的劲”,在小明一旁的LSP听到之后,心中暗暗窃喜,幸亏上周在学长的介绍下使用了Sunny图表小程序,我已经完全摆脱了基础物理实验的折磨!哈哈哈哈哈哈哈!物理实验课上,LSP打开Sunny图表,在熟练的操作:创建图表、选择模板、选择基础物理实验模板、应用模板,一个精美的物理实验图表出现在手机屏幕上。随着老师的讲解,紧张的实验开始了。实验过程中,他娴熟的记录数据,同时一键分析,生成均值、方差等、最小值最大值,漂亮的图表已经被记录下来。又见他点击导出csv文件、保存到本地,然后开开心心的准备离开物理实验室。就在这个时候,一直在LSP左边沉默做实验的小明,记录完数据之后,终于忍不住向LSP问:“你刚刚实验的时候一直在用手机记录数据吗?我看你全程基本没有记录也没有分析耶”。原来LSP实验过程中数据记录的过程全被小明看到眼里记在心里,当他看到LSP几乎全程不用纸和笔进行记录和分析时,他内心充满了好奇和羡慕,因为他已经饱受分析和记录的折磨很久了。LSP嘴角上扬说:”是啊,我一直在用手机记录数据,而且还可以使用别人的模板,还可以拟合曲线呢!“,一说到这个LSP就脸上出现了笑意,这可是他从学长软件工程作业那里白嫖到的小程序内测资格!小明一听到可以用手机分析数据竟是如此方便,带着喜悦和羡慕的眼神看着LSP,试图想让LSP将这个好用的工具分享给他。LSP看到他的神情之后,哈哈一笑,拿出手机将小程序的内测二维码展示给小明,小明急忙拿出手机扫码,从此之后这个世界上少了一个被基础物理实验数据记录所折磨的人。
杀手级功能
本项目主要围绕图表展开,针对用户收集端画图、记账行为进行分析支持,让用户能够得到美观、好用的数据分析结果。杀手级功能围绕图表展开。具体包括一下三点
- 模板、图、数据的分离
- 高度定制化的图表,能够进行多种属性设置,同时能够进行分享
- 丰富的导入导出功能,既能从导入导出excel,也能导出图片,语音录入
- 丰富的分析功能,对图表能够进行方差,曲线拟合,对账单能够生成统计视图。
首先是模板,数据,图的分离结构。与其他的绘图app相比,Sunny图表中图,表,模板三者是分离的概念。不同表和模板自由组合即可组合出一张不同的图。同时数据,模板和图可以分别进行导出,并且可以将导出的模板用于其他的数据和图片,用户能够方便快捷地对图表进行处理。同时丰富的导入导出功能,也能打通PC和手机,同时让用户有更加便捷的体验。
项目发布的功能
我们的项目小程序已经发布了,可以在微信中搜索小程序Sunny图表
或者扫描下面二维码来访问。
发布的功能如下思维导图进行展示
场景满足
在以上的两个典型场景中,我们的小程序完成了两个lsp同学的需求
用户日活
项目推广
在产品发布后,我们采用了以下几种方式进行推广:
- 在微信群里进行推广
- 让公众号帮忙发推送
- 在朋友圈发送推送
用户信息统计
Beta阶段预计注册人数300人,由于软件特性,并非日常生活必需的软件,而仅在有需求时才会使用,所以活跃用户数可能会在100-200人
累计发布至今访问用户人数超过四百人,*两日*均访问次数在100~200人区间,符合预期目标
从*30日用户成分构成上,主要为年轻用户,男女各占一半。
用户反馈
特色功能
杀手级功能
本阶段具体包括一下三点
- 模板、图、数据的分离
- 高度定制化的图表,能够进行多种属性设置,同时能够进行分享
- 丰富的导入导出功能,既能从导入导出excel,也能导出图片,语音录入
- 丰富的分析功能,对图表能够进行方差,曲线拟合,对账单能够生成统计视图。
首先是模板,数据,图的分离结构。与其他的绘图app相比,Sunny图表中图,表,模板三者是分离的概念。不同表和模板自由组合即可组合出一张不同的图。同时数据,模板和图可以分别进行导出,并且可以将导出的模板用于其他的数据和图片,用户能够方便快捷地对图表进行处理。同时丰富的导入导出功能,也能打通PC和手机,同时让用户有更加便捷的体验。
竞品分析
我们调研的竞品有WPS
,图表助手
,chartistic
。
WPS
我们认为是由于其软件定位导致的,其主题功能为对表格的处理,画图只是其辅助功能,模板,图表,数据分离结果的引入没有必要,也会增加手机端操作的复杂性。图表助手
图表助手
图表助手为一个微信小程序,实现了多种图表的绘制功能。但是并不支持手动拖动修改,也不支持模板等的导出,其虽然图表较多,但是除了绘制,连最基本的拖动功能也没有。其没有对应功能也在情理之中。
chartistic
为一款主打拖动绘图的app,其可以拖动绘图,然而没有模板导出等的概念。其没有实现相应功能可能也和其所走为极简注意风格和精美UI有关,可能不想让用户定制的模板破坏了软件的美感。
总的来说我们能实现这个功能主要依靠我们本身聚焦点在图表处理上,想要让图表处理的功能更加多样,所以这几个功能的引入并不会造成不协调。
自我评价
我们认为目前这在丰富性、多输入、美观、可定制化上达到了我们的目标,我们的小程序目前实现了语音、excel、照片等的导入或导出,同时模板定制化程度非常高,而且能够进行分享。由于技术原因,在表格的手动输入上还有欠缺。
软件工程质量
设计文档
- 项目在设计阶段撰写了完整的数据库设计文档和前后端接口文档等,根据文档进行代码实现,并在实现过程中根据实际情况对文档进行修改、同步。
- 在Idea中格式化代码,并使用lombok注解简化代码,接口参数根据文档实现。
- 前端的代码规范主要是变量命名规范和代码缩进规范这两个,这两个不提前进行规范化会严重影响团队合作时的效率和质量。
代码规范及项目继承
- 在代码实现过程中接口文档使用
- 后端在一些关键地方,如方法的功能、属性的含义,有详细的注释,对于方法实现过程的注释较少,需要根据每个方法所完成的功能理解,但代码逻辑较为清晰,规范统一,是比较好理解的。前端代码的绘图部分有注释说明,但并不清楚和详细,只是简单描述方法的参数和作用,这点会在后面进行补充完善,既方便后来者也对我们Beta阶段的开发有着很大的帮助。
- 后端由于采用maven对项目进行构建、管理以及jar包下载,在新机器上maven会自动下载jar包,非常容易就可以在新机器上编译运行该项目。
- 前端的小程序端代码可以非常简单的进行编译运行,只需要将代码导入微信开发者工具即可运行。
- 目前没有指导新学生的文档,后续会考虑添加。但其实项目环境要求非常简单,很容易就可以上手。
单元测试及CI/CD
- 项目采用postman和junit进行单元测试和压力测试。关键层Service层代码覆盖率100%。
- 采用CI自动进行单元测试,并进行自动部署。每次更新代码push一下就会自动更新到服务器并重新发布,无需再去手动部署到服务器,大大增加了开发效率。
经验教训
在alpha和beta阶段的开发中团队成员通力合作,基本按时完成了既定的目标。但是在开发过程中还是踩了不少坑,其中有两点经验教训尤为深刻。
第一是技术风险的规避,在alpha阶段我们实现拖拽,可选择表格两个功能。然而拖拽由于画图框架和微信小程序适配问题,出现了拖拽卡顿,同时拖拽的逻辑大大拖累了画图模块,造成模块的冗余,其他功能难以加入;可选择表格则是由于表格前端的选择界面简陋同时输入方式过于难用,同时组件格式存在问题。在beta阶段经过用户调研我们及时甩掉了拖拽这个包袱,图表开发的进度一下加快了很多,但是表格仍然没有找到好的解决方法,美化了部分界面
第二是团队要有人统一规划,在alpha阶段我们采取轮值PM制度,导致许多任务没有人跟进,在最后测试阶段开发任务还没有完成,同时还存在许多前期未跟进遗留下来的bug,在beta阶段这种情况得到了极大的改善,测试阶段大家都比较轻松。