Estudio Eiffel

Entorno de desarrollo

EiffelStudio es un entorno de desarrollo para el lenguaje de programación Eiffel desarrollado y distribuido por Eiffel Software.

EiffelStudio incluye un conjunto de herramientas integradas en una única interfaz de usuario: compilador, intérprete, depurador, navegador, herramienta de métricas, generador de perfiles, diagrama e inspección de código. La interfaz de usuario se apoya en una serie de paradigmas de interfaz de usuario específicos, en particular el "pick-and-drop" para una navegación eficaz.

EiffelStudio está disponible en varias plataformas, entre ellas Windows , Linux , Mac OS , Solaris , VMS y RaspberryPi . El código fuente está disponible bajo licencia GPL ; también hay otras licencias comerciales disponibles.

Una ventana que contiene tres paneles: un panel de edición que contiene el código fuente de la clase, un panel de características que contiene una lista de características del código fuente de la clase en edición y un panel de diagrama que muestra la clase como un ícono con relaciones con otras clases.
Versión 7.2 de EiffelStudio, que muestra los paneles Editor, Funciones y Diagrama

Estado, licencia y trámite comunitario

EiffelStudio es un desarrollo de código abierto con versiones beta de la próxima versión disponibles periódicamente.

La comunidad Eiffel participa activamente en su desarrollo; su sitio web oficial es Eiffel.org, donde se enumeran proyectos y recursos. El código fuente base suele estar disponible para su consulta a través de Subversion o Git . También hay disponibles foros de discusión y similares.

Desde 2019, no se ha publicado ninguna versión de código abierto y el repositorio svn está protegido con contraseña. El código sigue estando disponible a través de un espejo público de GitHub, pero con un retraso de 12 meses.

Tecnología de compilación

EiffelStudio utiliza una tecnología de compilación específica conocida como Melting Ice (reivindicada por Eiffel Software como marca registrada) que integra la compilación propiamente dicha con la interpretación de los elementos modificados desde la última compilación, para lograr una entrega muy rápida (el tiempo de recompilación es proporcional al tamaño del cambio, no al tamaño del programa en general). Aunque se pueden entregar programas "fundidos", la práctica habitual es realizar un paso de "finalización" antes del lanzamiento. La finalización es una forma de compilación altamente optimizada, que lleva más tiempo pero genera ejecutables optimizados.

La parte de interpretación de EiffelStudio se basa en una máquina virtual orientada a bytecode . El compilador genera lenguaje C o .NET CIL (Common Intermediate Language).

Ingeniería de ida y vuelta

La herramienta Diagrama de EiffelStudio ofrece una vista gráfica de las estructuras del software. Puede utilizarse tanto en

  • Ingeniería avanzada, como herramienta de diseño para producir software a partir de descripciones gráficas.
  • Ingeniería inversa, producción automática de representaciones gráficas de textos de programas existentes.

La herramienta garantiza la integridad de los cambios realizados en cualquier estilo, para una "ingeniería de ida y vuelta" completa.

La notación gráfica es BON (Business Object Notation, ver bibliografía) o UML . BON es el valor predeterminado.

Paradigma de interfaz de usuario

EiffelStudio permite mostrar muchas vistas diferentes de clases y características: vista de texto (texto completo del programa), vista de contrato (solo interfaz, con contratos ), vista plana (que incluye características heredadas), clientes (todas las clases y características que usan una clase o característica dada), historial de herencia (qué sucede con una característica hacia arriba y hacia abajo en la estructura de herencia) y muchas otras.

EiffelStudio se basa en un paradigma de interfaz de usuario original basado en "objetos de desarrollo", "piedras" y "agujeros". De la misma manera que en Eiffel, la programación orientada a objetos trata con objetos durante la ejecución, los desarrolladores tratan con abstracciones que representan clases, características, puntos de interrupción (para depuración), clústeres (grupos de clases) y otros objetos de desarrollo . En EiffelStudio, un objeto de desarrollo se puede seleccionar ( pick ) dondequiera que aparezca en la interfaz, e independientemente de su representación visual (nombre del objeto, símbolo visual u otro).

