《人月神话》阅读笔记一

  第一眼看到这本书的名字的时候,还以为这是一本神话故事小说,然而逐渐翻阅时才知作者阐述的是在软件开发项目的书籍。我认为该书取名“人月神话“是因为软件开发基本的条件是人和时间,而软件的开发是一个创造的过程,从无到有,称之为“神话”也是可以的。虽然已经时隔20多年了,书籍是以美国20年前软件项目所面临的问题进行阐述,但在现在依然如此,糟糕的情况没有改变,大家仍旧在焦油坑里挣扎,而且看上去没有解决办法。同时作者对软件项目失败的总结,每一个问题我们依旧再犯,特别读到“是当意识到进度的偏移时,下意识(以及传统)的反应是增加人力。这就像使用汽油灭火一样,只会使事情更糟。越来越大的火势需要更多的汽油,从而进入了一场注定会导致灾难的循环。”使我印象深刻。

  软件开发是一个创造性的过程。现代软件系统中存在着无法规避的内在特性:复杂度、一致性、可变性和不可见性。而且软件实体的扩展不仅仅是相同元素的重复叠加,而必须是不同元素实体的添加,整个软件的复杂度以很大的非线性级数增长。这本书强调了概念完整性和结构的健壮性,概念的完整性是产品质量的核心,一个整洁优雅的编程作品需要向用户提供一个条例分明的概念模型,阐述应用、实现应用的方法以及用来指明操作和各种参数的用户界面的使用策略。由于参与人数的不同,大型编程项目与小型项目的管理在性质上都有不同,所以为确保一致性,有时甚至是英勇的管理活动是完全由必要的。而结构的健壮性,需要将体系结构和设计实现、物理实现相分离,这样结构可复用和扩展。

  软件开发的意义在于使程序转变成更有用,创造新事物的纯粹的快乐,开发对他人有用的东西,虽然会产生很多bug,但在解决问题的过程中学习新事物的过程的快乐。同时程序给程序员更大的想象空间,几乎在思考中,凭借自己的想象实现自己概念的设想。但也容易产生问题:1.追求完美,来自他人设定的目标。2.对估算技术缺乏有效的研究,进度并不一定与工作量一致。系统编程的进度安排背后的第一个错误假设就是一切都将运作良好。构思(模型)、实现、交流。编程人员通过纯粹的思维活动即概念以及灵活的表现形式来开发程序。用人月来衡量一项工作的规模是一个危险和带有欺骗性的神话(人员数量和时间并不是可以相互替换的)。软件开发本质上是一项系统工作,即错综复杂关系下的一种实践,因为沟通交流的工作量大,会消耗任务分解所节省下来的时间的个人时间,因此,添加人手并不一定缩短了进度。系统测试进度的安排常常是变成中最不合理的部分,因为系统测试时间难以计算,而不为系统测试安排最后的时间将会是一场灾难。

原文地址:https://www.cnblogs.com/yuanxiaochou/p/10417274.html