Lenguaje de programación Eiffel

Eiffel
Información sobre la plantilla
50*50
Lenguaje de programación orientado a objetos.
DesarrolladorBertrand Meyer
GéneroLenguaje de programación
Sistemas Operativos compatiblesWindows, Linux, Unix, Mac OSX
Sitio web
Sitio oficial de Eiffel

Eiffel. Es un lenguaje de programación escrito por Bertrand Meyer. Al contrario que Smalltalk, incluye un preprocesador que permite la traducción de código Eiffel a lenguaje C. Permite la encapsulación , control de acceso y tiene gran facilidad para las modificaciones.

Declaración de clases

En Eiffel una declaración de clases puede incluir:

  • Una lista de características exportables.
  • Una lista de las clases antecesora: clases de la que ésta es una derivación.
  • Una lista de declaraciones de características.

Ventajas

  • Es un lenguaje orientado a objetos puro.
  • Orientado hacia el diseño de grandes aplicaciones.
  • El paso intermedio a código C se puede considerar como una ventaja y no como un inconveniente, ya que aquellas secciones que sean difíciles de tratar con Eiffel pueden elaborarse a partir de código C. Su compatibilidad con C asegura también su portabilidad hacia otros sistemas operativos.

Desventajas

  • El manejo de la memoria, un punto delicado en todos los lenguajes orientados a objetos no es transparente como en el caso de Smalltalk.
  • Las librerías de clases son reducidas.
  • El rendimiento es mayor que el de Smalltalk, pero al tener que incluir un módulo Run-time dentro del ejecutable, su tamaño crece y su rendimiento baja.

Eiffel Studio

EiffelStudio está diseñado hacer más fácil la creación de software para los desarrolladores, específicamente para apoyar el método Eiffel y el lenguaje, ejecutándose de forma idéntica en casi todas las plataformas de hardware y sistema operativo.

Windows

EiffelStudio es el entorno de desarrollo más potente para la creación de aplicaciones de misión crítica para el sistema operativo Windows. Es capaz de reutilizar gran parte de sus aplicaciones y comprobar la función de las mismas en su plataforma actual.

Linux / Unix

EiffelStudio en estas plataformas ofrece todas las características de gran alcance de Eiffel como la herencia múltiple y genericidad. Con EiffelStudio para Linux / Unix, los desarrolladores tienen la libertad para crear las aplicaciones y fácilmente pueden trasladar estas aplicaciones para las plataformas de su elección.

Eiffel de VMS

Dado el nivel general de seguridad y excelencia de OpenVMS, Software Eiffel ha considerado que esta plataforma y Eiffel serían una combinación perfecta. Eiffel Software ha ofrecido desde el principio una versión de EiffelStudio de VMS y se compromete a continuar el apoyo para el beneficio de los clientes que trabajan en computadoras mainframe.

Mac OS X

Desde el lanzamiento de EiffelStudio 5.4 en adelante, la versión de Mac OS X tiene toda la solidez para trabajar con el mismo.

Ventajas

EiffelStudio permite a los desarrolladores las siguientes ventajas:

  • Es más simple, el lenguaje es más potente.
  • Garantiza un software robusto y eficiente.
  • Permite a los desarrolladores utilizar genericidady un modelo de herencia múltiple.
  • Reduce el tiempo de depuración del 90-95%.
  • Compila para múltiples plataformas: Windows (Classic y NET.), Unix, Linux, VMS,sistemas integrados y Mac OS X.
  • Funciona muy bien como una herramienta para:

- Lograr alta calidad del software.

- Migrar aplicaciones heredadas de .NET.

- Crear componentes de alta calidad y bibliotecas.

Método

Eiffel es un método y un lenguaje para la descripción y el desarrollo eficientes de sistemas de calidad. Como lenguaje, Eiffel es más que un lenguaje de programación. Abarca no sólo la programación en el sentido restringido de aplicación, también el espectro de desarrollo de software:

  • Análisis, modelado y especificación: Eiffel se puede utilizar como una herramienta puramente descriptiva para analizar y documentar la estructura y propiedades de sistemas complejos (aunque no de sistemas de software).
  • Diseño y arquitectura: Eiffel se puede utilizar para construir estructuras sólidas, el sistema es flexible.
  • Implementación: Eiffel ofrece soluciones prácticas de software con una eficacia comparable a las soluciones basadas en los enfoques tradicionales tales como C y Fortran.
  • Mantenimiento: Eiffel ayuda a la flexibilidad de arquitectura de los sistemas resultantes.
  • Documentación: Eiffel permite la generación automática de documentación textual y gráfica, desde el propio software, como un sustituto parcial de la documentación del software desarrollado y mantenido por separado.

