BOUML es una herramienta UML 2 que te permite especificar y generar códigos en C++, Java, Idl, PHP y Python. La aplicación es muy rápida,requiere poca memoria y es muy sencilla de utilizar.
Además de ser tu el que decides que debe generarse, podrás programar simultáneamente en C++, Java, PHP y IDL. En cuanto a las herramientas externas, pueden ser desarrolladas en C++ o Java, usando BOUML para la definición. Cuando generas código para Java, C++ e IDL puedes controlar bastante la generación y puedes hacer reingeniería inversa, es decir, a partir del código sacar el modelo.
A parte de ser gratuito y de código abierto bajo licencia GNU General Public License, uno de sus puntos fuertes es que soporta una gran cantidad de diagramas. También es capaz de generar documentación en varios formatos y trabajar en grupo con sus módulos "Project Control" y "Project Synchro". A pesar de ser bastante completo y funcional, faltan algunas opciones útiles como la típica de alinear a la rejilla base. Aún así, merece la pena hecharle un vistazo.