第六周读书笔记
《人月神话》和以前读的软工书都不太相同,首先它在章节名字的选择上就很有意思,比如就像书名“人月神话”,一些成语像“胸有成竹”“削足为履”等,这些名字一下子引起了我的兴趣,看了大部分属的内容后,果不其然,作者是每一章都会根据章节名展开一个例子来说明团队开发的事项。
令我印象深刻的有第十一章——“未雨绸缪”。作者首先讲述了将开发的第一个系统——丢弃原型,这个发布给用户对用户、开发人员和产品都是一种摧残,最为重要的是会影响名声。接着主要解说了三个部分,第一部分是为变更计划组织架构,该部分主要说明老板应该极力培养技术和管理之间自由分配的人手,对于两条晋升线的高效组织机构建立同等的威信的比较困难的,组建外科手术队伍式的软件开发团队是对上述问题所有方面的彻底冲击,但这的确是一个长期行之有效的解决方案。
第二部分是前进两部,后退一步——程序维护,这部分主要是讲解了程序维护的困难以及一些技巧,即在每次修复之后, 必须重新运行先前所有的测试用例, 从而确保系统不会以更隐蔽的方式被破坏。能消除、至少是能指明副作用的程序设计方法,对维护成本有很大的影响。同样,设计实现的人员越少、接口越少,产生的错误也就越少。
第三部分是前进一步,后退一步——系统熵随时间的变化,这部分主要说明了系统的复杂度,即模块数随着系统版本号呈线性增加而影响的模块以版本号的指数增加,所有的修改都使系统更加复杂,增加了系统的混乱程度。
就比如说这次的结对作业,我负责写core的generate部分,由于刚开始没看清要求,只写了生成整数,以为就写完了,结果看到要求里还有分数与小数,于是乎就废了一些时间,写完分数与小数,由于算法基本类似,只在一些细微的地方有差别,所以写起来并不费劲,然后接下来处理括号的问题,然后在处理计算过程中没有负数的问题,这个时候就非常的麻烦,因为整个程序的模块变多了,每个模块处理的方法也不尽相同,所以费了大量的时间去修改代码,但是最麻烦的是最后说要在操作符两端加空格,这个要求看似很简单只要加两个空格就好了,但是我所有的小地方都是按照没有空格写的,所以最后相当于又把代码写了一遍,可见系统模块越多越复杂,最后修改起来越要命。