" With a typical contract, one party decides what should be done and hands over the design to another party to implement and often to a third party to deploy and support. Although it may be unavoidable, such a contractual approach is far from ideal; it increases costs and decreases flexibility. "