|Category theory vs. MDD, UML and all that stuff|
Model-Driven Development (MDD) in general, and UML in particular, are areas whose mathematical underpinning requires really abstract mathematical concepts. Indeed, MDD and UML are all about modeling and models, and their mathematical theory should be thus looked for in meta-mathematics: a mathematically precise study of mathematical models and operations over them. A consistent conceptual framework for meta-mathematics was developed in Category Theory. It is not surprising that essentially categorical constructs can be often seen in MDD specifications, more accurately, the latter can be arranged in a categorical way. The main point is that such an arrangement can be useful for practical applications. A few examples in the (meta)data modeling projection of MDD, the so called Generic Model Management, can be found here.
Category theory can be also seen as a general theory of structures, their relationships and operations over them; in other words, as mathematics of structure engineering (a good textbook emphasizing this can be found here). As the latter is an important part of UML, MOF, SDL and many other standards in software engineering, viewing them through categorical patterns can be extremely useful. Moreover, for multi-level multi-purpose modeling languages like UML, a categorical treatment appears to be inevitable if we want to understand their multi-layered modeling structures in a modular way. On the other hand, categorical constructs have to be adapted and adjusted (often essentially) to become applicable to software engineering needs (some general sentiments as well as technical details can be found here). A normal scenario is when the categorical intuition just guides mathematical modeling of engineering artifacts while the final result does not employ any specific categorical apparatus, see here for some examples related to UML.