通过这六周的学习,我根据自己的阅读计划,完成了《构建之法》的阅读,在对本书的学习过程中,我收获了很多。
在以前,不管是自己单独编程还是团队合作,我都存在着一些问题。在自己编程方面,由于自身知识的缺乏以及自身能力的欠缺,在编写代码的时候完全不考虑边界问题以及其他一些我认为这种情况出现的可能性很小的问题,甚至一个程序编写出来后要求用户只能按照我要求进行使用,不然程序就会出现bug,造成了代码自身的局限性。同时,有时由于思想上的错误观点,认为只要老师没发现,应付过去就可以了,诸如此类,个人编程问题很多。对于团队合作,在以前的团队合作中,由于我不善于给他人提意见,导致团队合作出现问题,有时在我的团队中出现所谓“抱大腿”现象,即只有一个人干活的情况。身为团队的成员,我应该和团队成员共同工作,自身能力不代表整个团队的能力。同时,对于软件开发,我们以前不注重需求分析,对于自身要编写的软件,我们从自身的角度出发,看待问题,而不是去进行需求调研。对于软件用户,我们也不对典型用户等问题进行分析,导致自己开发的软件具有局限性。
现在,通过对《构建之法》的阅读,我对自己以前的问题有了深刻的认识。在对本书的学习中,我学习到了代码规范是什么,怎么才算是规范的代码,代码空格要求等相关问题。学习了通过编写单元测试来进行测试,可以使模块的质量能够得到稳定的、量化的保证。我通过学习学会了如何根据Right-BICEP要求来选择测试用例,来保证程序的质量。我还学习了PSP相关知识,通过编写PSP表格来记录我在程序的各个模块的开发上消耗的时间。对于团队合作,我也有了更加清晰的认识。两人合作需要经历几个阶段,在不同的阶段我们需要采取相应的技巧,才能保证两个人到达“创造阶段”;对于多人合作,我们称之为“团队”,所谓团队,有一致的集体目标,要大家一起完成这目标,团队成员有各自的分工,相互依赖合作,共同完成任务。对于不同的团队可以采取不同的模式进行合作,对于我们的团队,我们也需要采取正确的模式合作。团队组建成功后,我们就会开始结对开发。在本书中,我们学习到了软件开发的流程。首先,我们需要进行需求分析,需要对这个软件需要有哪些功能有大致的构思。在构思这些功能之前,我们为了能了解到我们应该在软件中添加什么功能、使这个软件制作成功后满足用户需求,这都是我们需要首先解决的问题。我们因此需要做需求分析去了解市场需要,我们在做需求分析时,为保证准确而全面地找到这些需求,我们要自己去调查,去获取,以及自己去实验,这些都有助于我们制定好一个实用的软件。确定好需求后,我们需要有明确的分工,每个成员都要明确自己的目标,保证能按时按质完成任务。当我们明确了自己的工作后,我们就开始开发软件,我们要为用户考虑,那么我们首先需要确定我们的用户类型,找到我们所开发软件的典型用户,有了典型用户后,我们需要对每个典型用户的目标进行确定,从而列出场景。在完成需求分析,设计与实现阶段后,我们需要进行测试和发布,这就是软件设计与实现的开发流程。在推广的过程中,我们必须明确用户体验的要素,好的用户体验往往决定了用户对软件的评价,对于一个软件的用户界面,我们可以通过一些著名的评价标准来规范自己的软件用户界面。软件开发完成后,我们需要对软件进行测试。实战中的测试是在项目的稳定阶段执行的。团队在这一阶段的核心任务是在满足最低接受条件的前提下,提高各个部分的质量。软件测试和开发完成后,我们就进入稳定和发布阶段。复杂项目的会诊时,我们要按时发布软件可以采用设计变更(Design Change Request,DCR)和ZBB(Zero Bug Build)招数。项目临近结束时,可以采用最后回归测试以及砍掉功能招数。通过不同频率和不同覆盖范围的渐进发布。
在以后的学习中,我会在对《构建之法》的阅读心得的基础上,对自己的的编程能力、编程技巧进行提高,提高自身的团队合作的能力。通过对《构建之法》学习,我对软件开发的流程有了深刻的认识,在以后的软件开发中,我都会按照这个流程标准来规范自己的行为。