Foreword to the second edition by Clemens Szyperski

What an unusual book! I have certainly seen many books on object-oriented software development and even some that have similar coverage, but Anton Eliëns's book is in a different category entirely. As so many books in our field, this one has also had its roots in the development of lecture notes. However, Eliëns took a surprising deviation from the established path of developing notes into books. Instead of inflating the notes, reorganizing the material, and creating the traditional textbook, Eliëns decided to keep the essence of his notes alive.

By condensing the key points into "slides" and keeping these slides as visual anchors all over his text, the reader's experience is truly different. There is a fast track where we just follow the slides: this is what students to with handouts on first encounter. Then there are the deeper modes of reading where we focus in and follow Eliëns's full-text explanations; explanations that are thorough enough where that is important and shallow enough where overwhelming detail wouldn't pay back. Reading through this book and working with it to enhance our understanding is a pleasure.

For a breakdown of the book's structure, I refer to the preface and the foreword to the first edition. However, it is worth noting that Eliëns has improved his text substantially over the first edition. A theme close to my heart has been woven into the text: components. Software architecture, a closely related theme of quickly growing importance, has also found coverage.

The style and didactic quality of the presentation are matched by a wide-ranging selection of topics. Living in times of rapid change and extremely broad diversification of our discipline, we have to value the few books that span significant ranges in an integrative fashion. After all, it is the reader's key challenge to use books like Eliëns's to reconstruct and integrate the vast sea of knowledge fragments out there; and it is with the help of books like Eliëns's that the reader has a chance of achieving this formidable goal. Instructors and lecturers will equally appreciate this book as readily usable for teaching and lecturing tasks.

In the end, for the software developer to be, as well as for the established software developer or the computer scientist with an eye on software development, there is a lot to know from a spectrum of subdisciplines, before we can feel even half-confident about what we are actually doing when developing software. To get there, we need to understand everything from modeling and design techniques, over architecture and components, to implementation detail expressed in specific programming languages. This book is a good starting point for doing so from an object-oriented perspective. (Keep your eyes open for other perspectives and approaches, though!)


Clemens Szyperski
November 1999