UnwantedModelingLanguage is how MartinFowler is characterising UnifiedModelingLanguage (UML). See http://martinfowler.com/bliki/UnwantedModelingLanguage.html
UML was supposed to have been created for ObjectOrientedAnalysis? and ObjectOrientedDesign, but:
- UseCases are FunctionalSpecifications? in disguise. UserStories are the same thing. No, <<using>>, <<including>> and <<extending>> UseCases doesn't cut it.
- ClassDiagrams relate classes because they are included inside another, they know each other or they extend another. Those relationships are not very well represented by cardinality, because it is not the same having a dictionary, a set or a list of objects, but all of them are represented using the same cardinality. ClassHierarchies? are not well represented in a diagram in which cardinalities are also represented.
- The TemplateMethod DesignPattern is not directly representable in ClassDiagrams, or any other UML diagram.
- PolyMorphism can't be represented in ClassDiagrams or SequenceDiagrams.
- SequenceDiagrams violate encapsulation.
- SequenceDiagrams are PolyMorphism oblivious.
- SequenceDiagrams do not stay at one AbstractionLevel, so they are useless for modeling abstractions.
- SequenceDiagrams can't model complex behavior.
UML is the antithesis of
ObjectOrientation. On the other hand,
CrcCards are a useful abstraction for modeling
ObjectOriented software.
"UML’s segregation of the system model into multiple views is a major source of difficulty in capturing the system as a whole, understanding its parts, and being able to coherently follow the functionality it performs."
See
UmlControversies.