【软件工程】提问回顾与个人总结
学期初提问博客
对以往疑问的解答
第四章 两人合作
“驾驶员和领航员不断轮换角色,不要连续工作超过一小时,每工作一小时休息15分钟”
这不是一个硬性的时间规定,只是为了说明我们在结对编程的时候可以尝试互换角色,并且劳逸结合,至于时间看个人情况决定。本学期我们结对编程的时候,当一个人有了比较好的解决方案时,会去当驾驶员,另一个则转去当领航员,以此体验不同的角色,在两个人都比较累时,会闲聊一些轻松的话题,之后再接着进行。
第九章 项目经理
“PM做开发和测试之外的所有事情”
经过项目实践,我觉得可以让开发的领导人员去当PM,至少对于课程上而言我觉得这样比较合适,因为开发的领导人员最熟悉项目,比较了解这个阶段可以做些什么,从而更合理地给成员分配任务,把握进度。并不是说这样PM任务会特别重,关于宣传等其他方面的工作还是可分配给较擅长的成员。
第十三章 软件测试
在课程里,我们的团队一般都是1~2测试人员,给每个开发人员分配一个测试人员不实在,根据项目实践来看,开发人员在做完开发工作,可以自己做完单元测试,然后测试人员再对项目进行一些回归/功能/集成/探索测试,作为开发人员的伙伴,保持跟进测试,从而保证项目在最后也能有条不紊地完成。
第十六章 IT行业的创新
看了书本,从几个创新成功的例子来看,知识的广度或许真的能帮助我们进行创新,毕竟现在各个领域基本上都不是独立存在的;但不是拥有广度就意味着能够创新,还需要有一定的深度,并且能够对这一领域有自己的见解、思考,我想这些应该就是促进创新的重要因素吧。
第十七章 人、绩效和职业道德
经过项目的实践,我觉得在相关原理知识方面强的那个或许跟适合当领导吧。将一件事情讲清楚,能够给自己和别人带来很大的收益。项目是团队的,将这部分原理讲解清楚,可以有效分担重任,分配任务,在我们项目中,在PM分配任务之后,开发领导人会将相关部分原理解释清楚,有利于项目的推进。
新问题
如果在项目中期发现代码设计不够规范,合理,这个时候是否值得花时间去对已有的代码进行规范化设计呢?
在实践中各个阶段学到的知识点
需求阶段
对用户需求的全面了解和分析是推动项目的一大要素,及时了解用户的需求并进行分析可以有效为项目定一个目标,明确项目功能,在通过宣传等方式了解了用户的需求后,我们后面的工作收到了不错的的反馈。
设计阶段
在项目开始阶段就对各个方面做好规范设计,如代码结构、相关功能的实现和接口规范设计等,可以极大提高团队项目的效率,是极其重要的一步。
实现阶段
实现阶段因为项目主要利用github进行管理,这一阶段自己加深了对github一些运用,提升了利用github进行项目管理的能力。
测试阶段
压力测试对上线的项目来说尤其重要,考虑到会有多个用户的并发操作以及项目的稳定性等,对项目进行压力测试是及其必要的。
发布阶段
由于不太熟悉发布流程,导致发布时遇到了一些问题,因此,尽早去了解相关的发布流程,知道一些相关条件与步骤,才能做到有条不紊。
维护阶段
项目的进展始终与实际相关联,在我们项目推进过程中,我们的APP已经不是很适应于现在的Android版本,于是在实现基本的功能之外,我们还对APP做了适应性的维护,使其能够适应现在的版本。
个人的理解与心得
在软件工程课程中,我主要经历了结对编程和团队编程两个阶段。
第一次体验结对编程,觉得很新奇,两个人对着一台电脑编程,与以往的编程模式大不相同,这一过程我体会到两个人一起编程,由于可以相互监督,在实现的时候可以更好地避免BUG的出现,两个人一起交流,也能迸发出更多的想法,虽然速度上可能比起一个人自己单干要慢,但是结对可以更好地保证项目的效率,有利于提高项目的完成度。
团队编程中在Alpha阶段之后经历了一次换人,算是多了一份体验和收获。在Alpha阶段我主要负责项目的测试工作,我们的项目是一个网站,在参与测试的工作中,我学会了一些如postman等测试工具的运用,明白了一些相关接口的测试工作,真正体验到了“做中学”给自己带来的提升。在来到新团队之后,我还是从事测试工作,只是这次的项目是APP,与之前有所不同。首先并且最重要的事情就是要尽快熟悉项目并融入新团队,我们团队的成员都很热情,在熟悉项目的时候遇到一些问题时开发组的成员都会耐心地进行解释,帮助我尽快熟悉并参与工作。新团队属于那种交流很频繁的团队,线下开会的气氛也很轻松愉悦,使得我能更快融入团队中,推动项目的行进。这一阶段我学到了关于APP的自动测试工作,并对兼容性等方面进行了测试。
总而言之,项目的及时完成需要团队合作,并不是一个人闷着头就能实现,项目是属于团队的;成员之间相互帮助,也能推动项目的进展。也很感激这次经历,在不同的团队可以多出一份体验,每个团队都很优秀,和他们在一起的这段时间我过得很充足,也很感谢这门课让我对工程有了进一步的认识。