<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Metalevel &#187; UML</title>
	<atom:link href="http://pjmolina.com/metalevel/tag/uml/feed/" rel="self" type="application/rss+xml" />
	<link>http://pjmolina.com/metalevel</link>
	<description>Abstraction based levitation</description>
	<lastBuildDate>Tue, 17 Jan 2012 20:22:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Using the 20% of UML</title>
		<link>http://pjmolina.com/metalevel/2009/09/using-the-20-percent-of-uml/</link>
		<comments>http://pjmolina.com/metalevel/2009/09/using-the-20-percent-of-uml/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 22:21:35 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[DSL]]></category>
		<category><![CDATA[MDD]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=263</guid>
		<description><![CDATA[Via Jordi Cabot I found a quite interesting comment made by one of the &#8220;Three Amigos&#8221; about UML usage in his blog-post titled Taking the temperature of UML: &#8220;Still, UML has become complex and clumsy. For 80% of all software only 20% of UML is needed. However, it is not easy to find the subset of [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="UML Logo" src="http://www.vico.org/media/uml_logo_omgSolsol.jpg" alt="" width="75" height="91" />Via <a title="Jordi Cabot about the quote of Ivar Jacobson" href="http://modeling-languages.com/blog/content/ivar-jacobson-reflecting-evolution-uml" target="_blank">Jordi Cabot</a> I found a quite interesting comment made by one of the <em><a title="UML and the Three Amigos" href="http://en.wikipedia.org/wiki/Unified_Modeling_Language" target="_blank">&#8220;T</a></em><em><a title="UML and the Three Amigos" href="http://en.wikipedia.org/wiki/Unified_Modeling_Language" target="_blank">hree Amigos&#8221;</a></em> about UML usage in his blog-post titled <a title="Taking the temperature of UML" href="http://ivarblog.com/2009/06/30/taking-the-temperature-of-uml/" target="_blank">Taking the temperature of UML</a>:</p>
<blockquote><p><em>&#8220;Still, UML has become complex and clumsy. For 80% of all software only 20% of UML is needed. However, it is not easy to find the subset of UML which we would call the “Essential” UML. We must make UML smarter to use.&#8221;</em></p>
<p><a title="Ivar Jacobson blog" href="http://ivarblog.com/" target="_blank">Ivar Jacobson</a></p></blockquote>
<p>The full post is a good review about the origins, the growth, and the current status of UML made by one of its three fathers. Ivar also argues about the current size of UML (really fat nowadays) and the necessity to put it on diet to achieve a kind of &#8220;Essential UML&#8221;. I like the idea of essential UML. It makes worthy to read it.</p>
<p>On the other hand, I want to stress the quote of Ivar Jacobson:</p>
<blockquote><p><em>&#8220;For 80% of all software only 20% of UML is needed.&#8221;</em></p></blockquote>
<p>I agree. My own quick usage stats of UML models when creating business software could be the following ones (please share your experience):</p>
<p><span id="more-263"></span></p>
<ul>
<li>Class models: 100% (a must: always, to define the static structure and derive DB support if needed)</li>
<li>Component diagrams, Sequence diagrams, Package diagrams: 10% (when the complexity of the design needed)</li>
<li>Deployment diagrams 10% (to describe non trivial deployments)</li>
<li>Statecharts 5% (when needed)</li>
<li>Object diagrams 1% (just to explain complex configuration of error conditions)</li>
<li>Use Cases diagrams 20% (Informal usage only: sorry it&#8217;s me, the semantics of Use Cases never were clear to me.)</li>
</ul>
<p>When developing business software, my problem is not with the part that can be expressed using a 20% of UML. On the contrary, the key issue is how to model and reuse the knowledge about the part that can not be <em>naturally </em>expressed using UML.</p>
<p>With the adjective <em>naturally</em>, I want to express the suitability of a (visual or not) language to describe a problem in a given context. I will provide some samples about that in a few lines.</p>
<ul>
<li>A great percent of current software is created for supporting day to day business operations in companies: let&#8217;s call it <strong>business software</strong>. And this software is developed using Java, C#, PHP, (choose you favorite language), etc. using more or less standardized frameworks usually providing ORM, IoC and MVC capabilities. I will skip this time games, OS, drivers and real time apart for the discussion (different domains).</li>
<li>In this kind of software, the user interface is about the 50% of the development effort accordingly to <a title="Brad A. Myers" href="http://www.cs.cmu.edu/~bam/" target="_blank">Brad A. Myers</a> survey <a title="Myers92's survey on User Interfaces" href="http://historical.ncstrl.org/tr/fulltext/tr/cmucs/CMU-CS-92-113.txt" target="_blank">[Myers92]</a> (and corroborated by my experience).</li>
</ul>
<p>Therefore, to cite a few other domains not (well?) addressed by UML:</p>
<ul>
<li>What part of UML can help you to <em>naturally</em> describe your <strong>User Interfaces</strong>? There is no specific support in UML for describing UIs as first class citizens.
<ul>
<li>Task models?</li>
<li>Navigational diagrams?</li>
<li>Presentation diagrams? 2D layout relationships and aesthetics?</li>
<li>Presentation logic?</li>
</ul>
</li>
<li>How to express in UML high level <strong>algorithms </strong>for describing the key business logic? Visual languages do not scale well, and text languages (like pseudo-code) are more convenient.</li>
<li>What type of UML diagram can I use to describe a security model for my app?</li>
</ul>
<p>In this context, my statement could be:</p>
<blockquote><p><em>The 20% of UML is useful to describe the 35% of the design. (For the restating 65%, other models are still needed, if possible!)</em></p></blockquote>
<p>Of course, lots of people will argue (and some people guys tried this before): you have MDA, you have the possibility of creating a profile. You can use stereotypes to derive from a UML model of your choice, change the semantic, change the symbols and change the rules and you got it. But the result is not as good as you can achieve with a custom DSL: a hyper-tuned Class Diagram is not good enough to describe a good UI. And it is not good enough (not for me at least) because:</p>
<ul>
<li>The concepts stereotyped could have a different semantic. A class is a class, but after you apply a stereotype, now it can represent an HTML page, or a windows control (it depends). This causes confusion in users.</li>
<li>The restrictions of the base (visual) language are inherited and its difficult to prune or extend metamodels in the way you need it if the target ones is really different with respect to the base metamodel.</li>
<li>Model editors matters: a class diagram is not explored and edited in the same way as you work with a navigation diagrams, for example. Scalability of the model matters when you start to have a non trivial example.</li>
</ul>
<p>A 35% percent is not too much. And this explain why here we are: having some of us doing MDD, using forbidden <em>MDA-outlaw</em> custom DSLs to describe service description, workflows,  user interfaces, concurrency, and some other domains that could be in the extreme be modeled, but not <em>in a natural way,</em> with UML today.</p>
<p>Of course, UML has provided a great utility providing to developers and software architects as a starting point for a standardized common language for designing software. For this point, it makes a great contribution. But also, is necessary to say that more frequently that recognized, you need something else that is not included in UML (not yet).</p>
<p>In this sense, I hope to see <em>de-facto</em> standardized DSL/languages/diagrams for other software domains included in UML in the next releases.</p>
<p>To be continued&#8230; &#8230;UML 3.0 is coming!</p>
<p>BTW, till completing UML, long life to custom DSLs! }:-)</p>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2009/09/using-the-20-percent-of-uml/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>NClass 2.0 released!</title>
		<link>http://pjmolina.com/metalevel/2009/07/nclass-2-0-irelease/</link>
		<comments>http://pjmolina.com/metalevel/2009/07/nclass-2-0-irelease/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 22:20:50 +0000</pubDate>
		<dc:creator>Pedro J. Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Code Generation]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[class diagram]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[nclass]]></category>
		<category><![CDATA[skeleton generation]]></category>

		<guid isPermaLink="false">http://pjmolina.com/metalevel/?p=229</guid>
		<description><![CDATA[NClass is a elegant UML class diagram tool oriented to code modeling for the C# &#38; Java languages. It is specially well suited to create your O-O design class model (and think and visualize the full set in terms of Design Patterns) and generate a skeleton for you in C# or Java. On the other [...]]]></description>
			<content:encoded><![CDATA[<p><strong><a title="NClass" href="http://nclass.sourceforge.net/index.html" target="_blank">NClass</a></strong> is a elegant <strong>UML class diagram tool</strong> oriented to code modeling for the C# &amp; Java languages.</p>
<ul>
<li>It is specially well suited to create your O-O design class model (and think and visualize the full set in terms of <a title="Design Patterns [Gamma et al]" href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612" target="_blank">Design Patterns</a>) and generate a skeleton for you in C# or Java.</li>
<li>On the other hand, if you need to document <em>a-posteriori</em> (I hope you don&#8217;t do it frequently, by the way), NClass also incorporates a plug-in developed by Malte Ried to reverse engineering a .NET assembly using reflection to extract the classes and draw the corresponding design class model.</li>
</ul>
<p><span id="more-229"></span></p>
<p>In this second mayor version the key new features are:</p>
<ul>
<li>Project-model hierarchy for multiple diagrams</li>
<li>Name, role and multiplicity labels on relationships</li>
<li>Navigation facilities (Model Explorer, Diagram Navigator)</li>
<li>Inline class editor</li>
<li>Visual enhancements (gradient modes,  ClearType, etc.)</li>
<li>Generation of solution files and <em>NotImplementedException</em> as default implementation</li>
</ul>
<p>NClass is coded in C# by my colleague <a title="Balázs Tihanyi on ohloh.net" href="http://www.ohloh.net/accounts/btihanyi" target="_blank">Balázs Tihanyi</a> (based on Budapest) and it&#8217;s released under the GNU Licence.</p>
<p>In version 2.0, NClass supports different languages like Hungarian, English, Russian, Brazilian Portuguese, German, Chinese &amp; Spanish. If you find a bug in the Spanish translation do not complaint  to Balázs. <em>In this case do it directly to me.</em> }:)</p>
<p><a title="Dowloand page for NClass" href="http://nclass.sourceforge.net/downloads.html" target="_blank">Try it</a> &amp; enjoy!</p>
<div class="wp-caption alignnone" style="width: 508px"><a href="http://nclass.sourceforge.net/screenshots.html"><img title="NClass User Interface" src="http://nclass.sourceforge.net/images/screenshots/classic.png" alt="NClass User Interface" width="498" height="396" /></a><p class="wp-caption-text">NClass User Interface</p></div>
]]></content:encoded>
			<wfw:commentRss>http://pjmolina.com/metalevel/2009/07/nclass-2-0-irelease/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

