Skip to content

Commit ef799e1

Browse files
committed
人月神话 第十六章
1 parent 8001c71 commit ef799e1

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

MythicalManMonth/README.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,41 @@
140140
4. 现实中,流程图被鼓吹的程度远大于它们的实际作用。我从来没有看到过一个有经验 的编程人员,在开始编写程序之前,会例行公事地绘制详尽的流程图。在一些要求流程图的 组织中,流程图总是事后才补上。一些公司则很自豪地使用工具软件,从代码中生成这个“不 可缺少的设计工具”。我认为这种普遍经验并不是令人尴尬和惋惜的对良好实践的偏离(似 乎大家只能对它露出窘迫的微笑),相反,它是对技术的良好评判,向我们传授了一些流程 图用途方面的知识。
141141

142142
# 第16章 没有银弹
143+
144+
**没有任何技术或管理上的进展,能够独立地许诺十年内使生产率、可靠性或简洁性获得数量 级上的进步。**
145+
146+
1. 如果这是事实,那么软件开发总是非常困难的。天生就没有银弹。让我们来考虑现代软件系统中这些无法规避的内在特性:
147+
1. 复杂度、一致性、可变性和 不可见性。复杂度。规模上,软件实体可能比任何由人类创造的其他实体要复杂,因为没有任何 两个软件部分是相同的(至少是在语句的级别)。
148+
2. 某些情况下,因为是开发最新的软件,所以它必须遵循各种接口。另一些情况下,软 件的开发目标就是兼容性。在上述的所有情况中,很多复杂性来自保持与其他接口的一致, 对软件的任何再设计,都无法简化这些复杂特性
149+
3. 可变性。软件实体经常会遭受到持续的变更压力。
150+
4. 不可见性。软件是不可见的和无法可视化的。例如,几何抽象是强大的工具。
151+
2. 以往解决次要困难的一些突破
152+
1. 高级语言。
153+
2. 分时。
154+
3. 统一编程环境。
155+
143156
## 银弹的希望
157+
158+
1. 面向对象编程。---软件的内在问题是设计的复 杂度,上述方法并没有对它有任何的促进。除非我们现在的编程语言中,不必要的低层次类 型说明占据了软件产品设计 90%,面向对象编程才能带来数量级上的提高。对面向对象编 程这颗“银弹”,我深表怀疑。
159+
2. 人工智能。---专家系统最强有力的贡献是给缺乏经验的开发人员提供服务,用最优秀开发者的经验 和知识积累为他们提供了指导。这是非常大的贡献。最优秀和一般的软件工程实践之间的差 距是非常大的,可能比其他工程领域中的差距都要大,一种传播优秀实践的工具特别重要。
160+
3. “自动”编程。
161+
4. 图形化编程。
162+
5. 程序验证。---现代编程的许多工作是测试和修复 bug。是否有可能出现银弹,能够在系统 设计级别、源代码级别消除 bug 呢?是否可以在大量工作被投入到实现和测试之前,通过采用证实设计正确性的“深奥”策略,彻底提高软件的生产率和产品的可靠性?更严肃地说,完美的程序验证只能建立满足技术说明的程序。这时,软件工作中最困 难的部分已经接近完成,形成了完整和一致的说明。开发程序的一些必要工作实际上已经变 成对技术规格说明进行测试。
163+
6. 环境和工具。向更好的编程开发环境开发中投入,我们可以期待得到多少回报呢?人 们的本能反应是首先着手解决高回报的问题:层次化文件系统,统一文件格式以获得一致的 编程接口和通用工具等。特定语言的智能化编辑器在现实中还没有得到广泛应用,不过它们 最有希望实现的是消除语法错误和简单的语义错误。
164+
7. 工作站。随着工作站的处理能力和内存容量的稳固和快速提高,我们能期望在软件领 域取得多大的收获呢?现在的运算速度已经可以完全满足程序编制和文档书写的需要。编译 还需要一些提高,不过一旦机器运算速度提高十倍,那么程序开发人员的思考活动将成为日 常工作的主要活动。实际上,这已经是现在的情况。
165+
144166
## 针对概念上根本问题的颇具前途的方法
167+
168+
1. 购买和自行开发。构建软件最可能的彻底解决方案是不开发任何软件。
169+
2. 重大的变化在于计算机硬件/软件成本比率。
170+
3. 需求精炼和快速原型。
171+
4. 增量开发——增长,而非搭建系统。
172+
5. 卓越的设计人员。
173+
1. 尽可能早地、有系统地识别顶级的设计人员。最好的通常不是那些最有经验的人员。
174+
2. 为设计人员指派一位职业导师,负责他们技术方面的成长,仔细地为他们规划职业生涯。
175+
3. 为每个方面制订和维护一份职业计划,包括与设计大师的、经过仔细挑选的学习过 程、正式的高级教育和以及短期的课程——所有这些都穿插在设计和技术领导能力的培养安 排中。
176+
4. 为成长中的设计人员提供相互交流和学习的机会。
177+
145178
# 第17章 再论“没有银弹”
146179
## 人狼和其他恐怖传说
147180
## 存在着银弹—— 就在这里

0 commit comments

Comments
 (0)