Articulo de referencia

Umple

Umple es un lenguaje para la programación orientada a objetos y el modelado con diagramas de clases y diagramas de estados . El nombre Umple es una combinación de " UML ", "ampl...

Umple es un lenguaje para la programación orientada a objetos y el modelado con diagramas de clases y diagramas de estados . El nombre Umple es una combinación de " UML ", "ample" y "Simple" [ 1 ] , lo que indica que está diseñado para proporcionar amplias características para extender los lenguajes de programación con capacidades UML.

Historia y filosofía

El diseño de Umple comenzó en 2008 en la Universidad de Ottawa . Umple se lanzó como software de código abierto y su desarrollo se trasladó a Google Code a principios de 2011 y a GitHub en 2015.

Umple se desarrolló, en parte, para abordar ciertos problemas observados en la comunidad de modelado. [ 2 ] Más específicamente, se diseñó para alinear el modelado y la programación , con el objetivo de superar las reticencias comunes al modelado en la comunidad de programadores. También se pretendía reducir algunas de las dificultades del desarrollo dirigido por modelos que surgen de la necesidad de utilizar herramientas grandes, costosas o incompletas. Uno de los objetivos de diseño es permitir a los programadores modelar de una manera que les resulte natural, añadiendo constructos de modelado a los lenguajes de programación.

Características y capacidades

Umple puede utilizarse para representar de forma textual muchas entidades de modelado UML que se encuentran en diagramas de clases y diagramas de estados . [ 2 ] Umple puede generar código para estos en varios lenguajes de programación. Actualmente, Umple es totalmente compatible con Java , C++ y PHP como lenguajes de programación de destino y tiene una compatibilidad funcional, aunque algo incompleta, con Ruby .

Umple también incorpora diversas características no relacionadas con UML, como el patrón singleton , las claves, la inmutabilidad , los mixins y la inyección de código orientada a aspectos .

Las notaciones de diagramas de clases que admite Umple incluyen clases , interfaces , atributos , asociaciones , generalizaciones y operaciones. El código que Umple genera para los atributos incluye código en el constructor , los métodos 'get' y los métodos 'set'. El código generado difiere considerablemente según si el atributo tiene propiedades como inmutabilidad, tiene un valor predeterminado o forma parte de una clave .

Umple genera muchos métodos para manipular, consultar y navegar por asociaciones. Admite todas las combinaciones de multiplicidad UML y garantiza la integridad referencial .

Umple admite la gran mayoría de la notación de máquinas de estados UML , incluyendo estados anidados de profundidad arbitraria , regiones concurrentes, acciones de entrada, salida y transición, además de actividades de larga duración mientras se está en un estado. [ 3 ] Una máquina de estados se trata como un atributo enumerado donde el valor está controlado por eventos . Los eventos codificados en la máquina de estados pueden ser métodos escritos por el usuario o generados por el compilador Umple. Los eventos se activan al llamar al método. Un evento puede activar transiciones (sujetas a condiciones ) en varias máquinas de estados diferentes. Dado que un programa puede escribirse completamente en torno a una o más máquinas de estados, Umple permite la programación basada en autómatas .

Los cuerpos de los métodos están escritos en uno de los lenguajes de programación de destino. Lo mismo ocurre con otro código imperativo, como las acciones y condiciones de la máquina de estados, y el código que se inyecta de forma orientada a aspectos. Este código puede inyectarse antes de muchos de los métodos que genera Umple, por ejemplo, antes o después de establecer u obtener atributos y asociaciones.

La notación Umple para las construcciones UML se puede integrar en cualquiera de los lenguajes de programación compatibles. En este caso, Umple funciona como un preprocesador : el compilador Umple expande las construcciones UML a código del lenguaje de destino. El código en el lenguaje de destino se puede pasar directamente al compilador Umple; si no se encuentra ninguna notación específica de Umple, el compilador genera el código en el lenguaje de destino sin modificaciones.

Umple, combinado con uno de sus lenguajes de programación imperativos, puede considerarse y utilizarse como un lenguaje de programación completo. Por lo tanto, Umple junto con Java puede considerarse una extensión de Java.

Alternativamente, si se omiten el código imperativo y los conceptos específicos de Umple, este puede considerarse una forma de expresar un amplio subconjunto de UML de manera puramente textual. Se puede añadir código en uno de los lenguajes de programación compatibles del mismo modo que UML contempla la adición de código de lenguaje de acción.

Licencia

Umple está licenciado bajo una licencia de estilo MIT .

Ejemplos

Aquí está el programa clásico "Hola mundo" escrito en Umple (que extiende Java): [ 4 ]

clase HelloWorld { public static void main ( String [ ] args ) { System . out . println ( "Hola Mundo" ); } }

Este ejemplo se parece mucho a Java, porque Umple extiende otros lenguajes de programación.

Con el programa guardado en un archivo llamado HelloWorld.ump, se puede compilar desde la línea de comandos:

$ java -jar umple.jar HelloWorld.ump

Para ejecutarlo:

$ java HolaMundo

A continuación se muestra un ejemplo completamente ejecutable que ilustra métodos Java integrados y la declaración de una asociación. [ 4 ]

