UML es un poderoso método para diseñar y documentar sistemas de software. Existen muchas herramientas para asistir en la creación y mantenimiento de los documentos UML. Las más avanzadas incluyen ciertas características que permiten la traducción de modelos UML a código, y viceversa. UML no está lo suficientemente refinado para proveer todos los aspectos relevantes de una especificación, ya que hay ciertas restricciones que no pueden expresarse en el modelo y muchas veces son descriptas en lenguaje natural, pero esto puede resultar en ambigüedades. Para escribir restricciones no ambiguas se han desarrollado lenguajes formales. Uno de ellos es OCL, que permite incrementar la precisión de los modelos UML. Además existe JML para especificar programas escritos en el lenguaje Java. La motivación principal de la tesina es analizar y comparar los lenguajes OCL y JML, para luego definir una traducción entre ambos lenguajes y finalmente desarrollar una herramienta que realice la traducción automáticamente.