我是在大三下学期才接触的《构建之法》,与课程软件测试相结合的一本书。当时不理解一个科目怎么会有两本教材。该把重心放在哪本书上呢?在读了《构建之法》后,才体会到它的独特魅力。说它是教材,又与一般的教材不一样,它语言生动活泼,里面还有人物对话,一些真实的软件开发过程的记录,让我有了将它读完的兴趣。
先说明我读的专业吧,我学的是软件工程(金融方向),简单说就是以后搞IT的。读了三年大学学了不少关于软件编程方面的知识,可能是女生天生对这方面没什么天赋,对编程没什么兴趣,代码也敲得少,所以对实践方面的经验很少。如果说有人问我,你的专业是什么我倒是能回答出来,要让我解释我估计就有点困难了。所以,读了《构建之法》,在邹欣老师通俗易懂的语言下,我的收获还是蛮大的。
开篇就点明了软件是什么,它是由程序与软件工程相结合的。然后以一个程序员阿超为儿子写出一个程序的小故事来解释,初期的小程序得到认同,之后被要求了更多的需求,以致于不断修改代码,不断完善程序,最终扩展到一个满足各种功能的应用软件。可见程序员完成一个软件花了不少的时间,并且还有后期的维护工作。而开始的时候程序员就要对它们进行构建,一个复杂的软件不但要有合理的软件架构,软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系、编译参数、链接参数等等。一个完整的软件就是在构建的前提下,再不断修改源代码,满足客户的需求,再不断的维护而产生的。那么软件工程又是什么呢?它是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。概念总是精简难懂,但是老师指出,应把重点放在不同学习与过程中慢慢理解,一定的代码量是提高编程能力的捷径,“做中学”应该就是这个道理吧。
一个团队开发一个软件,需要的是团队的合作,而每个工程师要求有——个人软件开发流程(PSP)。它能记录工程师如何实现需求的效率,而不只是记录顾客对产品的满意度。在这样的基础上我们可以进行单元测试和回归测试来保证软件的质量。完成团队的合作,我们又可以将任务分解,各自完成的基础上又包括了自己的一个工作流程,用足球队的例子来解释就是每人除了特定的角色还有独特的技术要求。
其中让我印象深刻的是“两人合作”,书中指出近些年单人完成一个软件越发少见。基本的两人模式便有了个名词“结对编程”,编程中的两个角色分别被形象化的比喻为驾驶员(控制键盘输入)和领航员(领航、提醒)。两人的默契合作,不但可以提高设计质量和代码质量而且可以取得更高的投入产出比。书中还详细解释了如何结对编程,对程序员来说真是受益匪浅。让我也了解了更多这方面的知识。
书本的后大半本便是继续分析了团队合作的模式和流程,建议软件开发方法和需求分析这些。书中涵盖了很多的知识点,仔细分析起来不是三言两语能描述的,我对《构建之法》的评价是好的,很开心能读到这本书,不能像专业的人士来分析评论这本书,但是我写了自己在里面学到的一些东西,加深了我对软件工程的理解,后期的还有许多知识点对我来说还太陌生,所以我需要学习的还有很多,我会花时间再认真研究,学到的越多便是一种财富的获得。
看完书后的我还有几个小问题:
1、团队开发的时候如何确定适合的模式?
2、如果是女生适合做软件开发过程中的哪一部分?
3、一定的代码量就一定能提高编程能力水平吗?
4、如何做到一个具有PM能力的开发人员?
5、如何避免在团队中出现分歧?