|
J
im
Coplien is a recognized authority in several areas of software development:
C++ programming, the object paradigm, patterns, and the organizational
aspects of software development projects. His latest book combines his
knowledge of all these topics. It is about multi-paradigm design in C++?that
is, how C++ language features such as inheritance, templates, and functions
overloading can be used to meet different types of application domain requirements.
His immense knowledge results in a book that is not focused on the technical
aspect alone, but includes the impact of this approach on related subjects
such as the development process and design patterns.
The book begins by describing
the need for multi-paradigm design. This chapter is followed by a closer
look at how we do analysis nowadays: finding the abstractions of the application
domain and then structuring them according to their variation and commonality.
This part of the book presents a broad range of information about the analysis
and design process from various points of view, and it ends with a discussion
of the technical aspects of variation.
One of these technical aspects, for
example, is the point at which the variation gets bound: during implementation,
at compile time, link time, or run time. Subsequent chapters explore the
C++ features that allow developers to express variation and commonality:
inheritance from the object paradigm, templates from the paradigm of generic
types, function overloading, preprocessor directives, and so on. These
discussions are followed by tables that show the mapping of the aspect
of variation determined during analysis to C++ language features. For example,
one table shows when the variation expressed by a certain language feature
is bound: inheritance (with polymorphic types) at run time, templates at
compile and link time, and so on.
The next part of the book takes a
closer look at the elements of multi-paradigm design and the forces behind
them. These discussions are combined with examples that show how to apply
multi-paradigm design to real design problems. The book closes with a chapter
that examines how multi-paradigm design and patterns are related.
Coplien writes in a pleasantly sober
style. He does not extol multi-paradigm design as the latest hot topic.
Instead he shows precisely and convincingly that multiple paradigms already
exist in contemporary software development and that including multi-paradigm
design as an explicit part of the development process can help eliminate
common problems and shortcomings in the process. The book excels because
of the author's broad knowledge: all discussions consider two different
yet related aspects of software development: technical issues and organizational
issues. And both are equally important for the success of a software development
project.
Multi-Paradigm Design in C++
is a great book crammed with elaborate and compelling ideas. Reading it
will change your perception of software development.
Angelika Langer
develops
and teaches classes on advanced C++, STL, multithreading, internationalization,
and Java. She has served on the ANSI/ISO C++ Committee since 1993.
Klaus
Kreft
is a software architect and consultant with more than a decade
of experience in industrial software development. He works for Siemens
Business Services in Germany. Langer and Kreft are working on a book about
standard C++ iostreams and locales and are columnists for
C++
Report
.
|