R. Weinreich, Concepts and Techniques for Object-oriented Software Development (Illustrated by an Application Framework for Process Automation), Universitätsverlag Rudolf Trauner, Linz/Wien 1993, ISBN 3-85320-675-1.

Object-oriented programming promises to solve many key problems of software engineering like reuse, extensibility, and maintainability. This work contributes to research concerning object-oriented software development in general. Its four main parts discuss fundamental but still unsolved issues like which programming language to use, how to design object-oriented programs, and how to express concurrency and distribution in object-oriented applications.

The first part starts with a presentation of the fundamentals of object-oriented programming and provides a short discussion and evaluation of object-oriented language concepts. This includes a coarse classification of object-oriented languages and the identification of object-oriented language mechanisms that provide a high degree of flexibility along with a high degree of security.

These mechanisms are used as the basis for the second part of this work, where techniques for improving the design of object-oriented software from a software engineering point of view are provided. Most books that deal with this topic offer graphical design notations or guidelines for object-oriented analysis, but no construction principles. We distinguish techniques for the design of individual reusable classes (programming in the small), for the design of class collaborations (programming in the middle), and for the design of class library architectures (programming in the large). The presented techniques increase the reusability, flexibility, and understandibility of object-oriented software and are intended as a first step towards structured object-oriented programming.

The third part concentrates on using object-oriented programming in connection with concurrency and distribution. Besides basic considerations on this topic, it describes a simple yet powerful new technique for handling concurrency and distribution in object-oriented software systems.

In the fourth part of this work, a class library for process automation software is presented. The library is used to illustrate how object-oriented programming and the concepts and techniques introduced in the previous parts of this work were used for the construction of an application framework for distributed applications in a technical/industrial area.

Implications for object-oriented programming in particular and software engineering in general conclude this book.