Eiffel: A language and environment for software engineering

Abstract The Eiffel language and environment address the problem of building quality software in practical development environments. Two software quality factors were deemed essential in the design of the language: reusability and reliability. They led to the following choices: language features that support the underlying bottom-up software design methodology; modular structures based on the object-oriented approach, with support for both generic parameters and multiple inheritance (including a new extension, repeated inheritance); automatic storage management; highly dynamic execution model; support for polymorphism and dynamic binding; fully static typing; information hiding facilities; assertions and invariants that may be monitored at run-time. The Eiffel programming environment, using C as an intermediate language, supports separate compilation of classes and achieves a good run-time performance in both space and time. The environment takes care of automatically recompiling classes as needed after a change, ensuring that only up-to-date versions of classes are used, but avoiding unnecessary recompilations. A set of tools is provided to support the development of sizable software systems. An important part of the environment is the library of reusable classes. Significant extracts of this library are given in the appendix to this article, providing a set of model reusable software components, carefully designed for robustness and extendibility.

[1]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[2]  Brad J. Cox,et al.  Object-oriented programming ; an evolutionary approach , 1986 .

[3]  Charles Antony Richard Hoare,et al.  Hints on programming language design. , 1973 .

[4]  Niklaus Wirth,et al.  Programming in Modula-2 , 1985, Texts and Monographs in Computer Science.

[5]  Graham Beech,et al.  Software engineering with ada , 1983 .

[6]  J. M. Hullot CEYX-Version 15.I : une initiation , 1985 .

[7]  Ronald J. Brachman,et al.  What IS-A Is and Isn't: An Analysis of Taxonomic Links in Semantic Networks , 1983, Computer.

[8]  Cliff B. Jones,et al.  Systematic software development using VDM , 1986, Prentice Hall International Series in Computer Science.

[9]  Harlan D. Mills,et al.  Data structured programming: Program design without arrays and pointers , 1986, IEEE Transactions on Software Engineering.

[10]  Craig Schaffert,et al.  An introduction to Trellis/Owl , 1986, OOPSLA 1986.

[11]  Bertrand Meyer,et al.  Eiffel: programming for reusability and extendibility , 1987, SIGP.

[12]  Grady Booch,et al.  Object-oriented development , 1986, IEEE Transactions on Software Engineering.

[13]  Hector J. Levesque,et al.  Krypton: A Functional Approach to Knowledge Representation , 1983, Computer.

[14]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[15]  Grady Booch,et al.  Software engineering with Ada , 1983 .

[16]  Craig Schaffert,et al.  An introduction to Trellis/Owl , 1986, OOPLSA '86.

[17]  Bertrand Meyer,et al.  Quelques concepts importants des langages de programmation modernes, et leur expression en SIMULA 67 , 1980 .

[18]  Stuart I. Feldman,et al.  Make — a program for maintaining computer programs , 1979, Softw. Pract. Exp..

[19]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[20]  Bertrand Meyer,et al.  Reusability: The Case for Object-Oriented Design , 1987, IEEE Software.

[21]  David M. Ungar,et al.  Generation Scavenging: A non-disruptive high performance storage reclamation algorithm , 1984, SDE 1.

[22]  Alan Borning,et al.  Multiple Inheritance in Smalltalk-BO , 1982, AAAI.