<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: On code being model &#8211; maybe not what you think</title>
	<atom:link href="http://abstratt.com/blog/2009/05/03/on-code-being-model/feed/" rel="self" type="application/rss+xml" />
	<link>http://abstratt.com/blog/2009/05/03/on-code-being-model/</link>
	<description>We have one obsession: stopping people from writing so much code</description>
	<lastBuildDate>Thu, 12 Jan 2012 07:22:21 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
	<item>
		<title>By: Myths that give model-driven development a bad name &#124; abstratt: news from the front</title>
		<link>http://abstratt.com/blog/2009/05/03/on-code-being-model/comment-page-1/#comment-1211</link>
		<dc:creator>Myths that give model-driven development a bad name &#124; abstratt: news from the front</dc:creator>
		<pubDate>Sat, 06 Feb 2010 07:58:41 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=153#comment-1211</guid>
		<description>[...] the codebase is manually maintained (and thus inherently inconsistent/ill-formed). More on this on this older post, pay attention to the comments as [...]</description>
		<content:encoded><![CDATA[<p>[...] the codebase is manually maintained (and thus inherently inconsistent/ill-formed). More on this on this older post, pay attention to the comments as [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rafael.chaves</title>
		<link>http://abstratt.com/blog/2009/05/03/on-code-being-model/comment-page-1/#comment-1009</link>
		<dc:creator>rafael.chaves</dc:creator>
		<pubDate>Sun, 19 Jul 2009 18:14:47 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=153#comment-1009</guid>
		<description>Marc, that analogy is quite interesting, thanks a lot. I feel like writing a post about that...</description>
		<content:encoded><![CDATA[<p>Marc, that analogy is quite interesting, thanks a lot. I feel like writing a post about that&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vladimir</title>
		<link>http://abstratt.com/blog/2009/05/03/on-code-being-model/comment-page-1/#comment-841</link>
		<dc:creator>Vladimir</dc:creator>
		<pubDate>Mon, 01 Jun 2009 21:06:10 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=153#comment-841</guid>
		<description>&quot;code is model&quot; is really good mantra :) 
Just consider all app code, like: java code, java annotations, configs, DDL, SQL, ...
All of them are aspects of software. It should be enough to restore initial model. Different aspects can be expressed in the same model using different views of a model or by annotating model with appropriate profile (or equally DSL) definitions. If model can&#039;t be restored from generated artifacts then it seems like it contains superfluous information.

For example I have UML domain model. It contains annotations for: DB schema (tables, columns), ORM code (Hibernate/JPA/Transactions), Web pages (UI artifacts customization). It can be used for generation of a Java code, DB schema, services code, Web pages. This code then can be reverse engineered back to the model (at least at DB/ORM level since its based on a strictly defined specifications)</description>
		<content:encoded><![CDATA[<p>&#8220;code is model&#8221; is really good mantra <img src='http://abstratt.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Just consider all app code, like: java code, java annotations, configs, DDL, SQL, &#8230;<br />
All of them are aspects of software. It should be enough to restore initial model. Different aspects can be expressed in the same model using different views of a model or by annotating model with appropriate profile (or equally DSL) definitions. If model can&#8217;t be restored from generated artifacts then it seems like it contains superfluous information.</p>
<p>For example I have UML domain model. It contains annotations for: DB schema (tables, columns), ORM code (Hibernate/JPA/Transactions), Web pages (UI artifacts customization). It can be used for generation of a Java code, DB schema, services code, Web pages. This code then can be reverse engineered back to the model (at least at DB/ORM level since its based on a strictly defined specifications)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marc</title>
		<link>http://abstratt.com/blog/2009/05/03/on-code-being-model/comment-page-1/#comment-833</link>
		<dc:creator>Marc</dc:creator>
		<pubDate>Fri, 22 May 2009 18:29:17 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=153#comment-833</guid>
		<description>&quot;Round-trip engineering goes against the very essence of model-driven development, as source code often loses important information that can only exist in higher level models.&quot;

An interesting statement; one could compare http://en.wikipedia.org/wiki/Central_dogma_of_molecular_biology .

The idea of RTE seems to be that models can be built inductively by looking at existing solutions as implemented, warts and all. The idea of code as a mere instance of an abstract model - another kind of view - is appealing, but it leads to a kind of Platonic ideal of the model. I want my models to be living things that benefit from the successes and failures of implementation - shaped by the metainformation of interaction with the real world. I do agree that one instance isn&#039;t enough to build a high-resolution model, but I&#039;m not sure that a lot can&#039;t be learned by examining many instances as part of the processes you&#039;re modelling.

You&#039;re entirely correct that that&#039;s not at all the same thing as equating model and code, of course.

Great point about the appropriate application of 3GLs btw.</description>
		<content:encoded><![CDATA[<p>&#8220;Round-trip engineering goes against the very essence of model-driven development, as source code often loses important information that can only exist in higher level models.&#8221;</p>
<p>An interesting statement; one could compare <a href="http://en.wikipedia.org/wiki/Central_dogma_of_molecular_biology" rel="nofollow">http://en.wikipedia.org/wiki/Central_dogma_of_molecular_biology</a> .</p>
<p>The idea of RTE seems to be that models can be built inductively by looking at existing solutions as implemented, warts and all. The idea of code as a mere instance of an abstract model &#8211; another kind of view &#8211; is appealing, but it leads to a kind of Platonic ideal of the model. I want my models to be living things that benefit from the successes and failures of implementation &#8211; shaped by the metainformation of interaction with the real world. I do agree that one instance isn&#8217;t enough to build a high-resolution model, but I&#8217;m not sure that a lot can&#8217;t be learned by examining many instances as part of the processes you&#8217;re modelling.</p>
<p>You&#8217;re entirely correct that that&#8217;s not at all the same thing as equating model and code, of course.</p>
<p>Great point about the appropriate application of 3GLs btw.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rodrigo Yoshima</title>
		<link>http://abstratt.com/blog/2009/05/03/on-code-being-model/comment-page-1/#comment-820</link>
		<dc:creator>Rodrigo Yoshima</dc:creator>
		<pubDate>Sat, 09 May 2009 05:12:57 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=153#comment-820</guid>
		<description>Jack Reeves said a long ago &quot;Your design is your code&quot;.

http://www.bleading-edge.com/Publications/C++Journal/Cpjour2.htm

Maybe this concept bring us &quot;code is model&quot;. I agree that higher levels of abstraction could help us, but also agree that not for every aspect of the system being developed.</description>
		<content:encoded><![CDATA[<p>Jack Reeves said a long ago &#8220;Your design is your code&#8221;.</p>
<p><a href="http://www.bleading-edge.com/Publications/C++Journal/Cpjour2.htm" rel="nofollow">http://www.bleading-edge.com/Publications/C++Journal/Cpjour2.htm</a></p>
<p>Maybe this concept bring us &#8220;code is model&#8221;. I agree that higher levels of abstraction could help us, but also agree that not for every aspect of the system being developed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ersin ER</title>
		<link>http://abstratt.com/blog/2009/05/03/on-code-being-model/comment-page-1/#comment-818</link>
		<dc:creator>Ersin ER</dc:creator>
		<pubDate>Tue, 05 May 2009 16:02:52 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=153#comment-818</guid>
		<description>Generally &quot;the code&quot; is being created by developers&#039; mental work (and the motivations, reasons stay in those heads). The more frameworks or such reusable artifacts are used the more &quot;model&quot; we get and the system starts making more sense as it represents more abstract things than machine code. A software system should be developed using languages and environment which can express it and drive its realization in the most abstract form possible. So that we can close the gap filled by developers mental work generally. This does not mean that we should go crazy with defining models to cover every aspect of systems but it&#039;s a matter of balance.

On the other hand a basic distinction between code and model for me is that latter is/should be a built in a more declarative manner than imperative.</description>
		<content:encoded><![CDATA[<p>Generally &#8220;the code&#8221; is being created by developers&#8217; mental work (and the motivations, reasons stay in those heads). The more frameworks or such reusable artifacts are used the more &#8220;model&#8221; we get and the system starts making more sense as it represents more abstract things than machine code. A software system should be developed using languages and environment which can express it and drive its realization in the most abstract form possible. So that we can close the gap filled by developers mental work generally. This does not mean that we should go crazy with defining models to cover every aspect of systems but it&#8217;s a matter of balance.</p>
<p>On the other hand a basic distinction between code and model for me is that latter is/should be a built in a more declarative manner than imperative.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ed Merks</title>
		<link>http://abstratt.com/blog/2009/05/03/on-code-being-model/comment-page-1/#comment-816</link>
		<dc:creator>Ed Merks</dc:creator>
		<pubDate>Mon, 04 May 2009 14:33:57 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=153#comment-816</guid>
		<description>This is a very interesting post.  I completely agree.</description>
		<content:encoded><![CDATA[<p>This is a very interesting post.  I completely agree.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rafael.chaves</title>
		<link>http://abstratt.com/blog/2009/05/03/on-code-being-model/comment-page-1/#comment-815</link>
		<dc:creator>rafael.chaves</dc:creator>
		<pubDate>Mon, 04 May 2009 07:33:42 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=153#comment-815</guid>
		<description>Thanks for your comment, Peter.

&lt;blockquote&gt;&lt;cite&gt;
I also think that the mantra “code is a model, too” does not help very much, because it makes people think that code and model are on the same level of abstraction. 
&lt;/cite&gt;&lt;/blockquote&gt;

I think what Harry really meant was that code at one level will be a model to a corresponding artifact in the next (lower) level.

&lt;blockquote&gt;&lt;cite&gt;
Of course, there are situations in which code and model are on the same level. Just think of traditional UML modeling (a class diagram is just a different view of the code)
&lt;/cite&gt;&lt;/blockquote&gt;

Well, even in the case of UML class diagrams, there is an increase in the level of abstraction. Think of things like associations (with shared/composite aggregation), multiplicities (with ordering/uniqueness), subsetting/redefinition of properties. None of those things can be represented in any of the OO languages I know of.</description>
		<content:encoded><![CDATA[<p>Thanks for your comment, Peter.</p>
<blockquote><p><cite><br />
I also think that the mantra “code is a model, too” does not help very much, because it makes people think that code and model are on the same level of abstraction.<br />
</cite></p></blockquote>
<p>I think what Harry really meant was that code at one level will be a model to a corresponding artifact in the next (lower) level.</p>
<blockquote><p><cite><br />
Of course, there are situations in which code and model are on the same level. Just think of traditional UML modeling (a class diagram is just a different view of the code)<br />
</cite></p></blockquote>
<p>Well, even in the case of UML class diagrams, there is an increase in the level of abstraction. Think of things like associations (with shared/composite aggregation), multiplicities (with ordering/uniqueness), subsetting/redefinition of properties. None of those things can be represented in any of the OO languages I know of.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Friese</title>
		<link>http://abstratt.com/blog/2009/05/03/on-code-being-model/comment-page-1/#comment-814</link>
		<dc:creator>Peter Friese</dc:creator>
		<pubDate>Mon, 04 May 2009 07:16:45 +0000</pubDate>
		<guid isPermaLink="false">http://abstratt.com/blog/?p=153#comment-814</guid>
		<description>Hi Rafael,

I agree with your opinion that you just cannot use round-trip engineering in MDSD, as computers (still) are not able to abstract. Model driven software development is a forward-only process for this very reason. Fortunately, most people understand this point as soon as you tell them. 

I also think that the mantra &quot;code is a model, too&quot; does not help very much, because it makes people think that code and model are on the same level of abstraction. Of course, there are situations in which code and model are on the same level. Just think of traditional UML modeling (a class diagram is just a different view of the code).

To me, modeling is a means to express concepts of the real world in a way that both a developer and a business person can understand it. It&#039;s really a meet-in-the-middle approach. Domain Specific Languages (DSLs) can help to achieve just that. I am not convinced that UML can deliver on this, which is why I usually use Xtext (http://www.xtext.org) to achieve this.</description>
		<content:encoded><![CDATA[<p>Hi Rafael,</p>
<p>I agree with your opinion that you just cannot use round-trip engineering in MDSD, as computers (still) are not able to abstract. Model driven software development is a forward-only process for this very reason. Fortunately, most people understand this point as soon as you tell them. </p>
<p>I also think that the mantra &#8220;code is a model, too&#8221; does not help very much, because it makes people think that code and model are on the same level of abstraction. Of course, there are situations in which code and model are on the same level. Just think of traditional UML modeling (a class diagram is just a different view of the code).</p>
<p>To me, modeling is a means to express concepts of the real world in a way that both a developer and a business person can understand it. It&#8217;s really a meet-in-the-middle approach. Domain Specific Languages (DSLs) can help to achieve just that. I am not convinced that UML can deliver on this, which is why I usually use Xtext (<a href="http://www.xtext.org" rel="nofollow">http://www.xtext.org</a>) to achieve this.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

