<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: UML may suck, but is there anything better?</title>
	<atom:link href="http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/feed/" rel="self" type="application/rss+xml" />
	<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/</link>
	<description>A company obsessed with one single goal: stopping people from writing so much code</description>
	<pubDate>Sat, 31 Jul 2010 18:08:38 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: Design then develop</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1331</link>
		<dc:creator>Design then develop</dc:creator>
		<pubDate>Mon, 03 May 2010 13:40:53 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1331</guid>
		<description>Well,

If you have a good tool to rapid create a prototype and simulate your application then UML is pretty good.

Does anyone have tried UML Almighty tool ?

What about the simulated Web application ? Is it good ?

Regards.</description>
		<content:encoded><![CDATA[<p>Well,</p>
<p>If you have a good tool to rapid create a prototype and simulate your application then UML is pretty good.</p>
<p>Does anyone have tried UML Almighty tool ?</p>
<p>What about the simulated Web application ? Is it good ?</p>
<p>Regards.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Can we come up with something better than UML? : Bogdan Mocanu</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1325</link>
		<dc:creator>Can we come up with something better than UML? : Bogdan Mocanu</dc:creator>
		<pubDate>Fri, 02 Apr 2010 22:32:07 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1325</guid>
		<description>[...] I stumbled upon this article, taking a side on the problems that UML has and how a better modelling language should look like. I [...]</description>
		<content:encoded><![CDATA[<p>[...] I stumbled upon this article, taking a side on the problems that UML has and how a better modelling language should look like. I [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Can we come up with something better than UML? &#171; Bogdan Mocanu</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1290</link>
		<dc:creator>Can we come up with something better than UML? &#171; Bogdan Mocanu</dc:creator>
		<pubDate>Wed, 17 Feb 2010 19:29:54 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1290</guid>
		<description>[...] something better than&#160;UML?  17/02/2010 Leave a comment Go to comments    Today I stumbled upon this article, taking a side on the problems that UML has and how a better modelling language should look like. I [...]</description>
		<content:encoded><![CDATA[<p>[...] something better than&nbsp;UML?  17/02/2010 Leave a comment Go to comments    Today I stumbled upon this article, taking a side on the problems that UML has and how a better modelling language should look like. I [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rafael.chaves</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1280</link>
		<dc:creator>rafael.chaves</dc:creator>
		<pubDate>Sat, 13 Feb 2010 17:31:35 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1280</guid>
		<description>@Jilles

"what about agile practices such as TDD, refactoring, etc. What about the inevitable case where the domain starts to evolve (there’s no such thing as non evolving software)?"

Why would MDD be inherently incapable of allowing these? If what I am calling modeling here is just higher-level-of-abstraction programming, what are the challenges with refactoring and automated testing that you are alluding to? They might be obvious to you, but I can't see any. Models are executable, so they can be exercised by automated tests the usual way. And refactoring of models should be simpler, not harder than ordinary code, because with the better separation of concerns, changes are handled in a more localized way, reducing the chances for widespread changes.

"Finally, UML is a specific implementation technology that you seem to have committed to."

First, it is different from conventional implementation technologies because it goes out of its way to be removed from mundane technical implementation details. In modeling, we strive not to over-specify a solution, thus preserving its generality and allowing it to be realized in different ways, effectively separating the general solution concerns (intentions) from concrete technology implementation concerns.

Second, I am not committed to UML, I will happily drop it for any better alternative (that was the whole point of this post!), according to the constraints I refer to.

"migration to some different technology quickly becomes infeasible"

That is one of the selling points of raising the level of abstraction. You don't need to migrate as often, as you get farther from concrete implementation technologies, things are much more stable. And when you do have to migrate, you have way higher chances to be dealt with an automated transformation, as model compilers can make sense of the intent behind a model way more easily. Win-win.

"There’s quite a bit of interesting stuff going on that is quite hard to map to UML, such as erlang/go style concurrency, AOP and annotations, closures, map reduce, etc."

Why do you say so? If those things can be done in ordinary OOPL, what is the difficulty with doing that with UML?  Any concrete examples? UML activities are inherently parallel, you have to go out of your way to make things execute sequentially. UML supports annotations way before any programming language I know (stereotypes and tagged values). UML can be extended to support closures very easily (TextUML allows them, search the main page for "closures"). For things it does not have native constructs for, you can address the library-way instead of the language way, and if beneficial still provide native support in your notation (such as I did with closures). The language can be evolved to address gaps where it makes sense, but in most cases concrete implementation improvements are more properly taken advantage of by changing the transformation rules, not the models.

"Your text UML sample looks disturbingly like Delphi met Java. Needlessly verbose and I’ve seen nicer ways of saying hello world."

That does not seem to be related to what we are talking about in this post, which is about executable modeling languages (and how UML seems to be the only option at this point), not about TextUML specifically. Actually, separation between abstract and concrete syntax (which may not even be specified) is another must-have for any replacement to UML, as it is something very valuable that it already does well.

That being said, I would be glad to hear your complaints/suggestions about the TextUML notation or the TextUML Toolkit by e-mail (rafael at this domain), twitter (abstratt), discussion &lt;a href="http://abstratt.com/forum/" rel="nofollow"&gt;forum&lt;/a&gt; or &lt;a href="http://abstratt.com/issues/" rel="nofollow"&gt;issue tracker&lt;/a&gt;.

Cheers,

Rafael</description>
		<content:encoded><![CDATA[<p>@Jilles</p>
<p>&#8220;what about agile practices such as TDD, refactoring, etc. What about the inevitable case where the domain starts to evolve (there’s no such thing as non evolving software)?&#8221;</p>
<p>Why would MDD be inherently incapable of allowing these? If what I am calling modeling here is just higher-level-of-abstraction programming, what are the challenges with refactoring and automated testing that you are alluding to? They might be obvious to you, but I can&#8217;t see any. Models are executable, so they can be exercised by automated tests the usual way. And refactoring of models should be simpler, not harder than ordinary code, because with the better separation of concerns, changes are handled in a more localized way, reducing the chances for widespread changes.</p>
<p>&#8220;Finally, UML is a specific implementation technology that you seem to have committed to.&#8221;</p>
<p>First, it is different from conventional implementation technologies because it goes out of its way to be removed from mundane technical implementation details. In modeling, we strive not to over-specify a solution, thus preserving its generality and allowing it to be realized in different ways, effectively separating the general solution concerns (intentions) from concrete technology implementation concerns.</p>
<p>Second, I am not committed to UML, I will happily drop it for any better alternative (that was the whole point of this post!), according to the constraints I refer to.</p>
<p>&#8220;migration to some different technology quickly becomes infeasible&#8221;</p>
<p>That is one of the selling points of raising the level of abstraction. You don&#8217;t need to migrate as often, as you get farther from concrete implementation technologies, things are much more stable. And when you do have to migrate, you have way higher chances to be dealt with an automated transformation, as model compilers can make sense of the intent behind a model way more easily. Win-win.</p>
<p>&#8220;There’s quite a bit of interesting stuff going on that is quite hard to map to UML, such as erlang/go style concurrency, AOP and annotations, closures, map reduce, etc.&#8221;</p>
<p>Why do you say so? If those things can be done in ordinary OOPL, what is the difficulty with doing that with UML?  Any concrete examples? UML activities are inherently parallel, you have to go out of your way to make things execute sequentially. UML supports annotations way before any programming language I know (stereotypes and tagged values). UML can be extended to support closures very easily (TextUML allows them, search the main page for &#8220;closures&#8221;). For things it does not have native constructs for, you can address the library-way instead of the language way, and if beneficial still provide native support in your notation (such as I did with closures). The language can be evolved to address gaps where it makes sense, but in most cases concrete implementation improvements are more properly taken advantage of by changing the transformation rules, not the models.</p>
<p>&#8220;Your text UML sample looks disturbingly like Delphi met Java. Needlessly verbose and I’ve seen nicer ways of saying hello world.&#8221;</p>
<p>That does not seem to be related to what we are talking about in this post, which is about executable modeling languages (and how UML seems to be the only option at this point), not about TextUML specifically. Actually, separation between abstract and concrete syntax (which may not even be specified) is another must-have for any replacement to UML, as it is something very valuable that it already does well.</p>
<p>That being said, I would be glad to hear your complaints/suggestions about the TextUML notation or the TextUML Toolkit by e-mail (rafael at this domain), twitter (abstratt), discussion <a href="http://abstratt.com/forum/" rel="nofollow">forum</a> or <a href="http://abstratt.com/issues/" rel="nofollow">issue tracker</a>.</p>
<p>Cheers,</p>
<p>Rafael</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jilles van Gurp</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1279</link>
		<dc:creator>Jilles van Gurp</dc:creator>
		<pubDate>Sat, 13 Feb 2010 13:44:25 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1279</guid>
		<description>@Rafael. Exactly, you are treating your UML tool as an IDE. Fine, but stop calling it modeling then. Or if you insist, the rest of the world models in traditional programming languages. BTW. what about agile practices such as TDD, refactoring, etc. What about the inevitable case where the domain starts to evolve (there's no such thing as non evolving software)? I've seen a few MDA projects fail quite spectacularly a couple of years ago exactly for this reason. As for agile, it's a very overloaded term, even more than the word modeling. Lets just say that not all agile projects are created equally. Also most companies that I have encountered that claimed to do agile were in fact faking it badly. Finally, UML is a specific implementation technology that you seem to have committed to. Like with any such commitment, migration to some different technology quickly becomes infeasible. If it suits your needs fine, but don't attribute too much magical value to it in terms of being a level up in terms of abstraction. There's quite a bit of interesting stuff going on that is quite hard to map to UML, such as erlang/go style concurrency, AOP and annotations, closures, map reduce, etc. Basically all of that is way out of the comfort zone of MDA. Apples and oranges, I know. But the point here is that MDA is just good 30 year old OOP. Your text UML sample looks disturbingly like Delphi met Java. Needlessly verbose and I've seen nicer ways of saying hello world.

@Dominique, I've been following Simonyi and IP for about a decade. Unfortunately, beyond the papers he has never produced anything substantial in public. What they are doing exactly at intentional software is pretty much a big mystery. To me the time that has gone by without any substance suggests a pile of software that is not working as advertised (in the papers a decade ago). Meanwhile, Ruby seems to fill the gap quite nicely when it comes to DSLs and meta programming. Not the same thing of course but so much more practical right now.

@Vladimir model refactoring assumes that everything your model depends on in the real world is stable. It's not unheard off but usually pretty much exclusively limited banking or insurance type IT projects, which incidentally is also a domain where DSLs have been used successfully. In the rest of the world, change is the norm in all layers of the system.</description>
		<content:encoded><![CDATA[<p>@Rafael. Exactly, you are treating your UML tool as an IDE. Fine, but stop calling it modeling then. Or if you insist, the rest of the world models in traditional programming languages. BTW. what about agile practices such as TDD, refactoring, etc. What about the inevitable case where the domain starts to evolve (there&#8217;s no such thing as non evolving software)? I&#8217;ve seen a few MDA projects fail quite spectacularly a couple of years ago exactly for this reason. As for agile, it&#8217;s a very overloaded term, even more than the word modeling. Lets just say that not all agile projects are created equally. Also most companies that I have encountered that claimed to do agile were in fact faking it badly. Finally, UML is a specific implementation technology that you seem to have committed to. Like with any such commitment, migration to some different technology quickly becomes infeasible. If it suits your needs fine, but don&#8217;t attribute too much magical value to it in terms of being a level up in terms of abstraction. There&#8217;s quite a bit of interesting stuff going on that is quite hard to map to UML, such as erlang/go style concurrency, AOP and annotations, closures, map reduce, etc. Basically all of that is way out of the comfort zone of MDA. Apples and oranges, I know. But the point here is that MDA is just good 30 year old OOP. Your text UML sample looks disturbingly like Delphi met Java. Needlessly verbose and I&#8217;ve seen nicer ways of saying hello world.</p>
<p>@Dominique, I&#8217;ve been following Simonyi and IP for about a decade. Unfortunately, beyond the papers he has never produced anything substantial in public. What they are doing exactly at intentional software is pretty much a big mystery. To me the time that has gone by without any substance suggests a pile of software that is not working as advertised (in the papers a decade ago). Meanwhile, Ruby seems to fill the gap quite nicely when it comes to DSLs and meta programming. Not the same thing of course but so much more practical right now.</p>
<p>@Vladimir model refactoring assumes that everything your model depends on in the real world is stable. It&#8217;s not unheard off but usually pretty much exclusively limited banking or insurance type IT projects, which incidentally is also a domain where DSLs have been used successfully. In the rest of the world, change is the norm in all layers of the system.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vladimir</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1270</link>
		<dc:creator>Vladimir</dc:creator>
		<pubDate>Fri, 12 Feb 2010 17:48:37 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1270</guid>
		<description>About modeling and agile. I've participated in two projects implemented using MDD approach. Both projects use UML (or MOF) as a base for modeling. Both projects were agile. These projects were even more agile than obvoius ones since there were no such resistance for model refactorings as it's without MDD. It was agile just because developers don't have to rewrite a bunch of things like Java, XML's, deployment descriptors, DDLs, on any "agile" model change.</description>
		<content:encoded><![CDATA[<p>About modeling and agile. I&#8217;ve participated in two projects implemented using MDD approach. Both projects use UML (or MOF) as a base for modeling. Both projects were agile. These projects were even more agile than obvoius ones since there were no such resistance for model refactorings as it&#8217;s without MDD. It was agile just because developers don&#8217;t have to rewrite a bunch of things like Java, XML&#8217;s, deployment descriptors, DDLs, on any &#8220;agile&#8221; model change.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rafael.chaves</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1269</link>
		<dc:creator>rafael.chaves</dc:creator>
		<pubDate>Fri, 12 Feb 2010 15:37:37 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1269</guid>
		<description>@Dominique

Note that I did not say anything about an implementation having to be open-source. My problem is with control and competition.

Thanks for the link, it was an interesting read.</description>
		<content:encoded><![CDATA[<p>@Dominique</p>
<p>Note that I did not say anything about an implementation having to be open-source. My problem is with control and competition.</p>
<p>Thanks for the link, it was an interesting read.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dominique De Vito</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1267</link>
		<dc:creator>Dominique De Vito</dc:creator>
		<pubDate>Fri, 12 Feb 2010 10:42:20 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1267</guid>
		<description>@Rafael

The papers I have read say that there is a IP concrete technology implementation, and indeed, that's the Simonyi’s one; it's said to be used by Cap Gemini, for example, for some real-world test projects.

And, yes, I am sure it fails the last three criteria (open process, open standard, patent free) ;-)

But while I am an open source proponent, I still value non-open source products if they show enough added-value, and I am happy there is still some initiatives outside the all-inclusive-UML world, for drawing new interesting directions. 

This being said, you may be interested to read my post about UML drawbacks I see:
"UML business hotspot is over (but modeling business still makes sense)"
http://www.jroller.com/dmdevito/entry/uml_business_hotspot_is_over</description>
		<content:encoded><![CDATA[<p>@Rafael</p>
<p>The papers I have read say that there is a IP concrete technology implementation, and indeed, that&#8217;s the Simonyi’s one; it&#8217;s said to be used by Cap Gemini, for example, for some real-world test projects.</p>
<p>And, yes, I am sure it fails the last three criteria (open process, open standard, patent free) <img src='http://abstratt.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>But while I am an open source proponent, I still value non-open source products if they show enough added-value, and I am happy there is still some initiatives outside the all-inclusive-UML world, for drawing new interesting directions. </p>
<p>This being said, you may be interested to read my post about UML drawbacks I see:<br />
&#8220;UML business hotspot is over (but modeling business still makes sense)&#8221;<br />
<a href="http://www.jroller.com/dmdevito/entry/uml_business_hotspot_is_over" rel="nofollow">http://www.jroller.com/dmdevito/entry/uml_business_hotspot_is_over</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rafael.chaves</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1260</link>
		<dc:creator>rafael.chaves</dc:creator>
		<pubDate>Thu, 11 Feb 2010 15:21:21 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1260</guid>
		<description>@Dominique 

I find the ideas behind Intentional Programming very cool, but isn't IP a paradigm instead of a concrete technology? The only concrete technology implementation I know of is by Simonyi's Intentional Software, but I suspect that fails the last three criteria (open process, open standard, patent free).</description>
		<content:encoded><![CDATA[<p>@Dominique </p>
<p>I find the ideas behind Intentional Programming very cool, but isn&#8217;t IP a paradigm instead of a concrete technology? The only concrete technology implementation I know of is by Simonyi&#8217;s Intentional Software, but I suspect that fails the last three criteria (open process, open standard, patent free).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dominique De Vito</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1259</link>
		<dc:creator>Dominique De Vito</dc:creator>
		<pubDate>Thu, 11 Feb 2010 08:42:46 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1259</guid>
		<description>I think a UML alternative could be IP - Intentional Programming : http://en.wikipedia.org/wiki/Intentional_programming 

Here are some differences with UML:
- IP standardizes the abstract level and authorizes as many view as one wants
- IP enables to integrate graphical descriptions and DSL
- with IP, the integration of the different views in relation with the abstract model is a problem from the start because there could be N views, but there is only one abstract model: and it's good that this is a problem from the start, because users then don't forget the final step: the code generation. 
- etc.</description>
		<content:encoded><![CDATA[<p>I think a UML alternative could be IP - Intentional Programming : <a href="http://en.wikipedia.org/wiki/Intentional_programming" rel="nofollow">http://en.wikipedia.org/wiki/Intentional_programming</a> </p>
<p>Here are some differences with UML:<br />
- IP standardizes the abstract level and authorizes as many view as one wants<br />
- IP enables to integrate graphical descriptions and DSL<br />
- with IP, the integration of the different views in relation with the abstract model is a problem from the start because there could be N views, but there is only one abstract model: and it&#8217;s good that this is a problem from the start, because users then don&#8217;t forget the final step: the code generation.<br />
- etc.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Emilio R. Priego</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1256</link>
		<dc:creator>Emilio R. Priego</dc:creator>
		<pubDate>Tue, 09 Feb 2010 23:53:18 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1256</guid>
		<description>Good post!. Essentially, I agree with your opinion about UML. I am using UML in my company (from Government sector in Spain) where it has been very useful for "sketching". However, MDA/MDE is not generally used for generate code in real life. Why?. Theory is very good, but in practice there are not clean PIM, PSM and CIM reference models to start with.
I think UML is very complex and people are using only the simple/easy part. UML theory is very hard to understand. In my opinion Model theory is a superset of UML Theory. Modeling is a new paradigm but UML is based in the Object Oriented (previously winner) paradigm. OMG tried to fit all pieces but it's confusing use objects to explain models. The right way is just the opposite.
(e.g. nobody use operations part in a class model and in contrast, UML models are not true object-oriented e.g. there is not a diagram expressing both structure and behaviour).
The other main problem is model terminology. There are a lot of papers about modeling, discussing concepts (model, metamodel, modeling languages, etc.). And UML concepts (instance of, package, merge, etc.) add more confusion in that discussion. It's not possible to apply MDE if you don't understand the modeling concepts as it's not possible to write good Java programs if you don't understand object oriented concepts.
I'm not hopeful about the future of UML. I think that the problem is that paradigm shift is doing without a widely accepted agreement about the modeling theory concepts.</description>
		<content:encoded><![CDATA[<p>Good post!. Essentially, I agree with your opinion about UML. I am using UML in my company (from Government sector in Spain) where it has been very useful for &#8220;sketching&#8221;. However, MDA/MDE is not generally used for generate code in real life. Why?. Theory is very good, but in practice there are not clean PIM, PSM and CIM reference models to start with.<br />
I think UML is very complex and people are using only the simple/easy part. UML theory is very hard to understand. In my opinion Model theory is a superset of UML Theory. Modeling is a new paradigm but UML is based in the Object Oriented (previously winner) paradigm. OMG tried to fit all pieces but it&#8217;s confusing use objects to explain models. The right way is just the opposite.<br />
(e.g. nobody use operations part in a class model and in contrast, UML models are not true object-oriented e.g. there is not a diagram expressing both structure and behaviour).<br />
The other main problem is model terminology. There are a lot of papers about modeling, discussing concepts (model, metamodel, modeling languages, etc.). And UML concepts (instance of, package, merge, etc.) add more confusion in that discussion. It&#8217;s not possible to apply MDE if you don&#8217;t understand the modeling concepts as it&#8217;s not possible to write good Java programs if you don&#8217;t understand object oriented concepts.<br />
I&#8217;m not hopeful about the future of UML. I think that the problem is that paradigm shift is doing without a widely accepted agreement about the modeling theory concepts.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rafael.chaves</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1249</link>
		<dc:creator>rafael.chaves</dc:creator>
		<pubDate>Tue, 09 Feb 2010 07:28:48 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1249</guid>
		<description>@Rui: ABSE does sound promising, looking forward to seeing your work. Good luck!</description>
		<content:encoded><![CDATA[<p>@Rui: ABSE does sound promising, looking forward to seeing your work. Good luck!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rafael.chaves</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1248</link>
		<dc:creator>rafael.chaves</dc:creator>
		<pubDate>Tue, 09 Feb 2010 07:23:01 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1248</guid>
		<description>@Jilles:

"why do you need a modeling language to begin with and why does it need all those qualities?"

MDD allows developers to work at a more proper (higher) level of abstraction through a better separation of domain concerns from technological concerns.

"Who is the customer for your models and does he/she agree with the amount of resources you spend on creating them?"

I and my peer developers are the consumers of the models, just as with source code. The customer itself does not care how I build software, but does care if quality is more consistent, or if time to delivery is more predictable, or if takes less time for a new hire to become an effective contributor, or if it is easier to enhance the software to adapt to changes in the problem domain or technological requirements.

"After all, models just sit there and they are not executable code representing actual business value."

My fault for not making it clearer from the beginning. My sole interest in UML is for creating executable models (MDD). Executable models don't sit there. They are the real deal.

"For me the answer is, I don’t need a modeling language and I don’t really need anything beyond a whiteboard in terms of standardization, portability and what not. (...) If we have time and if it doesn’t eat too much into Friday afternoon beers."

Totally agree if we are talking about models for documentation. I can't care less. Totally disagree if we are talking about model-driven development, with executable models (which *is* indeed what I was talking about in this post). 

"Agile and UML don’t go together unless you are faking either the modeling bit or the agile bit. (...) Tell tale signs that you are faking it: you have uml diagrams, each sprint is organized like a mini waterfall, you don’t have working code at the end of a sprint."

Again, if talking about UML as communication/documentation notation, true, but not if talking about UML as programming language. See an old post on "&lt;a href="http://abstratt.com/blog/2007/05/12/uml-modes-and-tools/" rel="nofollow"&gt;UML modes&lt;/a&gt;".

"MDA may seem like a good idea. However, you have to realize that with MDA you are just redefining what is your programming language."

That is a fine perspective, but what is wrong with raising the level of abstraction of my 'programming language'? 

"So, you are merely programming in a different language (i.e. UML) and no longer modeling but coding. UML is a modeling language, it is not a programming language."

Java, Ruby, C/C++, Smalltalk are just different 3G GPLs. There is a clear difference in level of abstraction between C and 8086 assembly. Same thing between UML and Java or Ruby. Re: modeling vs. programming, that is really relative. One can say a C source file is a model for an executable file, or that a UML model is the source while the generated Java code is object code. See "&lt;a href="http://abstratt.com/blog/2009/05/03/on-code-being-model/" rel="nofollow"&gt;On code being model&lt;/a&gt;".

Re: UML capability as a 'programming' language, I think &lt;a href="http://abstratt.com/blog/2008/11/02/what-can-uml-do-for-you/" rel="nofollow"&gt;it is powerful enough&lt;/a&gt; for what we need, and that is why I refuse to accept anything more 'powerful' (because that leads to over-specification).

"If you want to do MDA, you are probably better off with a domain specific language on top of a well defined framework."

Why should I commit to a specific implementation technology when I have no intent to make use of it? Why should I lose my investment if I decide to target another implementation technology? Why should I choose Ruby for an accounting system, when Ruby's technical capabilities have no bearing in my understanding of how to implement an accounting system? Why not use a pure, highly abstract language that forces me avoid adding more detail than necessary, instead of a full-fledged GPL that is bound to impose its technical idiosyncrasies?

"You will end up with less code to maintain, which is good."

Not sure how MDD leads to more code. For me, MDD is the ultimate refactoring technology.

"This in a nutshell is why Ruby, Ruby on Rails and the dozen or so similar languages and frameworks are so popular lately. These solutions are ideal for quickly implementing frameworks and then co-evolving the framework with the scripting code that uses it. Much more light weight, much more easy to fit in an agile work style."

Ignoring the fact that they have a more limited purpose, Ruby on Rails and Grails share much of the MDD mindset, using a convention-based programming model on top of GPLs, instead of a true modeling language. 

As per MDA being a dirty word, I am working towards &lt;a href="http://abstratt.com/blog/2010/02/06/myths-that-give-model-driven-development-a-bad-name/" rel="nofollow"&gt;cleaning its name&lt;/a&gt;. ;)

I apologize for dumping a bunch of links to older posts on you, just trying to make my point of view more clear without repeating myself too much.

Cheers,

Rafael</description>
		<content:encoded><![CDATA[<p>@Jilles:</p>
<p>&#8220;why do you need a modeling language to begin with and why does it need all those qualities?&#8221;</p>
<p>MDD allows developers to work at a more proper (higher) level of abstraction through a better separation of domain concerns from technological concerns.</p>
<p>&#8220;Who is the customer for your models and does he/she agree with the amount of resources you spend on creating them?&#8221;</p>
<p>I and my peer developers are the consumers of the models, just as with source code. The customer itself does not care how I build software, but does care if quality is more consistent, or if time to delivery is more predictable, or if takes less time for a new hire to become an effective contributor, or if it is easier to enhance the software to adapt to changes in the problem domain or technological requirements.</p>
<p>&#8220;After all, models just sit there and they are not executable code representing actual business value.&#8221;</p>
<p>My fault for not making it clearer from the beginning. My sole interest in UML is for creating executable models (MDD). Executable models don&#8217;t sit there. They are the real deal.</p>
<p>&#8220;For me the answer is, I don’t need a modeling language and I don’t really need anything beyond a whiteboard in terms of standardization, portability and what not. (&#8230;) If we have time and if it doesn’t eat too much into Friday afternoon beers.&#8221;</p>
<p>Totally agree if we are talking about models for documentation. I can&#8217;t care less. Totally disagree if we are talking about model-driven development, with executable models (which *is* indeed what I was talking about in this post). </p>
<p>&#8220;Agile and UML don’t go together unless you are faking either the modeling bit or the agile bit. (&#8230;) Tell tale signs that you are faking it: you have uml diagrams, each sprint is organized like a mini waterfall, you don’t have working code at the end of a sprint.&#8221;</p>
<p>Again, if talking about UML as communication/documentation notation, true, but not if talking about UML as programming language. See an old post on &#8220;<a href="http://abstratt.com/blog/2007/05/12/uml-modes-and-tools/" rel="nofollow">UML modes</a>&#8220;.</p>
<p>&#8220;MDA may seem like a good idea. However, you have to realize that with MDA you are just redefining what is your programming language.&#8221;</p>
<p>That is a fine perspective, but what is wrong with raising the level of abstraction of my &#8216;programming language&#8217;? </p>
<p>&#8220;So, you are merely programming in a different language (i.e. UML) and no longer modeling but coding. UML is a modeling language, it is not a programming language.&#8221;</p>
<p>Java, Ruby, C/C++, Smalltalk are just different 3G GPLs. There is a clear difference in level of abstraction between C and 8086 assembly. Same thing between UML and Java or Ruby. Re: modeling vs. programming, that is really relative. One can say a C source file is a model for an executable file, or that a UML model is the source while the generated Java code is object code. See &#8220;<a href="http://abstratt.com/blog/2009/05/03/on-code-being-model/" rel="nofollow">On code being model</a>&#8220;.</p>
<p>Re: UML capability as a &#8216;programming&#8217; language, I think <a href="http://abstratt.com/blog/2008/11/02/what-can-uml-do-for-you/" rel="nofollow">it is powerful enough</a> for what we need, and that is why I refuse to accept anything more &#8216;powerful&#8217; (because that leads to over-specification).</p>
<p>&#8220;If you want to do MDA, you are probably better off with a domain specific language on top of a well defined framework.&#8221;</p>
<p>Why should I commit to a specific implementation technology when I have no intent to make use of it? Why should I lose my investment if I decide to target another implementation technology? Why should I choose Ruby for an accounting system, when Ruby&#8217;s technical capabilities have no bearing in my understanding of how to implement an accounting system? Why not use a pure, highly abstract language that forces me avoid adding more detail than necessary, instead of a full-fledged GPL that is bound to impose its technical idiosyncrasies?</p>
<p>&#8220;You will end up with less code to maintain, which is good.&#8221;</p>
<p>Not sure how MDD leads to more code. For me, MDD is the ultimate refactoring technology.</p>
<p>&#8220;This in a nutshell is why Ruby, Ruby on Rails and the dozen or so similar languages and frameworks are so popular lately. These solutions are ideal for quickly implementing frameworks and then co-evolving the framework with the scripting code that uses it. Much more light weight, much more easy to fit in an agile work style.&#8221;</p>
<p>Ignoring the fact that they have a more limited purpose, Ruby on Rails and Grails share much of the MDD mindset, using a convention-based programming model on top of GPLs, instead of a true modeling language. </p>
<p>As per MDA being a dirty word, I am working towards <a href="http://abstratt.com/blog/2010/02/06/myths-that-give-model-driven-development-a-bad-name/" rel="nofollow">cleaning its name</a>. <img src='http://abstratt.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>I apologize for dumping a bunch of links to older posts on you, just trying to make my point of view more clear without repeating myself too much.</p>
<p>Cheers,</p>
<p>Rafael</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rui Curado</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1245</link>
		<dc:creator>Rui Curado</dc:creator>
		<pubDate>Mon, 08 Feb 2010 23:49:07 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1245</guid>
		<description>I am working on a MDD methodology aiming to replace/displace UML/MDA/EMF/others. There's a lot of ambition here, of course!... So, let's see how ABSE ranks in your language-to-kill-UML checklist:

* it must be general purpose, not tailored to a specific architecture or style of software

Check

* it must not be tailored to an implementation language

Check

* it must be based on or compatible with the object paradigm

Check

* it must not be limited to one of the dominant aspects of software (state, structure, behavior)

Check

* it must be focused on executability/code generation (and thus suitable for MDD) as opposed to documentation/communication

Check

* it must be modular, and user extensions should be 1st class citizens

Check

* its specification should follow an open process

Check. Although I have to make a living out of it, I'm trying to keep ABSE as open as possible.

* it must not be owned/controlled by a single company

If it's open, then there's no "vendor lock-in". But everything not yet clear at this point. Half-check!

* it must not require royalties for adoption/implementation

Check

Score : 8.5/9
So, ABSE is looking good so far per your requirements...</description>
		<content:encoded><![CDATA[<p>I am working on a MDD methodology aiming to replace/displace UML/MDA/EMF/others. There&#8217;s a lot of ambition here, of course!&#8230; So, let&#8217;s see how ABSE ranks in your language-to-kill-UML checklist:</p>
<p>* it must be general purpose, not tailored to a specific architecture or style of software</p>
<p>Check</p>
<p>* it must not be tailored to an implementation language</p>
<p>Check</p>
<p>* it must be based on or compatible with the object paradigm</p>
<p>Check</p>
<p>* it must not be limited to one of the dominant aspects of software (state, structure, behavior)</p>
<p>Check</p>
<p>* it must be focused on executability/code generation (and thus suitable for MDD) as opposed to documentation/communication</p>
<p>Check</p>
<p>* it must be modular, and user extensions should be 1st class citizens</p>
<p>Check</p>
<p>* its specification should follow an open process</p>
<p>Check. Although I have to make a living out of it, I&#8217;m trying to keep ABSE as open as possible.</p>
<p>* it must not be owned/controlled by a single company</p>
<p>If it&#8217;s open, then there&#8217;s no &#8220;vendor lock-in&#8221;. But everything not yet clear at this point. Half-check!</p>
<p>* it must not require royalties for adoption/implementation</p>
<p>Check</p>
<p>Score : 8.5/9<br />
So, ABSE is looking good so far per your requirements&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vlad Varnica</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1244</link>
		<dc:creator>Vlad Varnica</dc:creator>
		<pubDate>Mon, 08 Feb 2010 22:30:56 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1244</guid>
		<description>I agree with Jilles that MDA has failed in agile development till now but it is not because we failed at the first attempt that you should not try again. It remember my first love experience which was really very mediocre but after many year of experience it is totally different today :-) Sorry for this language but this is my true feeling reading your post !!
Except my today's joke I would say that for me MDA is not agile but UML could be agile. I am today deeply chocked by UML users just trying quickly to create few views and don't even use 1% of the power of UML. A minimum investment is a requirement and if you don't want to take this time then it is better not to do any UML. In the last 12 months I have seen many modeling projects and it was really very very poor.
My question is: Is it MDD or an education problem concerning the adoption of MDD in an agile project ?</description>
		<content:encoded><![CDATA[<p>I agree with Jilles that MDA has failed in agile development till now but it is not because we failed at the first attempt that you should not try again. It remember my first love experience which was really very mediocre but after many year of experience it is totally different today <img src='http://abstratt.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> Sorry for this language but this is my true feeling reading your post !!<br />
Except my today&#8217;s joke I would say that for me MDA is not agile but UML could be agile. I am today deeply chocked by UML users just trying quickly to create few views and don&#8217;t even use 1% of the power of UML. A minimum investment is a requirement and if you don&#8217;t want to take this time then it is better not to do any UML. In the last 12 months I have seen many modeling projects and it was really very very poor.<br />
My question is: Is it MDD or an education problem concerning the adoption of MDD in an agile project ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rafael.chaves</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1241</link>
		<dc:creator>rafael.chaves</dc:creator>
		<pubDate>Mon, 08 Feb 2010 19:28:59 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1241</guid>
		<description>Thanks for your comment, Jilles. Yeah, I realized later that I didn't state clearly (or otherwise) the only reason I care about UML: it is as a general purpose modeling language for MDD.

While I read your comment with much interest, I fundamentally disagree with much of what you said about MDD being coding, not modeling, that UML is not suitable as a MDD modeling language, that agile and UML don't go together, or that DSLs are the only way to go. I hope to have time later today to write a more elaborate response. 

Cheers.</description>
		<content:encoded><![CDATA[<p>Thanks for your comment, Jilles. Yeah, I realized later that I didn&#8217;t state clearly (or otherwise) the only reason I care about UML: it is as a general purpose modeling language for MDD.</p>
<p>While I read your comment with much interest, I fundamentally disagree with much of what you said about MDD being coding, not modeling, that UML is not suitable as a MDD modeling language, that agile and UML don&#8217;t go together, or that DSLs are the only way to go. I hope to have time later today to write a more elaborate response. </p>
<p>Cheers.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jilles van Gurp</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1240</link>
		<dc:creator>Jilles van Gurp</dc:creator>
		<pubDate>Mon, 08 Feb 2010 19:12:56 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1240</guid>
		<description>Maybe you're asking the wrong question: why do you need a modeling language to begin with and why does it need all those qualities? Who is the customer for your models and does he/she agree with the amount of resources you spend on creating them? After all, models just sit there and they are not executable code representing actual business value.

For me the answer is, I don't need a modeling language and I don't really need anything beyond a whiteboard in terms of standardization, portability and what not. Draw and forget is my motto. If someone insists, photos get taken with my phone camera (though in my experience these photos are archived and never looked at). That's it. I have some tools available if somenone needs a powerpoint friendly version. Though presenting hand drawn images is kind of cool in some places nowadays. I almost never use these tools because frankly nobody that matters gives a shit about UML diagrams where I work. At best uml diagrams are a checkbox in the documentation requirements list, a i.e. a low priority diagram in an artifact that we occasionally spit shine. If we have time and if it doesn't eat too much into Friday afternoon beers.

Agile and UML don't go together unless you are faking either the modeling bit or the agile bit. I've seen a lot of people faking both. Seriously, there is no modeling phase in an iterative &#38; agile project. There's iterative development of all the development artifacts (requirements, designs, code, tests, documentation). Iterative meaning working code at the end of each sprint (2-3 weeks). If you are wasting most of your sprint on modeling you are not delivering business value. So if you spent a lot of time modeling in a project either your models never change, i.e. you are doing waterfall, not agile, or you spend a shitload of time revising your models every sprint, meaning that you are wasting a lot of time better spend on something that will actually last, i.e. code. Tell tale signs that you are faking it: you have uml diagrams, each sprint is organized like a mini waterfall, you don't have working code at the end of a sprint. 

MDA may seem like a good idea. However, you have to realize that with MDA you are just redefining what is your programming language. So, you are merely programming in a different language (i.e. UML) and no longer modeling but coding. UML is a modeling language, it is not a programming language. Some would even argue it is suitable for neither purpose. If you want to do MDA, you are probably better off with a domain specific language on top of a well defined framework. You will end up with less code to maintain, which is good. This in a nutshell is why Ruby, Ruby on Rails and the dozen or so similar languages and frameworks are so popular lately. These solutions are ideal for quickly implementing frameworks and then co-evolving the framework with the scripting code that uses it. Much more light weight, much more easy to fit in an agile work style.

In most companies I have had the pleasure of working with, visiting, or otherwise had to deal with, MDA was a dirty word and the available rational rose licenses were exclusively used for writing documentation and creating pretty pictures for power point slides (despite the often equally nobel and misguided reasons for purchasing said licenses). Generally the more primitive the programming language used, the more need there is for documenting the decades of crap in the version control system and the more time and resources people seem to spend on documenting the crappy code they have. I know of several embedded software development companies where multiple attempts of introducing rational rose silver bullet type solutions have failed utterly and completely. On the other hand. introducing TDD, agile and other more sensible practices is the reason why some of these companies are still around.</description>
		<content:encoded><![CDATA[<p>Maybe you&#8217;re asking the wrong question: why do you need a modeling language to begin with and why does it need all those qualities? Who is the customer for your models and does he/she agree with the amount of resources you spend on creating them? After all, models just sit there and they are not executable code representing actual business value.</p>
<p>For me the answer is, I don&#8217;t need a modeling language and I don&#8217;t really need anything beyond a whiteboard in terms of standardization, portability and what not. Draw and forget is my motto. If someone insists, photos get taken with my phone camera (though in my experience these photos are archived and never looked at). That&#8217;s it. I have some tools available if somenone needs a powerpoint friendly version. Though presenting hand drawn images is kind of cool in some places nowadays. I almost never use these tools because frankly nobody that matters gives a shit about UML diagrams where I work. At best uml diagrams are a checkbox in the documentation requirements list, a i.e. a low priority diagram in an artifact that we occasionally spit shine. If we have time and if it doesn&#8217;t eat too much into Friday afternoon beers.</p>
<p>Agile and UML don&#8217;t go together unless you are faking either the modeling bit or the agile bit. I&#8217;ve seen a lot of people faking both. Seriously, there is no modeling phase in an iterative &amp; agile project. There&#8217;s iterative development of all the development artifacts (requirements, designs, code, tests, documentation). Iterative meaning working code at the end of each sprint (2-3 weeks). If you are wasting most of your sprint on modeling you are not delivering business value. So if you spent a lot of time modeling in a project either your models never change, i.e. you are doing waterfall, not agile, or you spend a shitload of time revising your models every sprint, meaning that you are wasting a lot of time better spend on something that will actually last, i.e. code. Tell tale signs that you are faking it: you have uml diagrams, each sprint is organized like a mini waterfall, you don&#8217;t have working code at the end of a sprint. </p>
<p>MDA may seem like a good idea. However, you have to realize that with MDA you are just redefining what is your programming language. So, you are merely programming in a different language (i.e. UML) and no longer modeling but coding. UML is a modeling language, it is not a programming language. Some would even argue it is suitable for neither purpose. If you want to do MDA, you are probably better off with a domain specific language on top of a well defined framework. You will end up with less code to maintain, which is good. This in a nutshell is why Ruby, Ruby on Rails and the dozen or so similar languages and frameworks are so popular lately. These solutions are ideal for quickly implementing frameworks and then co-evolving the framework with the scripting code that uses it. Much more light weight, much more easy to fit in an agile work style.</p>
<p>In most companies I have had the pleasure of working with, visiting, or otherwise had to deal with, MDA was a dirty word and the available rational rose licenses were exclusively used for writing documentation and creating pretty pictures for power point slides (despite the often equally nobel and misguided reasons for purchasing said licenses). Generally the more primitive the programming language used, the more need there is for documenting the decades of crap in the version control system and the more time and resources people seem to spend on documenting the crappy code they have. I know of several embedded software development companies where multiple attempts of introducing rational rose silver bullet type solutions have failed utterly and completely. On the other hand. introducing TDD, agile and other more sensible practices is the reason why some of these companies are still around.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vlad Varnica</title>
		<link>http://abstratt.com/blog/2010/02/08/uml-may-suck-but-is-there-anything-better/#comment-1239</link>
		<dc:creator>Vlad Varnica</dc:creator>
		<pubDate>Mon, 08 Feb 2010 15:57:20 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=117#comment-1239</guid>
		<description>UML is just perfect and is a return of experience of over 1 millions users around the world.
The current UML problem is related to model transformation because no native integration with Java and metamodel.
In France we call it "Usine à Gaz" and my personal English translation is EMF software factory :-)


Vlad,</description>
		<content:encoded><![CDATA[<p>UML is just perfect and is a return of experience of over 1 millions users around the world.<br />
The current UML problem is related to model transformation because no native integration with Java and metamodel.<br />
In France we call it &#8220;Usine à Gaz&#8221; and my personal English translation is EMF software factory <img src='http://abstratt.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Vlad,</p>
]]></content:encoded>
	</item>
</channel>
</rss>
