Articulo de referencia

EiffelStudio

Eiffel Software"},"released":{"wt":"{{Start date and age|1986}} {{cite web |title=Eiffel in a Nutshell |url=https://archive.eiffel.com/eiffel/nutshell.html |date=1985–2012 |webs...

EiffelStudio es un entorno de desarrollo para un lenguaje de programación , Eiffel . Ambos son desarrollados y distribuidos por Eiffel Software.

EiffelStudio incluye una combinación de herramientas integradas en una única interfaz de usuario : compilador, intérprete, depurador, navegador, herramienta de métricas, analizador de rendimiento, diagramador y herramienta de inspección de código. La interfaz de usuario se basa en varios paradigmas específicos, especialmente en la función de "seleccionar y soltar" para una navegación eficaz.

EiffelStudio está disponible para diversas plataformas, incluyendo Windows , Linux , macOS , Solaris , VMS y Raspberry Pi . Su código fuente es software libre y de código abierto , distribuido bajo la Licencia Pública General GNU (GPL). También se ofrecen otras licencias de software comerciales .

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 las características del código fuente de la clase que se está editando y un panel de diagrama que muestra la clase como un icono con relaciones con otras clases.
EiffelStudio versión 7.2, mostrando los paneles Editor, Funciones y Diagrama.

Estado, licencia y proceso comunitario

EiffelStudio es un proyecto de desarrollo de código abierto , y las versiones beta de la próxima versión se publican periódicamente.

La comunidad Eiffel participa activamente en su desarrollo; su sitio web oficial es Eiffel.org , donde se listan los proyectos y recursos. El código fuente suele estar disponible para su descarga mediante Subversion o Git . También hay foros de discusión y otros recursos disponibles.

Desde 2019 no se ha publicado ninguna nueva 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 una copia pública en GitHub, aunque con un retraso de 12 meses.

Tecnología de compilación

EiffelStudio utiliza una tecnología de compilación avanzada llamada Melting Ice (marca registrada de Eiffel Software) que integra la compilación con la interpretación de los elementos modificados desde la compilación anterior, lo que permite una rápida recompilación (el tiempo de recompilación es proporcional al tamaño del cambio, no al del programa completo). Si bien es posible entregar programas con esta tecnología Melting Ice , la práctica habitual antes del lanzamiento es realizar una fase de finalización . Esta es una forma de compilación altamente optimizada, que requiere más tiempo y genera ejecutables optimizados.

La parte del intérprete de EiffelStudio se basa en una máquina virtual orientada a bytecode . El compilador genera código C o el Lenguaje Intermedio Común (CIL) del framework .NET .

Ingeniería de ida y vuelta

La herramienta de diagramas de EiffelStudio proporciona una vista gráfica de las estructuras de software. Se puede utilizar en ambos

  • Ingeniería directa, como herramienta de diseño para producir software a partir de descripciones gráficas.
  • Ingeniería inversa, que produce automáticamente representaciones gráficas de textos de programas existentes.

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

La notación gráfica puede ser la notación predeterminada de objetos de negocio (BON, véase la bibliografía) o el lenguaje unificado de modelado (UML).

paradigma de interfaz de usuario

EiffelStudio permite visualizar diferentes vistas de clases y funcionalidades: vista de texto (texto completo del programa), vista de contrato (solo interfaz, con contratos ), vista plana (que incluye funcionalidades heredadas), clientes (todas las clases y funcionalidades que utilizan una clase o funcionalidad determinada), historial de herencia (qué sucede con una funcionalidad a lo largo de la estructura de herencia) y muchas otras.

EiffelStudio se basa en un paradigma de interfaz de usuario original fundamentado en "objetos de desarrollo", "piedras" y "agujeros". Del mismo modo que la programación orientada a objetos en Eiffel trabaja con objetos durante la ejecución, los desarrolladores trabajan con abstracciones que representan clases, funcionalidades, puntos de interrupción (para depuración), clústeres (grupos de clases) y otros objetos de desarrollo . Dicho objeto puede seleccionarse en cualquier parte de la interfaz, independientemente de su representación visual (nombre, símbolo u otro).

Para seleccionar un objeto de desarrollo, basta con hacer clic con el botón derecho sobre él. El cursor se transforma en un símbolo especial o una ficha que corresponde al tipo de objeto: una burbuja (elipse) para una clase, un punto para un punto de interrupción, una cruz para una característica, etc. Al mover el cursor, se muestra una línea desde el objeto original hasta la posición actual. A continuación, puede soltar la ficha en cualquier lugar correspondiente: un icono que representa un orificio con la misma forma (orificio de clase, orificio de punto de interrupción, orificio de característica, etc.) o una ventana con un tipo compatible. Al soltar la ficha en una herramienta, esta se redirige al objeto de desarrollo seleccionado. Por ejemplo, una herramienta de clases mostrará ahora la clase elegida en la vista seleccionada (texto, contrato, plano, etc.). Esto se conoce como el paradigma de "seleccionar y soltar".

La combinación de múltiples vistas y la función de seleccionar y soltar permite navegar rápidamente por sistemas complejos y seguir las transformaciones, a veces extensas, que sufren las funcionalidades bajo herencia: cambio de nombre, redefinición, eliminación de definición.

Pruebas unitarias y de integración

EiffelStudio incluye una herramienta de pruebas integrada llamada EiffelStudio AutoTest.Mediante esta herramienta, los desarrolladores pueden crear conjuntos de pruebas unitarias y de integración, desde las más sencillas hasta las más sofisticadas. Las funciones de EiffelStudio AutoTest permiten ejecutar y probar el código de la clase Eiffel, desde el nivel de características (por ejemplo, pruebas unitarias) hasta sistemas de clases completos (por ejemplo, integración). De este modo, la ejecución de este código también ejecuta los contratos de las características y atributos ejecutados. Por lo tanto, EiffelStudio AutoTest es un medio para comprobar las "pruebas" o supuestos de las condiciones de Diseño por Contrato. En consecuencia, 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 para la 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 de trabajo para la prueba. El usuario solo necesita proporcionar el código de la prueba.

En segundo lugar, EiffelStudio AutoTest proporciona un método para crear una nueva prueba a partir de un fallo de la aplicación durante la 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 utilizar la información disponible en el depurador para crear una nueva prueba que reproduzca el estado y las llamadas que causaron el fallo. Una vez solucionado el problema, la prueba extraída se puede añadir al conjunto de pruebas como medida preventiva contra futuras regresiones.

El tercer método para crear pruebas genera lo que se conoce como pruebas generadas . En este caso, el usuario proporciona a EiffelStudio AutoTest las clases para las que se deben generar las pruebas, así como información adicional para controlar la generación de las mismas. La herramienta comienza entonces a llamar a rutinas en las clases objetivo utilizando valores de argumentos aleatorios. Para cada postcondición o violación de invariante de clase , EiffelStudio AutoTest genera una nueva prueba 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), publicada en 1986. El origen de la tecnología actual parece remontarse a "EiffelBench", creado en 1990 en relación con el diseño de la versión Eiffel 3 del lenguaje (como se documenta en Eiffel: The Language , véase la bibliografía). EiffelBench pasó a llamarse "EiffelStudio" alrededor de 2001; fue entonces cuando el entorno trascendió sus orígenes en Unix para abarcar Windows y otras plataformas.

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

  • 5.0, julio de 2001: primera versión propiamente dicha de "EiffelStudio"; integración de la herramienta anterior "EiffelCase" para diseño gráfico con EiffelBench, en forma de la herramienta de diagramas de EiffelStudio.
  • 5.1, diciembre de 2001: primera versión compatible con .NET ( comunicado de prensa (PDF)). Antes de su lanzamiento, se llamaba "Eiffel#"..
  • 5.2, noviembre de 2002: nuevo EiffelBuild para el diseño de interfaces gráficas de usuario, depuración ampliada, nuevos mecanismos para la integración de C y C++, mejores funciones de comunicación bidireccional para la herramienta de diagramas ( comunicado de prensa ).
  • 5.3, marzo de 2003: Tecnología de compilación 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 ( comunicado de prensa ).
  • 5.4, ​​noviembre de 2003: nuevo mecanismo de conversión, mejoras importantes en el rendimiento en tiempo de ejecución (en particular para agentes ), mejoras importantes en la velocidad de compilación, soporte mejorado para multihilo, mejoras importantes en EiffelBuild, primer soporte para nuevos mecanismos según lo definido por el comité ECMA Eiffel, soporte para precondiciones y postcondiciones 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 diagramas mejorada (compatibilidad con UML, gráficos dirigidos por fuerza, mejor comunicación bidireccional), nuevo asistente EiffelCOM para la generación de componentes COM de Microsoft , mejor autocompletado de clases, generación de código .NET más rápida ( comunicado de prensa ).
  • 5.7, octubre de 2006: Adición de ISO/ECMA Eiffel (agentes en línea, nueva semántica "expandida", tuplas con nombre, compatibilidad con 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 (genericidad de múltiples restricciones, notación octal y binaria para enteros), nuevo editor con pestañas, nuevas funciones de acoplamiento para que el usuario defina su espacio de trabajo, menú contextual disponible además de la función de arrastrar y soltar, herramienta de dependencias ( comunicado de prensa ).
  • 6.1, noviembre de 2007: ( comunicado de prensa ).
  • 6.2, mayo de 2008: ( comunicado de prensa ).
  • 6.3, diciembre de 2008: ( comunicado de prensa ).
  • 6.4, junio de 2009: ( comunicado de prensa ).
  • 6.5, noviembre de 2009: ( comunicado de prensa ).
  • 6.6, mayo de 2010: ( comunicado de prensa ).
  • 6.7, noviembre de 2010: ( comunicado de prensa ).
  • 6.8, mayo de 2011. Incluye la primera implementación de funcionalidades que dan soporte a SCOOP , Programación Orientada a Objetos Concurrente Simple . ( Comunicado de prensa ).
  • Versión 7.0, noviembre de 2011. Incluye mejoras de rendimiento y funcionalidades para la herramienta de desarrollo paralelo SCOOP , compatibilidad con bibliotecas y herramientas de interfaz gráfica de usuario para estructuras de interfaz de cinta , compatibilidad mejorada con el desarrollo de software a prueba de errores y muchas otras mejoras.
  • 7.1, junio de 2012. Incluye la recolección de basura del procesador SCOOP . Múltiples mejoras al sistema de información Eiffel que vinculan el código de la aplicación con los recursos externos apropiados, como los documentos de requisitos.
  • 7.2, febrero de 2013.
  • 7.3, julio de 2013.
  • 13.11, diciembre de 2013. Este lanzamiento marca el inicio del uso de un nuevo esquema de numeración de versiones . ( Nota de lanzamiento ) ( Comunicado de prensa ).
  • 14 de mayo de 2014. Incluye la nueva herramienta Eiffel Inspector (herramienta de análisis estático para ayudar a mantener una alta calidad del código). ( Comunicado de prensa ).
  • 15 de enero de 2015. El nuevo entorno de ejecución de SCOOP ofrece una mejora significativa del rendimiento. ( Comunicado de prensa ).
  • 15 de agosto de 2015. Solución EiffelWeb mejorada para la creación de aplicaciones de servidor web. ( Comunicado de prensa ).
  • 15.12, diciembre de 2015. Mejoras en el lenguaje (nueva notación de tipo de agente). ( comunicado de prensa ).
  • 16.05, mayo de 2016. Versión de mantenimiento. ( comunicado de prensa ).
  • 17.01, enero de 2017. Mecanismo de capacidades de la biblioteca para documentar y aplicar las opciones de compilación compatibles. Plantillas de código. ( Versión 17.01 )
  • 17.05, mayo de 2017. Mejor detección de características obsoletas. Select&drop para variables locales. ( Versión 17.05 )
  • 18.01, febrero de 2018. Analizador de código integrado más profundo. Reglas de tipo mejoradas para expresiones condicionales y matrices de manifiesto. Nuevas características de clase. ( Versión 18.01 ).
  • 18.07, julio de 2018. Reglas más flexibles para las características de clase. Expresiones entre corchetes subsiguientes. Destinos de proyectos remotos. ( Versión 18.07 ).
  • 18.11, diciembre de 2018. Todos los contenedores se pueden usar en forma iterativa 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 obsoletas, 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 el contenido. ( Versión 20.05 ).
  • 20.11, noviembre de 2020. Clases Once, WrapC. ( Versión 20.11 ).
  • 21 de noviembre de 2021. Migración a GTK3 para Linux, Unix y una mejor presencia en MAC OS, nueva herramienta de control de versiones. ( Versión 21.11 ).
  • 22.05, mayo de 2022. Mejoras en la herramienta de control de versiones y la interfaz de usuario. ( Versión 22.05 ).
  • 22.12, diciembre de 2022. Nueva plataforma, compatibilidad con ARM ( versión 22.12 ).
  • 23.09, septiembre de 2023. Compatibilidad con .NET Core ( versión 23.09 ).
  • 24.05, mayo de 2024. Soporte mejorado para NETcore y depuración, nuevos comandos de Composer ( versión 24.05 ).
  • 25.02, febrero de 2025. Herramienta de diagramas mejorada, parámetros de ejecución y nuevas bibliotecas de mongodb y mariadb ( versión 25.02 ).
  • 25.12, diciembre de 2025. EiffelStudio 25.12 incorpora PostgreSQL nativo, autenticación moderna y capacidades de back-end más robustas ( versión 25.12 ).

Analizador de código

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

El analizador de código es una herramienta de análisis estático de código basada en reglas que funciona tanto en modo integrado en EiffelStudio como desde la línea de comandos . Utiliza el árbol de sintaxis abstracta (AST) generado por el compilador Eiffel y, a continuación, crea un grafo de flujo de control (CFG), que es calculado por un módulo de código de la herramienta. Posteriormente, se aplican varias reglas predefinidas al CFG y al AST. Las infracciones de cualquier regla se notifican al usuario como errores, advertencias o sugerencias. Cada infracción indica con precisión qué regla se ha infringido.

Véase también

Referencias

  1. "Eiffel en pocas palabras" . Eiffel Software . 1985–2012 . Consultado el 29 de noviembre de 2024 .
  2. "¡EiffelStudio 25.12 ya está disponible!" . Eiffel.org . 31 de diciembre de 2025 . Consultado el 31 de diciembre de 2025 .
  3. 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 edición revisada, 1992).
  • Bertrand Meyer: Un entorno orientado a objetos: principios y aplicaciones, Prentice Hall. 1995 (describe los principios subyacentes del EiffelBench original).
  • Kim Waldén y Jean-Marc Nerson: Arquitectura de software orientada a objetos sin fisuras , Prentice Hall, 1995 (contiene una descripción del método y la notación BON).
  • Sitio web oficial
  • Comunidad Eiffel
  • Para colaboradores de código abierto: página principal de Eiffel en ETH Zúrich
  • Página principal de Eiffel Software en eiffel.com
  • EiffelStudio en SourceForge
  • Notas de lanzamiento de EiffelStudio