LePUS3 [1] es un lenguaje para modelar y visualizar programas y patrones de diseño orientados a objetos ( Java , C ++ , C # ) . [2] Se define como un lenguaje de especificación formal , [3] [4] formulado como un subconjunto axiomatizado de la lógica de predicados de primer orden . Un diagrama en LePUS3 también se llama Codechart . [5] LePUS, el nombre de la primera versión del idioma, es una abreviatura de Language for Pattern Uniform Specification .
Propósito
LePUS3 está diseñado para los siguientes propósitos:
- Escalabilidad : para modelar programas a gran escala utilizando pequeños gráficos de código con solo unos pocos símbolos
- Verificabilidad automatizada : para permitir a los programadores verificar de forma totalmente automática la conformidad con el diseño para mantener el diseño sincronizado con la implementación.
- Visualización del programa : para permitir que las herramientas realicen ingeniería inversa en los Codecharts legibles a partir del código fuente simple modelando su diseño.
- Implementación de patrones : para permitir que las herramientas determinen automáticamente si su programa implementa un patrón de diseño
- Abstracción del diseño : especificar programas no implementados sin comprometerse prematuramente con minucias de implementación.
- Generalidad : modelar un patrón de diseño no como una implementación específica sino como un motivo de diseño.
- Rigor : Permitir a los diseñadores de software estar seguros exactamente de lo que representan los Codecharts y razonar rigurosamente sobre ellos.
Contexto
LePUS3 pertenece a las siguientes familias de idiomas:
- Lenguajes de modelado de software orientados a objetos (p. Ej., UML ): LePUS3 es una notación visual que se utiliza para representar los componentes básicos en el diseño de programas lenguajes de programación orientados a objetos
- Lenguajes de especificación formal : al igual que otros lenguajes visuales lógicos, los gráficos de código articulan oraciones en lógica matemática. LePUS3 está axiomatizado y definido como un subconjunto recursivo (turing-decidible) del cálculo de predicados de primer orden. Su semántica se define mediante estructura finita (lógica matemática) .
- Lenguajes de descripción de arquitectura : LePUS3 es unlenguaje de especificación no funcional que se utiliza para representar decisiones de diseño sobre programas en lenguajes de programación orientados a objetos basados en clases (como Java y C ++ ).
- Lenguajes de especificación compatibles con la herramienta : la verificación de los gráficos de código (comprobando su coherencia con un programa Java 1.4) se puede establecer ('verificar') con un clic de un botón, como lo demuestra el kit de herramientas de programación de dos niveles .
- Las notaciones de visualización de software son notaciones que ofrecen una representación gráfica del programa, normalmente generadas por ingeniería inversa del código fuente del programa.
Vocabulario
LePUS3 fue diseñado para adaptarse a la parsimonia y la economía de expresión. Su vocabulario consta de solo 15 fichas visuales.
Soporte de herramientas
El Kit de herramientas de programación de dos niveles [6] [7] se puede utilizar para
- crear especificaciones LePUS3 (Codecharts)
- verificar automáticamente [8] la consistencia de los Codecharts LePUS3 con los programas Java 1.4; y
- Codecharts de ingeniería inversa a partir del código fuente de Java.
Patrones de diseño
LePUS3 fue diseñado específicamente para modelar, entre otros, los patrones de diseño 'Gang of Four' , que incluyen fábrica abstracta , método de fábrica , adaptador , decorador , compuesto , proxy , iterador , estado , estrategia , método de plantilla y visitante . (Ver "El Compañero 'Gang of Four'") [2] La abreviatura LePUS para "Lenguaje para Especificación Uniforme de Patrones" se usa porque el precursor de este lenguaje estaba principalmente relacionado con patrones de diseño. La implementación de patrones de diseño especificados en LePUS3 puede ser verificada automáticamente por TTP Toolkit. [8]
Ejemplos de
LePUS3 es particularmente adecuado para modelar grandes programas, patrones de diseño y marcos de aplicaciones orientados a objetos . No es adecuado para modelar programas no orientados a objetos, estilos arquitectónicos y propiedades indecidibles y semidecidibles .
Jerarquía que se puede cerrar (java.io)
Patrón de método de fábrica
Enterprise JavaBeans
Java3D
JUnit
Referencias
- ^ Edén, Amnón; contribuciones de Jonathan Nicholson (2011). Gráficos de código: hojas de ruta y planos para programas orientados a objetos (PDF) . Hoboken, Nueva Jersey: Wiley / Blackwell.
- ^ a b Amnon H. Eden, con contribuciones de Jonathan Nicholson. "Modelado de patrones de diseño, Capítulo 11 en Codecharts: hojas de ruta y planos para programas orientados a objetos" (PDF) .
- ^ Amnon H. Eden; Epameinondas Gasparis; Jonathan Nicholson (2007). "Manual de referencia de LePUS3 y Class-Z" . Universidad de Essex.
- ^ Gasparis, Epameinondas; Jonathan Nicholson; Amnon H. Eden (19 de septiembre de 2008). LePUS3: un lenguaje de descripción de diseño orientado a objetos (PDF) . DIAGRAMAS 2008. Herrsching, Alemania. Archivado desde el original (PDF) el 19 de noviembre de 2008 . Consultado el 23 de junio de 2008 .
- ^ Codechart, definición formal
- ^ Kit de herramientas de programación de dos niveles
- ^ Gasparis, Epameinondas; Amnon H. Eden; Jonathan Nicholson; Rick Kazman (10 de mayo de 2008). El navegador de diseño: creación de gráficos de programas Java (PDF) . 30th IEEE International Conference on Software Engineering - ICSE. Leipzig - Alemania. Archivado desde el original (PDF) el 19 de noviembre de 2008 . Consultado el 23 de junio de 2008 .
- ^ a b Nicholson, Jonathan; Epameinondas Gasparis; Amnon H Eden; Rick Kazman (2009). Verificación automatizada de patrones de diseño con LePUS3 (PDF) . El 1er Simposio de Métodos Formales de la NASA – NFM 2009. Moffett Field, CA.
enlaces externos
- Página web oficial
- Una descripción general de los gráficos de código
- Especificaciones de muestra en LePUS3
- Leyenda: Clave de los símbolos LePUS3 y Class-Z
- Manual de referencia de LePUS3 y Class-Z
- Tutorial: Modelado orientado a objetos con LePUS3 y Class-Z