Back Room Front Room 2
Back Room Front Room 2
Back Room Front Room 2
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
ORGANIZATIONAL PATTERNS<br />
Beyond Technology to People<br />
James O. Coplien<br />
PROG Group, Vrije Universiteit Brussel, PO Box 4557, Wheaton, IL 60540, USA<br />
Email: JOCoplien@cs.com<br />
Keywords: Pattern language, software development, architecture, anthropology, ethnography, Christopher Alexander.<br />
Abstract: Most of the software discipline has come to honor the role of architecture to organize software development.<br />
The software pattern discipline has taken up the architectural metaphor quite literally, borrowing its key<br />
notions from Christopher Alexander, an innovative master builder of houses, neighborhoods, and towns.<br />
However, the software industry has missed the obvious: that architecture is a secondary concern that<br />
precipitates from the structure of the enterprise that builds it. Getting the architecture right means getting the<br />
enterprise structure right: it is certainly a necessary and potentially sufficient condition for achieving most of<br />
the goals that software engineering holds out for architectural activity.<br />
Like most metaphors, the architectural metaphor breaks down somewhere. Unlike houses, whose structure<br />
tends to reflect the activities of the end users of the product, the structure of software exists more to serve<br />
those who build it than those who use it. This parallel has been shifting, but not on the software side: modern<br />
buildings, driven more by technology that make it possible to create 100-foot spans on the ground floor of a<br />
skyscraper, pay homage to the technology to be used in construction, and to the design techniques used to<br />
support that technology. Software, a largely technological field, has had this outlook almost from the<br />
beginning. As an industry focused on technology, it is no surprise that our software pattern discipline has<br />
taken up a largely technical agenda. Our current direction in patterns avoids the most central foundation of<br />
the pattern discipline: to build systems that are beautiful, morally profound, and “habitable” for the people<br />
they touch.<br />
Yet there is hope: as a strong parallel to the structural concerns of software that are found in software<br />
architecture, organizational patterns give a voice to the crucial structural constructs of software development<br />
enterprises. It is these structures of human relationships, rather than the technological underpinnings, that<br />
drive architecture. That fact has long been known to the industry as Conway’s Law, but most managers view<br />
Conway’s Law more as a Dilbertesque joke than as a sober planning principle.<br />
Organizational patterns are a major stride for creating the generative structure of the business—the structure<br />
of the enterprise itself—that gives rise to such other important structures as the system architecture and, by<br />
inference, the system’s human interface. The first major pattern language of software organizational<br />
structure has been completed after a decade of research. There is much more that can be done—not just by<br />
organizational specialists, but also by “software people” of every job and description.<br />
1 INTRODUCTION<br />
Architecture is one of the longest-standing and<br />
widely known metaphors in computer science. Most<br />
software engineering communities—whether in<br />
software production, computer science education, or<br />
software management—harbour deeply held<br />
intuitions about its importance. Awe of architecture<br />
(and not, perhaps surprisingly, for either<br />
requirements or for coding) has propelled the<br />
popularity of notations such as UML, the<br />
I. Seruca et al. (eds.), Enterprise Information Systems VI,<br />
© 2006 S pringer. Printed in the Netherlands.<br />
43<br />
43–52.<br />
methodologies that embed them, and the tools that<br />
express them.<br />
Each software development organization has its<br />
own architectural principles. Such principles as<br />
coupling and cohesion and modularity are almost<br />
universal, and other principles such as the Laws of<br />
Demeter are peculiar to such design styles as object<br />
orientation.<br />
Are these true principles, or just shadows of a<br />
deeper and more important principle that has come<br />
to be ignored?