Eiffel is a systematic approach to the construction of quality software, including a language, a method, libraries, and development environments.
The language was designed in 1985 by Bertrand Meyer of ISE. The current language version is described in detail in Meyer's book "Eiffel: The Language" (Prentice Hall, 1992). Many other books are available on the language and the method. The language is non-proprietary.
The aim of Eiffel is to improve the quality of software systems and the productivity of the development process. It particularly promotes the production of software that has the following qualities: reliability (absence of bugs) extendibility (ease of change) reusability (reliance of libraries of packaged components) and portability (adaptability on many platforms with full source compatibility). Eiffel also makes it possible to produce compilers, such as ISE's, which generate extremely efficient code.
As a language Eiffel is a "pure" object-oriented language (arguably the most systematic application of object-oriented principles in existing languages) based on a small number of powerful concepts:
Seamless development: Eiffel is applicable to the entire lifecycle, from analysis and high-level design to implementation and maintenance, providing a single conceptual framework throughout the software process.
Classes, serving as the sole basis for both the module structure and the type system.
Inheritance for classification, subtyping and reuse.
A careful and effective approach to multiple inheritance (renaming, selection, redefinition, undefinition, repeated inheritance).
Assertions for writing correct and robust software, debugging it, and documenting it automatically.
Disciplined exception handling to recover gracefully from abnormal cases.
Static typing with no loopholes in the type system for safety.
Dynamic binding for flexibility and safety.
Genericity, constrained and unconstrained, for describing flexible container structures.
Open architecture providing easy access to software written in other languages such as C, C++ and others.
Environment and libraries
The ISE Eiffel environment implements the full Eiffel language through an attractive graphical environment. See the page on EiffelBench for more details.
Reusable libraries play a fundamental role in the Eiffel approach to software construction. ISE Eiffel offers hundreds of reusable components covering wide application areas. For a start, take a look at the pages describing the EiffelBase library, which covers the fundamental structures of computing, and EiffelVision for platform-independent graphics and Graphical User Interfaces.
An analysis and design method based on similar principles and using a graphical notation accessible to non-computer people is BON (the Business Object Notation), supported in the ISE Eiffel environment by the Diagram Tool within EiffelStudio.
Eiffel in a nutshell: brief presentation of the Eiffel approach.
The one-minute summary: for a capsule list of the essentials.
Invitation to Eiffel: a presentation of the principal concepts of the Eiffel language, written by the language designer.