Calidad

Aunque el lenguaje es la parte más visible, Eiffel se ve mejor como un método, que guía los analistas de sistemas y desarrolladores a través del proceso de construcción de software. El método Eiffel se centra en la productividad (la capacidad de producir sistemas a tiempo y dentro del presupuesto) y la calidad, con especial énfasis en los factores de calidad siguientes:

  • Fiabilidad: la producción del software es libre de errores.
  • Reutilización: permite desarrollar componentes de alta calidad, y transformar los elementos de software en estos componentes para su reutilización futura.
  • Extensibilidad: permite que el desarrollo de software pueda adaptarse a los cambios inevitables y frecuentes de los requisitos y otras limitaciones.
  • Portabilidad: permite producir software que se ejecutan en muchas plataformas diferentes.
  • Mantenimiento: permite estructurar y seguir adaptando y mejorando el software implementado.

Propiedades generales

  • Enfoque orientado a objetos: Eiffel es una aplicación de pleno derecho de la tecnología de objetos, no un "híbrido" de los conceptos de OO y tradicionales.
  • Interfaces externas: Eiffel es una herramienta de software de composición y es de fácil interfaz, con el software escrito en lenguajes como C, C + +,Java y C #.
  • Apoyo del ciclo de vida completo: Eiffel es aplicable en todo el proceso de desarrollo, incluyendo el análisis, diseño, implementación y mantenimiento.
  • Clases como herramienta de estructuración básica: Una clase es la descripción de un conjunto de objetos en tiempo de ejecución, se especifica a través de las operaciones de aplicación y propiedades abstractas. Un sistema de Eiffel está hecho de clases, que actúa como mecanismo único de módulo.
  • Sistema de tipo constante: Cada tipo se basa en una clase, incluyendo los tipos básicos como entero, booleano, real, carácter, una cadena, array.
  • Diseño por Contrato: Cada componente del sistema puede estar acompañado de una especificación precisa de sus propiedades abstractas, que regulan su funcionamiento interno y su interacción con otros componentes.
  • Afirmaciones: El apoyo de método y notación por escrito, las propiedades lógicas de los estados de objetos expresan los términos de los contratos. Estas propiedades, conocidas como las afirmaciones, se puede controlar en tiempo de ejecución de pruebas y aseguramiento de la calidad. También sirven como mecanismo de documentación. Las afirmaciones son precondiciones, postcondiciones, invariantes de clase, invariantes de bucle entre otros.
  • Manejo de excepciones: Se puede configurar el software para detectar condiciones anormales, tales como señales inesperadas del sistema operativo y violaciones de contrato, de corrección, y recuperación.
  • Ocultamiento de información: Cada autor decide la clase, para cada función, si está disponible para todas las clases de clientes, a clientes específicos solamente, o solamente para propósitos internos.
  • Auto-documentación: La notación se ha diseñado para permitir a las herramientas ambiente para producir puntos de vista abstractos de las clases y los sistemas, textual o gráfica, y adecuado para cambio usuarios, mantenedores y los autores de los clientes.
  • Herencia: Se puede definir una clase como la extensión o la especialización de los demás.
  • Redefinición: Un rasgo heredado (la operación) se puede dar una implementación diferente o firma.
  • Redefinición explícita: Una redefinición característica debe ser explícita.
  • Subcontratación: Redefinición de normas que requieren nuevas afirmaciones para que sean compatibles con las heredadas.
  • Características diferidos y clases: Es posible que una característica, y la clase que la encierra, sean especificadas incluso con afirmaciones pero no se aplica. Clases diferido también se conocen como clases abstractas.
  • Polimorfismo: Una entidad puede llegar a ser apegado a los objetos de diferentes tipos.
  • Enlace dinámico: Llamar a una función en un objeto siempre activa la versión de la característica específicamente adaptados a ese objeto, incluso en la presencia del polimorfismo y la redefinición.
  • Tipos estáticos: Un compilador puede comprobar estadísticamente que todas las combinaciones de tipo serán válidas, por lo que ninguna situación en tiempo de ejecución tendrá lugar en el que uno se intentará aplicar una función a un objeto inexistente.
  • Intento de sesión ("estrechamiento de tipo"): Es posible comprobar en tiempo de ejecución si el tipo de un objeto se ajusta a una cierta expectativa, por ejemplo, si el objeto viene de una base de datos o una red.
  • La herencia múltiple: Una clase puede heredar de cualquier número de otros.
  • Función de cambio de nombre: Para eliminar conflictos de nombres en la herencia múltiple, o de dar nombres a nivel local mejor, una clase puede darle un nuevo nombre a un rasgo heredado.
  • Herencia repetida: el intercambio y la replicación: Como resultado de la herencia múltiple, una clase hereda de otra a través de dos o más rutas, el autor de clase puede especificar, para cada función en repetidas ocasiones hereditaria, que produce o bien una característica (compartir) o dos (replicación).
  • No hay ambigüedad en la herencia repetida: Redefiniciones en conflicto con la herencia repetida se resuelven a través de una "selección" de mecanismo.
  • Restricciones de genericidad: Una clase puede ser parametrizada, o genérica, para describir contenedores de objetos de un tipo arbitrario.
  • Genericidad restringida: Una clase genérica se puede afirmar, con una limitación genérica, para indicar que los tipos correspondientes deben cumplir algunas propiedades, como la presencia de una operación en particular.
  • Recolección de basura: El modelo dinámico está diseñado para que la recuperación de la memoria, en un ambiente de apoyo, pueda ser automática, en lugar de controlarla.
  • Sin fugas la estructura modular: Todo el software se construye fuera de clases, con sólo dos entre las relaciones de clase, el cliente y la herencia.
  • Las rutinas de una vez: Un elemento puede ser declarada "una vez", por lo que sólo se ejecuta para su primera convocatoria, posteriormente, vuelve siempre al mismo resultado (si es necesario). Esto sirve como un mecanismo de inicialización conveniente, y de los objetos compartidos.
  • Biblioteca estandarizada: La biblioteca del núcleo, ofrece abstracciones esenciales, está estandarizada a través de las implementaciones.
  • Otras bibliotecas: Eiffel se basa principalmente en las bibliotecas de alta calidad que cubre muchas necesidades comunes de desarrollo de software, a partir de algoritmos y estructuras de datos generales para la creación de redes y bases de datos.