clase Persona { nombre ; // Atributo, cadena por defecto String toString () { return ( getName ()); } } clase Estudiante { esUnaPersona ; } clase Mentor { esUnaPersona ; } asociación { 0..1 Mentor -- * Estudiante ; } clase Persona { public static void main ( String [ ] args ) { Mentor m = new Mentor ( "Nick El Mentor" ); Estudiante s = new Estudiante ( " Tom El Estudiante" ); s.setMentor ( m ); System.out.println ( " El mentor de " + s + " es " + s.getMentor ( ) ); System.out.println ( " Los estudiantes de " + m + " son " + m.getStudents ( ) ); } }

El siguiente ejemplo describe una máquina de estados llamada status, con estados Open, Closing, Closed, Opening y HalfOpen, y con varios eventos que provocan transiciones de un estado a otro. [ 5 ]

clase Puerta de garaje { estado { Abrir { botónOrObstáculo -> Cerrar; } Cierre { botónOrObstáculo -> Apertura; alcanzarAbajo -> Cerrado; } Cerrado { botónOrObstáculo -> Apertura; } Apertura { botónUobstáculo -> Semiabierto; alcanzar Arriba -> Abrir; } Medio Abierto { botónUObstáculo -> Apertura; } } }

Uso de Umple en la práctica

La primera versión del compilador Umple se escribió en Java, Antlr y Jet (plantillas de emisor de Java), pero en un proceso de arranque , el código Java se convirtió a Umple siguiendo una técnica llamada Umplificación. [ 6 ] Antlr y Jet también se convirtieron posteriormente a Umple nativo. Por lo tanto, Umple ahora está escrito completamente en sí mismo; en otras palabras, es autoalojado y sirve como su propio caso de prueba más grande.

Umple y UmpleOnline han sido utilizados en el aula por varios instructores para enseñar UML y modelado. En un estudio se descubrió que ayudaba a acelerar el proceso de enseñanza de UML y también que mejoraba las calificaciones de los estudiantes. [ 7 ]

Herramientas

Umple está disponible como archivo Jar , por lo que se puede ejecutar desde la línea de comandos, y también como complemento de Eclipse .

También existe una herramienta en línea para Umple llamada UmpleOnline [ 8 ] , que permite a un desarrollador crear un sistema Umple dibujando un diagrama de clases UML, editando código Umple o ambas cosas. Los modelos Umple creados con UmpleOnline se almacenan en la nube . Actualmente, UmpleOnline solo admite programas Umple que constan de un único archivo de entrada.

Además del código, las herramientas de Umple pueden generar una variedad de otros tipos de salida, incluidas interfaces de usuario basadas en el modelo Umple. [ 9 ]

Véase también

Referencias

  1. "Sitio web oficial del proyecto" .
  2. 1 2 Forward, Andrew (2010). "La convergencia del modelado y la programación: facilitando la representación de atributos y asociaciones en el lenguaje de programación orientado a modelos Umple" . Tesis doctoral, Universidad de Ottawa .
  3. Badreddin, Omar (2012). "Una manifestación de la dualidad modelo-código: facilitando la representación de máquinas de estados en el lenguaje de programación orientado a modelos Umple" . Tesis doctoral, Universidad de Ottawa .
  4. 1 2 "Ejemplos de Hola Mundo" . Manual de Usuario de Umple . 2013.
  5. "Máquinas de estados básicos" . Manual de usuario de Umple . 2013.
  6. Lethbridge, Timothy C.; Forward, Andrew; Badreddin, Omar (2010). "Simplificación: Refactorización para añadir abstracción a un programa de forma incremental". 17.ª Conferencia de Trabajo sobre Ingeniería Inversa de 2010. págs. 220–224 . doi : 10.1109/wcre.2010.32 . ISBN  978-1-4244-8911-4. S2CID 14808702 . 
  7. Lethbridge, Timothy C.; Mussbacher, Gunter; Forward, Andrew; Badreddin, Omar (2011). "Enseñanza de UML con umple: Aplicación de la programación orientada a modelos en el aula". 2011 24.ª Conferencia IEEE-CS sobre Educación y Formación en Ingeniería de Software (CSEE&T) . págs. 421–428 . doi : 10.1109/cseet.2011.5876118 . ISBN  978-1-4577-0349-2. S2CID 15975894 . 
  8. Grupo CRuiSE, Universidad de Ottawa. "Umple Online" .
  9. Forward, Andrew; Badreddin, Omar; Lethbridge, Timothy C.; Solano, Julian (julio de 2012). "Prototipado rápido basado en modelos con Umple". Software: Practice and Experience . 42 (7): 781– 797. doi : 10.1002/spe.1155 . S2CID 36046547 . 
  • Página principal de Umple en la Universidad de Ottawa
  • Aplicación web UmpleOnline para editar diagramas UML y código simultáneamente.
  • Lista de discusión sobre el desarrollo de Umple
  • Blog de Umple
  • Vídeos de Umple en YouTube
Obtenido de " https://en.wikipedia.org/w/index.php?title=Umple&oldid=1349780060 "