TITLE: OOPSLA Day 5: Grady Booch on Software Architecture Preservation
AUTHOR: Eugene Wallingford
DATE: October 27, 2005 7:56 PM
DESC:
-----
BODY:
Grady Booch refers to himself as an "IBM fellow and
free radical". I don't know if 'free radical' part
of his job description or only self-appellation, but
it certainly fits his roving personality. He is a
guy with many deep interests and a passion for
exploring new lands.
His latest passion is
Handbook of Software Architecture,
a project that many folks thinks is among the most
important strategic efforts for the history and
future of software development.
Booch opened his invited talk at OOPSLA by reminding
everyone that "classical science advances via the
dance between quantitative observation and theoretical
construction." The former is deliberate and intentional;
the latter is creative and testable. Computer science
is full of empirical observation and the construction
of theories, but in the world of software we often
spend all of time building artifacts and not enough
time doing science. We have our share of theories,
about process and tools, but much of that work is
based on anecdote and personal experience, not the
hard, dispassionate data that reflects good empirical
work.
Booch reminisced about a discussion he had with
Ralph Johnson
at the
Computer Museum
a few years ago. They did a
back-of-envelope calculation
that estimated the software industry had produces
approximately 1 trillion lines of code in high-level
languages since the 1950s -- yet little systematic
empirical study had been done of this work. What
might we learn from digging through all that code?
One thing I feel pretty confident of: we'd find
surprises.
In discussing the legacy of OOPSLA, Booch mentioned
one element of the software world launched at OOPSLA
that has taken seriously the attempt to
understand real systems: the
software patterns community,
of which Booch was a founding father. He hailed patterns
as "the most important contribution of the last 10-12
years" in the software world, and I imagine that his fond
evaluation rests largely on patterns community's empirical
contribution -- a fundamental concern for the structure
of real software in the face of real constraints, not
the cleaned up structures and constraints of traditional
computer science.
We have done relatively little introspection into the
architecture of large software systems. We have no common
language for describing architectures, no discipline that
studies software in a historical sense. Occasionally,
people publish papers that advance the area -- one that
comes to mind immediately is Butler Lampson's
Hints for Computer System Design
-- but these are individual efforts, or ad hoc group
efforts.
The other thing this brought to my mind was my time in
an undergraduate
architecture program.
After the first-year course, every archie took courses
in the History of Housing, in which students learned
about existing architecture, both as historical matter
and to inform current practice. My friends became
immersed in what had been done, and that certainly gave
them a context in which to develop their own outlook on
design. (As I look at the program's
current curriculum,
I see that the courses have been renamed History of
Architecture, which to me replaces the rich flavor of
houses for the more generic 'architecture',
even if it more accurately reflects the breadth of the
courses.)
Booch spent a next part of his talk comparing software
architecture to civil architecture. I can't do justice
to this part of his talk; you should read the growing
volume of content on his
web site.
One of his primary distinctions, though, involved the
different levels of understanding we have about the
materials we use. The transformation from vision to
execution in civil systems is not different in principle
from that in software, but we understand more about the
physical materials that a civil architect uses than we
do about a software developer's raw material. Hence
the need to study existing software systems more deeply.
Civil architecture has made tremendous progress over the
years in its understanding of materials, but the scale
of its creations has not grown commensurately other what
the ancients built. But the discipline has a legacy of
studying the works of the masters.
Finally he listed a number of books that document patterns
in physical and civil systems, including
The Elements of Style
-- not the
Strunk and White
version -- and the books of
Christopher Alexander,
the godfather of the software patterns movement.
Booch's goal is for the software community to document
software architectures in as great detail, both for
history's sake and for the patterns that will help us
create more and more beautiful systems. His project
is one man's beginning, and an inspirational one at
that. In addition to documenting classic systems such
as MacPaint, he aims to preserve our classic software
as well. That will enable us to study and appreciate
it in new ways as our understanding of computing and
software grow.
He closed his talk with inspiration but also a note
of warning... He told the story of contacting
Edsger Dijkstra
to tell him about the handbook project and seek his
aid in the form of code and papers and other materials
from Dijkstra's personal collection. Dijkstra supported
the project enthusiastically and pledged materials from
his personal library -- only to die before the details
had been formalized. Now, Booch must work through the
Dijkstra estate in hopes of collecting any of the
material pledged.
We are a young discipline, relatively speaking, but time
is not on our side.
-----