Para seleccionar un objeto de desarrollo, basta con hacer clic derecho sobre él. El cursor se transforma en un símbolo especial o piedra que corresponde al tipo de objeto: "burbuja" (elipse) para una clase, punto para un punto de interrupción, cruz para una característica, etc. A medida que mueve el cursor, se muestra una línea desde el objeto original hasta la posición actual. A continuación, puede colocar la piedra en cualquier lugar que coincida: un icono que represente un orificio con la misma forma general (orificio de clase, orificio de punto de interrupción, orificio de característica, etc.) o una ventana con un tipo compatible. El efecto de colocar una piedra en una herramienta es redirigir toda la herramienta al objeto de desarrollo que se "seleccionó". Por ejemplo, una herramienta de clase mostrará ahora la clase elegida, en cualquier vista (texto, contrato, plano, etc.) que se haya seleccionado. Esto se conoce como el paradigma "Seleccionar y soltar".

La combinación de vistas múltiples y Pick-and-Drop permite navegar rápidamente a través de sistemas complejos y seguir las transformaciones a veces extendidas que las características experimentan bajo herencia: cambio de nombre, redefinición, indefinición.

Pruebas unitarias y de integración

EiffelStudio incluye una función de prueba integrada denominada EiffelStudio AutoTest [1], mediante la cual los desarrolladores pueden crear paquetes de pruebas unitarias y de integración, desde simples hasta sofisticados. Las funciones de EiffelStudio AutoTest permiten al desarrollador ejecutar y probar el código de clase de Eiffel desde el nivel de características (por ejemplo, pruebas unitarias) hasta sistemas de clases completos (por ejemplo, integración). Como tal, la ejecución de este código también ejecuta los contratos de las características y atributos ejecutados. Como tal, EiffelStudio AutoTest es un medio para ejercitar las "pruebas" o suposiciones de las condiciones de Diseño por contrato. Por lo tanto, las pruebas unitarias y de integración no necesitan volver a probar mediante aserciones u oráculos de prueba lo que ya se ha codificado como especificación en los contratos del texto de la clase.

EiffelStudio AutoTest ofrece al usuario tres métodos de creación de casos de prueba.

En primer lugar, para las pruebas creadas manualmente, EiffelStudio AutoTest crea una clase de prueba que contiene un marco para la prueba. El usuario solo necesita proporcionar el código de prueba.

En segundo lugar, EiffelStudio AutoTest proporciona un método para crear una nueva prueba basada en un fallo de la aplicación en tiempo de ejecución. Este tipo de prueba se denomina prueba extraída . Si durante la ejecución del sistema de destino se produce un fallo inesperado, EiffelStudio AutoTest puede trabajar a partir de la información disponible en el depurador para crear una nueva prueba que reproduzca el estado y las llamadas que provocaron el fallo. Una vez solucionado el problema, la prueba extraída se puede añadir al conjunto de pruebas como protección contra las regresiones del problema.

El tercer método de creación de pruebas produce lo que se denomina pruebas generadas . En este escenario, el usuario proporciona a EiffelStudio AutoTest las clases para las que se deben generar las pruebas y alguna información adicional que se utiliza para controlar la generación de pruebas. A continuación, la herramienta comienza a llamar a rutinas en las clases de destino utilizando valores de argumentos aleatorios. Por cada condición posterior única o violación de invariante de clase , EiffelStudio AutoTest produce una nueva prueba única que reproduce la llamada fallida.

Historia

EiffelStudio tiene sus orígenes en la primera implementación de Eiffel, realizada por Interactive Software Engineering Inc. (predecesora de Eiffel Software), lanzada en 1986. El origen de la tecnología actual parece remontarse a "EiffelBench", iniciado en 1990 en relación con el diseño de la versión Eiffel 3 del lenguaje (como se documenta en Eiffel: The Language , ver bibliografía). EiffelBench pasó a llamarse "EiffelStudio" alrededor de 2001; este es también el momento en el que el entorno dejó atrás sus orígenes Unix para apuntar a Windows y otras plataformas.

