人月神话6
6. 没有银弹 —— 软件开发的核心困难
“比起对概念进行表达和对实现逼真程度进行验证,以下的事项更为困难”
规格说明
设计
测试
现代软件系统无法规避的内在特性
复杂度
数学家和物理学家为复杂的现象建立简化的模型,从而论证特性。但是这一套方法在软件开发中行不通,软件系统
中的多种状态、语言特性、依赖的环境特性等因素都是构成软件复杂度的重要因素,无一可以被剥离出去。
一致性
软件开发的目标之一是兼容性,如果要保持兼容性,代码上就要做大量的妥协。对软件的任何再设计,都无法简化这些复杂性
可变性
需求变了、实现也一定变。这跟建筑工程完全不同。软件工程会遭受持续变更的压力
不可见性
硬件有电路图,但是试图用图形来描述软件时,发现它是有很多互相关联、重叠在一起的图形。
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号