第1章 复杂性
一名医生、一名土木工程师和一名计算机科学家在一起争论什么是这个世界上*古老的职业。医生说:“在圣经中,上帝用亚当的一根肋骨创建了夏娃。这显然需要外科手术,所以我当然可以宣称我的职业是世界上*古老的职业。”土木工程师打断道:“但是在‘创世纪’中更早的部分,描述了上帝从混沌中创造了天堂和人间的秩序。这是**应用土木工程,也是土木工程*伟大的应用。因此,亲爱的医生,您错了,我的职业才是世界上*古老的职业。”计算机科学家斜靠在她的椅子上,微笑着,然后充满自信地说:“啊哈,但是,你们觉得是谁创造了那片混沌?”
“系统越复杂,就越容易全面崩溃”。建筑师一般不会想要为一幢100层的大楼添加一个新的地下室,因为这样做成本会很高,无疑将失败。但让人吃惊的是,软件系统的用户在提出类似的改动时,都不会多想一下。相反,他们会说,这只是一个简单的编程问题。
由于我们不能控制软件的复杂性,所以导致了项目延迟、超出预算以及在声称的需求中存在缺陷。我们常常把这种情况称为软件危机,但老实说,持续了这么长时间的问题必须称之为正常情况。不幸的是,这种危机导致了人力资源(*宝贵的商品)的浪费以及许多机会的丧失。没有足够好的***来创建用户需要的所有新软件,而且在任一组织机构中,相当一部分***必须经常维护或看护老的软件。考虑到软件对大多数产业化**经济基础的间接和直接贡献,同时考虑到软件可以极大增强个人的能力,我们不能让这种情况继续下去。
……