软件的本质受三个相互作用的因素影响:软件处于物理世界和幻想世界之间的模糊状态;我们常常误解软件面临的限制,因为软件的规范问题是循环的,必须构建软件才能完全了解其需求;软件开发受观察者效应影响,观察软件运行会改变我们对软件的理解。这些因素导致软件开发过程中存在摩擦和迭代,需要开发人员和用户之间持续沟通和理解。