The MetaTip: cognitive science, philosophy, and the UML are inseparable


If you think the Unified Modeling Language™ (UML™) is just about software engineering you are missing out.

The UML is primarily an associative graphical language for semantically associative modelling (of software and other domains) and your software engineering will not benefit fully from the UML unless you understand this. The UML maps human minds (whether you like it or not), and it has its roots in artificial intelligence research. The animal brain is significantly associative and gradiential.

It follows that unless you have the courage to submit yourself to the powerful psychological mirror that graphical associative languages like the UML afford you will not be able to change your software engineering habits sufficiently to benefit fully from using modern UML tools. This "awareness of habit" is also a fundamental principle of Design Patterns and Antipatterns culture !

In order to change one's way one must first have a way ! (Wannabe Zen saying.)

Only when one develops sufficient awareness of one's current practices can one proceed to choose new practices. Therefore, represent carefully in the UML your current understanding of your "current way" with courage; before you climb higher up the mountain ensure you have a firm footing, and be aware of your feet as your head leads you up. Therefore, Dr Darren recommends:

"Reverse-engineer some of your existing systems into the UML and annotate them critically."

In other words, refactor yourself1 in the Unified Modeling Language™ (UML™) !

One can't hide sloppy software design and poor architecture from the UML and modern reverse-engineering tools !

So begin now with optimism the journey of authentic modern software engineering. After all, as Bill Cosby used to say at the beginning of Fat Albert:

"If you're not careful, you might just learn something."

Dr Darren says:

There are many ways up a tall, dangerous mountain. Usually most of them are treacherous, and only a few of them are "good ways". Which one is "best" often depends on the weather. And so it is with software engineering and model-driven development.

And so it is with best UML™ practices.

  • 1. It may even more useful than Blogging yourself or Googling yourself.