人月神话 -- 读书笔记三
文档
计算机是从人传递给机器的信息。记忆衰退的规律会使作者失去对程序的了解。面对那些文档简约的程序,我们大多数人都不免曾经暗骂那些远在他方的匿名作者。
而用户在时间和空间在都远离程序,文档的重要性不言而喻。
什么样的文档
不同用户需要不同级别的文档,某些用户仅仅偶尔使用程序,有些用户依赖程序。
目的:主要功能以及开发原因
环境:什么样的机器,硬件配置和操作系统
范围:输入的有效范围
实现功能和使用的算法:精确阐述
输入-输出格式
操作指令
选项
运行时间
精度和校验
验证程序:也就是测试用例
自文档化的程序
数据处理的基本原理告诉我们,试图把信息放在不同的文件中,并维持他们的同步,吃力不讨好。
相应的解决方案是合并文件,将文档整合到源代码中。
自文档化的程序非常值得推崇,自己写代码必须注意这部分,具体可以参照一篇自文档化 JS 的文章
没有银弹
所有软件活动包括
根本任务(打造由抽象软件实体构成的复杂概念结构)
次要任务(使用编程语言表达这些抽象实体)
除非次要任务时间的时间占到 9/10,否则即使次要任务的时间缩减到 0,也不会给生产率带来数量级上的提高。
软件的复杂度,一致性,可变性和不可见性是主要问题。
我们只能控制次要任务来解决复杂性,向软件系统中增加必要的复杂性:
层次化,通过分层的模块或者对象
增量化,从而系统可以持续地运行
作者的观点略悲观,探讨了大量的思想,不过那不是在我思考的内容中,我并不需要银弹,我需要的就是想办法减少次要任务
20 年后的人月神话
为什么 20 年前的书现在还是很经典:
软件开发学科没有正确的发展(与硬件相比,硬件发展的速度太爆炸)
人月神话仅仅顺便提了软件,主要是软件项目管理,讲的是人与团队的事情
作者再强调了一遍他目前还认可的理论:
- 系统的概念完整性和拥有一个结构师的重要之处
将体系结构和设计实现,物理实现相分离,要求体系结构的递归,将系统分割成子系统。
信息隐藏–继承–是唯一提高软件设计水平的途径。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 981909093@qq.com
文章标题:人月神话 -- 读书笔记三
文章字数:731
本文作者:泽鹿
发布时间:2019-08-28, 16:45:23
最后更新:2019-08-28, 16:45:23
原始链接:http://panyifei.github.io/2019/08/28/读书笔记/人月神话/3/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。