- Software Reuse
- Software Product Lines
- Modeling Requirements Variability in Software Product Lines: Feature Modeling
- Modeling Design Variability in Software Product Lines
- Reusable Design Patterns
- Modeling Single Systems with UML
- COMET: A UML-Based Software Design Method for Single Systems
- Modeling Software Product Lines with UML
- UML as a Standard
- Related Texts
1.9 UML as a Standard
This section briefly reviews the evolution of UML into a standard. The history of UML's evolution is described in detail by Kobryn (1999). UML 0.9 unified the modeling notations of Booch (1994), Jacobson (1992), and Rumbaugh et al. (1991). This version formed the basis of a standardization effort, with the additional involvement of a diverse mix of vendors and system integrators. The standardization effort culminated in submission of the initial UML 1.0 proposal to the Object Management Group (OMG) in January 1997. After some revisions, the final UML 1.1 proposal was submitted later that year and adopted as an object modeling standard in November 1997.
The first widely used version of the standard was UML 1.3. There were minor revisions with UML 1.4 and 1.5. A major revision to the notation was made in 2003 with UML 2.0. Many books on UML, including the revised editions of the major UML referencesThe Unified Modeling Language User Guide by Booch et al. (2005) and The Unified Modeling Language Reference Manual by Rumbaugh et al. (2005)conform to UML 2.0. Other books describing the UML 2.0 standard include the revised edition of UML Distilled by Fowler (2004), UML 2 Toolkit by Eriksson et al. (2004), and the revised edition of Real-Time UML by Douglass (2004).
1.9.1 Model-Driven Architecture with UML for Software Product Lines
The OMG maintains UML as a standard. In the OMG's view, "modeling is the designing of software applications before coding." The OMG promotes model-driven architecture as the approach in which UML models of the software architecture are developed prior to implementation. According to the OMG, UML is methodology-independent; UML is a notation for describing the results of an object-oriented analysis and design developed via the methodology of choice.
A UML model can be either a platform-independent model (PIM) or a platform-specific model (PSM). The platform-independent model is a precise model of the software architecture before a commitment is made to a specific platform. Developing the PIM first is particularly useful because the same PIM can be mapped to different middleware platforms, such as COM, CORBA, .NET, J2EE, Web Services, or another platform. The approach in this book is to use the concept of model-driven architecture to develop a component-based software architecture for a product line, which is expressed as a UML platform-independent model.
An object-oriented analysis and design method for software product lines needs to extend single-system analysis and design concepts to model product lines, in particular to model the commonality and variability in the product line, and to extend the UML notation to describe this commonality and variability. The goal is to extend UML for software product lines using the standard UML extension mechanisms of stereotypes, constraints, and tagged values (Rumbaugh et al. 2005) (see Appendix A, Section A.10).