加油!冲冲冲
这个作业属于哪个课程 | 2021春软件工程实践|W班(福州大学) |
---|---|
这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
这个作业的目标 | 通过回顾,对自己这个阶段有更清楚的认识和总结 |
课程回顾与总结
提出问题的作业链接:寒假作业2/2
1、尝试解决自己之前提出的问题
问题1:单元测试中提出的问题
当时的问题:单元测试代码是必要的吗?还是说有选择性的,只需要在关键的,预料到可能修改的模块上进行测试?
提出这个问题是主要还不理解软件工程的开发,不清楚单元测试的目的与意义,所以不确定单元测试是否必要,认为单元测试是不好实现的。
尝试解答:单元测试在完善的软件开发中是必要的,由对应的开发人员进行单元测试。单元测试的内容并不是不可预知的根据实际的需求,有多种测试方法可以进行测试。基本可以全部测试。可以使用自动化工具。
问题2:软件工程技能的判定中的问题
当时的疑惑:巴克斯顿说技能的反面是“Problem Solving”—“解决问题”。
尝试解答:要到将低层次问题的解决熟练到纳入本能了才算是精通。我现在认为解决问题到纳入本能的情况是懂得如何解决,脑子中能快速出现完善的解决办法。但整体的办法中,有一些API、插件啥的的一些细节不一定会记得清楚,但可以快速的查询得出或者有相关文档记录直接使用。‘我觉得这样就算是掌握技能了。
问题3:goto的使用问题
函数最好有单一的出口,为了达到这一目的,可以使用goto。只要有助于程序逻 辑的清晰体现,什么方法都可以使用,包括goto。我当时觉得goto是不能使用的
尝试解答:之所以不提倡使用goto是因为基本可以使用if-else代替且他的使用会造成代码可读性下降。但在我进行大量的开发后,发现goto函数比较好用,而且在充分注释和解释下没有出现任何问题。我对它改观了。我现在觉得goto也有自己的好处,确实会比较方便,如果可以正确的使用,在合理的规范下,添上良好的注释,完全可以使用
问题4:团队集体分工
我当时对团队集体开发抱有消极怀疑的态度,尤其是校园内部的团队。觉得会出现各种问题
尝试解答:确实会出现各种问题,但没有想象中的严重。问题都是可以解决的。这些需要整个团队的人一起讨论解决。我们团队从开始到现在开了数不清的会议。确实,一起开会是解决问题好方法。组长也是整个团队的灵魂核心,由组长组织带领大家一起分析一个开发一起讨论。
问题5:创新的问题
创新,很多时候只是灵感乍现,如何让想法落地,让想法成为真的创新实践?
尝试解答:创新的点子很难得,但目前,我觉得实现创新的点子或者说一个可实现的点子更加难得。我们在想着开发一个怎么样的东西的时候,讨论了3个网上,提出了很多的点子,其中不乏令人眼前一亮的,但大多都碍于实现的难度和与实践情况的不匹配放弃。我觉得,创新很重要,但加强能力也非常重要,积蓄了足够的实力后才可以实现创新的点子。
2、5个阶段中,每个阶段收获最大的知识或能力是什么?
需求
需求阶段中,我参与了部分需求文档的制作,这个阶段是我们团队整体进行最多的交流的阶段。也是我们整个团队刚刚开始,我们经常开会,畅谈各自的想法,完善整个软件的制作。
这个阶段中收获最大的是设计和分析能力,还有团队间的协作能力。首次经历10个人的多人团队,我也明白,一个人的想法是有局限性的,需要广泛的采纳别人的意见。
设计
设计阶段我主要进行的设计文档和PPT的制作,由于我在此之前,已经有较为丰富的设计的经验,简单的设计和PPT制作没有遇到太大问题。我的收获:如果有完善的需求文档,只要稍微有些经验,原型的设计将会变得十分简单顺利。要注意一个问题:多人共同设计原型的时候,要注意整体风格色调的一致。
实现
实现方面,我是负责app的web嵌入部分,这一部分是我独自完成的,没有与团队的太多的在代码上的交互。遇到的问题还是不少的。最大的挑战就是:web在移动端中的适配性以及web与android的信息交互。我的收获:第一次实战写web嵌入android的代码,尤其是要做移动端代码的适配,而且博客的显示要做瀑布流,这个也是第一次遇到的技术问题,学到了不少的知识。看到最后的成品成功的运行起来真的成就感满满。
测试
测试阶段主要进行接口测试以及界面运行测试。我最大的一个感受是测试一定要留下足够的时间,比如这一次的开发,在测试阶段,发现页面缺少了加载页和错误页。导致最后一天进行了很多的修改。在最后一天手忙脚乱
发布
发布阶段主要是寻找用户使用app,制作问卷进行反馈收集。收获了不少宝贵的意见。也发现了许多我们团队内部没有发现的问题,比如注册时没指名要求用手机号;上传衣物太过麻烦等。也临时发现一些bug,比如数据显示太长超出屏幕,博客正文莫名多出双引号等。
本来以为一个阶段结束了,会很顺利的发布结果除了不少问题。一个软件还是需要不断的维护,才能经营下去。
3、结合自己在个人项目/结对编程/团队项目的经历,谈谈自己的理解或心得
个人项目
个人项目中我主要读了《构建之法》,编程实现wordcount程序。
读了构建之法后我才对软件工程有了一个比较清晰的认识。编写wordcount程序时,因为经常使用github反而放松了对这一部分的检查,导致我没有正确的提交程序,最后的成绩很不理想。还有一个原因是比较晚开始编写程序,对自己编写程序的效率有错诶的预估,导致最后提交的时候手忙脚乱,也没去检查提交方式是否正确。这让我之后的每一次作业都认真检查作业要求、提前开始作业。
结对编程
两次结对编程我负责前端部分。
第一次进行原型设计,真的神奇。对我而言最难的地方就是审美上的挑战了。
结对给我带来的收获主要就是两个人之间的配合,尤其是在不清楚两人分别掌握哪些技术的时候要进行的磨合,会比较辛苦但有意义
团队项目
团队项目很棒!虽然很累也有矛盾。但总的来说更有收获
我在团队中主要负责web前端和一些文档的制作。团队给我最深刻的印象就是经常性的开会。我们组织过群内的交流、腾讯会议的视屏通话,但都没有线下的面对面的交流来的有效率。
团队合作,组长真的很重要,是团队的灵魂,安排工作、组织开会、检查进度等工作都有组长的身影,尤其是在人数较多的团队中。这回的实践十分感谢我们的额组长陈小球同学。
在团队工作中,任务分配、进度安排、前后端对接上都有所成长。
个人技术总结
这些博客是我写web前端界面时写的一些类似总结提示的文档。在我忘记一些知识点的时候可以随时查看。