In order to better understand the three dimensions of the process described above, and to further describe the various elements of a process as applicable to UML-based software development, we created the metamodel shown in Figure 3.1. It is not a formal metamodel, but one created to explain the process-components described later in this chapter. A metamodel is a succinct and helpful way of understanding things. For example, the UML has a metamodel that encapsulates the rules that govern the creation of UML diagrams. A look at the UML metamodel can tell us how a class relates to the attributes and operations inside of it.