Object-Oriented Software Engineering with Eiffel


By Jean-Marc Jézéquel, from the PAMPA Project, Addison-Wesley Eiffel in Practice Series
ISBN 0-201-63381-7 * Paperback * 368 pages * 1996


Book Description by Addison-Wesley and Ordering Information
Preface
Table of Contents
Related Publications
Chapters 1 to 4 of the book (with permission from Addison-Wesley)
Errata
Source code of examples
What well known people said about Eiffel
Put it in the contract: The lessons of Ariane
More info on Eiffel
My new book:Design Patterns and Contracts

This is a book on software engineering the Eiffel's way.

Born in Dijon (France), Gustave Eiffel (1832--1923) first worked as an engineer for a railroad construction company before starting an office of studies dedicated to metallic construction. Using light steel modular structures instead of the usual design with cast iron, Eiffel built tall infrastructures featuring very good aerodynamic resistance. He built several viaducts, most notably at Bordeaux (1858) and Gabarit (1884). He also created the framework of the Bon Marche department store (1876) in Paris. Abroad he oversaw several projects in Austria, Switzerland, Hungary (Pest Railway Station, 1876), and Portugal (the Maria-Pia Bridge near Porto, 1877).

His most famous structures were the framework of Bartholdi's Liberty Statue in New York and the 300-meter
Eiffel Tower, built for the 1889 universal exposition in Paris. These two world-famous landmarks were also technological marvels for that time. They opened the way for the new domain of industrial architecture. After 1890, Eiffel resigned from his business to concentrate on aerodynamic studies from the top of the Eiffel Tower.

Today, more than one century after their construction, most of Eiffel's buildings are still standing and open for business.

In the software engineering domain, Eiffel is also the name of an object-oriented language that emphasizes the design and construction of large, high-quality softwares by assembling reusable software components, called classes, that serve as templates to make objects. Beyond classes (on which modularity is based), Eiffel offers multiple inheritance, polymorphism, static typing and dynamic binding, genericity, garbage collection, a disciplined exception mechanism, and systematic use of assertions to improve software correctness in the context of programming by contract. Software engineering encompasses much more than what a computer language can offer. Computer languages are just tools that software engineers can use (or misuse) within a larger context. The Eiffel language is a tool that has been specially designed in the context of software engineering. This book describes the tool, and provides clues on how to use it.

Chapter 1 is an introduction presenting the object-oriented approach within the context of software engineering. The main body of the book is then divided roughly into two parts. The first part of this book presents the language itself. Chapter 2 presents the basic (procedural) elements of the language: what an Eiffel program is, what the instruction set is, and how to declare and use entities (variables) and routines. Chapter 3 introduces the concepts underlying the object-oriented approach: modularity, inheritance, and dynamic binding, and illustrates them in a small case study from the management information system domain. Eiffel programs do not exist in a void, so Chapter 4 brings in environment matters: system configuration, interfacing with external software, and garbage collection. Chapter 5 closes the Eiffel presentation with more advanced issues involving exception handling, repeated inheritance, typing problems, and parallelism.

The second part of this book addresses some Eiffel software development issues. In Chapter 6, we outline how an object-oriented software engineering process may make the best use of Eiffel, concentrating on specific guidelines to facilitate the translation OOAD to a maintainable Eiffel implementation. This process is illustrated by a rather large case study from the telecommunications domain. As a logical continuation of this study, Chapter 7 addresses verification and validation (V&V) issues of Eiffel software systems built in a software engineering context. Building reusable libraries discussed in Chapter 8, which presents three competing Eiffel data structure libraries. Finally, Chapter 9 shows how Eiffel can be used as an enabling technology to master a very complex problem: the building of a parallel linear algebra library ( Paladin) that allows an application programmer to use distributed computing systems in a transparent way.

If you are lost at some point with the Eiffel-related vocabulary, there is a small glossary in Appendix A. An Eiffel syntax summary is presented in Appendix B, and a contact list closes this book (Appendix C).
To learn more about the Eiffel Galaxy, check the Geoff's Universal Eiffel Resource Locator (GUERL)
jezequel@irisa.fr August 22, 1997 Copyright ©1997 Irisa