The UML profile for framework architectures (2001)

From the Book:
The Unified Modeling Language (UML) community has started to define so-called profiles in order to better suit the needs of specific domains or settings. For example, a profile for embedded systems should refine notational elements that represent real-time constraints. Another one for electronic business might take the typical software architecture of such systems, and thus its principal domain-specific entities, into consideration to come up with a UML notation tailored for that purpose.

Object and component frameworks represent a special breed of object-oriented systems  they are extensible semi-finished pieces of software. Completing the semi-finished software leads to different software pieces, typically specific applications, that share the same core. Though frameworks have been developed for a wide range of domains, they use common construction principles. For example, many of the design patterns written up by Gamma et al. (1995) rely on the framework construction principles.

The aim of the UML profile for framework architectures is the definition of a UML subset, enriched with a few UML-compliant extensions, which allows the annotation of such artefacts. Thus, the resulting profile that we call UML-F does not correspond to a specific domain, but to framework technology. Though profiles might be standardized in the future, sound proposals from various communities will get the process of defining and standardizing UML profiles started. In that sense, this book sets the stage for the UML profile for framework architectures.

The book is structured under two parts.

Part I: The UML-F profile

The first chapter promotes the UML-Fprofile as an essential means of describing framework architectures and summarizes framework-related terminology. The following chapters cover the UML subset on which UML-F is based, and the notational elements of UML-F that support framework modeling and annotation. This includes a mechanism to define sets of related tags for essential construction principles and design patterns.

Part II: [email protected]

This part illustrates how UML-F is applied in the context of the sample framework JUnit. Considerations on the methodological implications of UML-F and a selection of practical hints and guidelines intended to assist in the design, development, and adaptation of frameworks complete this part.

The UML-F web site (http://www.UML-F.net) provides additional material, such as the source code of the examples discussed in the book, additional examples, research papers, and UML-F presentations.

Acknowledgments

Many people helped and advised us in the course of writing this book. Rebecca Wirfs-Brock carefully reviewed the manuscript. Her detailed hints and suggestions led to significant improvements. We would also like to thank Alan Wills and Mohamed Fayad for their helpful comments on an early version of the manuscript.

Timothy Brown, a computer science graduate from Washington University in St. Louis, not only corrected the English but also provided many useful ideas. Timothy Brown and Alessandro Pasetti co-authored Chapter 7. Several other colleagues helped us by reviewing parts of the manuscript and providing helpful feedback, including Lothar Schmitz, Heinrich Hussmann, Birgit Demuth, and Ljiljana Dohring. Thanks also go to the students of Wolfgang Prees software architecture course at the University of California, Berkeley in the Fall semester 2000.

We thank Carlos Lucena, Edward Hermann Haeusler, Sergio Carvalho, Julio Leite (all at Pontificia Universidade CatolicaPUC, Rio de Janeiro); Donald Cowan, Paulo Alencar (at the University of Waterloo); and Marcos Borges at the Federal University of Rio de Janeiro. They made excellent comments on and contributions to a previous version of this work (Fontoura, 1999).

Special thanks go to Andrew Appel (Princeton University), and to Thomas K. Truong, Norm Pass, and Anant Jhingran (IBM Almaden Research Center, San Jose, CA) for their support regarding this work.

Finally, it was a pleasure to cooperate with the people from Addison-Wesley: Alison Birtwell, J. Carter Shanklin, Katherin Ekstrom, Claudia Orrell, and the copy editor Derek Atkins.

This work was partially funded by Nokia and the Bayerisches Staatsministerium fur Wissenschaft, Forschung und Kunst under the Habilitation-Forderpreis Programm, by the Bayerische Forschungsstiftung under the FORSOFT research consortium, and the Bundesministerium fur Bildung und Forschung (BMBF) under the Virtual Software Engineering Competence Center (ViSEK).

Traces of the books history

The book was initiated by Marus Fontoura when Wolfgang and Marcus met in Rio in July 1999. A month later Bernhard joined the team. Besides the truly distributed writing (Princeton, NJ; Constance, Germany; Munich, Germany; San Jose, CA; Berkeley, CA), the authors worked on the book during a sailing trip in the Caribbean in Spring 2000. The final proof-reading was accomplished on a lake near Salzburg in August 2001, exactly two years after Bernhard and Wolfgang met there for their initial discussions.