人月神话 -- 读书笔记三

  1. 文档
    1. 什么样的文档
    2. 自文档化的程序
  2. 没有银弹
  3. 20 年后的人月神话

文档

计算机是从人传递给机器的信息。记忆衰退的规律会使作者失去对程序的了解。面对那些文档简约的程序,我们大多数人都不免曾经暗骂那些远在他方的匿名作者。

而用户在时间和空间在都远离程序,文档的重要性不言而喻。

什么样的文档

不同用户需要不同级别的文档,某些用户仅仅偶尔使用程序,有些用户依赖程序。

  • 目的:主要功能以及开发原因

  • 环境:什么样的机器,硬件配置和操作系统

  • 范围:输入的有效范围

  • 实现功能和使用的算法:精确阐述

  • 输入-输出格式

  • 操作指令

  • 选项

  • 运行时间

  • 精度和校验

  • 验证程序:也就是测试用例

自文档化的程序

数据处理的基本原理告诉我们,试图把信息放在不同的文件中,并维持他们的同步,吃力不讨好。

相应的解决方案是合并文件,将文档整合到源代码中。

自文档化的程序非常值得推崇,自己写代码必须注意这部分,具体可以参照一篇自文档化 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" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