设计和发明软件的本质要求是,它能够适应经营变化所需要 的速度,做出快速的改变。

不仅是程序难以改变,而且常常难以确定的是,应该对哪一个程序做出改变。从事经营活动的人们在如何应付出现的情况方面,拥有很多原则和策略。策略需要不断变化,而且应该不断变化,任何时候都应寻求对它的不断改进。例如,有一项策略可能阐述如何与支付信誉不好的客户进行交易。策略中必须明确,应该何时将某一客户化归为“信誉不好的支付人”,并可能建议,当这一客户发来订单时,企业应该将订单压下,直到以前的欠款付清, 并自动向这一客户发出催款通知。类似这样的策略原则常常隐含在不只一个程序的软件之中。这种策略原则可能是支付程序、帐款应收程序、客户订货操作程序、以及其它程序的代码中所固有的。在这些程序的使用说明中,通常不对类似这样的原则进行明确的阐述;这些策略原则隐含在程序代码中。从事经营活动的人们可以决定对这一原则进行改变,但一旦他们想改变它时,却搞不清应该修改哪些程序。这些程序通常无法反映经营策略的需要。

在计算机化企业世界里,策略原则很可能经常作出改变,这些改变必须以极快的速度完成。对软件的设计,有必要利用这样的工具:它们不仅有助于快速的开发,而且能够对经营策略原则做出明确表述,以便使人们能清楚理解这些原则,能快速而容易地对它们实行改变。一些现代化的开发工具已经使我们能够明确表述经营策略原则,能够产生执行这些策略原则的代码。这是使计算机化企业具有易变性和灵活性的极其重要的一步——它使人们能对策略原则做出改变,能够重新产生代码以对这些策略原则进行改进。我们必须在经营原则出现改变时,能保证以极快的速度重新对软件进行设计。