【软工小白菜】Beta阶段项目展示
一、团队简介
姓名 | 帅气的个人照 | 个人介绍 | 定位 | 博客地址 |
---|---|---|---|---|
祝世雷 | 会一点c/c++, java,python,6系菜鸡,喜欢被带飞的感觉 | 开发/测试 | 链接 | |
陈卓 | 接触过c/c++/c#,java,会一点点python。希望组里的大佬们可以带飞我 | 开发/测试 | 链接 | |
赵博名 | 6系菜鸡,虽然有3年编程经历,但实力没有太多长进,会一点c/c++,java和一点点python。没进行过软件开发,希望能在组员的帮助下变得更强,也希望我们开发出的软件能让自己让用户满意。 | 开发/PM | 链接 | |
刘庆新 | 编程经验较少的小白,正在试图增加代码行数。对c/c++/java/python有一点点熟悉,接触过微信小程序的开发。希望在团队中获得更多进步,向大家学习取经。 | 开发/测试 | 链接 | |
干毅 | 编程新老手,学过c/c++/java,python只会一点点,编程较慢。希望能通过这次软件开发经历提升自己,并向组内成员多多学习。 | 开发/测试 | 链接 |
二、软件工程
1.团队项目的目标,预期的典型用户,预期的功能描述,预期的用户数量在哪里?
我们的目标是开发一款支持网页端大部分功能的安卓手机app。
预期用户如下:
某某高校计算机系软件工程课学生A
用户信息 | 用户情况 |
---|---|
姓名 | Therp |
用户身份 | 某校计算机系软件工程学生 |
用户动机 | 希望方便的在手机上查看在博客园上班级的作业内容以及相关博文内容 |
用户困难 | 并未携带电脑,无法在电脑上查看班级作业布置内容;助教对作业做出点评,无法快捷的对评论做出回复;对自己的作业提交情况、评分情况没有一个总的查询界面 |
典型场景1 | 浏览刚刚发布的软工作业,对作业内容、截止日期等内容有大概了解 |
典型场景2 | 助教对自己的作业做出评论,并短信提醒到自己手机上,打开博客园手机app直接回复 |
用户偏好 | 希望有一个自己作业提交情况、评分情况的总览界面 |
用户比例 | 60% |
某某学校班级助教B
用户信息 | 用户情况 |
---|---|
姓名 | 小胖 |
用户身份 | 某学校计算机学院某课程助教 |
用户动机 | 协助教师管理、组织班级,进行教师和学生之间的沟通交流 |
用户困难 | 缺少手机端的博客园班级,难以在移动端使用功能。 |
典型场景1 | 小胖在吃着饭,这时班级某尚未加入班级的同学私信他希望帮忙加入班级,小胖就随手掏出手机打开app,小手一点轻松搞定。 |
典型场景2 | 小胖出门了,晚上有个聚会,但是临时想起来还有一些同学的博客作业没看,他随手掏出手机打开app,小手一点,打开同学提交的博客,用琐碎的时间完成了任务。小胖收到老师通知,要拉一个同学进入班级,时间紧迫,他又正好在吃饭,于是他用手机app添加了该同学 |
用户偏好 | 希望能在手机端方便的完成添加成员,发布作业,查看博文,回复博文的工作 |
用户比例 | 10% |
某高校计算机系老师C
用户信息 | 用户情况 |
---|---|
姓名 | 钟老师 |
用户身份 | 某大学计算机系教师 |
用户动机 | 希望可以查看博客园班级的情况 |
用户困难 | 没有一款手机app支持查看博客园的班级,导致不能随时了解情况 |
典型场景1 | 在家里休息时想查看多少人还没交作业,好让助教提醒他们,但是由于在卧室,去书房开电脑太麻烦了,所以用手机app查看 |
典型场景2 | 在开会时由于这部分内容与自己无关,实在无聊想查看博客园同学们提交的作业,并且对其进行评论,但是开会不能用电脑,所以使用博客园手机app评论 |
用户偏好 | 更偏好使用博客园的班级功能 |
用户比例 | 10%左右 |
某某公司普通程序员D
用户信息 | 用户情况 |
---|---|
姓名 | 风不停息(网名) |
用户身份 | 某公司普通程序员 |
用户动机 | 由于工作的需要,有时遇到一个不太明白的问题需要在博客园中查找相关知识 |
用户困难 | 无法在手机上查看博客园的博客,不能在坐地铁去上班的路上查看让人很苦恼 |
典型场景1 | 在地铁上很无聊,想看一点有关变成的内容打磨一下时间,于是打开手机博客园app开始浏览 |
典型场景2 | 在家泡澡的时候,突然想到了工作中的某些问题,决定利用这个时间查找一些资料以免加班干活儿,于是拿起旁边的手机打开博客园app开始学习 |
用户偏好 | 能够有搜索栏可以准确的定位一些博客,方便筛选想看的内容;希望有一个主浏览界面(滚动),可以不停的刷博客看 |
用户比例 | 20%左右 |
预期的用户数量在各高校使用博客园上课的学生老师和助教以及一些使用博客园的社会人士。
预期功能如下:
模块 | 功能 | (详细功能) | 描述 |
---|---|---|---|
首页 | 浏览博客 | 浏览博客,下拉刷新,系统会个性化推荐给用户一些博客 | 可以正常显示博客列表,然后下拉会刷新,点击会进入博客的详细界面 |
搜索博客 | 根据关键字搜索相关博客 | 根据关键字搜索相关博客并显示博客列表 | |
动态 | 推荐 | 显示全站的动态 | 按照时间排序显示动态 |
关注 | 显示我所关注用户的动态 | 若未登陆,则显示“当前处于未登陆状态”,并给出登陆链接。若已登陆,按照时间排序显示本用户所关注用户的动态 | |
我的 | 显示我所发布的动态 | 若未登陆,则显示“当前处于未登陆状态”,并给出登陆链接。若已登陆,按照时间排序显示本用户发布的动态 | |
发布 | 发布动态 | 若未登陆,则显示“当前处于未登陆状态”,并给出登陆链接。若已登陆,则可供用户输入需要发布的动态内容并点击发布后发布,若内容为空,则提示“请输入动态内容” | |
删除 | 删除我所发布的动态 | 若未登陆,则显示“当前处于未登陆状态”,并给出登陆链接。若已登陆,则可以通过长按完成对自己发布的动态的删除 | |
评论 | 评论动态 | 若未登陆,则显示“当前处于未登陆状态”,并给出登陆链接。若已登陆,则可通过点击评论按钮评论他人发布的动态 | |
博问 | 最新 | 显示最新的发布的博问 | 能够按时间先后显示最新的博问 |
已解决 | 显示已经解决的博问 | 能够按时间显示出最少有一个回答的博问 | |
我的 | 显示登录用户提出的博问 | 若未登陆,则显示“当前处于未登陆状态”,并给出登陆链接。已登录则按时间显示出该用户的博问 | |
提问 | 写出问题标题、标签和主体,并发布 | 若未登陆,则显示“当前处于未登陆状态”。已登录则能够在填完博问标题主体之后成功发布,为空则提示不可留空。标签可写可不写。 | |
历史 | 显示博问历史记录 | 显示最近浏览过的历史记录,最大存储64条 | |
搜索框 | 显示含有搜索关键词的博问 | 点击输入框输入关键词,过滤出对应博问 | |
删除 | 删除发布博问 | 左滑删除已经发布的博问 | |
班级 | 班级列表 | 查看用户所在的所有班级 | 正确显示用户所在所有班级列表;点击任意班级后可以跳转到各个班级界面 |
公告 | 查看该班级发布的所有公告信息,并能进行公告的发布、修改、删除 | 正确显示所有公告信息,包括发布人,发布时间等;如果公告过多需要省略部分内容,并配有“展开”按钮;在班级管理界面进行班级公布的发布、修改删除 | |
作业 | 查看班级发布的所有作业,并能进行作业的提交 | 正确显示所有作业列表信息,包括发布人、发布时间、作业状态标识;点击任意作业可以查看改作业的详细信息,并能进行作业的提交 | |
博文 | 查看班级成员发布的所有博客,并进行评论 | 正确显示所有博客的标题信息,包括发布人、发布时间、阅读次数、评论数等;点击任意博客可以查看该博客的全文,并可进行评论、推荐等功能 | |
成员 | 查看班级内的所有成员信息,并能进行班级成员的添加、身份信息的修改、删除班级成员 | 正确显示所有班级成员列表,包括老师、助教、学生;点击任意成员可以跳转到该成员的信息界面,可以查看它已发布的博客等;在班级管理界面进行班级成员添加、修改、左滑删除 | |
我的 | 我的收藏 | 点击后可以查看之前收藏的帖子 | 能按收藏时间的先后罗列所有收藏的帖子 |
我的博客 | 点击后可以看到自己发布的博客,也可以在其中新建博客发布 | 点击后可以看到自己发布的博客,对每一个博客可以进行管理操作。也可以新建博客并且发布 | |
我的作业 | 点击后会显示所有班级的已提交作业和未提交作业 | 点击后会按照已提交和未提交正确分类,同时在每一项作业中可以进行提交操作和修改操作 | |
关于 | 点击后显示版本号,致谢等信息 | 能正确显示当前软件的版本号和致谢信息,以及开发者信息等等 | |
退出登录 | 点击后退出当前用户登录 | 点击后能退出当前用户的登录且重新加载UI,将退出登录键变为登录键,且最上方的用户名等信息消失 |
团队的产品如何满足了用户的需求?要看到目标用户使用产品的过程和评价。
我们基于之前分析的用户使用场景设计了功能,并基本完成了用户所需要的全部功能。另外我们也在Alpha的反馈上重新设计了UI,更符合用户审美;我们修复了一些用户用起来不舒服的功能,比如每次退出后都要重新登录,让用户用起来更舒适。用户评价如下:
事先定义的软件下载量达到了么?为什么没有达到?
我们定的是120人的用户量,目前已超过120人,有一个学长拉的用户群中有100多人,此外百度网盘的下载量在130次左右,达到了我们的标准。
团队的成员如何分工协作的?有什么经验教训?
我们由于功能本身分为5部分,又正好有5个人,所以一开始的分工就是每人一部分,这样的好处是在合并代码时几乎没遇到问题,同时由于首页功能在beta阶段增加的功能较少,所以,由其同时负责对整体ui风格的统一工作。
教训:由于在alpha阶段也是分模块的,彼此对他人的代码不太了解,所以在强制转会后,就必须要花时间解读离开成员原来的代码。
团队是如何进行项目管理的?
我们在github上创建了5个分支,每个人分别将自己代码上传到自己的分支上,最后进行统一的整合.另外在小组的github仓库中设置了kanban和issue来控制进度,github仓库的地址如下:
团队如何平衡 时间/质量/资源 争取如期完成任务的?
我们的目标是质量优先,我们希望发布的功能没有影响使用的bug,同时会在实现新的功能时进行回归测试保证原有功能不受影响。由于Beta阶段任务量少于Alpha,经过了Alpha的磨炼,感觉Beta时间资源方面完全够用,最终如期完成任务。
代码规范
我们并没有具体的文档制定一些详细的代码规范,但是为了避免命名冲突,我们有口头约束一些文件和变量的命名规则。比如变量使用Android studio自带的类驼峰格式检查设计,文件名根据不同模块划分了不同的前缀和下划线,比如班级部分所有文件名需要加Edu_前缀。这样提高了代码的可读性,也使我们整合时更加方便。
齐全的文档
技术博客:
- 黑犀:利用SharedPreferences来实现登录状态的记忆功能
- 黑犀:通过ItemTouchHelper实现侧滑删除功能
- 炎龙:OKhttp3使用get,post,delete,patch四种请求
- 风鹰:利用handler实现线程之间的消息传递
有些项目是在原来的基础上改进的,那么我们团队的软件工程项目质量有什么样的提高?
我们的项目对上一届的软工作业进行了改进。对于Beta阶段,我们经历了计划、scrum meeting、测试、事后分析、缓冲区改进等一系列步骤,保证项目的开发;在测试阶段,除了功能bug测试,我们还进行了兼容性测试,保证软件的可靠性。另外我们扩展了其部分功能,例如搜索、历史记录等,提升用户使用体验感。
原来的项目有些代码混乱,没有注释,没有详细的文档,你们的项目是如何更好解决这个问题的?明年的同学继续开发这个项目,会不会出现类似的抱怨?如果一个新学生在一台新机器上想编译并运行你的项目, 请问能顺利完成么?有什么样的文档能指导新学生?
原来的项目代码还是可读、容易理解的,我们主要参考了上届的作业要求和上届团队的博客。我们几乎没有费什么精力读代码,该项目是容易上手的。对于明年同学继续开发事宜,我们会提供博客、源码及对应的功能和技术说明。对于编译运行项目,在github仓库README中有具体的环境配置以及安装步骤。
对于项目的目标用户是一般学生的项目, 你们如何找到学生做需求分析?他们给你什么样的反馈?
我们提供了留言通道,用户可以在我们的博客下留言,此外还有一个用户支持群,大家也在里面对我们的app提出了很多宝贵的改进意见,因为我们自己也是学生,需求分析还是比较好做的,找了很多朋友讨论了一下有哪些需求。
所有的项目都会收集到用户的数据,请问你们对这类数据做了什么样的分析,这些分析如何验证或推翻了原来的假设?这些数据如何帮助项目改进软件工程的质量?
因为我们的项目没有后端,所以没有办法收集到用户数据。
三、项目进展与发布功能
1.项目燃尽图
2.发布的功能
新增功能 | 描述 | 展示 |
---|---|---|
我的收藏的删除功能 | 可以通过左滑实现我的收藏的删除 | |
博问的历史记录功能 | 增加了博问的历史记录页面,实现便捷查看已访问过的博问,提升用户使用体验感 | |
问答搜索功能 | 可以通过关键字搜索问答,在首页点击搜索框就会进入搜索界面,在搜索界面输入关键字,点击搜索按钮,之后页面就会显示出检索出的内容了 | |
博问的删除功能 | 对于自己发布的博问可以通过左滑进行删除 | |
闪存的评论功能 | 增加了对闪存的评论功能 | |
闪存的删除功能 | 可以长按删除自己发布的闪存 | |
班级公告的发布功能 | 老师和助教可以在班级内发布公告 | |
班级公告的修改功能 | 对于已经发布的公告,老师和助教可以对其进行修改 | |
班级公告的删除功能 | 老师和助教可以删除当前发布的公告 | |
班级成员的添加功能 | 老师和助教可以根据同学的博客园昵称来添加成员 | |
修改班级成员信息功能 | 老师和助教可以点击该成员对其基本信息(姓名,身份)进行修改 | |
班级成员的删除功能 | 老师和助教可以通过左滑来删除成员 |
3.发布地址
发布在了百度网盘上,链接地址如下:
链接:https://pan.baidu.com/s/1piu_3AjFxlpfAzgVOnDdZw
提取码:fnti
4.用户反馈
5.燃尽图如何反应项目真实状态的?
一开始进度缓慢主要是我们在完成新增功能的UI,同时讨论了一下UI的设计,因此进度较慢,到了中期UI完全添加完毕后发现patch和delete命令有bug,找了半天bug发现是博客园官方的功能出现了问题,当他们修复完这个问题后,进度飞速,赶在ddl之前完成所有任务。
四、团队成员在Alpha阶段的角色和具体贡献
计分规则
任务标签有:prework,groupMeeting,hard,size
工作分计算规则:prework计1分,groupMeeting计0.5分,其余任务计 hard*size 分
贡献分计算规则:贡献分规则
最终得分计算规则(个人总分=工作分+团队贡献分):
姓名 | 角色 | 工作分 | 团队贡献分 | 最终得分(取整后) |
---|---|---|---|---|
赵博名 | PM、开发 | 26 | +6 | 51 |
祝世雷 | 开发、测试 | 25 | +6 | 50 |
陈卓 | 开发 | 33 | +0 | 53 |
干毅 | 开发 | 24 | +6 | 49 |
刘庆新 | 开发、测试 | 21 | +8 | 47 |
五、特色功能
我们和上一届的工作进行对比,主要的特色在于:
1.新增了首页功能,支持对博客的搜索以及浏览推荐博客
2.新增了动态功能,支持查看网友的动态,发布自己的动态,删除自己的动态以及评论动态
3.新增了博问功能,支持查看自己和网友的博问,发布博问,删除自己发布的博文,查看自己浏览的历史以及搜索博文
4.新增了所有作业功能,可以直接查看所有班级的所有作业
六、用户反馈
这里面出现的bug已经被我们修复,最终版中不再有跳转页面时没有登录状态的bug。这一条实际是我们想到了的,但是没有考虑到在webview中再次跳转时cookie还是消失的问题,主要原因是有点想当然了,觉得插入了cookie应该能一直用,但事实是跳转到不同的网页cookie是不同的。
七、总结
1.学到的东西
技术方面
- delete和patch请求的使用方法
- 利用Itemtouchhelper实现侧滑删除功能
- 使用GitHub进行项目管理
敏捷开发方面
- 无论团队内外,面对面的交流始终是最有效的沟通方式
- 时时总结如何提高团队效率, 并付诸行动
- 优秀的分工可以大大减轻项目难度
一些教训
- 应当重视UI设计工作,UI非常重要,同时也很难设计
2.特别鸣谢
最后感谢罗老师,任老师以及各位助教一学期的辛苦努力,感谢课程组一学期的指点帮助!
感谢我们Alpha阶段的雪獒铠甲豪哥,为我们的项目付出了心血。
感谢博客园官方为我们的项目提供的大力支持。