Los principales lanzamientos desde 2001 y algunas de las nuevas características de cada uno de ellos han sido:

  • 5.0, julio de 2001: primera versión en ser "EiffelStudio" propiamente dicha; integración de la herramienta "EiffelCase" anterior para diseño gráfico con EiffelBench, en forma de la herramienta Diagram Tool de EiffelStudio)
  • 5.1, diciembre de 2001: primera versión compatible con .NET (nota de prensa (PDF)). Antes de su lanzamiento se llamaba "Eiffel#" [2].
  • 5.2, noviembre de 2002: nuevo EiffelBuild para diseño de GUI, depuración extendida, nuevos mecanismos para integración de C y C++, mejores facilidades de ida y vuelta para la herramienta Diagram (comunicado de prensa).
  • 5.3, marzo de 2003: tecnología de compilador incremental disponible para Eiffel .NET. Interfaz Java Eiffel2Java, EiffelStore (interfaz de base de datos relacional) ahora disponible para .NET, primera versión para Mac OS, mejoras de rendimiento (nota de prensa).
  • 5.4, ​​noviembre de 2003: nuevo mecanismo de conversión, importantes mejoras en el rendimiento en tiempo de ejecución (en particular para agentes ), importantes mejoras en la velocidad de compilación, soporte mejorado para subprocesos múltiples, importantes mejoras de EiffelBuild, primer soporte para nuevos mecanismos según lo definido por el comité Eiffel de ECMA , soporte para condiciones previas y posteriores en rutinas externas (por ejemplo, C), forma transparente de llamar a rutinas .NET sobrecargadas desde Eiffel (comunicado de prensa).
  • 5.5, septiembre de 2004: acoplamiento, depurador mejorado, nuevas características del lenguaje ECMA (comunicado de prensa).
  • 5.6, agosto de 2005: herramienta de diagrama mejorada (soporte UML, gráficos dirigidos por fuerza, mejor recorrido de ida y vuelta), nuevo asistente EiffelCOM para la generación de componentes COM de Microsoft , mejor finalización de clases, generación de código .NET más rápida (comunicado de prensa).
  • 5.7, octubre de 2006: incorporación de ISO/ECMA Eiffel (agentes en línea, nueva semántica "expandida", tuplas con nombre, soporte Unicode ), facilidades de refactorización, nueva forma de configurar un sistema de proyecto, métricas (comunicado de prensa).
  • 6.0, junio de 2007: adición de ISO/ECMA Eiffel (genéricaidad de restricciones múltiples, notación octal y binaria para números enteros), nuevo editor con pestañas, nuevas facilidades de acoplamiento para permitir al usuario definir su espacio de trabajo, menú contextual disponible además de seleccionar y soltar, herramienta de dependencia (comunicado de prensa).
  • 6.1, noviembre 2007: (comunicado de prensa).
  • 6.2, mayo 2008: (comunicado de prensa).
  • 6.3, diciembre 2008: (comunicado de prensa).
  • 6.4, junio 2009: (comunicado de prensa).
  • 6.5, noviembre 2009: (comunicado de prensa).
  • 6.6, mayo 2010: (comunicado de prensa).
  • 6.7, noviembre 2010: (comunicado de prensa).
  • 6.8, mayo de 2011. Incluye la primera implementación de facilidades que soportan SCOOP , Programación Orientada a Objetos Concurrente Simple . (nota de prensa).
  • 7.0, noviembre de 2011. Incluye mejoras funcionales y de rendimiento para la facilidad de desarrollo paralelo SCOOP , biblioteca GUI y soporte de herramientas para estructuras de interfaz de cinta , soporte mejorado para el desarrollo de software a prueba de vacíos y muchas otras mejoras.
  • 7.1, junio de 2012. Incluye la recolección de basura del procesador SCOOP . Múltiples mejoras en el sistema de información de Eiffel que vincula el código de la aplicación con recursos externos apropiados, como documentos de requisitos.
  • 7.2, febrero de 2013.
  • 7.3, julio de 2013.
  • 13.11, diciembre de 2013. Esta versión marca el comienzo del uso de un nuevo esquema de numeración de versiones. (Nota de la versión) (comunicado de prensa).
  • 14.05. Mayo 2014. Incluye la nueva herramienta Eiffel Inspector (herramienta de análisis estático para ayudar a mantener una alta calidad del código). (nota de prensa).
  • 15.01.2015. El nuevo entorno de ejecución de SCOOP aporta una mejora significativa del rendimiento. (comunicado de prensa).
  • 15.08.2015. Solución EiffelWeb mejorada para crear aplicaciones de servidor web. (nota de prensa).
  • 15.12, diciembre 2015. Mejoras en el lenguaje (nueva notación de tipos de agentes). (nota de prensa).
  • 16.05. Mayo 2016. Versión de mantenimiento. (nota de prensa).
  • 17.01, enero de 2017. Mecanismo de capacidad de la biblioteca para documentar y aplicar las opciones de compilación admitidas. Plantillas de código. (Versión 17.01)
  • 17.05, mayo de 2017. Mejor detección de características obsoletas. Selección y eliminación de variables locales. (Versión 17.05)
  • 18.01, febrero de 2018. Analizador de código integrado más profundo. Reglas de tipos mejoradas para expresiones condicionales y matrices de manifiesto. Características de clase. (Versión 18.01).
  • 18.07, julio de 2018. Reglas relajadas para las características de clase. Expresiones de corchetes posteriores. Objetivos de proyectos remotos. (Versión 18.07).
  • 18.11, diciembre de 2018. Todos los contenedores se pueden utilizar en forma de iteración de un bucle, y los lineales se pueden inicializar a partir de otros. (Versión 18.11).
  • 19.05, mayo de 2019. Operadores Unicode, HiDPI, eliminación de 'clases' inactivas, optimizaciones del compilador. (versión 19.05).
  • 20.05, mayo de 2020. Expresión de múltiples ramas, evaluación de cadena de manifiesto sin tipo basada en contenido. (Versión 20.05).
  • 20.11, noviembre de 2020. Clases de una vez, WrapC. (versión 20.11).
  • 21.11, noviembre de 2021. Migración a GTK3 para Linux, Unix y una mejor presencia en MAC OS, nueva herramienta de control de fuente. (Versión 21.11).
  • 22.05, mayo de 2022. Mejoras en la herramienta de control de código fuente y la interfaz de usuario. (Versión 22.05).
  • 22.12, diciembre de 2022. Nueva plataforma, soporte ARM (versión 22.12).
  • 23.09, septiembre de 2023. Compatibilidad con NETcore (versión 23.09).
  • 24.05 , mayo de 2024. Compatibilidad con NETcore mejorada y depuración, nuevos comandos de Composer (versión 24.05).

