<?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: Back on Track (and the Software Factories Architect Forum 2006)</title>
	<atom:link href="http://www.agilesensei.com/blog/articles/2006/03/13/back-on-track-and-the-software-factories-architect-forum-2006/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agilesensei.com/blog/articles/2006/03/13/back-on-track-and-the-software-factories-architect-forum-2006/</link>
	<description>Personal and professional transformations in today&#039;s agile world</description>
	<lastBuildDate>Wed, 11 Jan 2012 14:49:08 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Claudio Perrone</title>
		<link>http://www.agilesensei.com/blog/articles/2006/03/13/back-on-track-and-the-software-factories-architect-forum-2006/comment-page-1/#comment-39</link>
		<dc:creator>Claudio Perrone</dc:creator>
		<pubDate>Tue, 28 Mar 2006 14:16:25 +0000</pubDate>
		<guid isPermaLink="false"></guid>
		<description>Emil, You said &quot;taking space on your blog&quot;…eheh...far from it. I really enjoyed these &quot;parallel monologues&quot; and I will definitely examine your point of view with great care; at the moment I just don’t see why, for example, I would use a text-based language to describe user interfaces while a specialized visual language would clearly do the job more efficiently. As I explained before, my point is to use the most efficient language for the job; however, i&#039;m struggling to understand when and why I can objectively argue that a visual language is better than a text based language. I&#039;ll &quot;give&quot; you one thing anyway, you arleady managed to get me to pick up and play with Ruby on Rails again this weekend :-)</description>
		<content:encoded><![CDATA[<p>Emil, You said &#8220;taking space on your blog&#8221;…eheh&#8230;far from it. I really enjoyed these &#8220;parallel monologues&#8221; and I will definitely examine your point of view with great care; at the moment I just don’t see why, for example, I would use a text-based language to describe user interfaces while a specialized visual language would clearly do the job more efficiently. As I explained before, my point is to use the most efficient language for the job; however, i&#8217;m struggling to understand when and why I can objectively argue that a visual language is better than a text based language. I&#8217;ll &#8220;give&#8221; you one thing anyway, you arleady managed to get me to pick up and play with Ruby on Rails again this weekend <img src='http://www.agilesensei.com/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Emil Marceta</title>
		<link>http://www.agilesensei.com/blog/articles/2006/03/13/back-on-track-and-the-software-factories-architect-forum-2006/comment-page-1/#comment-38</link>
		<dc:creator>Emil Marceta</dc:creator>
		<pubDate>Mon, 27 Mar 2006 02:43:25 +0000</pubDate>
		<guid isPermaLink="false"></guid>
		<description>Claudio,

Just a few clarifications, and I&#039;ll stop taking space on yor blog, I promise :)

Charles Simonyi is my &quot;neighbour&quot; (Vancouver, BC are my coordinates) so that must be the influence :)


&quot;While it&#039;s true that static languages don&#039;t have analogous capabilities, however, I fail to see why similar productivity gains couldn&#039;t be achieved with adequate frameworks, IDEs and tools..time will tell I guess.&quot;

I too agree with that, sorry for not being clearer. Statically typed languages such as C# and Java are perhaps not that flexible as dynamically typed and scripted languages, but I&#039;m not sure that this is the reason to take different direction then Lisp, Smalltalk or Ruby. See to put MDA tool, Visual DSL , DSM in the same sentence with any fo those is a joke in a sense :)
DSL in Ruby is written in Ruby (say Rails), Lisp macros can redefine the Lisp, and Smalltalk is similar.

This is why I&#039;m examining / suggesting just-in-time code generation as the alternative. Think about it as IDE refactoring on strong-strong steroids.

Then to define the DSL for C# application one uses C#, and similar for Java. And this is my basic point. I believe that this solution is then sound, elegant, concise, minimal and universal and that the external tools (MDA, Visual DSM etc) are suggestive and actually very messy. They create this divide and disconnect between the model and the code. I&#039;d rather see the language grow with metaprogramming capabilities instead of extracting that into some external model.

Then the language becomes an universal DSL tool that can tackle your beautiful statement :

&quot;which happens if the degree of variation in a product family is not completely known&quot;.


Saluti,
Emil</description>
		<content:encoded><![CDATA[<p>Claudio,</p>
<p>Just a few clarifications, and I&#8217;ll stop taking space on yor blog, I promise <img src='http://www.agilesensei.com/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Charles Simonyi is my &#8220;neighbour&#8221; (Vancouver, BC are my coordinates) so that must be the influence <img src='http://www.agilesensei.com/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&#8220;While it&#8217;s true that static languages don&#8217;t have analogous capabilities, however, I fail to see why similar productivity gains couldn&#8217;t be achieved with adequate frameworks, IDEs and tools..time will tell I guess.&#8221;</p>
<p>I too agree with that, sorry for not being clearer. Statically typed languages such as C# and Java are perhaps not that flexible as dynamically typed and scripted languages, but I&#8217;m not sure that this is the reason to take different direction then Lisp, Smalltalk or Ruby. See to put MDA tool, Visual DSL , DSM in the same sentence with any fo those is a joke in a sense <img src='http://www.agilesensei.com/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
DSL in Ruby is written in Ruby (say Rails), Lisp macros can redefine the Lisp, and Smalltalk is similar.</p>
<p>This is why I&#8217;m examining / suggesting just-in-time code generation as the alternative. Think about it as IDE refactoring on strong-strong steroids.</p>
<p>Then to define the DSL for C# application one uses C#, and similar for Java. And this is my basic point. I believe that this solution is then sound, elegant, concise, minimal and universal and that the external tools (MDA, Visual DSM etc) are suggestive and actually very messy. They create this divide and disconnect between the model and the code. I&#8217;d rather see the language grow with metaprogramming capabilities instead of extracting that into some external model.</p>
<p>Then the language becomes an universal DSL tool that can tackle your beautiful statement :</p>
<p>&#8220;which happens if the degree of variation in a product family is not completely known&#8221;.</p>
<p>Saluti,<br />
Emil</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Claudio Perrone</title>
		<link>http://www.agilesensei.com/blog/articles/2006/03/13/back-on-track-and-the-software-factories-architect-forum-2006/comment-page-1/#comment-37</link>
		<dc:creator>Claudio Perrone</dc:creator>
		<pubDate>Sat, 25 Mar 2006 22:28:25 +0000</pubDate>
		<guid isPermaLink="false"></guid>
		<description>Emil,
Thanks for the links.
You touched so many concepts and now I don&#039;t know where to begin!
Let&#039;s see:

RoR does a lot for you behind the scenes and you are right, it is reasonable to give a lot of credit to its reflective metasystem based on Ruby.
While it&#039;s true that static languages don&#039;t have analogous capabilities, however, I fail to see why similar productivity gains couldn&#039;t be achieved with adequate frameworks, IDEs and tools..time will tell I guess.

I must confess that I haven&#039;t really thought about just-in-time code generation about until now (duh!); if I understand correctly, you refer to Ruby&#039;s capability to dynamically extend existing types, which in this context allows RoR to generate code and let users consume it on the fly without additional steps. Is it a better experience than requiring manual steps to the user? You bet :-)!

Are visual languages better than text based languages? I think this question deserves a whole series of posts (well...one at least)!
Let me clarify that, although I keep my eyes open, I don&#039;t buy into the idea that 100% visual modeling and code generation is feasible nor desirable in any but few ad-hoc scenarios. There are big differences between OMG&#039;s MDA (which is totally model-centric, uses UML as input, prescribes PIM and PSM transformations), Metacase&#039;s DSM (totally model-centric, visual DSL as input, claims – and I&#039;m sure obtains – 100% code generation for rather specific scenarios) and Microsoft&#039;s Software Factories/DSL Tools (visual modeling can&#039;t do everything, so graphical DSLs must coexists with code, IMHO applicable in wider scenarios). Effectively, I&#039;m skeptical about MDA, understand Metacase&#039;s DSM (but my domain doesn&#039;t fit in the &quot;applicable&quot; scenarios), but I choose to buy into the latter approach with all its promises and consequences.

In short, I believe that different domains need different languages/notations, some of them should graphical and some should be text-based. Why and when one should be used is an interesting question that I asked myself many times. I must confess I don&#039;t have many answers although I promise I will write something about it in the future.
Hopefully one day the context-switch problem that you mention will disappear if either IntelliJ or Intentional Software succeed in their…intent. As it happens, last February I had the privilege to meet Charles Simonyi and I&#039;ve seen what he is up to…so stay tuned!</description>
		<content:encoded><![CDATA[<p>Emil,<br />
Thanks for the links.<br />
You touched so many concepts and now I don&#8217;t know where to begin!<br />
Let&#8217;s see:</p>
<p>RoR does a lot for you behind the scenes and you are right, it is reasonable to give a lot of credit to its reflective metasystem based on Ruby.<br />
While it&#8217;s true that static languages don&#8217;t have analogous capabilities, however, I fail to see why similar productivity gains couldn&#8217;t be achieved with adequate frameworks, IDEs and tools..time will tell I guess.</p>
<p>I must confess that I haven&#8217;t really thought about just-in-time code generation about until now (duh!); if I understand correctly, you refer to Ruby&#8217;s capability to dynamically extend existing types, which in this context allows RoR to generate code and let users consume it on the fly without additional steps. Is it a better experience than requiring manual steps to the user? You bet <img src='http://www.agilesensei.com/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> !</p>
<p>Are visual languages better than text based languages? I think this question deserves a whole series of posts (well&#8230;one at least)!<br />
Let me clarify that, although I keep my eyes open, I don&#8217;t buy into the idea that 100% visual modeling and code generation is feasible nor desirable in any but few ad-hoc scenarios. There are big differences between OMG&#8217;s MDA (which is totally model-centric, uses UML as input, prescribes PIM and PSM transformations), Metacase&#8217;s DSM (totally model-centric, visual DSL as input, claims – and I&#8217;m sure obtains – 100% code generation for rather specific scenarios) and Microsoft&#8217;s Software Factories/DSL Tools (visual modeling can&#8217;t do everything, so graphical DSLs must coexists with code, IMHO applicable in wider scenarios). Effectively, I&#8217;m skeptical about MDA, understand Metacase&#8217;s DSM (but my domain doesn&#8217;t fit in the &#8220;applicable&#8221; scenarios), but I choose to buy into the latter approach with all its promises and consequences.</p>
<p>In short, I believe that different domains need different languages/notations, some of them should graphical and some should be text-based. Why and when one should be used is an interesting question that I asked myself many times. I must confess I don&#8217;t have many answers although I promise I will write something about it in the future.<br />
Hopefully one day the context-switch problem that you mention will disappear if either IntelliJ or Intentional Software succeed in their…intent. As it happens, last February I had the privilege to meet Charles Simonyi and I&#8217;ve seen what he is up to…so stay tuned!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Emil Marceta</title>
		<link>http://www.agilesensei.com/blog/articles/2006/03/13/back-on-track-and-the-software-factories-architect-forum-2006/comment-page-1/#comment-36</link>
		<dc:creator>Emil Marceta</dc:creator>
		<pubDate>Fri, 24 Mar 2006 21:15:25 +0000</pubDate>
		<guid isPermaLink="false"></guid>
		<description>Hi Claudio,

I agree that conventions and patterns are key in Ruby on Rails, but the fundamental mechanisms that allow it is RoR metasystem written in Ruby. Sort of like Lisp written in Lisp.

I too think that the &#039;Code that writes Code&#039; is a Good Thing&#039;
but I&#039;m thinking that the codegen (and other artifacts that are generated) unversally work when done just-in-time. By that I mean :-

- &#039;universally&#039; means exactly what you have so nicely explained &quot;that the codegen does not know the degree of variation in a target product or product family&quot;).

- no external model. As much as possible, all the the necessary
descriptions are maintained in the code. The editor, IDE or script,
is automating the step that a developer wishes to perform on the
fly instead in advance.
Everything can be refactored when needed, there is no &#039;special&#039;
non-editable and editable classes. Everything is open field.


I looked at the product you mentioned, and I always wander with similar tools why do they think that visual diagrams are better? There is no evidence nor research done in IT industry and Comp-Sci that shows that the visual diagrams are better then text. :)
It is the opposite that can be argued actually :) There is often
an issue about ther precision, subtly different interpretations etc..


Few links, that you may find interesting:

Alan Kay on the metasystem topic:
http://www.windley.com/archives/2006/02/alan_kay_is_com.shtml

Intellij Meta Programming System

http://www.onboard.jetbrains.com/is1/articles/04/10/lop/

Saluti,
Emil</description>
		<content:encoded><![CDATA[<p>Hi Claudio,</p>
<p>I agree that conventions and patterns are key in Ruby on Rails, but the fundamental mechanisms that allow it is RoR metasystem written in Ruby. Sort of like Lisp written in Lisp.</p>
<p>I too think that the &#8216;Code that writes Code&#8217; is a Good Thing&#8217;<br />
but I&#8217;m thinking that the codegen (and other artifacts that are generated) unversally work when done just-in-time. By that I mean :-</p>
<p>- &#8216;universally&#8217; means exactly what you have so nicely explained &#8220;that the codegen does not know the degree of variation in a target product or product family&#8221;).</p>
<p>- no external model. As much as possible, all the the necessary<br />
descriptions are maintained in the code. The editor, IDE or script,<br />
is automating the step that a developer wishes to perform on the<br />
fly instead in advance.<br />
Everything can be refactored when needed, there is no &#8216;special&#8217;<br />
non-editable and editable classes. Everything is open field.</p>
<p>I looked at the product you mentioned, and I always wander with similar tools why do they think that visual diagrams are better? There is no evidence nor research done in IT industry and Comp-Sci that shows that the visual diagrams are better then text. <img src='http://www.agilesensei.com/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
It is the opposite that can be argued actually <img src='http://www.agilesensei.com/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  There is often<br />
an issue about ther precision, subtly different interpretations etc..</p>
<p>Few links, that you may find interesting:</p>
<p>Alan Kay on the metasystem topic:<br />
<a href="http://www.windley.com/archives/2006/02/alan_kay_is_com.shtml" rel="nofollow">http://www.windley.com/archives/2006/02/alan_kay_is_com.shtml</a></p>
<p>Intellij Meta Programming System</p>
<p><a href="http://www.onboard.jetbrains.com/is1/articles/04/10/lop/" rel="nofollow">http://www.onboard.jetbrains.com/is1/articles/04/10/lop/</a></p>
<p>Saluti,<br />
Emil</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Claudio Perrone</title>
		<link>http://www.agilesensei.com/blog/articles/2006/03/13/back-on-track-and-the-software-factories-architect-forum-2006/comment-page-1/#comment-35</link>
		<dc:creator>Claudio Perrone</dc:creator>
		<pubDate>Fri, 24 Mar 2006 20:26:16 +0000</pubDate>
		<guid isPermaLink="false"></guid>
		<description>Hi Emil,
There is certainly a lot to learn from the experience gathered using other platforms as there are lots of similarities despite the obvious differences.
I’m really glad that you shared some of it in your comments!

I’ve been looking at varius forms of MDD lately, including MDA and DSM (there is a LOT to learn from the experience of the guys in MetaCase since their MetaEdit+ looks like a really mature tool, by the way).

Ruby on Rails is extremely interesting for sure and I can see the advantages of keeping the same language at all levels...
However, the key of its success is perhaps in the conventions (names, patterns, etc) it uses.
Although InnerWorkings is a pure .NET shop, Ruby is often a subject for interesting conversations with my collegues and our experience with Rails has been really positive so far.
In fact, we heavily depend on a custom workflow application that a collegue (and friend) of mine, Michael O’Brien, developed in Rails a while ago.
It coordinates and tracks all the steps across teams in our development process!</description>
		<content:encoded><![CDATA[<p>Hi Emil,<br />
There is certainly a lot to learn from the experience gathered using other platforms as there are lots of similarities despite the obvious differences.<br />
I’m really glad that you shared some of it in your comments!</p>
<p>I’ve been looking at varius forms of MDD lately, including MDA and DSM (there is a LOT to learn from the experience of the guys in MetaCase since their MetaEdit+ looks like a really mature tool, by the way).</p>
<p>Ruby on Rails is extremely interesting for sure and I can see the advantages of keeping the same language at all levels&#8230;<br />
However, the key of its success is perhaps in the conventions (names, patterns, etc) it uses.<br />
Although InnerWorkings is a pure .NET shop, Ruby is often a subject for interesting conversations with my collegues and our experience with Rails has been really positive so far.<br />
In fact, we heavily depend on a custom workflow application that a collegue (and friend) of mine, Michael O’Brien, developed in Rails a while ago.<br />
It coordinates and tracks all the steps across teams in our development process!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Emil Marceta</title>
		<link>http://www.agilesensei.com/blog/articles/2006/03/13/back-on-track-and-the-software-factories-architect-forum-2006/comment-page-1/#comment-34</link>
		<dc:creator>Emil Marceta</dc:creator>
		<pubDate>Fri, 24 Mar 2006 19:34:16 +0000</pubDate>
		<guid isPermaLink="false"></guid>
		<description>Excellent points. I&#039;d add few from my experience with MDD tool in Java (diffewrent language similar issues).

- Context (mental) switches from one tool to another is difficult. Using MDD tool, then generating code, and then using a different tool (an IDE for concrete implementation) makes

- Refactoring. The generated code is more difficult to refactor. Sure the templates can change, but then the concrete implementations
may go out of synch, and all the side-effects may not be immediately visible.


One example of DSL that I really enjoy is Ruby on Rails. Sure it is a different and dynamically typed language, but there are very important points there :
The framework, DSL and the scaffolding is in Ruby. There is no difference when editing / using DSL and editing regular business logic. It&#039;s all in the same language, in the same classes in the same editor. The DSL instruction result in code generation on the fly, and programmers barely notice it. People use it without really understanding that this is a DSL. For a developer that is simply Ruby.

Saluti,
Emil </description>
		<content:encoded><![CDATA[<p>Excellent points. I&#8217;d add few from my experience with MDD tool in Java (diffewrent language similar issues).</p>
<p>- Context (mental) switches from one tool to another is difficult. Using MDD tool, then generating code, and then using a different tool (an IDE for concrete implementation) makes</p>
<p>- Refactoring. The generated code is more difficult to refactor. Sure the templates can change, but then the concrete implementations<br />
may go out of synch, and all the side-effects may not be immediately visible.</p>
<p>One example of DSL that I really enjoy is Ruby on Rails. Sure it is a different and dynamically typed language, but there are very important points there :<br />
The framework, DSL and the scaffolding is in Ruby. There is no difference when editing / using DSL and editing regular business logic. It&#8217;s all in the same language, in the same classes in the same editor. The DSL instruction result in code generation on the fly, and programmers barely notice it. People use it without really understanding that this is a DSL. For a developer that is simply Ruby.</p>
<p>Saluti,<br />
Emil</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: João Pedro Martins</title>
		<link>http://www.agilesensei.com/blog/articles/2006/03/13/back-on-track-and-the-software-factories-architect-forum-2006/comment-page-1/#comment-33</link>
		<dc:creator>João Pedro Martins</dc:creator>
		<pubDate>Fri, 17 Mar 2006 15:08:16 +0000</pubDate>
		<guid isPermaLink="false"></guid>
		<description>Alguém tem experiência concreta com a utilização deste tipo de conceitos na prática?

Conheço pelo menos 2 casos de empresas nacionais em que se faz geração de código em larga escala, mas ambos são para domínios muito específicos (nomeadamente, ERP&#039;s), mas quando os domínios são mais latos parece-me mais complicado...

Encontrei um post sobre este tema que me pareceu interessante, e que descreve algumas das dificuldades do MDD em geral...</description>
		<content:encoded><![CDATA[<p>Alguém tem experiência concreta com a utilização deste tipo de conceitos na prática?</p>
<p>Conheço pelo menos 2 casos de empresas nacionais em que se faz geração de código em larga escala, mas ambos são para domínios muito específicos (nomeadamente, ERP&#8217;s), mas quando os domínios são mais latos parece-me mais complicado&#8230;</p>
<p>Encontrei um post sobre este tema que me pareceu interessante, e que descreve algumas das dificuldades do MDD em geral&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Gielens : ThoughtsService</title>
		<link>http://www.agilesensei.com/blog/articles/2006/03/13/back-on-track-and-the-software-factories-architect-forum-2006/comment-page-1/#comment-32</link>
		<dc:creator>Paul Gielens : ThoughtsService</dc:creator>
		<pubDate>Mon, 13 Mar 2006 21:53:16 +0000</pubDate>
		<guid isPermaLink="false"></guid>
		<description>Claudio blogs (finally :D) about some real world obstructions I have experienced myself applying Software Factories and Model Driven Development (DLS). He also mentions the Software Factories Architect Forum 2006 organized by Bill O&#039;Brien that took place in Dublin, Ireland. Boy, do I regret not being an Irish architect after missing out on this gig. Check out the slides and comments on Bill’s blog.</description>
		<content:encoded><![CDATA[<p>Claudio blogs (finally <img src='http://www.agilesensei.com/weblog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ) about some real world obstructions I have experienced myself applying Software Factories and Model Driven Development (DLS). He also mentions the Software Factories Architect Forum 2006 organized by Bill O&#8217;Brien that took place in Dublin, Ireland. Boy, do I regret not being an Irish architect after missing out on this gig. Check out the slides and comments on Bill’s blog.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

