Ted Larman's book, Applying
UML and Patterns, started a flood of good books on UML,
Java and Object Oriented deign. Jacquie Barkers's good Java overview,
Java Objects followed and then a whole deluge. Yet Larman's book
is not just a survey and analysis of UML as applied to patterns
but rather an overview of object design and project development
in general.In fact this book, introduces OOAD-Object Oriented
Analysis and Design as part and parcel of good project management.
For example, readers are introduced to agile and iterative development
practices as some of the compelling reasons for OO design. Then
readers are carried through a project using the Unified Process
(obviously followng Rational's Process but adapted and watch
as UML, OO Design and Patterns are used iteratively to arrive
at better approximations to the evolving system design. What
is really fascinating here is how flexible the design process
can be to changing requirements. This is the bain of development
- the need to respond to changing requirements yet the need to
guarantee that the design is iterating towards a solution - not
just cycling or spiraling out of control. Larman has some but
not a definitive set of controls against such jeopardy. However
the book is rich in examples of how to turn domain models and
use case analysis into the fore-runners of design Then there
are a variety of patterns available for assigning the resulting
roles, requirements and responsibilities into design sets. It
is this process and the iterative testing behind it that is at
the core of Larman's book. Its sort of like a mathematical proof
- QED that which is required is demonstrated. Well organized,
good read.
It is amusing that Robert C. Martins book, Agile
Software Development is nearly the exact reverse of Larmans. In
name , Martins
book is about adaptive methods and agile development projects and
processes. And in the first part of the book Martin does provide
a good overview of agile methods and Extremem programming - and
how to use test driven design (but here Martin departs emphatically
from
many Extremists who have no time for using anything other than
code to
test a design). In contrast, Martin looks at patterns, design templates
even simple simulations to inform the developing design and project.
And voila - there you have it - 500 pages later informed by some
amazing java and C++ coding examples you discover that you have
been exposed to patterns, UML, and design principles under the
guise of
a exposing a project methodology. The reverse of Larman who develops
and elaborates a project methodology while supposedly laying out
the goods on desgn methods.
But of course the two are interelated - design and project process
are intimately intertwined. As Martin points out - the design is
contingent on the characteristics of the project which in turn determine
the nature of the process which both in turn constrain and shape
the design options. What Martin does is spell out in simple to complex
case after case how requirements, principles, and tested design
patterns interact to voila produce a fairly narrow set of designs
to choose from. And time and again you say to yourself - isn't
that right.
So both of these books areabout UML, but UML use cases,
class diagramming etc as part of a larger design process and project
management approach. readers will find the two authors disagreeing
on the importance of certains tools and methods but essentially agreeing
on the over all project design process.