This is a single archived entry from Stefan Tilkov’s blog. For more up-to-date content, check out my author page at INNOQ, which has more information about me and also contains a list of published talks, podcasts, and articles. Or you can check out the full archive.

Ted Neward Talks About UML's Problems, Only He Doesn't

Stefan Tilkov,

Ted Neward attacks UML. Or so he claims, when in fact what he is criticizing is actually reverse engineering.

Here is a very simple truth about modeling a software system: If your model is on the same level as your code, it’s not worth having. Reverse engineering, at least as long as nobody injects a severe amount of AI-like magic into it, is not worth the effort beyond a first migration step towards forward engineering, which is something that actually works.

Nevermind this quote of Ted’s …

But even so, I’ll still take a moment to point out what I think is a critical flaw in the UML modeling space: the lack of any sort of separation between the “physical model” and the “logical model”. […] Why is this so hard for the UML community to understand? Particularly given how infatuated they are with code-generation from the UML model (and vice versa).

… which shows such an ignorance towards both hype and reality about what’s going on in the UML/MDA space that it’s almost funny.

On April 26, 2004 6:23 PM, contrary_score said:

But he’s close, the flaw being not in UML per se, but in OOP. The flaw is that OOP has no single mathematical model. In particular, OOP has no single mathematical model as does the relational database model have with relations. Instead, OOP has a different model for each implementation. So OOP models are “brittle” in that, should an assumption of a particular model change (as when we must modify the CRM system to add new features) then the current implementation/model may not be able to properly handle the change, as a consequence the entire system may require a rewrite, and the scope of change required is unpredictable.

So we’re talking about the scope of change and the scope of rewrite: how much effort is required to implement change. And in the relational logic programming model that is utterly predictable and in OOP it is utterly not predictable but is implementation-dependent.