软件工程实践总结&个人技术博客

这个作业属于哪个课程 2021春软件工程实践S班(福州大学)
这个作业要求在哪里 软件工程实践总结&个人技术博客
这个作业的目标 课程回顾与总结
其他参考文献 CSDN、《构建之法》

目录

第一部分:课程回顾与总结

博客链接

软工实践寒假作业(2/2)

对自己曾经提出的问题进行解答

Q1:单元测试由谁来完成?

原文P25提到单元测试必须由最熟悉代码的人,即程序的作者来写。代码的作者最了解代码的目的 特点和实现的局限性 所以,写单元测试没有比作者更适合的人选了。但是一个好的单元测试需要耗费很多的时间,而且专门的测试人员有着较好的测试思想,网上也有许多人提出开发人员虽然完成了单元测试,但结果并不理想,所以能否由专门的测试人员来完成单元测试呢?

解答:单元测试还是应该由最熟悉代码的人,即程序的作者来写。如果让其他人来测试,反复的重新理解代码需要大量的时间,反复的沟通也需要大量的成本,这在团队项目中深有体会。

Q2:可以使用goto吗?

原文P75提到函数最好有单一的出口,为了达到这一目的,可以使用goto,只要有助于程序逻辑的清晰体现,什么方法都可以使用,包括goto。但是在大一王灿辉老师的C语言课上第一次接触到goto时,老师就说能不用就不用,当时只是记下了并没有更深地去了解goto,这次在《构建之法》中再次看到,不免提出疑问。

解答:这次团队项目中没有使用goto的机会,所以我还是坚持以前的解答。goto语句地危害主要在于破坏了程序结构,使程序可读性变差,大量滥用goto语句会让程序像毛线团一样复杂,但是如果只是少量的使用,为了有助于程序逻辑的清晰体现,goto还是可以使用的。

Q3:结对编程中两人能力差异较大的话,结对编程是否弊大于利?

原文P85提到了结对编程的好处:
(1)在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作能有更强的解决问题的能力。
(2)对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高的满足感。
(3)在心理上, 当有另一个人在你身边和你紧密配合, 做同样一件事情的时候, 你不好意思开小差, 也不好意思糊弄。
(4)在企业管理层次上,结对能更有效地交流,相互学习和传递经验,能更好地处理人员流动。因为一个人的知识已经被其他人共享。

但如果两个人的技术水平差别过大时,一人嫌另一人效率低,另一人则感觉被轻视,愈发懈怠,这又基本成了一个人的工作了,而且两人也不愉快,这样的话是否弊大于利,技术水平差距是不是结对编程的限制条件呢?

解答:技术水平差距不是结对编程的限制条件,不合理地分配任务和不良的沟通才是。技术能力强的应该分配一些相对简单的任务给技术能力相对弱的,能者多劳,和谐相处,共同进步。

Q4:在项目过程中客户突然更改需求怎么办?

原文P160讲获取用户需求时,提到了很多办法,比如面谈、调查问卷、焦点小组等,但是未提及在项目过程中客户突然更改需求的举措。我一阅读到这里就想起不久前看到的吐槽客户临时更改需求的视频。如果我们以后在工作中遇到这种情况,要怎么处理呢?

解答:在这次团队项目中没有遇到这种问题,网上查了很多资料,应该在项目前期加强沟通,明确需求,合同约定允许的变更率,建立完善的需求审批流程,能避免尽量避免。但项目过程中需求变更是逃不掉的,尽量使用敏捷开发,让客户参与到开发过程中来,开发可以及时修正偏差,避免后期大面积代码重写。

Q5:团队合作中如何处理队员之间的冲突?

第五章讲到团队合作,但人一多起来问题肯定少不了。软件开发人员往往表面看似低调,其实内心骄傲,他们对自己的智力充满了自信,最无法容忍的就是自己的工作成果被否定。当团队中出现了不和谐的声音应该如何处理呢?

解答:项目经理应当从中协调,处理这种冲突有赖于项目经理的管理技巧以及公平的处事原则,同时把对事不对人的工作态度灌输给项目中的每个成员。冲突发生时,既要坚持原则,有理有据地作出分析,也要注意照顾双方的情绪,多做安抚工作。

各阶段收获

  • 需求阶段

了解到了项目的需求分析是软件项目开发过程中十分重要且不可或缺的一个步骤,花费一定的时间完成一个较为完善的需求分析,能够减少在开发过程中需求多次变动的情况,以免后期大面积代码重写。

  • 设计阶段

在此阶段认真写好后端接口文档和前端的输入输出很重要,看似目前没什么用,但在实现阶段后期前后端对接的时候就体现出巨大的作用了。一个正确的、完善的接口文档能够减少很多不必要的问题,在团队项目就出现过前端接受不到数据,以为是前端的问题,疯狂找bug,结果是接口文档写错了。。。

  • 实现阶段

实现阶段最大的收获就是学会了一种比较流行的前端框架vue和利用Axios进行前后端数据交互,并且用于实战,还有就是合理的分工和良好的沟通是很重要的。

  • 测试阶段

不单是单元测试要做好,集成测试和系统测试也很重要,很多问题都是在集成之后才出现的。

  • 发布阶段

此阶段最大的收获是学会了云服务器的一些基础操作,学会如何将一个vue项目打包部署到云服务器ngnix上。

理解和心得

  • 个人项目

对于作业的要求一定仔细地反复地阅读。当初完成这份个人项目的时候,一开始只是粗略阅读,各种要求呀什么的都没有仔细看,以为这只是一次简单的编程作业,等我正式地开始完成作业时,才发现这并没有我想象中的那么简单,作业要求中有很多细节在之前没有看到,浪费了很多时间。还有一点就是首先是对Git和Github的学习和使用,这在这学期是一次全新的体验,Github不仅可以查看别人完成的项目,分支和合并功能对于团队编程也着有很大的帮助。

  • 结对编程

比起个人单独编程,在结对编程中确实能够体会到诸多好处,双方都不断提出自己的看法,能感受到在两人的沟通交流下,设计质量在提高。而且在懈怠的时候,在想偷懒的时候,双方可以互相监督,效率也大大提升,是一次愉快的过程。还有结对编程算是从个人开发转到团队开发的一个中间过程,对于团队开发能够起到很好的过度作用。

  • 团队项目

这次团队项目确实对于个人的成长帮助很大,这不单单是一次以前分散学习的技术的综合应用,更是一次较为完整的项目开发流程,从需求分析到系统、数据库设计,到代码实现,再到软件测试以及发布。在团队开发的过程中,及时的沟通和互帮互助是很重要的,能够减少很多不必要的问题,加快项目的进度。团队项目的测试会比以前的个人项目多出了集成测试和系统测试,这两种测试也很重要很多问题都是在集成之后才出现的。在这次项目中就出现了在各自的模块样式都是正常的,但是集成后样式就出现了错乱,就是由于缺乏沟通导致css使用了相同的id。

第二部分:个人技术总结

在vue中Axios的使用总结

概述:在前后端分离编程中以vue作为前端框架使用Axios进行前后端数据交互的使用总结。

上一篇:一篇文章理解Windows批处理文件


下一篇:golang循环分批处理