人月神话6

6. 没有银弹 —— 软件开发的核心困难
“比起对概念进行表达和对实现逼真程度进行验证,以下的事项更为困难”

规格说明
设计
测试
现代软件系统无法规避的内在特性

复杂度
数学家和物理学家为复杂的现象建立简化的模型,从而论证特性。但是这一套方法在软件开发中行不通,软件系统
中的多种状态、语言特性、依赖的环境特性等因素都是构成软件复杂度的重要因素,无一可以被剥离出去。

一致性
软件开发的目标之一是兼容性,如果要保持兼容性,代码上就要做大量的妥协。对软件的任何再设计,都无法简化这些复杂性

可变性
需求变了、实现也一定变。这跟建筑工程完全不同。软件工程会遭受持续变更的压力

不可见性
硬件有电路图,但是试图用图形来描述软件时,发现它是有很多互相关联、重叠在一起的图形。

posted @ 2023-08-15 20:54  就叫清风吧  阅读(8)  评论(0)    收藏  举报