The UML Specification

The UML specification is a UML meta-model. It consists of two packages:

It's not too surprising to realize that every element in a UML diagram (arrows, classes, lifelines, states, etc.) is an object. Every object is an instance of some class. Therefore, to bootstrap the UML specification, we need a simplified specification of

UML diagrams are made up of elements. Elements have types: arrows, classes, states, lifelines, etc. Therefore, the UML specification begins by specifying the core concepts of element and type. This is done in the infrastructure package.

UML diagrams are either structural (class, component, deployment) or behavioral (state, sequence, activity, etc.) These are specified in the superstructure package.