I think that UML is best considered for its complexity part by part, since mixing it all up, like class models, state machines etc, would create quite a monster that could express nearly anything anyhow, in ways that no one is really able to trace. Moreover UML is practically applied part by part and thus complexity considerations should follow this I order to head towards practically relevant results.

**So, what more do we know when we know the complexity of a certain part of UML?**

For example, in the case of a **state machine** the correspondence to complexity classes is rather obvious. There one can immediately see that, if its model employs a History Element “H” the implementation language requires a correspondingly higher expressiveness. Thus one can take this into consideration, when e.g. choosing a suitable Issue tracking tool for implementing the state flow.

In the case of **class diagrams** one employment of inheritance implies a certain minimal level of complexity*, thus one could immediately see, since this level cannot be checked by running tests on the application alone, one has to carry out code reviews in order to verify the application comprehensively.

Thus, I believe that **applying complexity classes to UML can provide a substantial benefit, if it can support the controlled (complexity aware) use of language**, i.e. if one decides the application to cover a higher complexity, one is immediately aware of the higher implementation cost. Finally, complexity awareness is cost awareness.

*Comments very welcome.*

### Like this:

Like Loading...

*Related*

## About modelpractice

Modeling Theory and Abstraction Awareness in strive for scientific rigour and relevance to information systems engineering.

Pingback: Tweets that mention UML and Complexity aware modeling | Model Practice -- Topsy.com

Hi!

I’m not sure to understand you point, so forgive me if I comment aside.

Here is a nice paper on “modeling complexity” : http://cybergeo.revues.org/1035.

I see UML (and its extensions) as a generic system modeling language. With UML we have the ability to model simply simple systems and to model complex systems… But we should consider that the complexity comes from the reality, not from UML itself.

IMHO the main effort to reduce complexity should be done on the question, before considering the answer… (or back to the question if the answer seems too complex).

Hi, thanks for the link. Will definitely have a look.

The above is in the core about this: the (view on the) thing you want to model R has a certain complexity r, your language L has a certain complexity l (that it can express). What if r > l ? Extend L? Leave L and annotate in a different language? What if r < l ? Reduce L systematically? Leave it like it is?

Thus it makes sense to be aware of how r and l approximately relate.

I see! What your ‘aware’ meant: in other words, to choose the technologies with the complexities suitable for or related to the complexities of the problem. right?

I agree 100%

Pingback: Complexity Aware Modelling I | Model Practice