<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jack Greenfield's Blog : Domain Specific Languages</title><link>http://blogs.msdn.com/jackgr/archive/tags/Domain+Specific+Languages/default.aspx</link><description>Tags: Domain Specific Languages</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Articles on Software Factories</title><link>http://blogs.msdn.com/jackgr/archive/2007/10/10/articles-on-software-factories.aspx</link><pubDate>Wed, 10 Oct 2007 23:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5393597</guid><dc:creator>Jack Greenfield</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jackgr/comments/5393597.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jackgr/commentrss.aspx?PostID=5393597</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jackgr/rsscomments.aspx?PostID=5393597</wfw:comment><description>&lt;P&gt;I recently published an &lt;A class="" href="http://www.methodsandtools.com/archive/archive.php?id=64" mce_href="http://www.methodsandtools.com/archive/archive.php?id=64"&gt;article&lt;/A&gt; on using software factories in supply chains for &lt;A class="" title="Methods and Tools" href="http://www.methodsandtools.com/" minmax_bound="true" mce_href="http://www.methodsandtools.com/"&gt;&lt;FONT color=#0033cc&gt;Methods and Tools&lt;/FONT&gt;&lt;/A&gt;.&amp;nbsp;Also, many people have asked about the&amp;nbsp;&lt;A class="" href="http://www.iasahome.org/c/portal/layout?p_l_id=PUB.1.244&amp;amp;p_p_id=20&amp;amp;p_p_action=1&amp;amp;p_p_state=exclusive&amp;amp;p_p_col_id=null&amp;amp;p_p_col_pos=1&amp;amp;p_p_col_count=2&amp;amp;_20_struts_action=%2Fdocument_library%2Fget_file&amp;amp;_20_folderId=9&amp;amp;_20_name=Perspectives_August2005.pdf" mce_href="http://www.iasahome.org/c/portal/layout?p_l_id=PUB.1.244&amp;amp;p_p_id=20&amp;amp;p_p_action=1&amp;amp;p_p_state=exclusive&amp;amp;p_p_col_id=null&amp;amp;p_p_col_pos=1&amp;amp;p_p_col_count=2&amp;amp;_20_struts_action=%2Fdocument_library%2Fget_file&amp;amp;_20_folderId=9&amp;amp;_20_name=Perspectives_August2005.pdf"&gt;article&lt;/A&gt; I wrote about factories vs. MDA for the Perspectives of the IASA.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5393597" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jackgr/archive/tags/Software+Factories/default.aspx">Software Factories</category><category domain="http://blogs.msdn.com/jackgr/archive/tags/Domain+Specific+Languages/default.aspx">Domain Specific Languages</category></item><item><title>Performance Analysis and Prediction</title><link>http://blogs.msdn.com/jackgr/archive/2006/10/29/performance-analysis-and-prediction.aspx</link><pubDate>Sun, 29 Oct 2006 23:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:898008</guid><dc:creator>Jack Greenfield</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jackgr/comments/898008.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jackgr/commentrss.aspx?PostID=898008</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jackgr/rsscomments.aspx?PostID=898008</wfw:comment><description>&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT color=#000080&gt;&lt;FONT face="Franklin Gothic Book"&gt;Irfan Idrees wrote with the observation that while performance analysis and prediction are of critical importance for software developers, the rigorous approaches prevalent in the marketplace have not been widely accepted in the community. Irfan then asked how software factories deal with this issue.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT color=#000080&gt;&lt;FONT face="Franklin Gothic Book"&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT color=#000080&gt;&lt;FONT face="Franklin Gothic Book"&gt;Software factories provide leverage by reducing the amount of variability in application development. With a software factory, one effectively builds a variant of a known application type. All features common to the product family are designed and implemented in known ways. The only variability in a given member of the family is due to the features that make it unique.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face="Franklin Gothic Book" color=#000080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT color=#000080&gt;&lt;FONT face="Franklin Gothic Book"&gt;Unique features include both fully custom features and variations on known variable features. A fully custom feature is one that has not been predicted or taken into account in any way by the software factory. Variations on known variable features may be either fully constrained (e.g., picking one of five predefined transaction policies from a drop down), or partially constrained, (e.g., writing custom code to complete a template generated event handler designed to work within a predefined event architecture).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face="Franklin Gothic Book" color=#000080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT color=#000080&gt;&lt;FONT face="Franklin Gothic Book"&gt;To the extent that the performance of that application type is known and understood, then the task of analyzing and predicting the performance of a given variant becomes a matter of analyzing and predicting the performance of its unique features, and of analyzing and predicting the impact of their performance on the known performance characteristics of the application type, such as overall performance, the performance of specific operations or scenarios, and the way those measurements may vary with variations on known variable features.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=898008" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jackgr/archive/tags/Software+Factories/default.aspx">Software Factories</category><category domain="http://blogs.msdn.com/jackgr/archive/tags/Domain+Specific+Languages/default.aspx">Domain Specific Languages</category></item><item><title>Ad Hoc and Systematic Reuse</title><link>http://blogs.msdn.com/jackgr/archive/2006/10/17/ad-hoc-and-systematic-reuse.aspx</link><pubDate>Wed, 18 Oct 2006 01:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:836462</guid><dc:creator>Jack Greenfield</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/jackgr/comments/836462.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jackgr/commentrss.aspx?PostID=836462</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jackgr/rsscomments.aspx?PostID=836462</wfw:comment><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;In the &lt;/FONT&gt;&lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/0471202843/qid=1081905983/sr=8-2/ref=sr_8_xs_ap_i2_xgl14/104-1260554-5554356?v=glance&amp;amp;s=books&amp;amp;n=507846" mce_href="http://www.amazon.com/exec/obidos/tg/detail/-/0471202843/qid=1081905983/sr=8-2/ref=sr_8_xs_ap_i2_xgl14/104-1260554-5554356?v=glance&amp;amp;s=books&amp;amp;n=507846"&gt;&lt;FONT face=Calibri size=3&gt;software factories book&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, we explain that systematic reuse is effective, but ad hoc reuse is not.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Ad hoc reuse is the “Field of Dreams” approach… “If we build it, they will come”. Great line for a movie, but it doesn’t work well in the real world of software development.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Systematic reuse relies on the recognition that every component embodies many assumptions about functional requirements, technology choices, operational requirements, architecture, deployment topology, testing strategy, development process, and many other aspects of the software development life cycle.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Failing to recognize and plan around these assumptions leads to the well known problem called “architectural mismatch”. This problem is described in detail in a series of papers from David Garlan at Carnegie Mellon. The patterns and practices team arrived at this same conclusion “bottom up”, by listening to customer feedback regarding the guidance offerings they were developing. Customers were asking how to use those offerings to build a specific type of application.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Recognizing and planning around these assumptions leads to defining families of similar solutions, and separating their common features, which make them similar, from their variable features, which make one member of the family different from the next. The common features are used to develop a custom process for building the members of the family, and of a set of reusable assets supporting the process. The variable features are used to drive parameterization, configuration, assembly and other techniques for accommodating the differences between the family members.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;This is the thinking underlying the development of the components that are truly reusable, such as RDBMSs and GUI frameworks, although it may not have been recognized at the time by all of the people involved in building those components.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Work at the Software Engineering Institute (SEI) formalized this thinking in the concept of Software Product Lines. Software Product Line practices have been well established through many books, case studies and experience reports, and are widely accepted in the software engineering community.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Software Factories is a methodology for using domain specific languages and other technologies to automate Software Product Lines. They were developed by leveraging the work of David Garlan, as described in the book, in consultation with the authors of Software Product Lines at the SEI, and with other experts in related disciplines, such as pattern languages, generative programming and feature based development.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=836462" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jackgr/archive/tags/Software+Factories/default.aspx">Software Factories</category><category domain="http://blogs.msdn.com/jackgr/archive/tags/Domain+Specific+Languages/default.aspx">Domain Specific Languages</category></item><item><title>Architecture Interview and Podcasts</title><link>http://blogs.msdn.com/jackgr/archive/2006/01/22/502645.aspx</link><pubDate>Mon, 23 Jan 2006 04:44:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:502645</guid><dc:creator>Jack Greenfield</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jackgr/comments/502645.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jackgr/commentrss.aspx?PostID=502645</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jackgr/rsscomments.aspx?PostID=502645</wfw:comment><description>&lt;FONT face=Arial size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;FONT face="Franklin Gothic Book"&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Here’s an update about Software Factories on &lt;SPAN class=MsoHyperlink&gt;&lt;A href="http://www.microsoft.com/architecture/default.aspx?pid=share.podcast"&gt;ARCast&lt;/A&gt;&lt;/SPAN&gt;, the podcast series on the &lt;SPAN class=MsoHyperlink&gt;&lt;A href="http://www.microsoft.com/architecture/default.aspx?pid=home"&gt;Architecture Resource Center&lt;/A&gt;&lt;/SPAN&gt;. Last month, five panelists (counting myself) recorded three shows on model driven development. It's been quite successful, with the largest number of downloads to date in the series. You can find the first show &lt;SPAN class=MsoHyperlink&gt;&lt;A href="http://channel9.msdn.com/ShowPost.aspx?PostID=132943#132943"&gt;here,&lt;/A&gt;&lt;/SPAN&gt; the second one &lt;SPAN class=MsoHyperlink&gt;&lt;A href="http://channel9.msdn.com/ShowPost.aspx?PostID=141392#141392"&gt;here&lt;/A&gt;&lt;/SPAN&gt; and the third one &lt;SPAN class=MsoHyperlink&gt;&lt;A href="http://channel9.msdn.com/ShowPost.aspx?PostID=154143#154143"&gt;here&lt;/A&gt;&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Following up the panel discussion, &lt;SPAN class=MsoHyperlink&gt;&lt;A href="http://blog.arrowrock.com/sourceart/"&gt;Martin Danner&lt;/A&gt;&lt;/SPAN&gt; and I did another podcast on &lt;SPAN class=MsoHyperlink&gt;&lt;A href="http://channel9.msdn.com/Showpost.aspx?postid=156291"&gt;MDA vs. Software Factories&lt;/A&gt;&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;I also joined &lt;A href="http://msdn.microsoft.com/architecture/shareideas/sharemsvision/sharebio1/bio_mauroregio/default.aspx"&gt;Mauro Regio &lt;/A&gt;recently for an &lt;A href="http://channel9.msdn.com/ShowPost.aspx?PostID=143694#143694"&gt;ArcTalk &lt;/A&gt;interview with Ron Jacobs about the HL7 Software Factory described in my recent &lt;SPAN class=MsoHyperlink&gt;&lt;a href="http://blogs.msdn.com/jackgr/archive/2005/12/09/502074.aspx"&gt;post&lt;/A&gt;&lt;/SPAN&gt;, and &lt;SPAN class=MsoHyperlink&gt;&lt;a href="http://blogs.msdn.com/stevecook/"&gt;Steve Cook&lt;/A&gt;&lt;/SPAN&gt; also did an interesting one on one with &lt;SPAN class=MsoHyperlink&gt;&lt;A href="http://channel9.msdn.com/shows/ARCast_with_Ron_Jacobs"&gt;Ron Jacobs&lt;/A&gt;&lt;/SPAN&gt; about &lt;SPAN class=MsoHyperlink&gt;&lt;A href="http://channel9.msdn.com/Showpost.aspx?postid=141879"&gt;DSLs and Software Factories&lt;/A&gt;&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=502645" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jackgr/archive/tags/Software+Factories/default.aspx">Software Factories</category><category domain="http://blogs.msdn.com/jackgr/archive/tags/Domain+Specific+Languages/default.aspx">Domain Specific Languages</category></item><item><title>RE: VSTS 2005, DSL, and Software Architecture</title><link>http://blogs.msdn.com/jackgr/archive/2006/01/06/510162.aspx</link><pubDate>Fri, 06 Jan 2006 21:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:510162</guid><dc:creator>Jack Greenfield</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jackgr/comments/510162.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jackgr/commentrss.aspx?PostID=510162</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jackgr/rsscomments.aspx?PostID=510162</wfw:comment><description>&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;This is a response to a &lt;/FONT&gt;&lt;A href="http://realworldsa.dotnetdevelopersjournal.com/dsl.htm"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;blog posting&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt; by Tad Anderson, and the &lt;/FONT&gt;&lt;A href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=190770&amp;amp;SiteID=1"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;pointer&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt; to it on the MSDN Architecture General forum.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;First, I agree with your observation, Tad, about the lack of support for the Software Architect in VSTS 2005. We did indeed focus on the System Architect not the Software Architect. We had limited resources to allocate to architecture tools, and felt it was more important to support Microsoft’s drive toward connected systems for the 2005 release. As you suggest, however, we do intend to address the needs of the Software Architect in subsequent releases, and most of that support will come from our Software Factory strategy.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;However, I disagree with your assertion that our Software Factory strategy, with its reliance on DSLs, will “make a huge mess”. From your comments, I gather that you haven’t read the Software Factories &lt;/FONT&gt;&lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/0471202843/qid=1136573360/sr=8-1/ref=pd_bbs_1/002-5979999-8152831?v=glance&amp;amp;s=books&amp;amp;n=507846"&gt;&lt;FONT face="Franklin Gothic Book" color=#333399 size=2&gt;book&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;, or been exposed to the many white papers, blog postings, conference proceedings, articles and podcasts that we’ve produced, since they address the issues you raise at length. &lt;SPAN style="mso-bidi-font-size: 10.0pt"&gt;I will summarize them here, but I'll also point you to the those other resources, where you learn a lot more about what we’re doing and why&lt;/SPAN&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;While it’s certainly true that unqualified practitioners might abuse our technology, there is nothing about our technology that makes it particularly susceptible to abuse. As we know, there is nothing to stop people from writing bad code in Java or from creating ineffective UML models.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;However, we have admittedly not done a good enough job of making clear that we intend people to build DSLs primarily in the context of Software Factories. Yes, we do expect them to build standalone DSLs, but the primary goal of productizing the DSL technology was to support factory development. Why? Two reasons:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="mso-bidi-font-family: 'Franklin Gothic Book'; mso-fareast-font-family: 'Franklin Gothic Book'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;1)&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;Factories provide a methodology for determining what to model for a given product family. The key to using DSLs effectively is to understand how solutions are developed for a given problem domain. Factories are organized around a model of the development process for a given problem domain. This model, called a factory schema, is a graph of viewpoints. A viewpoint defines the perspective of a specific stakeholder or a specific role in the project team. As recommended by IEE 1471, and the book &lt;/FONT&gt;&lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/0201703726/qid=1136572399/sr=8-1/ref=pd_bbs_1/002-5979999-8152831?v=glance&amp;amp;s=books&amp;amp;n=507846"&gt;&lt;FONT face="Franklin Gothic Book" color=#333399 size=2&gt;Documenting Software Architectures&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt; by Clements, et. al., we use the graph of viewpoints to define the product family architecture. We also use it to define the development process, or what Product Line Engineering calls the production plan. Each viewpoint describes the set of workflows used by its stakeholders, the work products acted upon by those workflows, and a set of assets, such as tools, templates, class libraries and guidelines, that support the enactment of those workflows. How does this relate to modeling? The schema shows us what to model. Each viewpoint defines a domain, such as logical database design, user interface process or business rule definition. These domains are aspects or subsets of the larger problem domain defined by the product family. We may only know enough from experience about such a domain to supply documentation assets, such as patterns or practices, to its stakeholders. However, if we know enough about it to model its key concepts, then we can supply more powerful assets, such as a DSL and tools that perform generation, validation, trace, analysis and other forms of automation using models based on that DSL. Of course, implicit in this approach to modeling is the assumption that DSLs are more effective than general purpose modeling languages like UML for model driven development because they are highly focused on specific problem domains. That point is discussed at length in many of our publications, including our &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/vstudio/teamsystem/workshop/sf/default.aspx?pull=/library/en-us/dnvs05/html/vstsmodel.asp"&gt;&lt;FONT face="Franklin Gothic Book" color=#333399 size=2&gt;Modeling Strategy&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt; paper. In summary, a factory contains a model that provides a basis for determining which aspects of a problem can and/or should be supported by DSLs, and how DSL based models should relate to each other and to the work products of non-model driven activities.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="mso-bidi-font-family: 'Franklin Gothic Book'; mso-fareast-font-family: 'Franklin Gothic Book'"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;2)&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;Software development is about more than just models. While it’s nice to think that some day, we might develop every part of a system using models, just as we currently develop every part of an application using 3 GLs rather than assembly language, it’s just not feasible today. You can hear more on this topic in the recent &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/architecture/default.aspx?pid=share.podcast"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;ARCast&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt; on MSDN. Because we take this pragmatic view, we require factories to provide whatever assets are most appropriate to support the enactment of the workflows for a given viewpoint, and not just on modeling. A modeling tool is just one kind of asset that factory builders can provide to support factory users, but there are many others. This is one of the fundamental differences between Software Factories and MDA. You can read more about the differences between them in the &lt;/FONT&gt;&lt;A href="http://www.iasahome.org/iasaweb/resources/attachments?download=true&amp;amp;nodeId=3303&amp;amp;field=attachment"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;article&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt; that I wrote for the newsletter of the International Association of Software Architects.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;Regarding the effect of our strategy on industry standards, I think it was inevitable that people would demand more focused modeling technologies. Within the OMG, there is very strong momentum toward domain specific modeling. It just happens to be expressed using UML profiles, which are awkward at best. A large block of OMG members would prefer to see domain specific languages defined using the Meta Object Facility (MOF). In effect, that’s what we’re doing, too. However, we don’t use the standard MOF. Neither does IBM, Sun, or anyone else. Why? Because the MOF maps to the internal architecture of the modeling tool. Experiences like IBM AD/Cycle show that tool internals cannot be standardized effectively, since vendors must be free to design and implement tools in response to market changes, not standards committee proceedings. Based on these experiences, we prefer the standardization of interachange formats – not interchange formats like XMI, which depend on MOF alignment to achieve interoperability, but interchange formats like the ones defined by UN/CEFACT, RosettaNet and HL7 to name a few.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;As for learning a new language with every gig, you have to do that anyway, whether you’re using UML profiles, or no modeling language, at all. While the UML defines a set of widely understood notational styles, the meaning of any given profile must be learned. This should come as no surprise. What you really have to learn with every gig is the problem domain, or rather the many subsets or aspects of the overall problem domain, and how they all relate to each other. The goal of software factories is to help solve that problem. The software factory schema provides a way to model all of the aspects and their interrelationships. While the DSLs that people build using our tools are unique, they are usually based on the notational styles supplied by the templates that we provide. They happen to look a lot like UML notational styles, of course, and that’s intentional. We have no interest in reinventing the wheel when it comes to notational styles that have proven effective. By the same token, we have not followed any of UML notational styles that have not proven effective, such as the deployment diagram.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;It’s true that that we have not yet aligned Software Factories and MSF. That is currently work in progress. When the alignment is published, I think you will find that the result quite different from RUP and XP. For one thing, the development process in a factory is organized around viewpoints, as I’ve just described. For another, the workflow in a factory is driven not by sequential execution, by pre- and post- conditions associated with each activity. Activities come into scope when their pre- conditions are satisfied and go out of scope when their post- conditions are satisfied. Work can be done in any order subject to these constraints.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;It’s also quite true that we need to provide a more complete set of tools and templates to support the Software Architect, as you suggest. That’s what we’re busy doing.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;Finally, I should point out that a critical mass of industry experts supports our work.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;For example, if you read the Acknowledgements in the Software Factories book, you’ll find that we leaned heavily on the work of Paul Clements and Linda Northrop, and met with them multiple times in person. You’ll also learn that Paul was a reviewer, and you’ll find his endorsement of our work inside the front cover. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;If you look at our &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/vstudio/teamsystem/workshop/sf/default.aspx?pull=/library/en-us/dnvs05/html/vstsmodel.asp"&gt;&lt;FONT face="Franklin Gothic Book" color=#333399 size=2&gt;web site&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;, you’ll discover that Linda Northrop invited me to give the &lt;/FONT&gt;&lt;A href="http://www.sei.cmu.edu/SPLC2004/PLS_factory_30fps.mov"&gt;&lt;FONT face="Franklin Gothic Book" color=#333399 size=2&gt;keynote&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt; at the SEI sponsored &lt;/FONT&gt;&lt;A href="http://www.sei.cmu.edu/SPLC2004/"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;Software Product Lines Conference 2004&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;, giving an overview of Software Factories.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;If you look at our blogs, you’ll find that Martin Fowler had some complimentary things to say about our strategy in his paper on &lt;/FONT&gt;&lt;A href="http://martinfowler.com/articles/languageWorkbench.html"&gt;&lt;FONT face="Franklin Gothic Book" color=#333399 size=2&gt;Language Workbenches&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;It may be worth mentioning, while we’re talking about industry expert response to our work, that we have had and continue to have critical interaction with some of the other people on your list, including Mr. Jacobson, Mr. Ambler and Mr. Evans.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;Inside the front cover of the book, you will also find endorsements from Doug Schmidt, lead author of &lt;/FONT&gt;&lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/0471606952/qid=1136572748/sr=8-2/ref=pd_bbs_2/002-5979999-8152831?v=glance&amp;amp;s=books&amp;amp;n=507846"&gt;&lt;FONT face="Franklin Gothic Book" color=#333399 size=2&gt;Pattern Oriented Software Architecture, Volume 2&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt; (POSA2), David Frankel, author of &lt;/FONT&gt;&lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/B00009KTQS/qid=1136572655/sr=8-2/ref=sr_8_xs_ap_i2_xgl14/002-5979999-8152831?v=glance&amp;amp;s=books&amp;amp;n=507846"&gt;&lt;FONT face="Franklin Gothic Book" color=#333399 size=2&gt;Model Driven Architecture&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;, Krzysztof Czarnecki, author of &lt;/FONT&gt;&lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/0201309777/qid=1136572812/sr=8-1/ref=pd_bbs_1/002-5979999-8152831?v=glance&amp;amp;s=books&amp;amp;n=507846"&gt;&lt;FONT face="Franklin Gothic Book" color=#333399 size=2&gt;Generative Programming&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt; and leading voice in the industry on feature modeling, and John Crupi, lead author of &lt;/FONT&gt;&lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/0131422464/qid=1136572703/sr=8-1/ref=pd_bbs_1/002-5979999-8152831?v=glance&amp;amp;s=books&amp;amp;n=507846"&gt;&lt;FONT face="Franklin Gothic Book" color=#333399 size=2&gt;Core J2EE Patterns&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt; and the writer of our foreword.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;There are many other industry experts who continue to review our work, share their thinking with us, and generally advise us in our efforts to craft a pragmatic approach to software development that is firmly rooted in proven practices from software product lines, model driven development and service oriented architecture. You can read what many of them have written in the &lt;/FONT&gt;&lt;A href="http://softwarefactories.com/workshops/OOPSLA-2005/SoftwareFactoryWorkshopAnnouncement.htm"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;papers&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt; they submitted to the &lt;/FONT&gt;&lt;A href="http://www.oopsla.org/2005/ShowEvent.do?id=203"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;International Conference On Software Factories&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt; at OOPSLA 2005.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0in 0in 6pt"&gt;&lt;FONT face="Franklin Gothic Book" size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=510162" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jackgr/archive/tags/Software+Factories/default.aspx">Software Factories</category><category domain="http://blogs.msdn.com/jackgr/archive/tags/Domain+Specific+Languages/default.aspx">Domain Specific Languages</category></item><item><title>Software Factories Applied</title><link>http://blogs.msdn.com/jackgr/archive/2005/12/09/502074.aspx</link><pubDate>Fri, 09 Dec 2005 20:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:502074</guid><dc:creator>Jack Greenfield</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jackgr/comments/502074.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jackgr/commentrss.aspx?PostID=502074</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jackgr/rsscomments.aspx?PostID=502074</wfw:comment><description>&lt;P class=MsoNormal&gt;&lt;FONT face="Franklin Gothic Book" color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 10.0pt"&gt;&lt;A title=http://blogs.msdn.com/keith_short/ href="/keith_short/"&gt;Keith Short&lt;/A&gt;, &lt;A title=http://msdn.microsoft.com/architecture/shareideas/sharemsvision/sharebio1/bio_mauroregio/default.aspx href="http://msdn.microsoft.com/architecture/shareideas/sharemsvision/sharebio1/bio_mauroregio/default.aspx"&gt;&lt;FONT color=#333399&gt;Mauro &lt;SPAN class=GramE title=http://msdn.microsoft.com/architecture/shareideas/sharemsvision/sharebio1/bio_mauroregio/default.aspx&gt;Regio&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/A&gt; and I have agreed to write a new book called Software Factories Applied. Our goal is to write a short book for practitioners that complements the theoretical foundation established in the original &lt;A title=http://www.amazon.com/gp/product/0471202843/qid=1133885290/sr=8-1/ref=pd_bbs_1/104-2323939-0183134?n=507846&amp;amp;s=books&amp;amp;v=glance href="http://www.amazon.com/gp/product/0471202843/qid=1133885290/sr=8-1/ref=pd_bbs_1/104-2323939-0183134?n=507846&amp;amp;s=books&amp;amp;v=glance"&gt;&lt;FONT color=#333399&gt;Software Factories&lt;/FONT&gt;&lt;/A&gt; book by showing how to build a software factory using currently available technologies, namely the &lt;A title=http://msdn.microsoft.com/vstudio/teamsystem/workshop/dsltools/default.aspx href="http://msdn.microsoft.com/vstudio/teamsystem/workshop/dsltools/default.aspx"&gt;&lt;FONT color=#333399&gt;DSL tools&lt;/FONT&gt;&lt;/A&gt;, the &lt;A title=http://msdn.microsoft.com/vstudio/teamsystem/workshop/gat/default.aspx href="http://msdn.microsoft.com/vstudio/teamsystem/workshop/gat/default.aspx"&gt;Guidance Automation Toolkit&lt;/A&gt; and &lt;A title=http://msdn.microsoft.com/vstudio/teamsystem/ href="http://msdn.microsoft.com/vstudio/teamsystem/"&gt;Visual Studio 2005 Team System&lt;/A&gt;. A key topic covered in the book will be how to build a software factory schema, which is the model at the heart of a software factory. Our plan is to walk through a complete worked example from end to end, showing what we did at each step. It will probably be based on a Business Collaboration Factory that generalizes the &lt;A title=http://msdn.microsoft.com/vstudio/teamsystem/workshop/sf/default.aspx?pull=/library/en-us/dnbda/html/hl7softfac.asp href="http://msdn.microsoft.com/vstudio/teamsystem/workshop/sf/default.aspx?pull=/library/en-us/dnbda/html/hl7softfac.asp"&gt;&lt;FONT color=#333399&gt;HL7 factory&lt;/FONT&gt;&lt;/A&gt; that Mauro and &lt;SPAN class=GramE&gt;I&lt;/SPAN&gt; developed. You can read about the lessons learned in the development of that factory in this &lt;A title=http://softwarefactories.com/workshops/OOPSLA-2005/Papers/Regio.pdf href="http://softwarefactories.com/workshops/OOPSLA-2005/Papers/Regio.pdf"&gt;&lt;FONT color=#333399&gt;paper&lt;/FONT&gt;&lt;/A&gt; that we contributed to the &lt;A title=http://www.oopsla.org/2005/ShowEvent.do?id=203 href="http://www.oopsla.org/2005/ShowEvent.do?id=203"&gt;International Workshop on Software Factories at OOPSLA 2005&lt;/A&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face="Franklin Gothic Book" color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 10.0pt"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=502074" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jackgr/archive/tags/Software+Factories/default.aspx">Software Factories</category><category domain="http://blogs.msdn.com/jackgr/archive/tags/Domain+Specific+Languages/default.aspx">Domain Specific Languages</category></item><item><title>OOPSLA 2005 Recap</title><link>http://blogs.msdn.com/jackgr/archive/2005/12/08/501876.aspx</link><pubDate>Fri, 09 Dec 2005 05:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:501876</guid><dc:creator>Jack Greenfield</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jackgr/comments/501876.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jackgr/commentrss.aspx?PostID=501876</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jackgr/rsscomments.aspx?PostID=501876</wfw:comment><description>&lt;FONT face="Franklin Gothic Book" color=black size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; mso-bidi-font-size: 10.0pt"&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: black; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 'MS Mincho'"&gt;&lt;a href="http://blogs.msdn.com/keith_short/"&gt;&lt;SPAN style="mso-bidi-font-size: 12.0pt"&gt;Keith Short&lt;/SPAN&gt;&lt;/A&gt;&amp;nbsp;has already written a&amp;nbsp;&lt;a href="http://blogs.msdn.com/keith_short/archive/2005/10/31/487484.aspx"&gt;&lt;FONT color=#333399&gt;post&lt;/FONT&gt;&lt;/A&gt; that provides an overview our activities at &lt;A href="http://www.oopsla.org/2005/ShowPage.do?id=Home"&gt;OOPSLA 2005&lt;/A&gt;. Here is a compendium of my activities at the conference.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: black; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 'MS Mincho'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in" type=disc&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; COLOR: black; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 'MS Mincho'"&gt;On Sunday, 10/16, I hosted a full day &lt;A href="http://www.oopsla.org/2005/ShowEvent.do?id=158"&gt;&lt;SPAN style="mso-bidi-font-size: 12.0pt"&gt;&lt;FONT color=#333399&gt;tutorial&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt; on Software Factories with &lt;a href="http://blogs.msdn.com/stevecook"&gt;&lt;SPAN style="mso-bidi-font-size: 12.0pt"&gt;Steve Cook&lt;/SPAN&gt;&lt;/A&gt;.&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family: 'MS Mincho'"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 'MS Mincho'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; COLOR: black; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 'MS Mincho'"&gt;On Monday, 10/17, &lt;?xml:namespace prefix = st1 ns = "urn:schemas:contacts" /&gt;&lt;st1:GivenName w:st="on"&gt;Steve&lt;/st1:GivenName&gt; and I hosted a full day &lt;A href="http://www.oopsla.org/2005/ShowEvent.do?id=203"&gt;&lt;SPAN style="mso-bidi-font-size: 12.0pt"&gt;workshop&lt;/SPAN&gt;&lt;/A&gt; on Software Factories. The workshop announcement and proceedings are posted &lt;A href="http://softwarefactories.com/workshops/OOPSLA-2005/SoftwareFactoryWorkshopAnnouncement.htm"&gt;&lt;SPAN style="mso-bidi-font-size: 12.0pt"&gt;here&lt;/SPAN&gt;&lt;/A&gt;.&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family: 'MS Mincho'"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 'MS Mincho'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; COLOR: black; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 'MS Mincho'"&gt;On Tuesday, 10/18, I spoke on a &lt;A href="http://www.oopsla.org/2005/ShowEvent.do?id=306"&gt;&lt;SPAN style="mso-bidi-font-size: 12.0pt"&gt;&lt;FONT color=#333399&gt;panel&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt; called Aspects – Passing Fad or New Foundation with &lt;A href="http://www.davethomas.net/"&gt;&lt;SPAN style="mso-bidi-font-size: 12.0pt"&gt;&lt;FONT color=#333399&gt;Dave Thomas&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;, &lt;A href="http://www.cs.ubc.ca/~gregor/"&gt;&lt;SPAN style="mso-bidi-font-size: 12.0pt"&gt;&lt;FONT color=#333399&gt;Gregor Kiczales&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;, &lt;A href="http://www.jaczone.com/postcards/"&gt;&lt;SPAN style="mso-bidi-font-size: 12.0pt"&gt;&lt;FONT color=#333399&gt;Ivar Jacobson&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt; and Matthew Webster hosted by &lt;A href="http://www.berczuk.com/"&gt;&lt;SPAN style="mso-bidi-font-size: 12.0pt"&gt;&lt;FONT color=#333399&gt;Steve Berczuk&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;.&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family: 'MS Mincho'"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 'MS Mincho'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; COLOR: black; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 'MS Mincho'"&gt;On Wednesday, 10/19, I wrote an &lt;A href="http://www.refactory.com/PODD/PODD3color.pdf"&gt;&lt;SPAN style="mso-bidi-font-size: 12.0pt"&gt;article&lt;/SPAN&gt;&lt;/A&gt; for the OOPSLA Conference Newsletter called A Not So Random Walk.&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family: 'MS Mincho'"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 'MS Mincho'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; COLOR: black; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 'MS Mincho'"&gt;On Wednesday, 10/19, I attended a half day &lt;A href="http://www.oopsla.org/2005/ShowEvent.do?id=115"&gt;&lt;SPAN style="mso-bidi-font-size: 12.0pt"&gt;tutorial&lt;/SPAN&gt;&lt;/A&gt; on Agile Software Development in the Large.&lt;/SPAN&gt;&lt;SPAN style="mso-fareast-font-family: 'MS Mincho'"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 'MS Mincho'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; COLOR: black; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 'MS Mincho'"&gt;On Wednesday, 10/19, I met with &lt;A href="http://www-staff.it.uts.edu.au/~brian/"&gt;&lt;SPAN style="mso-bidi-font-size: 12.0pt"&gt;&lt;FONT color=#333399&gt;Brian Henderson-Sellers&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt; and &lt;A href="http://www.donald-firesmith.com/Firesmith/Firesmith.html"&gt;&lt;SPAN style="mso-bidi-font-size: 12.0pt"&gt;&lt;FONT color=#333399&gt;Don Firesmith&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt; to discuss the &lt;A href="http://www.opfro.org/"&gt;&lt;SPAN style="mso-bidi-font-size: 12.0pt"&gt;&lt;FONT color=#333399&gt;Open Process Framework&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; COLOR: black; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt; mso-fareast-font-family: 'MS Mincho'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=501876" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jackgr/archive/tags/Software+Factories/default.aspx">Software Factories</category><category domain="http://blogs.msdn.com/jackgr/archive/tags/Domain+Specific+Languages/default.aspx">Domain Specific Languages</category></item><item><title>Putting The Cart Where It Belongs</title><link>http://blogs.msdn.com/jackgr/archive/2005/01/03/346035.aspx</link><pubDate>Tue, 04 Jan 2005 01:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:346035</guid><dc:creator>Jack Greenfield</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/jackgr/comments/346035.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jackgr/commentrss.aspx?PostID=346035</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jackgr/rsscomments.aspx?PostID=346035</wfw:comment><description>&lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;In this posting, I continue addressing issues in the &lt;/font&gt;&lt;a href="http://www-106.ibm.com/developerworks/blogs/dw_blog_comments.jspa?blog=317&amp;amp;entry=67637&amp;amp;ca=dgr-lnxw03MSrejectsUML"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;recent blog posting&lt;/font&gt;&lt;/a&gt;&lt;font face="Franklin Gothic Book" size="2"&gt; by &lt;/font&gt;&lt;a href="http://www-106.ibm.com/developerworks/blogs/dw_blog.jspa?blog=317&amp;amp;roll=0"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;Grady Booch&lt;/font&gt;&lt;/a&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;. As I noted in &lt;/font&gt;&lt;A href="http://blogs.msdn.com/jackgr/archive/2004/12/20/327726.aspx"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;my previous posting&lt;/font&gt;&lt;/a&gt;&lt;font face="Franklin Gothic Book"&gt;&lt;font size="2"&gt;, &lt;span style="mso-bidi-font-size: 10.0pt"&gt;the debate up to this point has been about the suitability of the Unified Modeling Language (UML) as a medium for model driven development.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;span style="mso-bidi-font-size: 10.0pt"&gt;&lt;font face="Franklin Gothic Book"&gt;&lt;font size="2"&gt;However, that is not really the question we should be debating.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;Instead of asking whether or not we should use our existing hammer (i.e., UML) to hit everything in sight, even things that don't look like nails, we should be asking what it is that we want to accomplish (i.e., model driven development), and what it looks like when done properly. Only after those questions have been answered is it appropriate to ask what languages, techniques, tools or other resources we should use.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;Why? Because we cannot evaluate the suitability of UML or any other technology apart from understanding what we hope to gain by using it and how we will use it to realize those gains. To make this point more bluntly, requirements should drive technology decisions, not the opposite.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;While this should be patently obvious, the debate about UML vs. DSLs continues to put the cart (i.e., modeling language technology) before the horse (i.e., requirements for model driven development). The debate should instead be about the methodologies that are proposing to use these modeling language technologies for model driven development, since they are both key sources and key repositories of those requirements.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;This connection between methodology and modeling language technology is no accident. There is a finite set of practices for which every technology is well suited. Conversely, no technology is well suited to all possible practices. If this debate is going to address the practical concerns of those who will use modeling languages to develop, test, deploy, operate and maintain software systems, it must therefore be broader than a debate about whether to use UML or domain specific languages (DSLs).&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;I am therefore refocusing the debate, or at least the part of it that weaves through&amp;nbsp;my blog,&amp;nbsp;to the issue of Software Factories vs. Model Driven Architecture.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;Grady took up this focus in his posting with his comments on Software Factories before turning to the discussion of&amp;nbsp;UML. Despite the inaccuracies in his characterization of Software Factories, which I answer below, I see his decision to bring methodology into the debate as an important step in the right direction. It was an acknowledgement that UML does not stand alone as a modeling language, but comes wrapped in an approach known as &lt;/font&gt;&lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0805353402/qid=1103686671/sr=8-3/ref=sr_8_xs_ap_i3_xgl14/104-6199956-6166305?v=glance&amp;amp;s=books&amp;amp;n=507846"&gt;&lt;font face="Franklin Gothic Book" color="#333399" size="2"&gt;Object Oriented Analysis and Design&lt;/font&gt;&lt;/a&gt;&lt;font face="Franklin Gothic Book" size="2"&gt; (OOA&amp;amp;D).&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;Indeed, as noted in my previous posting, the UML is a direct outgrowth of OOA&amp;amp;D, and is used primarily to support the practice of OOA&amp;amp;D, despite its apparent aspirations to parlay its undisputed success in that arena into a new career as the lingua franca for model driven development.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;Grady does a good job of explaining that software factories are *not* at all about stamping out endless copies of the same thing, as some have mistakenly claimed, but rather about automating rote and menial tasks, so that developers can get on with the abstract reasoning that humans do so much more effectively than tools.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;That said, he also makes some misstatements about software factories. For example, he quotes &lt;/font&gt;&lt;a title="http" href="http://www.atlsysguild.com/GuildSite/TDM/Tom_DeMarco.html"&gt;&lt;span style="COLOR: blue"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;Tom Demarco&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;’s writing about early experiments with software factories twenty years ago in &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:country-region w:st="on"&gt;&lt;st1:place w:st="on"&gt;Japan&lt;/st1:place&gt;&lt;/st1:country-region&gt;, asserting that software is a development activity, not a production activity, and that trying to make it a production activity produces bad software. With due respect for both Grady and &lt;st1:PersonName w:st="on"&gt;&lt;?xml:namespace prefix = st2 ns = "urn:schemas:contacts" /&gt;&lt;st2:GivenName w:st="on"&gt;Tom&lt;/st2:GivenName&gt;&lt;/st1:PersonName&gt;, whose collective works I greatly admire, I offer the following points in contradiction to Tom's initial assertion and to Grady's invocation of it.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt 0.25in; TEXT-INDENT: -0.2in; mso-list: l0 level1 lfo1; tab-stops: list .05in"&gt;&lt;span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font size="2"&gt;·&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;First,&amp;nbsp; production activities can yield good software, as well as bad software.&amp;nbsp;Why? Because software quality is not a function of production. Production in any industry is about copying masters. Apart from gross mistakes or media errors, copying software does not affect its quality. Copying a good master produces good replicas and copying a bad master produces bad replicas. The quality of software is therefore determined almost entirely by its design and implementation.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt 0.25in; TEXT-INDENT: -0.2in; mso-list: l0 level1 lfo1; tab-stops: list .05in"&gt;&lt;span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font size="2"&gt;·&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;Second, I find it surprising when people assert that production has no place in the software industry. It seems to me that producing CDs, DVDs, &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Franklin Gothic Book'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;downloads and other&amp;nbsp;copies&amp;nbsp;&lt;/span&gt;from masters is actually quite essential to the survival of the software industry. We certainly care deeply about production here at Microsoft. From this observation, I conclude that software is both a development activity and a production activity.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt 0.25in; TEXT-INDENT: -0.2in; mso-list: l0 level1 lfo1; tab-stops: list .05in"&gt;&lt;span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font size="2"&gt;·&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;Third, as should be clear by now, production is a red herring in this debate. The development process by which the masters are produced is the real concern. Indeed, in many situations, we might never produce any copies of a given master, or perhaps only a handful of copies.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt 0.25in; TEXT-INDENT: -0.2in; mso-list: l0 level1 lfo1; tab-stops: list .05in"&gt;&lt;span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font size="2"&gt;·&lt;/font&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;Fourth, those who have studied industrialization know that in addition to economies of scale in the production process, mature industries seek economies of scope in the development process, as explained in &lt;/font&gt;&lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0471202843/qid=1081905983/sr=8-2/ref=sr_8_xs_ap_i2_xgl14/104-6199956-6166305?v=glance&amp;amp;s=books&amp;amp;n=507846"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;the Software Factories book&lt;/font&gt;&lt;/a&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;, and in &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/architecture/overview/softwarefactories/http:/msdn.microsoft.com/architecture/overview/softwarefactories/default.aspx?pull=/library/en-us/dnmaj/html/aj3softfac.asp"&gt;&lt;font face="Franklin Gothic Book" color="#333399" size="2"&gt;my articles on MSDN&lt;/font&gt;&lt;/a&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;. Software factories, as we define them, are about economies of scope in the development process, not about economies of scale in the production process.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;Instead of repeating the lesson on economies of scale and scope from the book here, I will simply point out that software factories are about reusing patterns, frameworks, tools, templates, requirements, tests, instrumentation, process guidance, and many other assets used throughout the software life cycle,&amp;nbsp;in a systematic, rather than ad hoc fashion,&amp;nbsp;not about stamping out endless copies of the same thing.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;It is worth noting, as we do in the book,&amp;nbsp;that this is not really new.&amp;nbsp;We already reuse some assets systematically, such as &lt;st1:mswterms w:st="on"&gt;operating systems&lt;/st1:mswterms&gt;, web servers, class libraries and user interface designers. The goal of software factories is to radically increase the amount of systematic reuse in software development, so that much more of the application architecture can be implemented in the same way that UIs are implemented with UI builders, and data access is implemented using SQL engines. We are also interested in making it easier to work at higher levels of abstraction than we can with general purpose languages. For an interesting apologetic on this topic, see the recent &lt;/font&gt;&lt;a href="http://www.onboard.jetbrains.com/articles/04/10/lop/"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;article&lt;/font&gt;&lt;/a&gt;&lt;font face="Franklin Gothic Book" size="2"&gt; by &lt;/font&gt;&lt;a href="http://www.sergeydmitriev.com/blog/"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;Sergey Dmitriev&lt;/font&gt;&lt;/a&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;. I'll have more to say about what Sergey calls Language Oriented Programming in subsequent postings.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;The first volley on the topic of Software Factories vs. Model Driven Architecture, which Paul Ballard brought to my attention,&amp;nbsp;has already been fired by &lt;/font&gt;&lt;a href="http://www.theserverside.net/user/userthreads.tss?user_id=527573"&gt;&lt;font face="Franklin Gothic Book" color="#333399" size="2"&gt;Wim Bast&lt;/font&gt;&lt;/a&gt;&lt;font face="Franklin Gothic Book" size="2"&gt; in a &lt;/font&gt;&lt;a href="http://www.theserverside.net/news/thread.tss?thread_id=30082"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;news posting&lt;/font&gt;&lt;/a&gt;&lt;font face="Franklin Gothic Book" size="2"&gt; on &lt;/font&gt;&lt;a href="http://www.theserverside.net/"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;The Server Side .NET&lt;/font&gt;&lt;/a&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;, which I have answered there.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=346035" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jackgr/archive/tags/Software+Factories/default.aspx">Software Factories</category><category domain="http://blogs.msdn.com/jackgr/archive/tags/Domain+Specific+Languages/default.aspx">Domain Specific Languages</category></item><item><title>Microsoft and Domain Specific Languages, Reprise</title><link>http://blogs.msdn.com/jackgr/archive/2004/12/20/327726.aspx</link><pubDate>Tue, 21 Dec 2004 05:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:327726</guid><dc:creator>Jack Greenfield</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.msdn.com/jackgr/comments/327726.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jackgr/commentrss.aspx?PostID=327726</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jackgr/rsscomments.aspx?PostID=327726</wfw:comment><description>&lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;Two weeks ago, &lt;span class="MsoHyperlink"&gt;&lt;a href="http://www-106.ibm.com/developerworks/blogs/dw_blog.jspa?blog=317&amp;amp;roll=0"&gt;Grady Booch&lt;/a&gt;&lt;/span&gt; posted a &lt;span class="MsoHyperlink"&gt;&lt;a href="http://www-106.ibm.com/developerworks/blogs/dw_blog_comments.jspa?blog=317&amp;amp;entry=67637&amp;amp;ca=dgr-lnxw03MSrejectsUML"&gt;blog entry&lt;/a&gt;&lt;/span&gt; titled “Microsoft and Domain Specific Languages”. The posting is part of a running debate between Grady, and my colleagues at Microsoft &lt;span class="MsoHyperlink"&gt;&lt;A href="http://blogs.msdn.com/stevecook"&gt;Steve Cook&lt;/a&gt;&lt;/span&gt; and &lt;span class="MsoHyperlink"&gt;&lt;A href="http://blogs.msdn.com/alan_cameron_wills"&gt;Alan Wills&lt;/a&gt;&lt;/span&gt;.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;While there are several points in the posting on which Grady and I disagree, which I will address over the course of the next few postings, there are also several points on which we agree. In particular, we share the conviction that packaging knowledge for reuse in patterns, languages, frameworks, tools and other form factors is “the right next stage in cutting the Gordian knot of software”. You can read about what we think is required to accelerate this type of knowledge reuse &lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Franklin Gothic Book'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;in &lt;span class="MsoHyperlink"&gt;&lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0471202843/qid=1081905983/sr=8-2/ref=sr_8_xs_ap_i2_xgl14/104-1260554-5554356?v=glance&amp;amp;s=books&amp;amp;n=507846"&gt;the Software Factories book&lt;/a&gt;&lt;/span&gt;, and about &lt;/span&gt;Microsoft’s work on patterns, led by David Trowbridge and &lt;span class="MsoHyperlink"&gt;&lt;a href="http://c2.com/cgi/wiki?WardCunningham"&gt;Ward Cunningham&lt;/a&gt;&lt;/span&gt;, &lt;span class="MsoHyperlink"&gt;&lt;a href="http://www.microsoft.com/resources/practices/patterns.mspx"&gt;here&lt;/a&gt;&lt;/span&gt; and &lt;span class="MsoHyperlink"&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/MSpatterns.asp"&gt;here&lt;/a&gt;&lt;/span&gt;.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;That said, the devil is in the details of how to automate more of the software life cycle using metadata captured by models, a goal often described as model driven development. At least that’s the goal here at Microsoft. &lt;/font&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;Of course, that is not the goal for which UML was developed. It was developed to provide a common notation for the practice of object oriented analysis and design (OOA&amp;amp;D), as described &lt;span class="MsoHyperlink"&gt;&lt;a href="http://pigseye.kennesaw.edu/~dbraun/csis4650/A&amp;amp;D/UML_tutorial/history_of_uml.htm"&gt;here&lt;/a&gt;&lt;/span&gt;.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;So, is it fair to judge the UML on how well it measures up as a medium for model driven development? Well, one might not think so, except for the fact that it is being promoted by a standards organization (i.e., the &lt;span class="MsoHyperlink"&gt;&lt;a href="http://www.omg.org/gettingstarted/gettingstartedindex.htm"&gt;Object Management Group&lt;/a&gt;&lt;/span&gt;), not only as A medium, but as THE (official, sanctioned, approved, acceptable and appropriate) medium. &lt;/font&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;The implication is that the UML has already been demonstrated to be the most appropriate medium for model driven development, and that the burden of proof falls not to the UML, nor to its promoters, but to those who would use some other medium.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;This debate, then, is about the suitability of the Unified Modeling Language (UML) as a medium for developing source artifacts from which running systems are created, and for capturing information about those systems (i.e., metadata) that can be used to automate activities across the software life cycle.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;The first point in Grady’s posting on which we disagree is his claim that Microsoft has rejected the UML in favor of proprietary domain-specific languages. Of course, this is not an accurate description of our position, which we have stated publicly on many occasions. &lt;/font&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;We have not rejected the UML. Rather, we agree with Grady that UML has indeed proven to be very useful as a repository for notational conventions that support a range of modeling styles. There is no question that this was a valuable contribution that significantly advanced the practice of modeling, as traditionally understood, where the focus is primarily on creating documentation that describes system structure or behavior.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;What we have rejected is the claim that the UML is the most appropriate medium for model driven development, where models are used as source artifacts that are compiled, interpreted, or otherwise used to automate software life cycle activities. &lt;/font&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;On this point, we agree&amp;nbsp;with Grady that UML is not appropriate for all purposes. After all, it is a &lt;i style="mso-bidi-font-style: normal"&gt;unified&lt;/i&gt; modeling language, so called because it was developed to integrate notational styles used by multiple methodologists, not a &lt;i style="mso-bidi-font-style: normal"&gt;universal&lt;/i&gt; language that can solve all problems.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;Clearly, developing, testing, deploying, managing and maintaining software are quite different than creating documentation. One obvious difference is that models used for development must have semantics defined precisely enough to support computation, not just human interpretation. A second is that models used for automation must fit well into the software development process, and the file oriented world in which it is practiced.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;Perhaps, instead of trying to bend an existing language designed for designed for creating documentation to the duties of this new and promising approach to software development, we would do better to come at the question from the opposite direction, and ask what the most appropriate language or languages would look like. &lt;/font&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;On this point, we agree with &lt;span class="MsoHyperlink"&gt;&lt;a href="http://www.martinfowler.com/"&gt;Martin Fowler&lt;/a&gt;&lt;/span&gt;, who expresses skepticism about attempts to use the UML as a language for model driven development &lt;span class="MsoHyperlink"&gt;&lt;a href="http://martinfowler.com/bliki/ModelDrivenArchitecture.html"&gt;here&lt;/a&gt;&lt;/span&gt;, and with &lt;span class="MsoHyperlink"&gt;&lt;a href="http://www.davethomas.net/"&gt;Dave Thomas&lt;/a&gt;&lt;/span&gt;, who wrote &lt;span class="MsoHyperlink"&gt;&lt;a href="http://martinfowler.com/ieeeSoftware/mda-thomas.pdf"&gt;here&lt;/a&gt;&lt;/span&gt; about issues with UML and its use in the &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:stockticker w:st="on"&gt;OMG&lt;/st1:stockticker&gt; branded methodology called &lt;span class="MsoHyperlink"&gt;&lt;a href="http://www.omg.org/mda/"&gt;Model Driven Architecture&lt;/a&gt;&lt;/span&gt;.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoBodyText" style="MARGIN: 0in 0in 6pt"&gt;&lt;font face="Franklin Gothic Book" size="2"&gt;I’ll have a lot more to say about this topic, and about the broader question of how to practice model driven development effectively in subsequent postings.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=327726" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jackgr/archive/tags/Software+Factories/default.aspx">Software Factories</category><category domain="http://blogs.msdn.com/jackgr/archive/tags/Domain+Specific+Languages/default.aspx">Domain Specific Languages</category></item></channel></rss>