Las heramientas CASE (Computer Aided Software Engineering) pretenden aplicar los métodos de la ingenieria a la producción de software y surgen en respuesta a la crisis del software de finales de los sesenta. Cubren todas las etapas del ciclo de vida del software y básicamente pretende generar software de calidad minimizando tiempo y costes tanto en el desarrollo como en el mantenimiento del mismo.
El lenguaje UML (Unified Modeling Language) es un estandar que permite especificar y diseñar software basado en el paradigma de la orientación a objetos.
En este enlace podemos ver diferentes herramientas CASE que soportan UML y que permiten generar código automáticamente en diferentes lenguajes de programación.