任何人如果想看到一件完美无瑕的作品,他所想的那种作品过去不存在,现在和将来也不会出现。
本章是作者对读者一些书信内容的整理和反驳,时间是《人月神话》发布后的第 9 年。
含糊的表达将会导致误解
次要部分
作者斌不是贬低软件构建中的「次要部分」,相反他认为所有的创造性活动应该包括:
- 概念性结构的形式规格化
- 使用现实的介质来实现
- 在实际的使用中,与用户交互
在软件开发中被称为「必要」的部分是构思这些概念上的结构,「次要」的部分是指它的实现过程。
现实问题
整个软件开发工作中的哪些部分与概念性结构的精确和有序表达相关,哪些部分是创造那些结构的思维活动?根据缺陷是概念性的(例如未能识别某些异常),或者是表达上的问题(例如内存分配错误)等,可以将这些缺陷的寻找和修复工作进行相应的划分。
「没有银弹」无可争辩的指出,如果开发的次要部分少于整个工作的 9/10,即使不占用任何时间,也不会给生产率带来数量级的提高。因此,必须着手解决开发的根本问题。
我们应该向软件系统中增加必要的复杂性:
- 层次化,通过分层的模块或者对象
- 增量化,使系统可以持续的运行