<?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>Wojtek's Blog : Software Factories</title><link>http://blogs.msdn.com/wojtek/archive/tags/Software+Factories/default.aspx</link><description>Tags: Software Factories</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Web Service Software Factory; the Modeling Edition</title><link>http://blogs.msdn.com/wojtek/archive/2007/11/17/web-service-software-factory-the-modeling-edition.aspx</link><pubDate>Sun, 18 Nov 2007 10:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6357027</guid><dc:creator>Wojtek Kozaczynski</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wojtek/comments/6357027.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wojtek/commentrss.aspx?PostID=6357027</wfw:commentRss><description>&lt;P&gt;Last week we (the Microsoft &lt;EM&gt;patterns &amp;amp; practices team &lt;/EM&gt;) released the Web Service Software Factory (or WSSF), the Modeling Edition (&lt;A href="http://msdn2.microsoft.com/en-us/library/bb931187.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb931187.aspx"&gt;WSSF MD&lt;/A&gt;). When I looked back I realized that this factory is a cumulative result of an interesting chain of developments. I don't know how soon &lt;EM&gt;patterns &amp;amp; practices&lt;/EM&gt; will build another factory like this one and when it does, I probably will not be participating in that work. So I thought it would be nice to recount those developments before we all forget about them. The diagram below should help. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wojtek/WindowsLiveWriter/WebServiceSoftwareFactorytheModelingEdit_12DBA/HistoryOfWSSF_1.jpg" mce_href="http://blogs.msdn.com/blogfiles/wojtek/WindowsLiveWriter/WebServiceSoftwareFactorytheModelingEdit_12DBA/HistoryOfWSSF_1.jpg"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=302 alt=HistoryOfWSSF src="http://blogs.msdn.com/blogfiles/wojtek/WindowsLiveWriter/WebServiceSoftwareFactorytheModelingEdit_12DBA/HistoryOfWSSF_thumb_1.jpg" width=624 border=0 mce_src="http://blogs.msdn.com/blogfiles/wojtek/WindowsLiveWriter/WebServiceSoftwareFactorytheModelingEdit_12DBA/HistoryOfWSSF_thumb_1.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;The story starts almost 3 years ago when David Trowbridge and his team were working on the Integration Patterns (&lt;A href="http://msdn2.microsoft.com/en-us/library/ms978729.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms978729.aspx"&gt;Integration Patterns&lt;/A&gt;) and Daniel Cazullino (&lt;A class="" href="http://www.clariusconsulting.net/kzu/" mce_href="http://www.clariusconsulting.net/kzu/"&gt;Kzu&lt;/A&gt;), Oscar Calvo (&lt;A href="http://blogs.artinsoft.net/ocalvo/" mce_href="http://blogs.artinsoft.net/ocalvo/"&gt;Oscar&lt;/A&gt;), Tom Hollander (&lt;A href="http://blogs.msdn.com/tomholl/default.aspx" mce_href="http://blogs.msdn.com/tomholl/default.aspx"&gt;Tom&lt;/A&gt;) and I were working of GAX and GET. I was arguing with David about how to best package guidance in Visual Studio. He finally got my point, looked at me and said: "So you want to build toolkits for architecture baselines." This is how the term Baseline Architecture Toolkit (or BAT for short) was born and this is the term Eugenio Pace (&lt;A href="http://blogs.msdn.com/eugeniop/" mce_href="http://blogs.msdn.com/eugeniop/"&gt;Eugenio&lt;/A&gt;) and I used when we started developing what later became the Smart Client Software Factory. We changed the name when Tom and I agreed that there were more similarities between BATs and Software Factories described by Jack Greenfield (&lt;A href="http://blogs.msdn.com/jackgr/" mce_href="http://blogs.msdn.com/jackgr/"&gt;Jack&lt;/A&gt;) than differences. We understood that there were differences, but our thinking was that it would be better to have one term, not two. &lt;/P&gt;
&lt;P&gt;At the same time Stuart Kent (&lt;A href="http://blogs.msdn.com/stuart_kent/" mce_href="http://blogs.msdn.com/stuart_kent/"&gt;Stuart&lt;/A&gt;), Steve Cook (&lt;A href="http://blogs.msdn.com/stevecook/" mce_href="http://blogs.msdn.com/stevecook/"&gt;Steve&lt;/A&gt;) and Gareth Jones (&lt;A href="http://blogs.msdn.com/garethj/" mce_href="http://blogs.msdn.com/garethj/"&gt;Gareth&lt;/A&gt;) were busy developing the Domain Specific Languages (DSL) SDK (&lt;A href="http://msdn2.microsoft.com/en-us/vstudio/aa718368.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/vstudio/aa718368.aspx"&gt;DSL Tools&lt;/A&gt;). We cooperated with them very closely because GAX and DSL SDK share the code templating engine. &lt;/P&gt;
&lt;P&gt;The Smart Client Software Factory is what we call a wizard-driven factory, that uses only GAX. It was followed by two versions of GAX-based Web Service Software Factory. This effort was led by Jason Hogg (&lt;A href="http://blogs.msdn.com/thehoggblog/" target=_blank mce_href="http://blogs.msdn.com/thehoggblog/"&gt;Jason&lt;/A&gt;) and Don Smith (&lt;A href="http://blogs.msdn.com/donsmith/" target=_blank mce_href="http://blogs.msdn.com/donsmith/"&gt;Don&lt;/A&gt;). &lt;/P&gt;
&lt;P&gt;At about the the same time two factory efforts started that used both GAX and DLSs. The first one was Mauro Regio's (&lt;A href="http://blogs.msdn.com/mauroregio/" target=_blank mce_href="http://blogs.msdn.com/mauroregio/"&gt;Mauro&lt;/A&gt;) HL7 Factory (&lt;A href="http://softwarefactories.com/workshops/OOPSLA-2005/Papers/Regio.pdf" target=_blank mce_href="http://softwarefactories.com/workshops/OOPSLA-2005/Papers/Regio.pdf"&gt;HL7 SF&lt;/A&gt;) and the second was Jezz Santos' (&lt;A href="http://blogs.msdn.com/jezzsa/" target=_blank mce_href="http://blogs.msdn.com/jezzsa/"&gt;Jezz&lt;/A&gt;) EFx Software Factory (&lt;A href="http://en.wikipedia.org/wiki/EFx_Factory" target=_blank mce_href="http://en.wikipedia.org/wiki/EFx_Factory"&gt;EFx SF&lt;/A&gt;). Since Mauro's factory uses a number of interacting DSL designers, he was the first one who was really faced with the model integration problem. Daniel Cazzulino was one of the HL7 factory developers and from what I recall, he and Victore Aprea (&lt;A href="http://www.clariusconsulting.net/blogs/vga/" target=_blank mce_href="http://www.clariusconsulting.net/blogs/vga/"&gt;vga&lt;/A&gt;) developed the first version of the Designer Integration Service, which is a Visual Studio service that can create, resolve and navigate cross-model links. Jezz, on the other hand, was the first who separated technology-independent models from technology-specific extensions. &lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'"&gt;We reused his experiences when creating the Web Service factory model extension framework.&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the meantime the second version of Web Service Software Factory was very well received, but the overwhelming community demand was to simplify its user experience by introducing models. So in February we started the development of the modeling addition, and it was finished in October. The factory uses three types of models to generate service code &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Service Contract models&lt;/LI&gt;
&lt;LI&gt;Data Contract models, and &lt;/LI&gt;
&lt;LI&gt;Hosting models. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The factory uses GAX, DSL SDK and a modified version of the DIS. It also introduces model, code generation, and validation extensions of the DSL toolkit. It is the first fully articulated, model-driven factory (automation, reference implementations, documentation, etc.) released by &lt;EM&gt;patterns &amp;amp; practices&lt;/EM&gt;. &lt;/P&gt;
&lt;P&gt;Wojtek &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6357027" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wojtek/archive/tags/Software+Factories/default.aspx">Software Factories</category></item><item><title>The First Three Software Factories From p&amp;p</title><link>http://blogs.msdn.com/wojtek/archive/2006/08/06/the-first-three-software-factories-from-p-p.aspx</link><pubDate>Mon, 07 Aug 2006 00:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:690319</guid><dc:creator>Wojtek Kozaczynski</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wojtek/comments/690319.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wojtek/commentrss.aspx?PostID=690319</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial size=2&gt;You may have noticed that in the span on one month the patterns&amp;amp;practices group (&lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/practices/" mce_href="http://msdn.microsoft.com/practices/"&gt;&lt;FONT face=Arial size=2&gt;p&amp;amp;p&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;) released three software factories. &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;/SPAN&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in" type=disc&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial size=2&gt;The first out was the Smart Client Software Factory (&lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/scsflp.asp" mce_href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/scsflp.asp"&gt;&lt;FONT face=Arial size=2&gt;SCSF&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;). It is a factory for developing WinForm-based, composable client applications. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial size=2&gt;The second out of the gate was the Mobile Client Software Factory (&lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/mcsflp.asp" mce_href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/mcsflp.asp"&gt;&lt;FONT face=Arial size=2&gt;MCSF&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;) for developing applications where the client is running on mobile devices such as PDAs and smart phones. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial size=2&gt;The third was Web Service Software Factory (&lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/servicefactory.asp" mce_href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/servicefactory.asp"&gt;&lt;FONT face=Arial size=2&gt;WSSF&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;) for developing distributed applications communicating via Web services. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial size=2&gt;If you take a look at the three factories you will find that they are quire similar in the way they are structured, documented and built. But upon closer inspection you will also find that they are not strictly derived from the same software factory template (called software factory schema, see &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/jezzsa/archive/2006/05/27/608890.aspx" mce_href="http://blogs.msdn.com/jezzsa/archive/2006/05/27/608890.aspx"&gt;&lt;FONT face=Arial size=2&gt;Jezz’s&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt; blog for a summary). &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;o:p&gt;&lt;FONT face=Arial size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial size=2&gt;This is going to change for the better moving forward. A few of us at Microsoft have joined forces to work on a common schema and the Visual Studio factory authoring tools. The group now includes &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/jackgr/" mce_href="http://blogs.msdn.com/jackgr/"&gt;&lt;FONT face=Arial size=2&gt;Jack Greenfield&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial size=2&gt;, who started it all :-)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial&gt;, &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;A href="http://blogs.msdn.com/tomholl/" mce_href="http://blogs.msdn.com/tomholl/"&gt;&lt;FONT face=Arial&gt;Tom Hollander&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;, who had his fingers in the two out of three p&amp;amp;p factories, &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/architecture/Modeling/" mce_href="http://msdn.microsoft.com/architecture/Modeling/"&gt;&lt;FONT face=Arial&gt;Mauro Regio&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt;, who led the development of the HL7 software factory , &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:PersonName w:st="on"&gt;Jezz Santos&lt;/st1:PersonName&gt; mentioned already, &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/stevecook/" mce_href="http://blogs.msdn.com/stevecook/"&gt;&lt;FONT face=Arial&gt;Steve Cook&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Arial&gt; and &lt;st1:PersonName w:st="on"&gt;&lt;A href="http://blogs.msdn.com/stuart_kent/" mce_href="http://blogs.msdn.com/stuart_kent/"&gt;Stuart Kent&lt;/A&gt;&lt;/st1:PersonName&gt; who gave us the DSL tools, and your’s truly, an accomplice to many of the above crimes. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;o:p&gt;&lt;FONT face=Arial size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;I am hoping we will be able to share the early results of our work with the community soon. If you are interested in contributing please ping us.&amp;nbsp;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;o:p&gt;&lt;FONT face=Arial size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Arial Narrow'"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=2&gt;-- &lt;EM&gt;Wojtek&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=690319" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wojtek/archive/tags/Software+Factories/default.aspx">Software Factories</category></item></channel></rss>