REVIEW - Object Technology for Scientific Computing: Object-Oriented Numerical Software in Eiffel and C


Object Technology for Scientific Computing: Object-Oriented Numerical Software in Eiffel and C


Paul F. Dubois




Prentice Hall (1997)




Brian Bramer


June 1998



The subtitle of this text is 'OO numerical software in Eiffel and C' describing techniques for developing software which is correct, efficient, modifiable and reusable.

The book is in three parts. Part one starts with a review of development techniques for numerical software discussing the principles of OO, specifying desirable characteristics of a language for such development and then examining C++ and Eiffel to see how they meet the requirements.

The Eiffel Method of software development is then described; the elements of which are abstraction, classification (inheritance), clustering (collections of related classes), assertions (to check for correctness), design-by-contract (formal agreements between suppliers and clients), functions without side effects, attributes (default values for method parameters), generic programming, automatic memory management, disciplined exception handling and planning for reuse. One can see that The Eiffel Method is a formalism of techniques already widely used in OO system development and proposed in many software-engineering texts. How to apply 'The Eiffel Method' in Eiffel, FORTRAN and C++ is then discussed (advantages and disadvantages, etc.) Part one concludes with a discussion of performance and optimisation in OO software development.

Reuse is important and part two discusses techniques for combining existing software in FORTRAN, C and C++ with Eiffel. Part three describes

EiffelMath which is a library of components built around the numerical algorithms library developed by NAG (written in C).

This book will also be of interest to non-Eiffel programmers; it sets out and discusses good design principles for numerical software, which can be used in any language.

Book cover image courtesy of Open Library.