软件内在特性:
- 复杂度:没有两个软件的部分是相同的,软件不存在重复的部分。软件实体的扩展会导致软件元素一非线性递增的方式交互,软件必然会越来越复杂。复杂度不仅导致技术产生苦难,还引发了很多管理上的问题。因为管理者越来越难以完整的理解问题。
- 一致性:软件领域不存在像物理学那样“对于事物简化的解释”,软件的复杂度是随心所欲、毫无规则所言的。
- 可变性:软件的修改成本相对于汽车、建筑要低很多。软件产品扎根于文化母体中,例如用户、社会规律、计算机硬件等。后者不断变化要求了前者也要跟着变。
- 不可见性:软件客观上不具有抽象模型,这种缺憾限制了个人的设计过程,也阻止了思路互相之间的交流。