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 graphic design notations or guidelines for an application framework
foobject-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.
|