应用程序开发从来都不是简单的事情。当软件变得越来越重要时,他的复杂性也在不断的增加。在减少这种复杂性和增加易用性的工作中,软件工具的提供者已经进行了多年的努力以创建允许开发人员快速的构建应用的快速应用开发(RAD)工具。最开始的产物并不是实际的工具,而是可以提供给开发人员使用的具有关键功能的库,主要是关注在用户接口的生成上。这些库最终被扩展到围绕通讯和关键功能的实现上。然而,虽然这些库加速了软件的开发,但是他们是私有的资产并且要求较高的技能来正确的使用。
为了使快速应用开发更具有实践性,并且向广大的程序员开放快速应用开发的能力,工具提供商开发出了例如 Microsoft® Visual Basic 和 Sybase® PowerBuilder 这样的产品,他们为开发人员提供了一个完整的开发环境。支持的语言也是非常简单易学的,并且工具本身提供了象 GUI 设计者这样的允许用户通过拖放控件到一个虚拟的面板上然后在控件上附加代码功能的方式加速应用开发的手段。这些开发环境快速的生成转换,并且使用这些工具可以自动产生大量的代码。
但是问题仍然存在。虽然这些工具被使用创建很多关键的应用,但是他们很少控制开发人员使用的方法。很多情况下,应用程序既不是基于模型的也没有一个健壮的架构做基础。因此,开发人员还必须要设计他们的应用。产生的应用通常是非结构化的、不够良好的设计和维护困难的。通常缺乏代码共享的实践意味着应用经常会在几个不同的方式(有时是相互冲突的)上产出相同基础功能集合。此外,当组织想跨越各部分来扩展一个非结构性的应用范围时,使用被给定的工具集创建出的应用是很难被度量的。同时这些工具集使用的是私有的技术,因此他们很难与其他技术进行集成。