Facilidades

  • No hay variables globales, lo que podría romper la modularidad de los sistemas y obstaculizar la extensibilidad, reutilización y la fiabilidad.
  • No hay tipos de unión (o tipo de registro con variantes), que obligan a la enumeración explícita de todas las variantes, en cambio, la herencia es un mecanismo abierto que permite la adición de variantes, en cualquier momento sin cambiar el código existente.
  • No hay sobrecarga en las clases, que al asignar el mismo nombre a las diferentes características dentro de un contexto único, causa confusiones, errores y conflictos con los mecanismos orientados a objetos, como el enlace dinámico.
  • No hay instrucciones go to o estructuras similares de control (descanso, la salida, la salida de varios bucles) que rompen la sencillez del flujo de control y hacen más difícil o imposible de razonar acerca de la aplicación (en particular a través de los invariantes de bucle y variantes).
  • No hay efectos secundarios operadores de expresiones confusas, cálculo y modificación.
  • No hay indicadores de bajo nivel, no aritmética de punteros.

Proceso de Software

Eiffel apoya el ciclo de vida. La visión subyacente del ciclo de vida de desarrollo del sistema es radicalmente diferente, no sólo desde el tradicional modelo en cascada (lo que implica una secuencia de pasos discretos, como el análisis, el diseño global, diseño detallado, implementación, separados por grandes cambios de método y notación, pero también de sus variantes más recientes, como el modelo en espiral o prototipado rápido.

Fuente

  • Artículo (inglés) Eiffel en el Mundo. Disponible en: “eiffel-nice.org”. Consultado el 1 de diciembre del 2011