Book Review - UML Components
A Simple Process for Specifying Component-Based Software by John
Cheesman and John Daniels
The Unified Modeling Language (UML) is a standard, universally
accepted Object Oriented Modeling Language; there are no pretenders
to the throne. Yet, whilst widely accepted, the UML is not universally
adopted. There are some important reasons for this dichotomy.
First the majority of application development projects still do
not use formal modeling techniques. Perhaps because they are insufficiently
complex or large enough to warrant the perceived overhead; perhaps
because OO "analysis" remains for many a black art which is synonymous
with project risk. The second reason might be because, as we have
been saying for years, the UML is incomplete in its support for
components.
"Now wait a minute," I can hear you saying, "no support for components!"
"Surely in today's Java, COM and CORBA centric world, that must
be incorrect". I'm afraid not. The truth is that the world embraced
UML as an OO modeling standard just at the time that components
were starting to move into the mainstream, but before there was
widespread acceptance that components and objects were not competing
concepts. The UML language supports components as implementation
concepts, but provides no explicit support for the all important
aspects of specification.
Cheesman and Daniels assert as indeed we have, that it is essential
to consider components at an architectural and business analysis
level. It is only in this way that the natural structures of the
business can be reflected in the supporting information systems.
In contrast the UML sidelines any consideration of components
until considering the detail design and packaging.
In this book Cheesman and Daniels have addressed this issue head
on. They describe how to architect and specify enterprise-scale,
component-based systems using the UML. The book commences with
a detailed explanation of the basic principles of software components
and component based development, in a manner that establishes
a precise set of foundational definitions that are essential before
approaching the remainder of the book. They explain that components
adopt the principles of object orientation but extend these (unification
of data and function, encapsulation, identity) by strengthening
the role of the interface and separating the component specification.
The scope of the book is sensibly mapped to the RUP (Rational Unified
Process), as it is, perhaps perversely in light of its lack of
support for components, becoming a de facto standard. The entire
RUP management process and the requirements, test and deployment
workflows with the exception of some minor workflows correspond
directly to the book. However the book's specification, provisioning
and assembly workflows effectively replace the RUP analysis, design
and implementation workflows. This huge gap of course speaks volumes
about the RUP!
The core of the book is the chapter Applying UML in which the authors
provide precise and detailed guidance on how to extend and customize
the UML. This guidance commences with techniques for using stereotyping
and then introduces a new set of diagrams listed in Table 1.
|