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