This chapter introduces the Unified Modeling Language's extension mechanisms, which allow for extending the language. I discuss how to extend the language using stereotypes, apply the extensions, capture characteristics of model elements using properties, and package extensions using profiles.
As discussed in Chapter 1, a language enables us to communicate about a subject, including requirements and the system that satisfies those requirementsfor example, the requirements of the project management system that I have been discussing in the book. An extensible language allows us to define new concepts, much like introducing new words and extending the vocabulary of a natural language. For example, rather than have every effort relating to a project management system define the concept of a project, I can extend the UML to incorporate a definition of what a project is, which may be reused by all these other efforts. Also, rather than have every effort relating to a project management system define the relationship between a project and the things that make up a project, I can extend the UML to incorporate a definition of a relationship between a project and the things that make up a project, which may be reused by all these other efforts. Each effort can then specialize these definitions as necessary. For instance, one effort may involve software development projects such as developing an information or technology system, while another effort may involve infrastructure projects such as installing client machines, server machines, and other software. This capability to extend the UML is valuable for creating standardized collections of UML elements that may be reused. Therefore, whenever you find yourself and other people using the same or similar concepts and relationships, as well as reusing these concepts and relationships, you should consider whether you could extend the UML to incorporate these concepts and relationships so that they can be more readily standardized and reused.