Class diagrams can be refactored to improve structure, remove redundancies, and improve correspondence to requirements:

  • Pull up attribute refactoring

    “Pull up attribute” refactoring: if all (or at least 2) direct sub-classes of class declare an attribute, say , we can replace this with a single definition in .

    Link to original
  • Move operation refactoring

    “Move operation” refactoring: if operation op of refers mainly to attributes and roles of class via association -, try moving op to .

    Link to original
  • Merge classes refactoring

    “Merge classes”: if all sub-classes of abstract class are empty, replace sub-classes by flag attribute of of enumeration making concrete.

    Link to original