这个作业属于哪个课程 | 2019学年02学期单红老师软件工程实践 |
---|---|
这个作业要求在哪里 | 团队作业第六次——beta冲刺+事后诸葛亮 |
团队名称 | 松果星球委员会 |
这个作业的目标 | 总结alpha冲刺阶段的经验教训,为beta冲刺打下基础 |
作业正文 | 本博文 |
其他参考文献 |
一、设想和目标
1.编写目的
由于软件工程实践的要求,我们团队开发名为“松果生活”的团队项目APP,这次项目功能的实现对提升我们团队成员的编程水平和分工合作能力有很大的提升,特别是对于web方向的能力提升是很有帮助的。另外很多新生对于学校周边的娱乐等诸多情况没有了解,很是困惑,因此我们团队决定开发这款APP来帮助这些同学。
2.预期功能标准
1、提供手机号接收验证码注册登录功能
2、提供文章发布功能
3.1提供选择文章类别功能
3.2提供添加文章配图功能
3.3提供编辑文章快捷功能
3.4提供选择添加位置信息
4、提供查看文章详情功能
5、提供收藏文章功能
6、提供删除文章收藏功能
7、提供文章点赞功能
8、提供编辑个人资料功能
9、提供绑定教务处信息功能
10、提供注销账号功能
11、提供检测更新功能
12、提供文章评论功能
13.实现系统信息页
14.搭建起公告系统页并接入接口
15.搭建起数据统计页面
16.搭建用户列表页并接入接口
17.搭建文章列表页并接入接口
18.实现文章详细页
3.现实进展
基本实现安卓端预期功能,剩余文章发布的数据上传部分还在调试,但是之后补充了数据逻辑,完成了预期功能。iOS部分,基本完成冲刺要求。后台网页部分,静态页面全部搭建完成,按计划接入了部分接口。还有部分数据交互需要商定和实现。各模块大部分接口完成,小部分还未实现;小部分接口已与前端对接,大部分接口尚未对接。后端中已实现部分:1. 账号管理部分:已实现用户登录、注册、关注、头像、查询修改等接口,其中通过手机号以注册和登录的接口已与前端对接完成;2. 文章管理部分:已实现文章的增删改查、图片、点赞、评论、收藏、举报等接口,其中文章的增删改查、图片、点赞、评论、收藏已与前端对接完成。3. 后台部分:已实现公告、文章与用户查询、文章的各类数量统计、用户的各类数量统计等接口,其中文章与用户查询已与前端对接完成。
模块 | 完成情况 |
---|---|
账号管理模块 | 基本完成(考虑增加保密措施) |
主题论坛模块 | 基本完成(考虑优化算法) |
设置模块 | 基本完成 |
网页后台模块 | 基本完成(考虑提升反应速度) |
二、预期计划
1.alpha 阶段是否每天有充足的时间来做规划安排?
我们做计划的时间比较充足,前期对Alpha阶段有整体的计划,每天也都会在例会上讨论当天的进展和第二天的计划。
2.是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
原型设计的时候在功能方面可能考虑的不是特别周到,导致有部分功能没有考虑进去,如举报等功能,在实现的时候应该注意修改原型,同步后端和开发人员之间的进度,发证这方面问题的原因还是因为产品文档原型考虑的时候欠周全,之后应当改进自己的思维导图,强化多方位多角度思考分析的能力。
3.具体计划
时间 | 计划任务 |
---|---|
Day1 | 编写alpha冲刺项目规划文档以及代码规范、第零次会议 |
Day2 | 后台的数据库、表构建以及初步部署;登录界面搭建并测试相关api |
Day3 | 移动端后台用户、文章等页面的搭建 |
Day4 | 后端进行接口开发相关工作;移动端基础界面的完善 |
Day5 | 后端继续完善相关接口;移动端发布功能的构建 |
Day6 | 数据库的增删改查以及与后台的数据交互 |
Day7 | 移动端与后台的数据交互测试 |
Day8 | 数据库的相关测试以及排查bug |
Day9 | 移动端与后台单元测试 |
Day10 | 测试用例文档编写以及测试评述 |
alpha冲刺的成果就是将项目进度完成到总进度的60%左右,其中完成度为95%,剩余安卓端的文章发布功能还没有进行相关测试,其他预期任务均已完成。后端中待解决内容,主要是完善相关接口以及相关优化:1. 账号管理部分:完善用户登录、注册、关注、头像与修改等接口并与前端对接;2. 文章管理部分:完善举报接口并与前端对接;3. 后台部分:完善公告、文章的各类数量统计、用户的各类数量统计等接口并与前端对接。4. 其他:由于第一次采用spring boot,部分代码有冗余、接口缺少封装,需要beta阶段解决;数据库部分需要优化以提升效率等。
三、资源
1.人力资源分配
资源是足够的,虽然是随机分配的组员,但大家都很负责,能相互沟通很好地推进项目。2名队员负责前端,5名队员负责后端,2名队员负责客户端。相对于前端大佬比较多,后端功能完成相对粗糙些,主要还是项目经验不够充足。
2.各项任务所需的时间和其他资源是如何估计的,精度如何?
由PM进行任务拆解,按照难度估计所需时间。各个方向的时间估计由该方向成员自行估计,在alpha冲刺中,安排的预期任务基本完成,精度一般,客户端方向时间预估少了一些,实际情况下因为技术方面的知识不足,所以开发时间周期都会比估计来的更长,但是最终还是及时完成了任务。
四、设计和实现
1.设计
- 系统设计主要由前端队员完成
- 数据库设计主要由后端队员完成
- 接口设计由前后端协调完成
- 原型以及模型设计由美工队员完成
2.代码编写时遇到的困难
设计过程中也遇到模棱两可的情况,都是在PM组织的例会时讨论解决的。在前后端整合的过程中遇到的bug最多,因为有许多细节需要协调整合。代码复审由各个部分负责的队员进行。从中我们学到了,前后端在进行开发时要多进行交流,如接口传递的参数,数据库中变量的属性等,这样可以大大减少整合时期的工作量。
安卓部分在开发的时候发现了一个卡的比较久的地方,在页面布局中涉及到很多嵌套,NestedScrollView作为比较常用的滑动框架,会与其中的RecyclerView冲突,再加上Github上提供下拉刷新和自动加载的RefreshLayout等形成的布局嵌套会发生滑动冲突等问题,在实现过程中就是不断在博客上查找解决方案,同时加入自己的理解,完成了Bug的修复。主要是因为一开始没有接触过安卓开发,所以在这方面还是比较小白,所以在接触过以后就会有印象,防止以后再出现类似的情况。
后台的开发上,在文章详细页有一个“向接口请求列表,再根据列表项向接口请求数据”的函数。此前处理这类函数的时候有遇到同步-异步问题,也稍有解决方案。但是这次因为文章页的数据结构比较复杂,之前的方案不好用了。只能设计新的方案。因此在这个问题上卡了很久,最后的实现比较粗糙,如果有必要会在beta阶段对其进行优化。
数据库方面,之前前端反馈了一个问题,就是安卓端端输入emoji表情无法正常导入数据库,导致服务器返回错误,经查发现是mysql数据库utf8格式问题,需改为utf8mb4;更改之后仍未解决,发现是后端连接数据库默认还是用utf8,在改为utf8mb4后终于可以正常输入emoji表情。
五、测试与发布
1.测试问题
对项目进行了较为全面的测试:
开发部分 | 具体测试 |
---|---|
安卓 | 接口测试以及点击、刷新测试 |
iOS | 1.接口是否能跟本地打通2.App内是否能正确收发数据3.当前完成的视图在不同机型下是否正常显示 |
数据库 | 大部分接口测试完成,基本满足alpha开发阶段的要求 |
网页后台 | 1、适配性测试 2、网页性能测试 |
具体测试情况请参考下述博文:
https://www.cnblogs.com/sgrj/p/12856336.html
2.发布
能以安装包的形式发布,目前项目运行在各队员的移动端上。
六、团队的角色/管理/合作
团队的角色分配一开始就定了下来,后续的项目推进根据队员的角色进行分配工作,促使项目有条不紊的进行。在本次冲刺中我们基本每天都会有例会,通过这种形式来不断磨合,使队员相互熟悉,促进交流。在例会中讨论每天项目的进展,交流遇到的问题,共同努力解决,进一步加强了我们的团队的凝聚力,在团队中,大家能坦诚地交流自己的想法,这也一定程度上保证了团队的提升。
七、成员自我总结
成员 | 角色 | 总结 |
---|---|---|
彭陈浩 | UI前端/美工 | 美工:在原型以及页面设计的时候,我们的目标是设计一个安利平台,所以我参考了许多类似的软件,如小红书以及绿洲等等,我们软件的实质还是像一个校内论坛,只是我们规定了论坛的相关主题,所以在我们加入了虚拟角色的板块后,我把他放在了主页,作为和论坛同等重要的模块,同时主色调使用棕色,同时加上亮眼的金色,形成一个较为高级的简约感,文章以及其他页面大致吸取了小红书等软件的主要元素。安卓:在安卓端的实现过程中,我也经历了learning by doing的过程,这是一个奇妙的过程,也是一个高效的过程,在理论知识补充的同时直接把他加以应用,在博客和GitHub上查找自己需要的框架和控件。因为加上了学习的时间,开发周期要拉长很多,都是在抽时间进行学习和相关的实现,充分锻炼了自己的时间管理能力以及技能学习能力。 |
朱鸿昊 | 前端/前后端交互 | alpha冲刺里我主要负责使用vue开发后台网页。之前做的网页都比较小,用的也都是适用于小项目的技术方法。但是松果生活后台网页有一定规模,之前那些小方法小技巧都不适用了,就要不断学习新技术新方法,也在不断收获与熟练。相信有了alpha冲刺里积累的经验,beta冲刺中的开发会走得更加稳健。 |
赖晓辉 | 前端 | 首先,这次项目是我第一次使用Vue框架进行界面设计,并使用echarts库进行图表界面设计,有了更多项目经验和编码经验;其次,虽然是第一次使用Vue,但所幸有鸿昊同学和其他同学帮助,网上也有很多代码可以阅读和借鉴,所以磕磕绊绊下完成了负责的部分;最后,界面设计前要设计好界面逻辑,不然写完后再修改很困难,且很耗费精力。 |
李昊朋 | 客户端/iOS | 负责iOS端的开发,Alpha冲刺转瞬即逝,其实刚开始下手的时候,觉得很难熬,一步步摸索,一步步百度,一步步问人,一步步搭砖加瓦建起来的,建立框架,慢慢地熟悉流程,慢慢地孰能生巧,感谢小队,大家都辛苦了。 |
胡锦浩 | 后端/数据库 | 项目开始之前对spring boot并没有什么接触,所以在alpha冲刺的前几天基本在边学习边做,最后也算是完成了我负责的接口的实现。回顾起来,我在alpha阶段存在的问题主要有如下几点:由于前期没有和前端同学很好地进行接口的沟通,所以后来对接口改了很多,beta阶段新增的接口要与前端同学好好沟通;在写一些复合型的接口时,用到多表查询等,使得接口速度很慢,beta阶段要优化完善;alpha阶段接口以实现为主,beta阶段要优化下代码,必要时需要重构。经历了alpha冲刺的从无到有,beta冲刺的新增和完善也是一项挑战,加油! |
胡世鑫 | 后端 | 负责相关接口实现,搭建springboot环境、进行一些接口的编写和测试。自学的过程中,对于实在无法解决的问题就先放一放、先把可以解决的问题解决了。团队协作给了我很大帮助,无法解决的问题问组员很快就可以解决了。 |
包鹏飞 | 后端 | 第一次和团队一起做项目,经验和知识都不足,不过一个过程下来学习到了很多新的编程知识,也感受到了团队的魅力,庆幸能和这帮小伙伴分到一起。 |
龚俊鹏 | 后端 | 1、在alpha冲刺阶段,负责账号管理功能接口的实现,包括账号登录、注册、忘记密码、绑定教务处(学号)、关注用户等接口。这些接口总体上已经实现了,返回的都是整体数据,但是要根据前端的需求进行适当的修改,这些会在下一阶段进行。2、spring boot实现这些接口是相对比较方便的,不需要写太多的代码,注重的是一些逻辑实现和数据表之间的关系问题。下一阶段会更加注重接口逻辑方面的设计,让数据的查询花费的时间更短。3、在设计接口的时候遇到一些问题:数据库连接不上、接口编写的时候没有按照预期输出等等,通过自己慢慢调试之后解决问题,感觉很开心,对于spring boot有了更加深刻的认识。 |
吴章权 | 后端 | 在本次的冲刺任务中,负责网页后台相关功能接口的实现。在队友们的帮助下,我学会了如何使用springboot,后端接口设计实现以及团队合作。通过这次的项目实践,我真正的将理论运用到实践中,在实践中进一步巩固理论知识。这次的实践也让我发现了自身的很多不足,很庆幸有队友们的帮助和指导,让我在学习中快速成长!未来还需要不断地学习。希望自己能在不断地学习中不断地成长。 |