<<== 上一节
=====
二、哪些是现象,哪些是答案,而哪些才是本质?
=====
Brooks在1961年至1964年间,主持与领导了被称为人类从原子能时代进入信息时代标志的IBM/360。十余年后,在1975年,他将历年来所写的有关软件工程和项目管理方面的文章汇集成书,这就是《人月神话》。无疑的,《人月神话》是Brooks十年中对IBM/360与操作系统OS360等项目的不断反思的结果。
而在我看到Brooks这些言论的时候,我并没有为它们所震惊。我所叹服的是Brooks在30年前便具有这样深远的思想。可以想见,对于30年前的黑暗时代,这些思想无疑是明灯和烛火。
(你有否打算用十年来思考一个问题呢?)
但这些在我看来,还只是“现象”。Brooks的持续思考也是现象,所述的言论也是现象。我们既不能因为其过程,也不能因为其结果而坚信这些观点:在决定全盘接受之前,至少要看清楚盘子里的东西。
我大概地统计了一下第18章列出的列表,其中:
章
|
现象
|
答案
|
本质
|
章
|
现象
|
答案
|
本质
|
1
|
3
|
|
|
9
|
7
|
7
|
2
|
2
|
10
|
1
|
1
|
10
|
7
|
4
|
1
|
3
|
3
|
3
|
|
11
|
21
|
6
|
2
|
4
|
3
|
4
|
1
|
12
|
15
|
3
|
1
|
5
|
3
|
2
|
|
13
|
13
|
4
|
|
6
|
3
|
5
|
1
|
14
|
13
|
4
|
1
|
7
|
5
|
14
|
2
|
15
|
9
|
5
|
1
|
8
|
10
|
|
1
|
统计
|
62%
|
31%
|
7%
|
列表中分出了三类:现象、答案和本质。通常我们总是能给出“答案”,但未见得触及“本质”。例如街口的乞丐向我伸出手来,我给了他十元钞票,我给出了解决了他伸手(这个问题)的答案,但没并有触及他伸手的本质:饥饿;更未能触及整个事件的本质:贫穷(或者懒惰)。另外,在标注成“现象”的项中,有一部分是包括某种现象的成因的。我最开始分析时,有“原因”这个分类,但后来发现原因其实也是一种现象,所以我合并了它们。
对“现象-答案-本质”的分析存在主观的成分,因此你可以重做这个实验。但我建议你谨慎使用“本质”这个标签。至于其它两种,即使你混淆了,(在接下来的讨论中)也不是至关重要的——尤其是现在,很多Brooks先生曾经给出的答案已经变成了思考同类问题的现实现象。
你可以在工程中应用这些既有的答案。但是无论这些“解/答案”看起来如何合理,如果脱离它本质上讨论的对象,那么就可能不是正确的解。而另一方面,如果作者的逻辑足够清晰,那么他提出的“解/答案”必然是围绕着某些本质的东西。在上面的列表的分析过程中,我只看到这样的几点本质:
本质含义
|
原文
|
注
|
项目在定义阶段就发生了错误
|
2.6我们围绕成本核算的估计技术,混淆了工作量和项目进展。人月是危险和带有欺骗性的神话,因为它暗示人员数量和时间是可以相互替换的。
|
|
概念不完整=定义不明确=无法实施
|
4.1 “概念完整性是系统设计中最重要的考虑因素”
|
注1
|
形式化会带来精确的定义
|
6.3出于精确性的考虑,我们需要形式化的设计定义,同样,我们需要记叙性定义来加深理解。
|
|
组织是交流(沟通)的结果
|
7.1巴比伦塔项目的失败是因为缺乏交流,以及交流的结果——组织。
|
|
组织的目标:减少必要的交流和协作量
|
7.16 团队组织的目标是为了减少必要的交流和协作量。
|
|
小型程序与大型程序不同
|
8.2 构建独立小型程序的数据不适用于编程系统项目。
|
|
私利性是本质问题
|
9.6 在大型的团队中,各个小组倾向于不断地局部优化,以满足自己的目标,而较少考虑队用户的整体影响。这种方向性的问题是大型项目的主要危险。
|
注2
|
数据表现形式是编程的根本
|
9.16 更普遍的是,战略上突破常来自于数据或表的重新表达。数据的表现形式是编程的根本。
|
|
项目经理的基本职责
|
10.9 项目经理的基本职责是使每个人都向着相同的方向前进。
|
|
产品交付的关键是质量的保障程度
|
11.7 “开发人员交付的是用户满意程度,而不仅仅是实际的产品。”(Cosgrove)
|
注3
|
用户需求变化的根源
|
11.9 软件产品易于掌握的特性和不可见性,导致了它的构建人员(特别容易)面临着永恒的需求变更。
|
|
某些计算机资源不能总是方便的得到
|
12.4 目标机器的使用需求量是一种特殊曲线:刚开始使用率非常低,突然出现爆发性的增长,接着趋于平缓。
|
注4
|
里程碑的性质/定义
|
14.4 里程碑必须是具体的、特定的、可度量的事件,能进行清晰能定义。
|
|
程序=用户认识+机器认识
|
15.1 对于软件编程产品来说,程序向用户所呈现的面貌与提供给机器识别的内容同样重要。
|
|
注1:这里“精确定义”是本质,形式化只是答案。
注2:对组织中的个体或组织的局部来说。
注3:产品问题不是本身的“完成度”的问题,而是用户可感受到的质量问题。
注4:书用例举的是“调试环境和目标系统”,但可以引申到例如“目标用户”或者“客户现场”。
我们应该清楚:现象之存在与是否被发现无关。例如苹果从树上掉到地上是现象,你看见这个现象也并不体现你的伟大,你四处大叫“苹果掉地上了”会被人当成疯子。而牛顿没有被人(因此)看成疯子的原因:现象只是引起了他的注意,而探究到“本质”才是关键。
所以上表列出的“62%的现象”只是Brooks从四十年前就好心的提醒我们:看啦,快看看这些奇怪的现象,你难道不觉得它们奇怪么?于是,我们开始关注这些,并把它们当成关注的焦点。我只能因此承认Brooks是一个醒客,但这并不表明“陈述现象”,就等于告诉了我们什么真理。
接下来我们讨论“31%的答案”。
分享到:
相关推荐
人月神话(THE MYTHICAL MAN-MONTH)...........................................................................6 乐观主义....................................................................................
人月神话(THE MYTHICAL MAN-MONTH)...........................................................................6 乐观主义....................................................................................
变形金刚人物图片档案集——博派.exe <br>擎天柱 火车模式 爵士 爵士pretender 千斤顶 铁皮 救护车 警车 蓝霹雳 探长 开路先锋 幻影 飞毛腿 横炮 红色警报 轮胎 烟幕 消防车 吊车 滑车 刹车 飞过山 ...
在这个游戏中,玩家需要帮助人、狼、羊和菜安全地过河,同时要确保在任何时候,狼不会与羊单独在一起(否则狼会吃掉羊),菜也不能与人单独在一起(防止人离开时菜被狼吃掉)。这个游戏体现了经典的逻辑问题,通过...
"人狼羊菜过河"问题是一个经典的逻辑谜题,源于中国的民间故事,也被称为"智渡黄河"或"三子过河"。在编程领域,这个谜题常被用作设计算法和解决约束满足问题的实例。在这个Java程序中,我们将深入探讨如何通过编程来...
一个摆渡人F希望用一条小船把一只狼 W,一头羊 G 和一篮白菜 C 从一条河的左岸渡到右岸去,而船小只能容纳 F、W、G、C 中的两个,决不能在无人看守的情况下,留下狼和羊在一起,羊和白菜在一起,应怎样渡河才能将狼...
- “从青春期开始的年龄看,男孩一般比女孩早”——不正确,事实上,女孩通常比男孩更早进入青春期。 - “孕妇喝酒、吸烟对胎儿的生长发育没有影响”——不正确,孕妇饮酒和吸烟对胎儿有害。 - “生长激素有调节...
人狼羊菜渡河问题是一种经典的计算机科学问题,它描述了一个人带着一条狼、一只羊、一筐白菜过河的过程,并且确保狼和羊、羊和白菜不能单独留在同岸,否则羊或白菜会被吃掉。该问题可以使用图论中的最短路算法进行...
【人狼大战】游戏是一种策略性极强的社交推理游戏,玩家分为村民、狼人和其他特殊角色,通过夜间杀戮和白天投票来决定胜负。在这个Java源代码项目中,开发者可能实现了游戏的核心逻辑,包括角色设定、游戏流程控制、...
"人狼羊菜渡河问题"是一个经典的逻辑谜题,涉及到状态空间的探索和路径优化。问题的核心是设计一种策略,使得人、狼、羊和菜能够安全地通过一条小河,每次只能运输一个物体,并确保在任何时刻,狼不能与羊独处,羊也...
人每次只能带一件物品过河,而狼不能与羊单独相处,羊也不能与菜单独相处,否则会发生不利的情况。因此,必须确保在任何时候,狼和羊、羊和菜都不能在同一岸。 2. **状态表示**:用四维向量v=(m, n, p, q)表示当前...
农夫需要把狼、羊、菜和自己运到河对岸去,只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊。请考虑一种方法,让农夫能够安全地安排...
- **银弹理论**:Brooks比喻软件项目的不可预测性类似于民间传说中的人狼——表面熟悉但实质上充满未知与危险。他指出,就像需要用银弹才能杀死人狼一样,软件开发中的问题也需要根本性的解决方案。然而,他认为并不...
1. **狼人** (LR): 是游戏的主要对立面,每晚可以杀死一名玩家,目标是消灭所有非狼人角色。 2. **村民** (CM): 没有任何特殊能力,通常依赖于推理和观察来参与游戏。 3. **先知** (XZ): 每晚能验证一名玩家的身份,...
本文将深入探讨一个使用Java 2 Micro Edition (J2ME) 开发平台创作的飞机射击游戏——“人狼战”,这款游戏以其丰富的运动模式和动态效果,在众多游戏中脱颖而出。 J2ME作为Java的一个轻量级平台,专为移动设备设计...
在IT领域,特别是游戏开发与模拟器技术中,人狼游戏(也称为狼人杀)是一种广受欢迎的社交推理游戏。而JinroJ-heartScriptMEmu则是一个专为MEmu模拟器设计的、用于运行人狼Jスクリプト的程序。这个项目旨在为玩家...
布鲁克斯用形象的譬喻来论述软件工程中存在的“陷阱”——“在所有恐怖民间传说的妖怪中,最可怕的是人狼,因为它们可以完全出乎意料地从熟悉的面孔变成可怕的怪物”,而“大家熟悉的软件项目具有一些人狼的特性...
把人狼日记的参加者专用的页自动标记。 支持语言:日本語
在这个问题中,农夫需要将狼、羊和菜全部安全地从一岸运送到对岸,同时要确保任何情况下,都不能让狼单独与羊或菜在一起,以免发生危险。为了解决这个问题,我们可以利用有限状态机(Finite State Machine, FSM)的...
在这个案例中,一个状态可以用一个四位二进制数表示,其中每一位分别代表人、狼、羊和菜是在河流的左侧还是右侧。例如,状态“1101”表示人和狼在右侧,而羊和菜在左侧。 由于存在规则限制,有些状态是非法的。根据...