Analizador de código

El analizador de código (anteriormente Inspector Eiffel ) es un programa automatizado de análisis estático y pruebas de software de Eiffel publicado por Eiffel Software, producido originalmente como resultado de un proyecto de tesis de maestría en ETH Zurich . [1]

El analizador de código es una herramienta de análisis de código estático basada en reglas que funciona tanto desde un modo integrado en EiffelStudio como desde la línea de comandos . Utiliza el árbol de sintaxis abstracta (AST) producido por el compilador de Eiffel y luego genera un gráfico de flujo de control (CFG), que se calcula mediante un módulo de código en la herramienta. Luego, el CFG y el AST son visitados por una serie de reglas definidas. Las violaciones de cualquier regla se informan al usuario como errores, advertencias o sugerencias. Cada violación de regla informa con precisión qué regla se violó.

Véase también

Referencias

  1. ^ Zurfluh, Stefan; Tschannen, Julian; Meyer, Bertrand (1 de abril de 2014), Análisis de código basado en reglas (PDF) , ETH Zurich , consultado el 25 de mayo de 2014

Bibliografía

  • Eiffel Software: manual de EiffelStudio. Disponible en línea en https://www.eiffel.org/documentation
  • Bertrand Meyer: Eiffel: El lenguaje , Prentice Hall, 1991 (segunda impresión revisada, 1992).
  • Bertrand Meyer: Un entorno orientado a objetos: principios y aplicaciones, Prentice Hall. 1995 (describe los principios subyacentes al EiffelBench original).
  • Kim Waldén y Jean-Marc Nerson: Seamless Object-Oriented Software Architecture , Prentice Hall, 1995 (contiene una descripción del método y la notación BON).
  • Comunidad Eiffel
  • Para colaboradores de código abierto: página de inicio de Eiffel en ETH Zurich
  • Página de inicio de Eiffel Software en eiffel.com
  • EiffelStudio en SourceForge
  • Notas de la versión de EiffelStudio
Retrieved from "https://en.wikipedia.org/w/index.php?title=EiffelStudio&oldid=1254429955"