在上个世纪60年代中期爆发了众所周知的软件危机。为了克服这一危机,在1968、1969年连续召开的两次著名的NATO会议上提出了软件工程这一术语,并在以后不断发展、完善。与此同时,软件研究人员也在不断探索新的软件开发方法。提高人类的劳动生产率,提高生产的自动化程度,一直是人类坚持不懈的追求目标。软件开发也不例外。早在1982年美国国防部就提出了STARS工程,希望建立一个"用以支持需求定义、程序生成以及软件维护等软件生存期全部活动的,并把它们集成在一起的整个体系"。但早期的软件开发环境工具较少,且不配套,支持需求分析等高层次生存期阶段的工具更少,因此要求支持某类软件开发方法的全过程已很不容易了。如Your-don公司的Cradle软件开发环境支持Yourdon结构化开发方法,Jackson工具集支持Jackson开发方法。随着软件开发工具的积累,自动化工具的增多,软件开发环境进入了第三代ICASE(Integrated Computer-Aided Software Engineering)。系统集成方式经历了从数据交换(早期CA SE采用的集成方式:点到点的数据转换),到公共用户界面(第二代CASE:在一致的界面下调用众多不同的工具),再到目前的信息中心库方式。这是ICASE的主要集成方式。它不仅提供数据集成(1991年IEEE为工具互连提出了标准P1175)和控制集成(实现工具间的调用),还提供了一组用户界面管理设施和一大批工具,如垂直工具集(支持软件生存期各阶段,保证生成信息的完备性和一致性)、水平工具集(用于不同的软件开发方法)以及开放工具槽。ICASE的进一步发展则是与其它软件开发方法的结合,如与面向对象技术、软件重用技术结合,以及智能化的I-CASE。近几年已出现了能实现全自动软件开发的ICASE。ICASE的最终目标是实现应用软件的全自动开发,即开发人员只要写好软件的需求规格说明书,软件开发环境就自动完成从需求分析开始的所有的软件开发工作,自动生成供用户直接使用的软件及有关文档。
在应用最成熟的数据库领域,目前已有能实现全部自动生成的应用软件,如MSE公司的Magic系统。它只要求软件开发人员填写一系列表格(相当于要求软件实现的各种功能),系统就会自动生成应用软件。它不仅能节省90%以上的软件开发和维护的工作量,而且还能将应用软件的开发工作转交给熟练的用户。