Login | Register
My pages Projects Community openCollabNet

Wiki: UML1 to UML2 changes

Edit this page | Links to this page | Page information | Attachments | Refresh page


Changes from UML 1.4 to UML 2.1.1

This page contains a list of the changes that were made to the UML specification between UML 1.4 and UML 2.1.1. UML 1.4 was the most widely implemented of the UML 1.x series and UML 1.5 was a pure functional superset that just added Action support. UML 2.1.1 was the first widely implemented (and implementable) version in the UML 2.x series.

What changed? Pretty much everything (goes to show that giving a specification committee too much time never amounts to any good)! About the only thing that didn't change was the very simple Use Case diagram related stuff.

The following list is updated as work is done on the Model subsystem API to accommodate differences between UML 1.4 and UML 2.1.1. As such, it only represents things which can't be accommodated without API changes and which we had actually implemented for UML 1.4.


  • Feature.ownerScope with type of enumeration ?ScopeKind (values = instance, classifier) replaced by boolean Feature.isStatic

  • Feature.targetScope dropped
  • ?StructuralFeature.changeability with type ?ChangeableKind (values = changeable, frozen, addOnly) replaced by boolean Property.isReadOnly (?StructuralFeature is a subtype of Property). The addOnly value (which never really had a defined meaning anyway) is dropped.

  • Property replaces ?StructuralFeature, ?AssociationEnd, ... ??

  • ?ModelElement.visibility moved to new type ?NamedElement.visibility (implying that anything using isAModelElement() for guarding this needs to be changed)

  • Permission changed to ?PackageImport

  • Generalization.discriminator removed. The new ?GeneralizationSet provides a superset of the capabilities.

  • Geneneralization.powerType moved to ?GeneralizationSet.powerType

  • Generalization.child renamed Generalization.specific. Generalization.parent renamed Generalization.general. (gratuitous name change!)
  • Generalizations no longer have names (they were never displayed on the diagram, but you could specify them)
  • Primitive renamed to ?PrimitiveType


In general the type structure is much more fine-grained for UML 2.x as compared to UML 1.4, so there are many new types.

  • ?NamedElement (split out from ?ModelElement)

  • ?GeneralizationSet

  • New ?PseudostateKind enumeration code points - ?EntryPoint, ?ExitPoint, Terminate


  • Removed ?ProgrammingLanguageDataType

  • Removed ?ArgListsExpression, ?BooleanExpression, ?IterationExpression, ?MappingExpression, ?ObjectSetExpression, ?ProcedureExpression, ?TimeExpression, ?TypeExpression,

  • Removed ?UseCaseInstance - use an ?InstanceSpecification with a ?UseCase as its Classifier instead

  • Removed ?TaggedValue & ?TaggedDefinition classes and related structures. "Tagged values" are now the values of attributes of an applied Stereotype instead. The UML 1.3 concept of ?TaggedValues unowned by a Stereotype, which was still possible, but not recommended in UML 1.4, is no longer supported.

UML1 to UML2 changes (last edited 2011-01-31 17:06:53 -0700 by tfmorris)