这个作业属于哪个课程 | 2021春软件工程实践|W班(福州大学) |
---|---|
这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
这个作业的目标 | 课程回顾与总结、个人技术总结 |
其他参考文献 | 《构建之法现代软件工程第3版》 |
目录
第一部分 课程回顾与总结
标题出自法国诗人瓦雷里的中篇诗歌《海滨墓园》,可以翻译为“纵有疾风起,人生不言弃”。
一、问题回顾
0、提问题的博客链接
1、问题1:为什么要在个人开发流程中需要花费精力制作PSP表格?
引用老师的在博客中的评论,“PSP表格的意义不在于得到这样一个表格,而在于事后依据表格进行分析,发现可以改进的地方”。PSP表格的制作过程本来就有意义,帮助我们对每个阶段的时间占比有个大致的规划,从而对每个阶段的轻重缓急有个初步认知。项目开发完成后,可以回头对照PSP表格,看看自己在哪些阶段用时过长或过短,反思自己在这些阶段有什么做得不好的地方并加以改进。
2、问题2:个人开发中是否可以省略代码复审的环节?
之前的回答是可以省略,但我之后仔细思考了一下,其实就算是个人开发也不可以省略代码复审的环节。虽说个人开发时在编码和测试过程中检查过代码,但仍需要在最后阶段进行代码复审,从整体上把代码再过一遍,看是否仍有错误和遗漏的地方。
3、问题3:两个程序员差距过大时结对编程是否意义不大?
引用我在博客的回答,“如果水平低的一方学习理解能力强,那么他也可以在结对的实践过程中认真观察学习另一个人的编程技术,从而快速地提高自己”。当水平差距大时,只要水平高的开发水平在平均水准之上并且水平低的有一定的学习理解能力,那么在结对编程过程中,水平低的一方就可以多向水平高的一方学习开发技术,水平高的一方也可以从水平低的一方身上到一些技术外的东西。
4、问题4:如何根据实际开发选择合适团队模式?
引用我之前的回答,开发模式的选择要结合团队人员构成和用户需求。所以不存在每种场景都适用的开发模式,要根据实际情况进行选择。而且团队模式也不是一用到底,要根据每个阶段的需求做出相应的调整。
5、问题5:敏捷流程是否万能?
引用助教在博客中的评论,“敏捷不是万能的,不是包治百病”。显然,敏捷流程并非万能,毕竟每种开发流程都有其最适用范围。敏捷流程适用于小团队开发,而且开发的产品会经常根据需求的变化而变化,所以这种开发流程就不适用于开发有计划的大型项目。
二、收获
1、需求阶段
在需求阶段,我参与了原型讨论,最大的收获是懂得了在原型设计时要从用户的感受出发,从讨论出几种设计方案中选择用户体验较好并符合开发实际的方案,并对设计中的部分细节进行讨论和修改。
2、设计阶段
在设计阶段,我参与了API接口的整理,最大的收获是接口的设计需要前后端结合上一阶段设计出的原型讨论出合适的数据格式和请求方式,并且请求参数的命名要符合规范。
3、实现阶段
在实现阶段,我参与了代码编写,最大的收获是学习了安卓端的对话框设计、recycleview的使用和网络编程,同时在项目开发过程中锻炼了团队协作能力,以及发现问题和解决问题的能力。
4、测试阶段
在测试阶段,我进行了单元测试,最大的收获是学会在安卓端使用Android单元测试和Junit单元测试。同时学会根据程序情况使用Log类的静态方法输出不同级别的调试信息并通过LogCat查询程序调试信息。
5、发布阶段
由于安卓端没有完成最后的合并运行,所以个人并没有参与安卓端的项目发布。
三、理解或心得
1、个人项目
在词频统计个人作业中,我体会到了分析解题思路和进行单元测试的重要性。分析解题思路可以让我对实现方法和程序结构设计有个大致认识,有助于之后的程序编写和代码组织。单元测试可以帮助我验证程序的正确性,当测试不通过时对程序中存在的问题进行修改。同时进行单元测试时要注重测试用例和测试方法,这样才能减少测试的工作量,提高测试的准确性。
2、结对编程
在结对编程中,我体会最深的几个方面是信任、宽容和沟通。一是信任,前后端互相信任对方的开发能力,这样能够更专注于自己负责的工作。二是宽容,前后端互相了解对方开发的不易,给予对方一定的学习自由和开发自由,不刻意去催进度。三是沟通,由于是两人结对编程,更需要前后端之间经常性地进行充分沟通,了解对方的需求和困难,然后共同解决问题。
3、团队项目
在团队项目中,我体会到了使用协同工具开发所带来的便捷,通过项目协同工具成员可以定期交流开发进度。在使用github进行项目开发时,我们采用分支开发形式,在各分支完成开发任务后进行合并。在项目合并发生冲突时,需要冲突双方充分沟通并讨论出合适的解决方案。同时在参与团队项目时,既要遵守团队的开发计划,也要安排好个人的每日计划,这样才能保质保量地完成每日任务。
第二部分 个人技术博客
基于okhttp的安卓端网络编程
概述:OkHttp是一款开源的网络框架,封装了一个高性能的http请求库。OkHttp支持封装请求和处理响应,使用OkHttp网络框架可以更方便地处理安卓端的网络请求和前后端的数据交互。