这个作业属于哪个课程 | 2021春软件工程实践S班 (福州大学) |
---|---|
这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
这个作业的目标 | 完成个人实践总结以及个人技术博客 |
其他参考文献 |
火车驶向云外,梦安魂于九霄 —— 软件工程实践总结&个人技术博客
目录
课程回顾与总结
以前提问题的博客链接
对自己曾经提出的问题进行解答
问题一:在非常小规模的代码时是否还需要在单元测试上花费大量的时间提高覆盖率呢?
- 对问题一的解释和阐明:对我困惑的解释是,我认为即使是小规模的代码,任然需要花费时间去提高覆盖率,实践中小规模的代码提高覆盖率其实花不了太多时间,而且这样的时间花费所获得的的收益是很大的,大规模的代码更加需要花大量时间测试了,不然bug难以发现,越迟发现问题对项目带来的代价越大。而在软件开发中,测试所占的时间本来就应该比开发时间长。这学期不仅通过实践和软工理论课程的学习,还开设了专门一科“软件质量和测试”这门课程,从中我了解更多关于测试的知识,对这个问题不再有疑惑,从实践中因为一个小bug搞得自己焦头烂额的情况也有发生过,所以在今后的学习工作生活中,我会对软件测试更加重视。
问题二:就像之前提出的团队模式的选择一样,既然PM的作用十分重要,我们在小组实践时需不需要注重PM能力的培养呢?
- 对问题二的解释和阐明:我认为对PM能力的培养真的非常重要。因为我在这次实践中也是第一次担任了组长只有的身份,本身对于管理能力和交流能力是有欠缺的,但是团队就是需要这么一个角色,能够明白所有人的需求,能够帮所有人之间进行沟通协调,能够对整个项目的进步有一个把控。在这次实践中有的小组和对以前学长学姐的实践博文浏览学习过程中发现,确实有发生由于各种各样的原因导致alpha冲刺原定计划没有实现,没有一个可以运行起来的成品交付这样的情况。有好的PM能力,在团队中把控着进度还是非常重要的。
问题三:在以后的从业生涯中,如果想创新是把握机会还是刻苦攻坚技术突破呢?
- 对问题三的解释和阐明:我认为,要在把握机会的同时,刻苦掌握技术。对于这个问题,我还是没有实际的从业经验,只能从对现在的社会现状的了解上来解释,机会的把握与技术攻坚并不冲突,了解了新技术也可以有更多机会,而机会也需要很多技术的支持。不要盲目地追求技术,而要更好地将技术利用在合适的地方才是王道。
问题四:该当一马当先寻求技术创新突破的人,还是脚踏实地从已经有的东西中寻求创新呢?
- 对问题四的解释和阐明:该问题的回答我觉得和对问题三的理解类似,从实践中能感觉到自己大部分是站在巨人的肩膀上在做事,技术的用法有很多前人已经做了详细的阐述,我要做的是先学好怎么用,再把它用到我的项目中,通过学习形成我自己的东西,脚踏实地的从已经的东西中寻求创新是基础,如果有能力能够进行一马当先的技术创新突破,抓住机会,那就再好不过了。
问题五:在二人合作时是要互相了解并介入对方的工作时刻监督对方还是完全信任,注重反馈互相鼓励呢?
- 对问题五的解释和阐明:我认为,双人合作中信任是至关重要的,你要相信你的队友和你一样在努力解决问题。同样,是在课程实践的结对作业实践中,我对这个问题有了这样的理解,在你工作时,如果有个人在以居高临下的姿态在监督着你,会觉得非常不自在,如果卡在了什么难点上,有个人盯着自己会有更大的压力。所以信任能让两人之间的合作更加顺畅,必要的反馈和鼓励也不能少,要有反馈让对方明白自己的进度,明白自己需不需要对方的帮助,这样可以加深两人之间的信任,从而得到有利的循环。
是否原来的问题还不明白?如果有,请分析。
- 对原来提出的问题解释和理解如上,没有什么不明白的了。
是否产生了新的问题?如果有,请提出。
- 在整个实践流程结束后,我有些疑惑的地方,我们是要用软工实践来巩固理论课中所学习到的知识吗?还是更加注重利用实践来对各种能力进行培养?在准备着手对理论课复习时发现实践了这么久反而对理论的印象很浅,回想起来在实践过程中总是在不断地接触新知识,学习新技术。是不是我的着重点出现了偏差,最后对技术的掌握反而比软工理论的印象更加深刻。
软件工程这门学问有很多 “知识点”, 这门课强调 “做中学”——在实践中学习知识点。
每个阶段收获最大的知识或能力如下:
- 需求阶段:首先是首次对需求分析有了概念,明白了课本教材中需求模型的三大目标:描述客户需要什么、为软件设计奠定基础、定义软件完成后可以被确认的一组需求。光靠自己想是没有用的,我们在答辩后也进一步完善了需求,比如老师提出的导出功能,和助教提出的账单链接日记的功能。需求分析对客户的了解和市场的调查十分重要,毕竟开发者并不一定是使用者。收获的能力比如沟通交流能力得到了很好的锻炼。
- 设计阶段:对接口的设计有了更深的理解,多人共同协作时,前后端接口的设计和按照设计来严格执行是非常重要的。还学会了黄金规则,并尝试运用在原型设计上,统一原型颜色和icon风格,运用大众习惯的默认操作按键。
- 实现阶段:在alpha和beta阶段中运用到了对敏捷开发的一些知识,每天的站立式会议对开发进度的推进有着很好的督促作用,也学会了对于微信小程序开发的各项前端知识以及比较新颖的微信云开发技术。
- 测试阶段:学会了利用JUnit进行单元测试,懂得如何运用node.js的本地云调试对云开发的各个函数进行测试。在实践中对测试的重要性有了更深刻的理解,以及学习到了白盒测试和黑盒测试的理论知识。
- 发布阶段:学会了云开发中函数部署到服务器,也尝试将整个程序上传,并了解了整个微信官方审核小程序的流程。
心得
- 这学期也写过好多次心得了,从小黄衫到CSDN纪念T恤,再到这次总结心得,总像是有说不尽道不完的感受一样,也许是因为切身实际地去做了一些事学了一些东西才会有这么感受。从个人项目由于自己对JDK版本的疏忽导致了最后程序结果不尽人意,也从中吸取了很多教训,之后的学习实践中不敢再马虎,对测试工作做了又做,担心遗漏了哪些点。结对编程时,时间很短,当时对那些技术也不是很熟悉,无从下手。回想起来自己和队友能够按时完成确实也付出了挺多努力的,从0开始学习一个php框架,再到将当初设计的原型实现出来,个人的编码能力也得到了提升。团队项目可以说是准备的最充足的一次了,从需求分析到设计再到编码,对编码冲刺的时间安排,每天做了什么,都一一记录下来,“做中学”确实十分形象,一边做一边学习wx小程序的开发知识,学习组件怎么用,怎么把自己自定义的内容变成组件供大家一起复用。只有做了才会发现自己的技术知识薄弱点。总结一下,像是一个学期做了好几个学期的事,也学到了好几个学期的内容,不亏,付出总有收获。
个人技术总结
在准备篇中我为自己定制了学习java后端的学习路线,通过寒假的第二次个人作业,对java的基础知识点做了复习,在后续的三月份的github实践中,也对Springboot框架有了初步的了解和学习。但是最后的应用阶段没有实现。是由于团队开发与java没有关系,我在团队中担任了开发角色,进行小程序的前端开发,并完成自己所需要的的云开发的云函数。在开发中,我解决了如何在小程序中引入ECharts并根据我们的原型设计,自定义我们的数据分析可视化。并开发了我们原型中的自定义的额度提醒进度条组件。获得了对wxml、wxss、js和云开发技术的进展。
概述:
- 介绍:Echarts技术是用来可视化数据的,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。
- 用到的情况:在需要数据分析和展示时可以使用该技术来给人更好的体验。
- 学习该技术的原因:团队项目中使用小程序进行开发,账单数据需要可视化分析展示给用户。
- 难点:ECahrts本身是纯JS的技术,微信小程序也不支持DOM操作,Canvas接口也和浏览器的不同,所以想在小程序中用图表可视化数据的话要学习如何在小程序中使用,也比Web端引用JS文件来的困难。