This article needs additional citations for verification. (December 2015) |
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.
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.
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).
La herramienta Diagrama de EiffelStudio ofrece una vista gráfica de las estructuras del software. Puede utilizarse tanto en
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.
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.
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.
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:
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ó.