<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
	
	<channel>
		<title>The Enterprise Architect</title>
		<link>http://www.theenterprisearchitect.eu</link>
                
		<description>building an agile enterprise</description>
		<language>en</language>
		<managingEditor>jdenhaan@gmail.com (Johan den Haan)</managingEditor>
                <copyright>Copyright 2012</copyright>
		<generator>Pivot Pivot - 1.40.4: 'Dreadwind'</generator>
		<pubDate>Wed, 18 Apr 2012 13:31:55 +0200</pubDate>
		<ttl>60</ttl>
		
		
		
		
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TheEnterpriseArchitect" /><feedburner:info uri="theenterprisearchitect" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>TheEnterpriseArchitect</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
			<title>18 lessons learned during the 6 year roller-coaster ride called Mendix</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/zNH1JqcQ7Cs/18-lessons-learned-during-the-6-year-roller-coaster-ride-called-mendix</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2012/04/14/18-lessons-learned-during-the-6-year-roller-coaster-ride-called-mendix#comm</comments>
                        <description>&lt;p&gt;
Last week I gave a talk about the lessons learned during the exponential growth of our company the last six years. I was invited to to talk at the &lt;a href="http://www.meetup.com/Appsterdam/events/50712922/" target="_blank" title="Appsterdam meetup Delft"&gt;Appsterdam meetup in Delft&lt;/a&gt; about &amp;quot;growing pains&amp;quot;. In other words: what lessons did we learn when our company grew from 3 to 100 employees. I enjoyed the preparations as much as the actual talk, as it forced me to step back and think about the things we did and did not last years. 
&lt;/p&gt;
&lt;p&gt;
I covered lessons learned in four categories: company, culture, product development, and product evolution. Attempting to cover all these subject automatically means that you stay at a high level. However, I think I was able to share some valuable experiences from the trenches. It will be interesting to dive deeper in the separate categories in the future! 
&lt;/p&gt;
&lt;p&gt;
The slides:&lt;/p&gt;&lt;div style="width:425px" id="__ss_12540672"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a target="_blank" href="http://www.slideshare.net/JohanDenHaan/app-delivery-platformasaservice-how-we-revolutionized-the-app-development-market" title="App Delivery Platform-as-a-Service - How we revolutionized the app development market"&gt;App Delivery Platform-as-a-Service - How we revolutionized the app development market&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse12540672" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=2012-04appsterdam-120414133654-phpapp02&amp;stripped_title=app-delivery-platformasaservice-how-we-revolutionized-the-app-development-market&amp;userName=JohanDenHaan" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;param name="wmode" value="transparent"/&gt;&lt;embed name="__sse12540672" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=2012-04appsterdam-120414133654-phpapp02&amp;stripped_title=app-delivery-platformasaservice-how-we-revolutionized-the-app-development-market&amp;userName=JohanDenHaan" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a target="_blank" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a target="_blank" href="http://www.slideshare.net/JohanDenHaan"&gt;Johan den Haan&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;
Do you recognize these lessons? What are your most important lessons learned? If you have questions, don't hesitate to ask them in the comments!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=zNH1JqcQ7Cs:_FlURcfjFtE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=zNH1JqcQ7Cs:_FlURcfjFtE:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=zNH1JqcQ7Cs:_FlURcfjFtE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=zNH1JqcQ7Cs:_FlURcfjFtE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=zNH1JqcQ7Cs:_FlURcfjFtE:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=zNH1JqcQ7Cs:_FlURcfjFtE:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=zNH1JqcQ7Cs:_FlURcfjFtE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=zNH1JqcQ7Cs:_FlURcfjFtE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=zNH1JqcQ7Cs:_FlURcfjFtE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/zNH1JqcQ7Cs" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">128@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Common</category>
			<pubDate>Sat, 14 Apr 2012 20:29:00 +0200</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2012/04/14/18-lessons-learned-during-the-6-year-roller-coaster-ride-called-mendix</feedburner:origLink></item>
		
		
		
		<item>
			<title>Will App Delivery PaaS make cloud more relevant to the business?</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/vKL63UM9wLM/will-app-delivery-paas-make-cloud-more-relevant-to-the-business</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2012/03/16/will-app-delivery-paas-make-cloud-more-relevant-to-the-business#comm</comments>
                        <description>&lt;p&gt;
I finished my last blog post by &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2012/03/01/every-platform-will-evolve-into-a-platform-as-a-service-and-the-resulting-subcategory-explosion" title="App Delivery PaaS"&gt;introducing a Platform-as-a-Service subcategory called &amp;quot;&lt;em&gt;Application Delivery Platform-as-a-Service&lt;/em&gt;&amp;quot;&lt;/a&gt; as a way to distinguish platforms that focus on improving the entire application delivery lifecycle (and not just application development or deployment). I would like to clarify my views on Application Delivery and PaaS a bit more. My first attempt has been published on InfoQ yesterday. 
&lt;/p&gt;
&lt;p&gt;
The short summary: business agility is key, so focus on improving the app delivery lifecycle for maximum business value and cloud will fit in naturally (as well as agile software development, Model-Driven Development, and social collaboration).&lt;/p&gt;&lt;h3&gt;&lt;a href="http://www.infoq.com/articles/app_delivery_as_a_service" target="_blank" title="The Need to Focus on App Delivery Lifecycle in PaaS"&gt;The Need to Focus on App Delivery Lifecycle in PaaS&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
	&lt;em&gt;Cloud is the next best thing since sliced bread, isn't 
	it? It increases responsiveness, gives a business agility, and it 
	enables new business models. Well, it seems not. Nearly three-quarters 
	(74 per cent) of UK IT managers &lt;a href="http://www.computing.co.uk/ctg/news/2123031/cloud-no-relevance-quarters-managers" target="_blank" title="cloud survey"&gt;think that cloud computing has no relevance to their business&lt;/a&gt;.
	Is it fear? Are security and privacy concerns the main barriers for 
	cloud adoption as stems from most related surveys? Or should we ask the 
	CEO instead of the CIO?&lt;/em&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;Apparently there is a mismatch between expectations (or 
	promises) around cloud and how a large group of people perceive it. My 
	conclusion? We should just stop talking about cloud. It doesn't help 
	your business, cloud is irrelevant! Let's explore why.&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;a href="http://www.infoq.com/articles/app_delivery_as_a_service" target="_blank" title="App Delivery focus needed in PaaS"&gt;Read the full article&lt;/a&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vKL63UM9wLM:gFbeW8Kn_Ak:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vKL63UM9wLM:gFbeW8Kn_Ak:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vKL63UM9wLM:gFbeW8Kn_Ak:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=vKL63UM9wLM:gFbeW8Kn_Ak:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vKL63UM9wLM:gFbeW8Kn_Ak:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=vKL63UM9wLM:gFbeW8Kn_Ak:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vKL63UM9wLM:gFbeW8Kn_Ak:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=vKL63UM9wLM:gFbeW8Kn_Ak:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=vKL63UM9wLM:gFbeW8Kn_Ak:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/vKL63UM9wLM" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">127@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Software Engineering</category>
			<pubDate>Fri, 16 Mar 2012 18:35:00 +0200</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2012/03/16/will-app-delivery-paas-make-cloud-more-relevant-to-the-business</feedburner:origLink></item>
		
		
		
		<item>
			<title>Every platform will evolve into a Platform-as-a-Service (and the resulting subcategory explosion)</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/sx2_8ew074M/every-platform-will-evolve-into-a-platform-as-a-service-and-the-resulting-subcategory-explosion</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2012/03/01/every-platform-will-evolve-into-a-platform-as-a-service-and-the-resulting-subcategory-explosion#comm</comments>
                        <description>&lt;p&gt;
&lt;img src="http://static.tridesign.nl/images/service.jpg" style="float:right;margin-left:10px;margin-bottom:5px;border:0px solid" title="as-a-Service" alt="as-a-Service" class="pivot-image" /&gt;Platform-as-a-Service (PaaS)... I guess you heard this term quite a bit last months. I wrote about PaaS earlier when arguing that &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2010/04/27/multi-tenancy-and-model-driven-engineering-necessary-assets-of-a-platform-as-a-service" title="Model Driven Engineering and Platform-as-a-Service"&gt;Model-Driven Engineering is essential for the success of a PaaS&lt;/a&gt; and when &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/07/19/the-platform-as-a-service-for-the-agile-enterprise" title="The Platform-as-a-Service for the Agile Enterprise"&gt;I announced the new major release of our platform&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
If you look at the industry perception of PaaS the main definition is something like: it is a public cloud platform where you put code in and get a service out. This is such a broad perception that it is no surprise that new subcategories are emerging every day. I will contribute to this movement by introducing a new one too...&lt;/p&gt;&lt;h3&gt;PaaS is a fuzzy term, some subcategories &lt;/h3&gt;
&lt;p&gt;
Let's first look at some example PaaS subcategories that have been introduced lately. Gartner, for example, sees a main dinstinction between Application Platform-as-a-Service (aPaaS) and Integration Platform-as-a-Service (iPaaS). I think you can imagine what the focus of each of them is. Gartner defines aPaaS as follows:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;&amp;quot;Highly productive, easy to learn and use development environment that delivers business applications that are customizable, changeable, capable of implementing serious business functionality and, when deployed, offered with massive scalability, high-end enterprise-class (and eyond) performance and reliability, supporting massive amounts of data, all at SMB prices.&amp;quot;&lt;/em&gt; 
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
One could argue that to deliver enterprise-class applications implementing serious business functionality implies middleware and integration capabilities, but I can see the difference between delivering an application server as-a-Service and an ESB as-a-Service.
&lt;/p&gt;
&lt;p&gt;
Other, more domain-specific, species I stumbled upon recently are pPaaS and bpmPaaS. A Portal Platform-as-a-Service and a Business Process Management Platform-as-a-Service.
&lt;/p&gt;
&lt;p&gt;
I think we can agree on the fact that every type of platform can have a cloud twin and thus result in a PaaS subcategory... 
&lt;/p&gt;
&lt;h3&gt;Let's forget the public cloud as the main requirement for a PaaS &lt;br /&gt;
&lt;/h3&gt;
&lt;p&gt;
However, is being a public cloud platform the main differentiator between a &amp;quot;platform&amp;quot; and a &amp;quot;Platform-as-a-Service&amp;quot;? In my opinion PaaS is all about abstracting (or automating) away from underlying technology layers. You can just start using the services of the platform without bothering about the configuration and maintenance of the underlying infrastructure, operating system, middleware, and runtimes.
&lt;/p&gt;
&lt;p&gt;
It all started with public cloud providers delivering such platforms as a service, but that doesn't mean it is limited to such providers. In my opinion it doesn't matter where the infrastructure is. PaaS can be very usefull too if it runs on-premise or maybe in a hybrid infrastructure approach. Just how I think the open source Infrastructure-as-a-Service software project &lt;a href="http://openstack.org/" target="_blank" title="OpenStack"&gt;OpenStack&lt;/a&gt; will more and more be used in the near future to build private and on-premise cloud infrastructures.
&lt;/p&gt;
&lt;h3&gt;Why every platform will evolve into a PaaS&lt;/h3&gt;
&lt;p&gt;
I think PaaS is another manifestation of what we always strive for in computer science: a clean separation of concerns. Let the platform builders bother about how their platform plays well with the infrastructure, OS, and middleware. Let the users of the platform focus on delivering solutions on top of the platform. There should be a clear contract between de platform and the software running on it, which specifies the language a user can use to define the solution. As IaaS is gaining ground in private datacenters near you, I strongly believe that existing platforms will evolve into a PaaS too. 
&lt;/p&gt;
&lt;h3&gt;Introducing a new subcategory &lt;br /&gt;
&lt;/h3&gt;
&lt;p&gt;
I just don't want to disappoint you by stopping here. I think there are some important things missing in the current industry views on PaaS. If we want to abstract away from the lower level details and move our focus to things like application development we need to go futher than just the development level. What a business needs are apps that perfectly fit in the business. These apps need to have a short time-to-market and have to be flexible to evolve along with the business. This means the full lifecycle of such applications, from the initial idea to first deployment, and from that first deployment to long-term evolution, needs to be as agile as possible.
&lt;/p&gt;
&lt;p&gt;
I don't think we can reach this with traditional development approaches. Why not abstract away from low-level code in the same way as PaaS abstracts away from infrastructure by &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/04/16/why-arent-we-all-doing-model-driven-development-yet" title="Why not doing Model Driven Development?"&gt;introducing visual modeling&lt;/a&gt;? And if our focus should be on apps that &lt;em&gt;fit&lt;/em&gt; the business, we need more focus on collaboration &lt;em&gt;with&lt;/em&gt; the business. Hence, we do not only need a development and deployment platform. We also need a social collaboration platform.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Ideally a Platform-as-a-Service should support the &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/07/19/the-platform-as-a-service-for-the-agile-enterprise" title="PaaS with full application lifecycle support"&gt;full application lifecycle&lt;/a&gt;. It's main goal shouldn't be to support development, it's main goal should be to deliver applications that fit the business. From capturing requirements to developing and deploying apps, as well as gathering end-user feedback.
&lt;/p&gt;
&lt;p&gt;
Hence, my PaaS subcategory input: &lt;strong&gt;Application Delivery Platform-as-a-Service&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
Photo by &lt;a href="http://www.flickr.com/photos/25229906@N00/5682477425/" target="_blank" title="Photo"&gt;Robby Virus&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=sx2_8ew074M:2Lfr-zDf4_8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=sx2_8ew074M:2Lfr-zDf4_8:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=sx2_8ew074M:2Lfr-zDf4_8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=sx2_8ew074M:2Lfr-zDf4_8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=sx2_8ew074M:2Lfr-zDf4_8:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=sx2_8ew074M:2Lfr-zDf4_8:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=sx2_8ew074M:2Lfr-zDf4_8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=sx2_8ew074M:2Lfr-zDf4_8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=sx2_8ew074M:2Lfr-zDf4_8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/sx2_8ew074M" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">126@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Common</category>
			<pubDate>Thu, 01 Mar 2012 09:44:00 +0200</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2012/03/01/every-platform-will-evolve-into-a-platform-as-a-service-and-the-resulting-subcategory-explosion</feedburner:origLink></item>
		
		
		
		<item>
			<title>Blog overview 2011</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/GGIYYgIHy5E/blog-overview-2011</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2012/01/09/blog-overview-2011#comm</comments>
                        <description>&lt;p&gt;
In good tradition hereby the blog overview of last year. A bit late this time, but for good reasons (see the overview of the month december).
&lt;/p&gt;
&lt;p&gt;
This year I expect to write a bit more. The subjects will stay the same, and as you could sense from the posts of last year my focus will be on all phases of the application lifecycle. So, Model Driven Development will still get attention, but also cloud and Platform-as-a-Service, as well as requirements capturing, social, and agile. As my first (and only) post with video material was the second popular post last year, I will try to post more video content this year.&lt;/p&gt;&lt;h3&gt;Top 10 posts&lt;/h3&gt;
&lt;p&gt;
Based on traffic, these are the top 10 posts in 2011: &amp;nbsp;
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/03/31/5-types-of-model-driven-software-development" title="5 types of Model Driven Software Development"&gt;5 types of Model Driven Software Development&lt;/a&gt; &lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/01/25/why-there-is-no-future-for-model-driven-development" title="Why there is no future for Model Driven Development"&gt;Why there is no future for Model Driven Development &lt;br /&gt;
	&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/05/06/dsl-development-7-recommendations-for-domain-specific-language-design-based-on-domain-driven-design" title="DSL development: 7 recommendations for Domain Specific Language design based on Domain-Driven Design"&gt;DSL development: 7 recommendations for Domain Specific Language design based on Domain-Driven Design &lt;br /&gt;
	&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/06/25/8-reasons-why-model-driven-development-is-dangerous" title="8 reasons why Model-Driven Development is dangerous"&gt;8 reasons why Model-Driven Development is dangerous&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/04/16/why-arenat-we-all-doing-model-driven-development-yet" title="Why aren&amp;rsquo;t we all doing Model Driven Development yet"&gt;Why aren't we all doing Model Driven Development yet?&lt;/a&gt; &lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2007/05/15/architecture-a-definition" title="Architecture, a definition"&gt;Architecture, a definition&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/11/25/15-reasons-why-you-should-start-using-model-driven-development" title="15 reasons why you should start using Model Driven Development"&gt;15 reasons why you should start using Model Driven Development&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/01/15/mde---model-driven-engineering----reference-guide" title="MDE - Model Driven Engineering - reference guide"&gt;MDE - Model Driven Engineering - reference guide&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/05/26/language-workbench-competition-2011" title="Language Workbench Competition 2011"&gt;Language Workbench Competition 2011&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/03/11/what-every-architect-should-now-know-about-the-service-component-architecture-sca" title="What every architect should now know about the Service Component Architecture (SCA)"&gt;What every architect should now know about the Service Component Architecture (SCA)&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
I didn't take the time of publishing into account when looking at the statistics. So, articles posted more recently are less likely to show up in the top 10, unless they are very popular. From that perspective number 2 is notable.
&lt;/p&gt;
&lt;h3&gt;Top 10 search terms&lt;/h3&gt;
&lt;p&gt;
These are the top 10 search terms people have use when visiting my blog via a search engine:&amp;nbsp; 
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;model driven development&lt;/li&gt;
	&lt;li&gt;model driven engineering&lt;/li&gt;
	&lt;li&gt;enterprise architect&lt;/li&gt;
	&lt;li&gt;architecture vs engineering&lt;/li&gt;
	&lt;li&gt;domain specific language&lt;/li&gt;
	&lt;li&gt;soa framework&lt;/li&gt;
	&lt;li&gt;model driven software development&lt;/li&gt;
	&lt;li&gt;service component architecture&lt;/li&gt;
	&lt;li&gt;architecture definition&lt;/li&gt;
	&lt;li&gt;service identification&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Blog summary for 2011&lt;/h3&gt;
&lt;p&gt;
&lt;strong&gt;January&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/01/12/interview-on-pattern-based-engineering" title="Interview on Pattern Based Engineering"&gt;Interview on Pattern Based Engineering&lt;/a&gt;: Lee Ackerman, asked me a couple of questions about the use of patterns at Mendix and the relation with Model-Driven Development.&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/01/25/why-there-is-no-future-for-model-driven-development" title="Why there is no future for Model Driven Development"&gt;Why there is no future for Model Driven Development&lt;/a&gt;: this post was based on a talk I did in Nantes (France) and includes the slides and a full video of my talk. The main message is that we need to focus on all phases in the application lifecycle, not just development. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;February&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/02/22/the-quest-for-business-agility-emergent-architectures" title="The quest for Business Agility: Emergent Architectures"&gt;The quest for Business Agility: Emergent Architectures&lt;/a&gt;: a long article which clearly describes my views on designing, modeling, and building an agile enterprise with help of emergent architectures. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;March&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/03/23/code-generation-2011" title="Code Generation 2011"&gt;Code Generation 2011&lt;/a&gt;: just an announcement of the fishbowl session I organized at the Code Generation conference. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;April&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/04/16/why-arenat-we-all-doing-model-driven-development-yet" title="Why aren&amp;rsquo;t we all doing Model Driven Development yet"&gt;Why aren't we all doing Model Driven Development yet?&lt;/a&gt; An analysis of the main concerns which prevent people to use MDD. Initiated an interesting discussion. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;May&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/05/26/language-workbench-competition-2011" title="Language Workbench Competition 2011"&gt;Language Workbench Competition 2011&lt;/a&gt;: A lot of new initiatives in the field of language workbenches are arising to facilitate the creation of Domain Specific Languages (DSLs) and their accompanied code generators and IDEs. They all have their own strengths and weaknesses, so a competition to learn about them sound like a great idea back in 2010... and it was! This article describes all tools presented at LWC2011 as well as the opinions of the attendees. A nice overview of DSL tool space! &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;June&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/06/09/making-model-driven-software-development-live-up-to-its-promises" title="Making Model-Driven Software Development live up to its promises"&gt;Making Model-Driven Software Development live up to its promises&lt;/a&gt;: the &amp;quot;sound bites&amp;quot; of the fishbowl discussion I hosted at Code Generation 2011. It was a good discussion on the future of MDD in four sections: marketing, alignment with programming, focus on problem domain, and education.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;July&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/07/19/the-platform-as-a-service-for-the-agile-enterprise" title="The Platform-as-a-Service for the Agile Enterprise"&gt;The Platform-as-a-Service for the Agile Enterprise&lt;/a&gt;: I shared a bit more about my work this time by describing the new major release of our products. This article perfectly fits in the subjects I normally cover like Model-Driven Development, app development, agile, and cloud. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;August&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/08/24/managing-your-application-landscape-engineered-or-emergent" title="Managing your application landscape: engineered or emergent"&gt;Managing your application landscape: engineered or emergent&lt;/a&gt;: this article was triggered by the Application Landscape Report of Capgemini and defines two different approaches to manage an application landscape. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;September, October&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Well... moving to a new house doesn't leave you with a lot of time...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;November&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/11/16/enterprise-agile-3-characteristics" title="Enterprise Agile: 3 characteristics"&gt;Enterprise Agile: 3 characteristics&lt;/a&gt;: there is a difference between an agile team in a start-up (or enterprise!), working in some sort of vacuum, and an agile team operating within the broader context of an enterprise. This article looks at some characteristics to make the difference more clear. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;December&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="https://twitter.com/#!/JohanDenHaan/status/146324411123900416" title="my first"&gt;My first...&lt;/a&gt; :)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Blog overviews of previous years:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2010/12/27/blog-overview-2010" title="blog overview 2010"&gt;Blog overview 2010&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/12/29/blog-overview-2009" title="blog overview 2009"&gt;Blog overview 2009&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2008/12/29/blog-overview-2008" title="blog overview 2008"&gt;Blog overview 2008 &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=GGIYYgIHy5E:njtdV6_pYl8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=GGIYYgIHy5E:njtdV6_pYl8:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=GGIYYgIHy5E:njtdV6_pYl8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=GGIYYgIHy5E:njtdV6_pYl8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=GGIYYgIHy5E:njtdV6_pYl8:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=GGIYYgIHy5E:njtdV6_pYl8:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=GGIYYgIHy5E:njtdV6_pYl8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=GGIYYgIHy5E:njtdV6_pYl8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=GGIYYgIHy5E:njtdV6_pYl8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/GGIYYgIHy5E" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">125@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Common</category>
			<pubDate>Mon, 09 Jan 2012 16:56:00 +0200</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2012/01/09/blog-overview-2011</feedburner:origLink></item>
		
		
		
		<item>
			<title>Enterprise Agile: 3 characteristics</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/pL8pkytNG1o/enterprise-agile-3-characteristics</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2011/11/16/enterprise-agile-3-characteristics#comm</comments>
                        <description>&lt;img src="http://static.tridesign.nl/images/scale_up.jpg" style="float:right;margin-left:10px;margin-bottom:5px;border:0px solid" title="Scale up!" alt="Scale up!" class="pivot-image" /&gt;No, this is not a typo... I really mean Enterprise Agile, not the subject of some of my previous articles about &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/02/22/the-quest-for-business-agility-emergent-architectures" title="PaaS for the Agile Enterprise"&gt;Agile Enterprises&lt;/a&gt;. I hear you sigh: do you really need to put the enterprise moniker in front of everything? Although this is a fair question I think enterprise agile is not just a buzz word. Agile on a bigger scale, in a big enterprise, is different from agile in a small isolated team. I do not care if you call it enterprise agile, enterprise-class agile, agile at scale, or something else. My point is: there is a difference between an agile team in a start-up (or enterprise!), working in some sort of vacuum, and an agile team operating within the broader context of an enterprise. Let's look at some characteristics to make the difference more clear.&lt;h3&gt;Solutions need to be fit in an existing ecosystem&lt;/h3&gt;
There is quite a difference between building a standalone piece of software and software which needs to fit in an existing application landscape. The latter asks you to spend time on analyzing the existing systems and testing the integrations. You will have to address the inter-dependencies of applications and data.
&lt;p&gt;
There is also quite a difference between building applications for consumers or small organizations and enterprises. Enterprise requirements like data ownership, data security, and all kinds of compliance rules need to be taken into account. Yes, there are successful examples of tools like Yammer and DropBox with a main focus on simplicity, but as their popularity within enterprises is growing they pay more and more attention to enterprise requirements. They can stay simple and focused, but they have to pay attention to, for example, compliance and security. This means you need to spend time on these items, you need to widen your definition of done to say it in agile terms.
&lt;/p&gt;
&lt;h3&gt;
Multiple teams work towards a common goal
&lt;/h3&gt;
&lt;p&gt;
Creating software within the broader context of an enterprise also means you are just creating parts of the software landscape. Multiple teams are working in parallel towards a (hopefully) common goal. Within this context the goals and deliverables of your team need to be aligned with the other teams. Releases and release dates need to be coordinated and you probably can reuse software parts created by other teams. This means there need to be alignment with (so-called) enterprise disciplines such as portfolio management, enterprise architecture, and strategic reuse.
&lt;/p&gt;
&lt;p&gt;
This will probably ask for a kind of inception phase at the start of your project to define the vision, align stakeholders, identify the initial technical strategy, secure funding, etc. Have a look at the excellent whitepaper by Scott W. Ambler and Mark Lines &amp;quot;&lt;a href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/ambler/entry/disciplined_agile_delivery_an_introduction_white_paper22?lang=en" target="_blank" title="Disciplined Agile Delivery"&gt;Disciplined Agile Delivery: An introduction&lt;/a&gt;&amp;quot; for a more detailed description of this concept.
&lt;/p&gt;
&lt;h3&gt;
Agility is only possible when the whole organization adopts the mindset&lt;/h3&gt;
&lt;p&gt;
Agile is not just for the software department. If you really want to adopt enterprise agile as briefly described in the previous, you will need an agile enterprise. The whole organization needs to adopt the agile mindset. If only your software department adopts the agile mindset you can crank out releases in a very fast cadence, but what about the rest of the organization?
&lt;/p&gt;
&lt;p&gt;
Let's take the case of being a software product company as an example. You can create new product releases every month, but can your marketing organization handle a release every month? And what about sales, support, training, finance, etc.? In an agile enterprise the marketing and sales side of the organization is balanced with product development. In an agile enterprise the entire business is organized in a way that it can respond quickly to changes in the market. All departments are fully integrated with the overall value stream, there is end-to-end agility. Even at the executive level the focus is on smaller bets, on short feedback cycles. It is such an end-to-end approach which is an important characteristic of enterprise agile.
&lt;/p&gt;
&lt;h3&gt;
Conclusion&lt;/h3&gt;
&lt;p&gt;
Enterprise agile is not just a buzz word in my opinion. It depends on the product maturity phase and the target user of your product, but in a lot of cases, even in startups, you will have to make the transition from agile to enterprise agile in my experience. Ideally the team grows more mature along with the process (as they will learn why they change their process), but this of course only holds for the first team members, new people join a more mature process.
&lt;/p&gt;
&lt;p&gt;
Do you have experience with the continuous improvement of your working processes? What did you learn? What are the important characteristics of a mature process in your opinion? Can you relate to the characteristics mentioned above?
&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
Photo by &lt;a target="_blank" href="http://www.flickr.com/photos/matijagrguric/5086091009/"&gt;Matija Grguric&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=pL8pkytNG1o:eNc466VX0TY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=pL8pkytNG1o:eNc466VX0TY:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=pL8pkytNG1o:eNc466VX0TY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=pL8pkytNG1o:eNc466VX0TY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=pL8pkytNG1o:eNc466VX0TY:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=pL8pkytNG1o:eNc466VX0TY:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=pL8pkytNG1o:eNc466VX0TY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=pL8pkytNG1o:eNc466VX0TY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=pL8pkytNG1o:eNc466VX0TY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/pL8pkytNG1o" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">124@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Common</category>
			<pubDate>Wed, 16 Nov 2011 21:54:00 +0200</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2011/11/16/enterprise-agile-3-characteristics</feedburner:origLink></item>
		
		
		
		<item>
			<title>Managing your application landscape: engineered or emergent</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/n0sldc-K4SY/managing-your-application-landscape-engineered-or-emergent</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2011/08/24/managing-your-application-landscape-engineered-or-emergent#comm</comments>
                        <description>&lt;img src="http://static.tridesign.nl/images/app_landscape.jpg" style="float:right;margin-left:10px;margin-bottom:5px;border:0px solid" title="Application landscapes" alt="Application landscapes" class="pivot-image" /&gt;Companies often have more applications than the business needs. This means IT is spending resources on legacy applications instead of focusing on business innovation and growth. This years &lt;a href="http://www.capgemini.com/insights-and-resources/by-publication/application-landscape-report-2011-edition/" target="_blank" title="Capgemini Application Landscape Report 2011"&gt;Application Landscape Report&lt;/a&gt; published by Capgemini concluded:
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;One of the top priorities of today's CIO is to build closer alignment between IT and the business. However to achieve this goal, IT first needs to deal with its own inhibitors to change. We have found that today's application landscape is often more an obstacle to successful business and IT alignment than a testament to it. As a result, first and foremost, IT needs to review its approach to the application landscape and create long-term modernization and rationalization strategies while reaping early benefits as well. Only then can a proper foundation evolve on top of which better alignment between business and IT can flourish.&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;A while ago I wrote an article about &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/02/22/the-quest-for-business-agility-emergent-architectures" title="business agility and emergent architectures"&gt;how business agility asks for emergent architectures&lt;/a&gt; as a way to align IT with the business by creating flexible application landscapes. More recently I also wrote about &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/07/19/the-platform-as-a-service-for-the-agile-enterprise" title="The Platform-as-a-Service for the Agile Enterprise"&gt;the software platform an agile enterprise needs&lt;/a&gt; to support its business. Hopefully that's all quite interesting, but as stated in the conclusion of the report, IT doesn't seem to have the time and resources to think about these kind of changes. The first step a lot of IT executives need to take is to reduce their application portfolios. In Capgemini's survey of IT executives, 85% of respondents state that their application portfolios are in need of rationalization. The question: how?
&lt;p&gt;
Application landscapes can be managed in different ways. For example, using &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/10/15/an-enterprise-ontology-based-approach-to-model-driven-engineering" title="Model Driven Enterprise Engineering"&gt;Model-Driven Enterprise Engineering&lt;/a&gt; (it doesn't have to be a model-driven approach of course, but that's &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/04/16/why-arenat-we-all-doing-model-driven-development-yet" title="Why MDD?"&gt;another discussion&lt;/a&gt;). I would call this the &amp;quot;engineered&amp;quot; approach, which can, in a simplified way, be characterized as:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;em&gt;Top-down&lt;/em&gt;: model the organization, define services based on the organization models, group the services in components, and implement the components.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Command-and-control&lt;/em&gt;: the architecture board / office decides on the application portfolio and steers the implementation choices.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Based on organization models&lt;/em&gt;: rigid organization modeling is needed to create a proper overview of the organization and to sufficiently be able to extract the needed services from the model.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Standardize on selected technology platforms&lt;/em&gt;: the architecture board decides what technology platforms are allowed to be used for application development.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Consolidate applications&lt;/em&gt;: do not let the business build to much applications, try to merge applications, consolidate on selected technology platforms, etc.
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Another way to manage an application landscape is to use, what I would call, the &amp;quot;emergent&amp;quot; approach. This approach can be characterized as:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;em&gt;Bottom-up&lt;/em&gt;: the application landscape emerges from choices by individuals and business units.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Collaboration&lt;/em&gt;: applications, requirements for applications, and integrations between applications are created as a collaborative effort among people from different departments and, optionally, external providers.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Based on ideation and voting&lt;/em&gt;: applications are retired based on what their users think of them. Users can down-vote applications and create idea's for new applications or extensions of existing applications. Based on voting within an internal social network top idea's will be selected and unpopular applications will be retired.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Standardize on APIs&lt;/em&gt;: technology platforms don't matter as long as they are flexible, &amp;lsquo;managed' (either by the own IT department or by external (cloud) providers), and provide standardized APIs to allow easy integration and mashups (i.e. a focus on interoperability).&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Grow application landscape&lt;/em&gt;: let the application landscape emerge from &amp;quot;local&amp;quot; choices. Focus on managing the process instead of managing the result.
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
These are just two examples of ways to manage an application landscape. It's not an either-or choice, in practice you will probably use elements from both approaches (and more). These approaches probably are not feasible at all if they are followed literally.
&lt;/p&gt;
&lt;p&gt;
Do you recognize the need for rationalization? What mix of elements would you prefer to use? How are you managing your application landscape or how do you think an application portfolio can be best managed?
&lt;/p&gt;
&lt;p&gt;
Photo by &lt;a href="http://www.flickr.com/photos/atifsaeed/5606205168/" target="_blank" title="photo credits"&gt;M Atif Saeed&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=n0sldc-K4SY:Lpu3uOaZJ8U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=n0sldc-K4SY:Lpu3uOaZJ8U:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=n0sldc-K4SY:Lpu3uOaZJ8U:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=n0sldc-K4SY:Lpu3uOaZJ8U:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=n0sldc-K4SY:Lpu3uOaZJ8U:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=n0sldc-K4SY:Lpu3uOaZJ8U:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=n0sldc-K4SY:Lpu3uOaZJ8U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=n0sldc-K4SY:Lpu3uOaZJ8U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=n0sldc-K4SY:Lpu3uOaZJ8U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/n0sldc-K4SY" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">123@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Enterprise architecture</category>
			<pubDate>Wed, 24 Aug 2011 22:05:00 +0200</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2011/08/24/managing-your-application-landscape-engineered-or-emergent</feedburner:origLink></item>
		
		
		
		<item>
			<title>The Platform-as-a-Service for the Agile Enterprise</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/FI6rXVgs2ik/the-platform-as-a-service-for-the-agile-enterprise</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2011/07/19/the-platform-as-a-service-for-the-agile-enterprise#comm</comments>
                        <description>&lt;p&gt;
If you have been wondering why I was a bit quiet lately... it was for the good cause! Today we launched the third major release of the Mendix platform, which is quite a memorable moment. My team did an awesome job and when I look at the result I can only feel proud! As I have been sharing a lot of my thoughts last years, I want to take the time to explain to you what Mendix 3.0 is all about.
&lt;/p&gt;
&lt;p&gt;
If you remember &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/01/25/why-there-is-no-future-for-model-driven-development" title="Agile Application Lifecycle Management"&gt;one of my posts&lt;/a&gt; a couple of months ago, you could have seen the first glimpses of our focus with this release. In my article / presentation &amp;quot;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/01/25/why-there-is-no-future-for-model-driven-development" title="Why there is no future for Model Driven Development"&gt;Why there is no future for MDD&lt;/a&gt;&amp;quot; I tried to explain that we need more than just Model-Driven Development (MDD). What we need is an approach to the full application lifecycle, not only development. MDD is necessary (in my opinion), but not sufficient. We need Agile Application Lifecycle Management (in which MDD is one of the enablers) to solve the challenges enterprises are facing nowadays.
&lt;/p&gt;
&lt;p&gt;
Mendix 3.0 (or to say it as our marketing guys like it: the version 3.0 of the Mendix Agile Business Platform) is all about supporting the agile application lifecycle, from a first idea to a working application, and from a working application to long-term business agility (i.e. the evolution of an application along with the business). 
&lt;/p&gt;
&lt;p&gt;
Let me take one step back and explain to you the full story of our new release. Please bear with my enthousiasm as it sometimes leads to praising my own products ;)&lt;/p&gt;&lt;h3&gt;Introduction&lt;/h3&gt;
&lt;div align="right"&gt;
&lt;em&gt;Walking on water and developing software from a specification are easy if both are frozen.&lt;br /&gt;
&amp;ndash; Edward V. Berard&lt;br /&gt;
&lt;/em&gt;
&lt;/div&gt;
&lt;br /&gt;
Most enterprises are continuously striving to increase &amp;quot;Business Agility&amp;quot;. Business agility is the ability of an enterprise to adapt rapidly and cost efficiently in response to changes in the business environment. James McGovern stated it nicely: &amp;quot;&lt;em&gt;Increasingly, the stability of an enterprise is rooted in its ability to be dynamic, to move fast and change quickly&lt;/em&gt;&amp;quot;. Time-to-market of new products, processes, and services is key to the survival of enterprises.&lt;br /&gt;
&lt;br /&gt;
For enterprises to become agile a lot of things have to become more flexible. This doesn't only ask for changes in the structure and behaviour of an enterprise itself. As the level of automation in most enterprises is only increasing, the role of IT is an important factor in enabling business agility. However, enterprise IT isn't known for its ability to be agile... existing IT back-end systems cannot cope with constantly changing business needs.&lt;br /&gt;
&lt;br /&gt;
On top of that, IT needs to become more business oriented. Trends like cloud computing and an increasing demand from users to replicate consumer IT simplicity in the enterprise, ask for a new view on enterprise application development. We see a trend towards App Stores and Business Unit Application Development (e.g. spreadsheets, Microsoft Access, Lotus Notes, cloud applications), which are great ways to give business people more tools to create innovative new IT uses. This, however, confronts the IT department with significant risks like governance, integrity, and security. IT must find a way to control the app-jungle, so to speak.&lt;br /&gt;
&lt;br /&gt;
The main challenges for an enterprise yearning for business agility can be summarized as:&lt;br /&gt;
&lt;ul&gt;
	&lt;li&gt;The business needs to become more responsive to change and wants to focus on the business side of IT enabled by App Stores and cloud-based solutions.&lt;/li&gt;
	&lt;li&gt;The IT department needs to leverage and extend IT legacy and wants to control the app-jungle resulting from an increase in Business Unit Application Development.&lt;/li&gt;
&lt;/ul&gt;
The Mendix Agile Business Platform fulfills these wishes of both business an IT by providing a Platform-as-a-Service (PaaS) offering the right set of tools to enable agile application lifecycle management.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
The application lifecycle&lt;/h3&gt;
&lt;div align="right"&gt;
&lt;em&gt;So much of engineering is not making better decisions, but making shorter feedback cycles.&lt;br /&gt;
- Kent Beck&lt;br /&gt;
&lt;/em&gt;
&lt;/div&gt;
&lt;br /&gt;
Let&amp;rsquo;s take a closer look at application lifecycle management (ALM). ALM is a continuous process of managing the life of an application through all its phases. ALM tools need to facilitate and integrate requirements and release management, development, deployment, maintenance, etc. We want to explain this process, the needed tools, and how we facilitate it in more detail in this section, but let&amp;rsquo;s first look at the agile moniker we&amp;rsquo;ve put in front of ALM.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Agile&lt;/h4&gt;
&lt;p&gt;
What do we mean with &lt;em&gt;agile&lt;/em&gt; application lifecycle management? In 2001 seventeen people met in Utah to find some common ground to uncover better ways of developing software. They came up with the, since then historic, Manifesto for Agile Software Development, which emphasizes individuals and interactions, working software, customer collaboration, and responding to change. Agile approaches, often referred to as &amp;quot;lightweight&amp;quot; approaches, focus on delivering software in relatively short iterations while requirements evolve through collaboration. From a technical perspective things like continuous integration, test-driven development, refactoring, etc. are needed to keep the implementation agile.&lt;br /&gt;
&lt;br /&gt;
We think ALM needs to be grounded in the principles of agile software development to provide us with the flexibility we need to enable business agility. The only way to really improve software engineering is to create shorter feedback cycles, to increase collaboration with all stakeholders within a software project. That&amp;rsquo;s why our platform emphasizes an agile approach. In fact, we learned that the design decisions in our platform are a key success factor in delivering agile success to customers. &lt;br /&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
&amp;nbsp;&lt;p style="text-align:center;"&gt;&lt;img src="http://static.tridesign.nl/images/mendix-alm-small.png" style="border:0px solid" title="Agile Application Lifecycle Management with Mendix" alt="Agile Application Lifecycle Management with Mendix" class="pivot-image" /&gt;&lt;/p&gt;

&lt;div align="center"&gt;
&lt;em&gt;Figure 1 - Agile Application Lifecycle Management.&lt;/em&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;br /&gt;
As visualized in Figure 1 we see the application lifecycle as a circle with four phases: capture, develop, deploy, and iterate. Besides these steps we think it&amp;rsquo;s important to manage the process and its outcomes. We will explain each phase in more detail in the next sections.
&lt;/p&gt;
&lt;h4&gt;
Capture&lt;/h4&gt;
&lt;p&gt;
A new application (version) usually starts with a first idea. This idea is crafted and detailed by discussing it with stakeholders, resulting in a set of requirements. These requirements are captured in user stories (i.e. lightweight use cases) which need to be refined and prioritized. Crafting a single user stories often involves a lot of discussion among stakeholders. It is important to support the process of (co-)creating, refining, and prioritizing user stories properly to facilitate conversations and documenting the process in the mean time.&lt;br /&gt;
&lt;br /&gt;
Furthermore, user stories need to be estimated and planned in sprints. The project team needs to be facilitated with the tools to plan releases and sprints as well as monitoring tools like agile status boards and burn-down charts. As agile project approaches are gaining traction we feel the struggle of teams to properly apply the principles. We think that such teams, besides proper training and a mindset change, need the right tools, fully integrated in the application lifecycle.
&lt;/p&gt;
&lt;h4&gt;
Develop&lt;/h4&gt;
&lt;p&gt;
Once a sprint is fully defined and the team committed to the work and deadline it is time to start developing the application. In this phase it is again important to use the right techniques to properly support an &lt;em&gt;agile&lt;/em&gt; lifecycle. This means the way of working during development should promote communication, productivity, quality, and short iterations.&lt;br /&gt;
&lt;br /&gt;
We learned that Model-Driven Development (MDD) boosts productivity as high-level modeling languages can be used to develop applications. These languages are automatically executed on advanced engines thereby by-passing the need to use labour-intensive, low-level programming languages. This also ensures short feedback cycles as the result of a model change can directly be tested in the actual application. If these modeling languages are visual (as opposed to textual) they can even provide an excellent communication mechanism to align business and IT stakeholders. That&amp;rsquo;s why we believe MDD is an essential ingredient of agile ALM.&lt;br /&gt;
&lt;br /&gt;
In principle you could say you don&amp;rsquo;t &lt;em&gt;develop&lt;/em&gt; an application, but you &lt;em&gt;compose&lt;/em&gt; the building blocks in the Mendix platform as well as existing systems into an application using a visual language. In combination with an AppStore providing templates, widgets, plugins, and even complete business components, developing an application is more and more the art of composition.
&lt;/p&gt;
&lt;h4&gt;
Deploy&lt;/h4&gt;
&lt;p&gt;
The next step in the life of an application is to deploy it for (acceptance) testing or production purposes. Deployment sounds like a lot of hassle, and traditionally it is. Hardware, configuration, performance, scalability, involvement of other departments, etc. If your development process was agile it is jammed by now.&lt;br /&gt;
&lt;br /&gt;
In our opinion cloud deployment is essential in providing agile ALM. Deployment shouldn&amp;rsquo;t be more than a single click, with which you upload your application model to a cloud environment, resulting in a working application. We call this Model-Execution-as-a-Service. The cloud platform executing the application models should free you from sleepless nights about availability, security, performance, scalability, and other issues like these, which you often only discover after your application has been taken into production. 
&lt;/p&gt;
&lt;h4&gt;
Iterate&lt;/h4&gt;
&lt;p&gt;
Some people seem to think that we are ready now. The application is running in production, end-users are using it and we have popped the champagne. Nothing is further away from reality! The process has just been started. Only when an application is used in production end-users will start to see the impact and think about improvements. Furthermore, the business process your application supports is probably not fixed. If we want to support business agility we need to provide a mechanism to gather feedback and to turn that feedback into a new application version. In other words: we need to gather feedback and use that as input for the next cycle of capture-develop-deploy-iterate.
&lt;/p&gt;
&lt;h4&gt;
Manage&lt;/h4&gt;
&lt;p&gt;
Since the use of high-level, visual languages for developing applications enables domain experts to be part of the development process we see an increase in so-called Business Unit Application Development. This shouldn&amp;rsquo;t be something to be afraid of. The cloud platform running the applications ensures availability, security, performance and scalability (as mentioned before). In addition it gives the IT department the right tools to manage all the applications within an organization from a single dashboard. IT can enforce workflows around deployment, testing, and configuration. In short: IT can control the app-jungle!&lt;br /&gt;
&lt;/p&gt;
&lt;h3&gt;
Mendix products&lt;/h3&gt;
&lt;div align="right"&gt;
&lt;em&gt;We aim to make simple things simple and complex things possible.&lt;br /&gt;
- Alan Kay&lt;br /&gt;
&lt;/em&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;br /&gt;
Mendix provides the Agile Business Platform to fully support agile application lifecycle management. From your first idea to a working application and from that working application to long-term business agility. The Agile Business Platform consists of 3 seemlessly integrated products: sprintr, the Mendix AppFactory, and the Mendix Platform-as-a-Service. Figure 2 gives a brief overview of the 3 products.&lt;br /&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
&amp;nbsp;&lt;p style="text-align:center;"&gt;&lt;img src="http://static.tridesign.nl/images/product-overview-small.png" style="border:0px solid" title="Mendix Agile Business Platform, product overview" alt="Mendix Agile Business Platform, product overview" class="pivot-image" /&gt;&lt;/p&gt;

&lt;p align="center"&gt;
&lt;em&gt;Figure 2 - Mendix Agile Business Platform, product overview.
&lt;/em&gt;
&lt;/p&gt;
&lt;h4&gt;
Sprintr&lt;/h4&gt;
&lt;p&gt;
&lt;a href="http://www.sprintr.com" target="_blank" title="Sprintr - collaboration software for agile project teams"&gt;Sprintr&lt;/a&gt; takes a lightweight, social approach to enterprise project collaboration. We believe that engaging and empowering people facilitates collaboration and therefore co-creation in any organization. Sprintr offers a unique combination of project management tools and social activity streams, offering a way to interact with colleagues, project team members, and even external people involved in projects.&lt;br /&gt;
&lt;br /&gt;
By providing a collaboration platform across the enterprise, sprintr breaks down the walls between the different departments and professions. All employees are part of the same private social network and share a wall showing all the &amp;ldquo;company buzz&amp;rdquo;. Conversations can be started and turned into ideas. Ideas are organized using a voting system and can be converted into projects. Sprintr offers all the tools you expect from a social network, including two-way email integration.&lt;br /&gt;
&lt;br /&gt;
Besides being a powerful social platform, sprintr also offers the tools to manage your projects in an agile way. The social backlog management tools enable project team members and stakeholders to collaborate and to create, refine, and prioritize user stories. Each user story has it&amp;rsquo;s own conversation thread which is also published on the wall to have an intuitive mix of the company buzz and the project activity streams (i.e. of unstructured and structured data). User stories can be estimated and planned in sprints. The planning overview gives team members and stakeholders the ability to monitor the progress of the current sprint using scrum boards and burn-down charts as well as to plan sprints and releases to define the future of the project.&lt;br /&gt;
&lt;br /&gt;
Sprintr can be used separately from the other Mendix products and it&amp;rsquo;s feedback widget can be included in any web application. Sprintr offers an open, well-defined API enabling third-party developers to create their own feedback widgets, plugins, and any other innovative product they come up with. &lt;a target="_blank" href="http://sprintr.com/tour/" title="sprintr tour"&gt;Take the tour&lt;/a&gt; for a more detailed explanation and screenshots! 
&lt;/p&gt;
&lt;h4&gt;
AppFactory&lt;/h4&gt;
&lt;p&gt;
The Mendix AppFactory gives you the ability to develop an application by using high-level visual models. This enables collaboration between business and IT, but also provides extremely short feedback cycles as the AppFactory supports one-click deploy of your models. The Mendix AppFactory consists of 3 elements:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;em&gt;Mendix Business Modeler&lt;/em&gt;: a modeling environment to design and develop your application using visual models.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Mendix Team Server&lt;/em&gt;: a cloud-based model repository to collaborate with team members and version your models. The Team Server is implemented as a plugin to sprintr to create a tight integration between models and requirements.&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Mendix AppStore&lt;/em&gt;: a community marketplace to share and download business templates, widgets, themes, and technical components.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The combination of elements in the AppFactory, as well as their integration with sprintr, really empowers business engineers to be more productive in delivering complex enterprise applications.
&lt;/p&gt;
&lt;h5&gt;
Mendix Business Modeler&lt;/h5&gt;
&lt;p&gt;
Rooted in the techniques of Model-Driven Development (MDD) the Mendix Business Modeler is a high-productivity development environment for developing complex enterprise applications. An application can be modeled using high-level languages which are directly executable on our advanced run-time engines. This ensures short feedback cycles as the result of a model change can directly be tested in the actual application.&lt;br /&gt;
&lt;br /&gt;
The Mendix Business Modeler is designed to deliver enterprise-level Service-Oriented Business Applications (SOBAs). Things like a multi-tenant security model, internationalization, flows, rules, and an advanced approach to extending the model with Java code are all built-in. Applications built using the Mendix Business Modeler can run stand-alone but are also easy to integrate with your existing application landscape. Each process in Mendix can be exposed as a webservice with a single click. Integration with webservices or XML is as easy as defining a visual mapping between the XML structure and your domain model.&lt;br /&gt;
&lt;br /&gt;
As we are all about collaboration, the Business Modeler has excellent team support. It features version control on the visual model level as well as the possibility to track all changes both in your model and in external resources like Java actions and custom widgets. We provide the users of our Business Modeler with the full power of version control including advanced features like branching and merging. The intuitive conflict resolution mechanism assists you in merging all kinds of model changes even if another team member changed the same property as you did.
&lt;/p&gt;
&lt;h5&gt;
Team Server&lt;/h5&gt;
&lt;p&gt;
Written on top of Subversion and delivered as a plugin to sprintr our Team Server is designed to make the life of a Mendix Business Engineer easier. The Business Modeler is tightly integrated with the Team Server and things like creating a new project (including a versioned model repository), updating, commiting changes, merging model versions, etc. are all available from within the Business Modeler as a single click action.&lt;br /&gt;
&lt;br /&gt;
The Team Server is delivered as a plugin of sprintr for a reason: it enables you to manage Team Server access from sprintr and it enables us to provide you with a revolutionary way to combine requirements, implementation, and feedback! When you commit application model changes to the Team Server from within the Business Modeler you can select the user stories (reflecting requirements) you have been working on. The Team Server will automatically create links between these user stories and the model changes you made, providing you with a way to navigate from commits to the associated requirements. Further more, with these links we create a link from a user story to a changeset and a changeset can include a link to form (if you changed a form in the changeset). While feedback also refers to a form, we can create links between feedback, forms, changesets, and user stories.&lt;br /&gt;
&lt;br /&gt;
The Team Server also connects the capture and develop phase of the agile application lifecycle. When you start working on the next version of your application you just open the Mendix Business Modeler to see the user stories planned for the current sprint and start working on them. If a user story is based on user feedback, you can directly jump to the form mentioned in the metadata of the feedback and start implementing the requested change.
&lt;/p&gt;
&lt;h5&gt;
AppStore&lt;/h5&gt;
&lt;p&gt;
The AppFactory also includes a community AppStore, fully integrated with the Business Modeler to enable 1-click downloads of business templates, widgets, themes, and technical components. Mendix community members are using the AppStore as a platform to share business templates or extensions to the Mendix Platform. Most of them are open source, but the AppStore also features commercial templates as well as full-blown business applications.&lt;br /&gt;
&lt;br /&gt;
Business templates range from small, handy model templates like an enumeration with all countries or an South African ID number validator, to complete business applications like service management solutions, Product Data Management for the Fashion Industry, a HR on-boarding portal, a carbon reduction suite, and many more industry-specific business templates.&lt;br /&gt;
&lt;br /&gt;
With the widgets available in the AppStore you can build amazingly rich user interfaces. Widgets are build on top of the Mendix AJAX client API which is open for everyone. The AppStore contains lots of widgets, like Google Maps, rich text editor, all kinds of charts, tree grid, document viewer, twitter, just to name a few.&lt;br /&gt;
&lt;br /&gt;
The technical components in the AppStore extend the Mendix Platform by building on it&amp;rsquo;s open API. The AppStore contains a lot of useful to integrate with Microsoft Exchange, Excel, LDAP, Kerberos single sign-on, database replication, iDeal, etc. But also components like an audit trail module and a license pool module to manage SaaS subscriptions. 
&lt;/p&gt;
&lt;h4&gt;
Mendix Platform-as-a-Service&lt;/h4&gt;
&lt;p&gt;
The core of our technology is our innovative cloud platform: the Mendix Platform-as-a-Service (PaaS). The Mendix PaaS gives you the ability to provision your applications in the cloud and manage them from a central dashboard. The Mendix Cloud Dashboard is easy to use and provides an interface to the power of the advanced Mendix multi-tenant cloud architecture. &lt;br /&gt;
&lt;br /&gt;
Deployment of an application is as easy as uploading your application model to the Mendix PaaS from within the Mendix Business Modeler with a single click. The application model is provisioned in one of the available AppContainers and converted into a working application by executing it on our advanced run-time engines. We call this process Model-Execution-as-a-Service.&lt;br /&gt;
&lt;br /&gt;
An application running on our platform consists of multiple AppContainers representing a test, acceptance, and production environment. The Mendix Cloud Dashboard provides users with an easy transportation workflow to move application model versions up to the chain from test to acceptance to production, without touching the model.&lt;br /&gt;
&lt;br /&gt;
Availability, security, performance, and scalability are provided by the platform and easy to manage for all your application from the Mendix Cloud Dashboard. The dashboard provides graphs with the scope of a day, week, month, and year showing all kinds of monitoring information like the number of active users and resource utilization. Alerts can be configured to warn you if some metric approaches a critical level or if your custom defined application health-check gives a warning.&lt;br /&gt;
&lt;br /&gt;
The Mendix PaaS is both closed and open at the same time. Closed due to its advanced security and access control. Open because it features easy-to-use backup management enabling to retrieve and restore your data at any moment, and because it features open APIs to interact with you application at runtime enabling, for example, to create integrations with any existing system.&lt;br /&gt;
&lt;br /&gt;
We provide you with the PaaS that runs everywhere. Our platform can run on any infrastructure and flexibly scales out over different infrastructure types, both delivered as a service and on-premise. Due to the advanced multi-tenant architecture the platform utilizes your infrastructure resources in an optimal way.
&lt;/p&gt;
&lt;h3&gt;
Conclusion
&lt;/h3&gt;
&lt;p&gt;
I think we did take a huge leap forward with our new product suite, but don't take my words for granted! Let me know what you think in the comments, visit the &lt;a target="_blank" href="http://www.mendix.com/product/new-in-3-0/" title="Mendix 3.0"&gt;what's new page&lt;/a&gt; with more details, or give some ideas for future improvements! One thing is for sure: we will go on with our journey to create the tools to make it actually possible to deliver the software an agile enterprise needs :)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=FI6rXVgs2ik:HoxbUj497Pk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=FI6rXVgs2ik:HoxbUj497Pk:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=FI6rXVgs2ik:HoxbUj497Pk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=FI6rXVgs2ik:HoxbUj497Pk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=FI6rXVgs2ik:HoxbUj497Pk:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=FI6rXVgs2ik:HoxbUj497Pk:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=FI6rXVgs2ik:HoxbUj497Pk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=FI6rXVgs2ik:HoxbUj497Pk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=FI6rXVgs2ik:HoxbUj497Pk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/FI6rXVgs2ik" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">122@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Common</category>
			<pubDate>Tue, 19 Jul 2011 20:41:00 +0200</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2011/07/19/the-platform-as-a-service-for-the-agile-enterprise</feedburner:origLink></item>
		
		
		
		<item>
			<title>Making Model-Driven Software Development live up to its promises</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/aFZgME7XM8Y/making-model-driven-software-development-live-up-to-its-promises</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2011/06/09/making-model-driven-software-development-live-up-to-its-promises#comm</comments>
                        <description>&lt;p&gt;
Model Driven Development proponents see a lot of advantages of using MDD techniques. Higher development speed, increased quality, more cost-effective, empowering less-experienced developers, just to name a few. If you look at these promises the question arises why the whole world isn't using MDD right now? Why don't we hear a lot of MDD success stories? 
&lt;/p&gt;
&lt;p&gt;
In a recent article I wrote about some of the &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/04/16/why-arenat-we-all-doing-model-driven-development-yet" title="why not MDD?"&gt;main concerns which prevent people to use MDD&lt;/a&gt;, as mentioned in this StackExchange thread &amp;quot;Why aren't we all doing Model Driven Development yet?&amp;quot;. This article triggered quite some discussion and you should definitely read the comments! I wrote this article as a warming-up for the fishbowl discussion session I hosted at &lt;a href="http://www.codegeneration.net/cg2011/index.php" target="_blank" title="Code Generation 2011"&gt;Code Generation 2011&lt;/a&gt; two weeks ago. In this session, titled &amp;quot;Making Model-Driven Software Development live up to its promise&amp;quot;, we discussed the future of MDD in four sections, to cover subjects like popularity / marketing, creating alignment between programming and MDD, focusing on domain experts, and education. It was a great session with lively discussions and I want to share some &amp;quot;sound bites&amp;quot; with you in this post.&lt;/p&gt;&lt;p style="text-align:center;"&gt;&lt;img src="http://static.tridesign.nl/images/mdd_fishbowl.png" style="border:0px solid" title="MDD fishbowl discussion" alt="MDD fishbowl discussion" class="pivot-image" /&gt;&lt;/p&gt;

&lt;h3&gt;Marketing&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;We need to convince developers to start using MDD.&lt;/li&gt;
	&lt;li&gt;It's a social change: we need to move to a separation between language designers and language users.&lt;/li&gt;
	&lt;li&gt;The success stories of MDD are not shared because of the competitive advantage. Real success stories are often very domain-specific.&lt;/li&gt;
	&lt;li&gt;Generate the boring stuff, make developers happy!&lt;/li&gt;
	&lt;li&gt;As the market grows all current developers can move to language design. Language users can be a new group of people.&lt;/li&gt;
	&lt;li&gt;MDD is too hard to explain in one sentence. Complexity is a barrier.&lt;/li&gt;
	&lt;li&gt;The message of MDD needs to be mapped to business bla, but it should be different than other tech messages.&lt;/li&gt;
	&lt;li&gt;XP (eXtreme Programming) is successfully marketed by connecting it to incremental development / agile.&lt;/li&gt;
	&lt;li&gt;We need a different name. Nobody will buy MDD, it's already dead from a marketing perspective.&lt;/li&gt;
	&lt;li&gt;Focus on agile, that's the value proposition of MDD!&lt;/li&gt;
	&lt;li&gt;We need metrics to measure the success of MDD.&lt;/li&gt;
	&lt;li&gt;MDD supercharges Agile and Lean!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Alignment with programming&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;In certain communities it makes no sense to distinct between modeling and programming.&lt;/li&gt;
	&lt;li&gt;There is no difference: just a language at the right abstraction level.&lt;/li&gt;
	&lt;li&gt;MDD is only useful to bridge the time between steps in 3GL languages.&lt;/li&gt;
	&lt;li&gt;The mainstream feeling about language design is that it is very complicated. People don't know that &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/05/26/language-workbench-competition-2011" title="Language workbenches"&gt;the tools have evolved&lt;/a&gt;.&lt;/li&gt;
	&lt;li&gt;Are we as an MDD community our own biggest enemies? All &amp;quot;old&amp;quot; discussions will always come along, e.g. textual vs. visual languages, etc.&lt;/li&gt;
	&lt;li&gt;API is a model, a DSL. People are creating abstractions all the time.&lt;/li&gt;
	&lt;li&gt;Building linguistic abstractions IS different (a lot of discussion about this statement).&lt;/li&gt;
	&lt;li&gt;There is a projection possible from an API to a language, but they are not isomorphic.&lt;/li&gt;
	&lt;li&gt;We are good at language processing, so there is a case to create a language instead of just an API.&lt;/li&gt;
	&lt;li&gt;Using or creating a language asks for a different skillset. Be aware of the difference and approach developers with a different story. &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Focus on problem domain&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;Move languages to the language of requirements.&lt;/li&gt;
	&lt;li&gt;Make languages specific.&lt;/li&gt;
	&lt;li&gt;Involve domain experts, use the existing notations of a domain.&lt;/li&gt;
	&lt;li&gt;Do domain experts want to have a tool to build software? No, they don't want to specify all details. They have no time for it. They only want to say yes or no.&lt;/li&gt;
	&lt;li&gt;Programmers / analysts need to translate words to models and focus on the exceptions.&lt;/li&gt;
	&lt;li&gt;It can be important that domain experts can READ models.&lt;/li&gt;
	&lt;li&gt;Domain experts DO want to have a tool to build software... focus on the domain experst who are working as analyst or consultant.&lt;/li&gt;
	&lt;li&gt;Fast feedback cycles are important. &amp;quot;Is this what you want?&amp;quot;&lt;/li&gt;
	&lt;li&gt;New job title: configurators.&lt;/li&gt;
	&lt;li&gt;Focus on the middle man! The one inbetween business and IT.&lt;/li&gt;
	&lt;li&gt;There is not enough critical mass to be successful when we focus on domain experts who want to &amp;quot;program&amp;quot;.&lt;/li&gt;
	&lt;li&gt;Focus on the ones who understand the domain (not only the ones in the domain / the customers).&lt;/li&gt;
	&lt;li&gt;The biggest problem is to have a domain expert available to build the language. You need someone with a very deep understanding of the domain to design a domain-specific language.&lt;/li&gt;
	&lt;li&gt;We as an MDD community failed: we didn't bridge the gap between business and IT... we need a new role now? (the middle man).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Education &lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;Universities don't teach MDD or modeling. There are people leaving universities who are not able to read a UML diagram.&lt;/li&gt;
	&lt;li&gt;Or it leaves a bad taste because of the mandatory waterfall use cases.&lt;/li&gt;
	&lt;li&gt;The problem is a generation gap. The renew time of professors at a university is 25 years, so you can only innovate every 25 years.&lt;/li&gt;
	&lt;li&gt;Universities shouldn't just focus on preparing for the job market. They should look further.&lt;/li&gt;
	&lt;li&gt;People need to learn more than one programming language to understand the concepts as grammars and trees much better.&lt;/li&gt;
	&lt;li&gt;We need to improve productivity, hence problme domain languages are needed.&lt;/li&gt;
	&lt;li&gt;Universities should create open minded people who will accept new languages.&lt;/li&gt;
	&lt;li&gt;You cannot create a simple DSL on top of complex UML.&lt;/li&gt;
	&lt;li&gt;De-empasize UML education.&lt;/li&gt;
	&lt;li&gt;The more human languages you learn, the more open you are to new languages. Minds will open!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Thanks to all attendees for the great discussions! I guess you also have a meaning about these subjects? Post them in the comments and keep this discussion going!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=aFZgME7XM8Y:8ISo0yQYscg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=aFZgME7XM8Y:8ISo0yQYscg:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=aFZgME7XM8Y:8ISo0yQYscg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=aFZgME7XM8Y:8ISo0yQYscg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=aFZgME7XM8Y:8ISo0yQYscg:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=aFZgME7XM8Y:8ISo0yQYscg:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=aFZgME7XM8Y:8ISo0yQYscg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=aFZgME7XM8Y:8ISo0yQYscg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=aFZgME7XM8Y:8ISo0yQYscg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/aFZgME7XM8Y" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">121@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Common</category>
			<pubDate>Thu, 09 Jun 2011 11:04:00 +0200</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2011/06/09/making-model-driven-software-development-live-up-to-its-promises</feedburner:origLink></item>
		
		
		
		<item>
			<title>Language Workbench Competition 2011</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/Vp6LVMJsucQ/language-workbench-competition-2011</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2011/05/26/language-workbench-competition-2011#comm</comments>
                        <description>May 24th the first &lt;a href="http://www.languageworkbenches.net/index.html" target="_blank"&gt;Language Workbench Competition&lt;/a&gt; have been held in Cambridge (UK) as a warming-up of the Code Generation conference. The idea for a language workbench competition originates from a group of people during Code Generation 2010. A lot of new initiatives in the field of language workbenches are arising to facilitate the creation of Domain Specific Languages (DSLs) and their accompanied code generators and IDEs. They all have their own strengths and weaknesses, so a competition to learn about them sounded like a great idea back in 2010... and it was!&lt;h3&gt;Assignment&lt;/h3&gt;All participants of the workshop had to implement an &lt;a href="http://www.languageworkbenches.net/contest.html" target="_blank"&gt;assignment&lt;/a&gt;, consisting of the following tasks:
&lt;p&gt;
&lt;strong&gt;0. Basics&lt;/strong&gt;&lt;br /&gt;
This phase is intended to demonstrate basic language design, including IDE support (code completion, syntax coloring, outlines, etc).
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;    0.1 Simple (structural) DSL without any fancy expression language or such.&lt;/li&gt;
	&lt;li&gt;0.2 Code generation to GPL such as Java, C#, C++ or XML&lt;/li&gt;
	&lt;li&gt;0.3 Simple constraint checks such as name-uniqueness&lt;/li&gt;
	&lt;li&gt;0.4 Show how to break down a (large) model into several parts, while still cross-referencing between the parts&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;1. Advanced&lt;/strong&gt;&lt;br /&gt;
This phase demonstrates advanced features not necessarily available to the same extent in every LWB.
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;    1.1 Show the integration of several languages&lt;/li&gt;
	&lt;li&gt;1.2 Demonstrate how to implement runtime type systems&lt;/li&gt;
	&lt;li&gt;1.3 Show how to do a model-to-model transformation&lt;/li&gt;
	&lt;li&gt;1.4 Some kind of visibility/namespaces/scoping for references&lt;/li&gt;
	&lt;li&gt;1.5 Integrating manually written code (again in Java, C# or C++)&lt;/li&gt;
	&lt;li&gt;1.6 Multiple generators&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;2. Non-functional&lt;/strong&gt;&lt;br /&gt;
Phase 2 is intended to show a couple of non-functional properties of the LWB. The task outlined below does not elaborate on how to do this.
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;    2.1 How to evolve the DSL without breaking existing models&lt;/li&gt;
	&lt;li&gt;2.2 How to work with the models efficiently in the team&lt;/li&gt;
	&lt;li&gt;2.3 Demonstrate Scalability of the tools&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;3. Freestyle&lt;/strong&gt;&lt;br /&gt;
Every LWB has its own special &amp;quot;cool features&amp;quot;. In phase three we want the participants to show off these features. Please make sure, though, that the features are built on top of the task described below, if possible.
&lt;/p&gt;
&lt;h3&gt;The competition&lt;/h3&gt;
&lt;p&gt;
Until now, 13 different tools have been used to implement the assignments. The submissions, including a lot of documentation and explanation can be found at the &lt;a target="_blank" href="http://www.languageworkbenches.net/submissions.html"&gt;LWC website&lt;/a&gt;. 10 of the participants joined the LWC11 in Cambridge. In a tight day &lt;a href="http://www.languageworkbenches.net/contest.html" target="_blank"&gt;schedule&lt;/a&gt; they all had 40 minutes to demonstrate and explain their solution as well as highlighting some of their strong points.
&lt;/p&gt;
&lt;p&gt;
I will try to give you a brief overview of all the tools, but I will not write a full comparison, that's way too much work. You can check the PDFs of the submissions or play around with some of the tools to get a better understanding of the possibilities. I will just give you some (subjective) &amp;quot;soundbites&amp;quot; from LWC11 to give you a first idea about the 10 tools. Don't hit me if I missed the best feature of your tool... 10 sessions of 40 minutes on 1 day is quite a challenge for my concentration ;)
&lt;/p&gt;
&lt;h3&gt;
JetBrains MPS&lt;/h3&gt;
&lt;p&gt;
&lt;a href="http://www.jetbrains.com/mps/" target="_blank"&gt;JetBrains MPS&lt;/a&gt; is an opensource (Apache 2.0 license) tool. Instead of text editors it provides a projectional editor, meaning that you're directly editing the abstract syntax tree (AST) instead of a concrete syntax which needs to be parsed. You start by defining the abstract syntax. Afterwards you can define the layout of the cells that should be rendered as you edit (i.e. the projection). In most cases it looks a lot like text, and the MPS team did put a lot of effort in giving you the feeling that you're editing text when editing a projection. However, you are editing a structured format (e.g. tree, tables).
&lt;/p&gt;
&lt;p&gt;
MPS is strong in language extension. The Java definition is provided with the tool and allows you to great DSL extension to Java. Code generation is also done by defining a model-to-model transformation from the AST of your DSL to the AST of Java. So, to generate a target language you will need the AST of that language (which can be quite some work to define).
&lt;/p&gt;
&lt;p&gt;
Markus Voelter, who did present the MPS submission, advises to use his EMF export to be able to use Xtext to generate text from MPS models, as Xtext is stronger in that field. If you want to learn more about he model-to-model transformations you will have to play around with MPS. According to Markus, M2M in MPS is easier to implement than to explain.
&lt;/p&gt;
&lt;h3&gt;
MetaEdit+&lt;/h3&gt;
&lt;p&gt;
Steven Kelly demonstrated the &lt;a href="http://www.metacase.com/mep/" target="_blank"&gt;MetaEdit+&lt;/a&gt; implementation of the assignment. In fact, he implemented most of the assignment from scratch during his demonstration! Very impressive and the only one who did it this way. For me, this shows the productivity and ease of use of MetaEdit+.
&lt;/p&gt;
&lt;p&gt;
MetaEdit+ really focuses on vertical (i.e. business domain) and graphical Domain Specific Languages. They offer some nice features to define your graphical concrete syntax like a symbol editor with conditional options (e.g. change colors or symbols based on model values). The code generators are quite different from other tools. Very modular. A nice thing Steven demonstrated was the generation of code within the tool and the possibility to jump from the code to the model and back.
&lt;/p&gt;
&lt;p&gt;
The main comment on twitter about MetaEdit+ was that its UI looks a bit old-fashioned. That's of course a matter of taste, but their next version (5.0 - to be released soon) will have a new, Windows 7 looking UI.
&lt;/p&gt;
&lt;p&gt;
Mixing manual code with your modes can be done by using protected regions in the code generators.
&lt;/p&gt;
&lt;p&gt;
MetaEdit+ has quite powerful language evolution. Model data is kept when changing the metamodel (depending on the case of course). Generators keep working if you used relative referrals (walk the tree, use oid's, etc.). Removing elements from the metamodel will not remove them from the models but obsolete / deprecate them.
&lt;/p&gt;
&lt;p&gt;
Most validations are automatically there because you cannot model anything outside the scope of your metamodels.
&lt;/p&gt;
&lt;p&gt;
Steven finished his presentation with a nice demonstration of the generator debugger giving the ability to step through the code generaters, add breakpoints, ... and that's when the egg timer (which helped us to not let this workshop evolve in a two-day event) gave the signal for a coffee break.
&lt;/p&gt;
&lt;h3&gt;
OOMEGA&lt;/h3&gt;
&lt;p&gt;
The &lt;a href="http://www.oomega.net/index.html" target="_blank"&gt;OOMEGA platform&lt;/a&gt; was presented by Christian Merenda. It's an open source platform based on Eclipse with commercial database backends. They also provide a collaborative platform at &lt;a target="_blank" href="http://www.metamodels.org"&gt;metamodels.org&lt;/a&gt; to share metamodels.
&lt;/p&gt;
&lt;p&gt;
OOMEGA uses a strict separation between abstract and concrete syntax. Multiple textual representations are possible for one abstract structure. OOMEGA uses a very compact language to define grammars, which is nice, but you will need to get used to it. However, Christian told me they will provide an additional concrete syntax (as said they support multiple textual representations of the same language) for this language to support people to start with the tool.
&lt;/p&gt;
&lt;p&gt;
Language composition is done by defining and including packages.
&lt;/p&gt;
&lt;p&gt;
OOMEGA is compatible with ATL wich enables you to transform OOMEGA models with standard ATL model transformation scripts.
&lt;/p&gt;
&lt;p&gt;
Multiuser options: SVN for textual models, databases as third-party extensions (locking, notifications, etc.).&lt;br /&gt;
Nice navigation among metamodel, model, instance model. Just click-jump.
&lt;/p&gt;
&lt;p&gt;
You can define validations for your models which will prevent you from saving invalid models.
&lt;/p&gt;
&lt;h3&gt;
Whole Platform&lt;/h3&gt;
&lt;p&gt;
The &lt;a href="http://whole.sourceforge.net/" target="_blank"&gt;Whole Platform&lt;/a&gt; presentation started by emphasizing their focus on an agile approach. It includes features like hot deploy, meaning that you can change language definitions and directly see the result in the resulting modeling environment. They use model interpretation (instead of code generation) to facilitate this process. It is even possible to deploy incomplete models to test what your are currently working on.
&lt;/p&gt;
&lt;p&gt;
The Whole Platform is opensource (LGPL) and delivers projectional editors. The main focus is on graphical DSLs. Even their meta-languages are graphical, e.g. the grammar definition language is graphical EBNF / railroad diagrams. They want to enable less-experienced people to be involved in language specification. There were some comments about their graphical approach, for example this statement by Jurgen Vinju:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;Some graphical DSL's look like AST visualizations with edit boxes.
	&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
It is possible to have multiple projections for one language and to seemlessly switch between them. Part of the projections are automatically generated, they didn't explain how much effort you need to define a projection, and I didn't ask ;)
&lt;/p&gt;
&lt;p&gt;
Multiple DSLs can be mixed / used in one model. I'm wondering about the keyboard support (MPS did put a huge effort into this) as it looks as a lot of point and click is necessary.
&lt;/p&gt;
&lt;p&gt;
Model-to-model transformations can be defined using a graphical DSL (in principle it's partly based on the visual syntax of the target language). The transformation interprets the source model with an analyzer and executes the transformation specification to generate target model. A very nice feature is the visual debugger for your model-to-model transformations which features step-through debugging on the graphical transformation model level.
&lt;/p&gt;
&lt;p&gt;
The Whole Platform also contains a DSL to write tests for your DSL specifications, inspired by JUnit and integrated with the JUnit plugin in Eclipse to run your tests. Tests are once again modeled using a graphical syntax. These graphical languages are nice to demo, but they can have some disadvantages as Steven Kelly mentioned:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;Whole Platform looks nice, but needs huge amounts of screen real estate. Dual projectors for LWC12? :)
	&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Everything is possible on domain / DSL level, no framework or Java code is needed (holds for more tools). Code generation is done by using text in the transformation DSL.
&lt;/p&gt;
&lt;p&gt;
The Whole Platform seems to be the surprise of the day as a lot of people didn't know them. They had a nice demo and their product looks stable. As Karsten Thoms stated it:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;Whole Platform is the surprise of the day. Stable tooling, nice looking, quite different.
	&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Steven Kelly compared the Whole Platform with JetBrains MPS:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;Whole Platform = gorgonzola MPS: more mature and with an Italian flavour :)
	&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
Rascal&lt;/h3&gt;
&lt;p&gt;
&lt;a href="http://www.rascal-mpl.org/" target="_blank"&gt;Rascal&lt;/a&gt; was presented by Jurgen Vinju. Rascal is a domain specific language for source code analysis and manipulation (i.e. meta-programming). Apparently it can also be used as a language workbench in combination with the &lt;a href="http://www.eclipse.org/imp/" target="_blank"&gt;IDE Meta Tooling Platform (IMP)&lt;/a&gt;. As Jurgen stated it: IDE construction = Metaprogramming + GUI programming, which can be done using Rascal + Eclipse IMP.
&lt;/p&gt;
&lt;p&gt;
Rascal is inspired by the &lt;a href="http://www.meta-environment.org/" target="_blank"&gt;ASF+SDF meta-environment&lt;/a&gt; and will be contributed to eclipse.org in June 2011.
&lt;/p&gt;
&lt;p&gt;
Algorithms can be written in the language, but Rascal itself does not have many keywords or language features that 
provide built-in algorithms (such as constraint solving). The notable 
exceptions to this statement are general parsing and disambiguation, 
pattern matching, general traversal and lexically scoped backtracking 
features. It looks like a powerfull, complete language with a strong scientific basis.
&lt;/p&gt;
&lt;p&gt;
Language extensions are possible by redefining or extending definitions of concepts. Rascal features strong modularization.
&lt;/p&gt;
&lt;p&gt;
It seem to be not that strong on IDE stuff. IMP has it, but the integration with Rascal seems to be immature or Jurgen didn't show it. The Rascal language itself, however, is interesting. As Meinte Boersma said it:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;Very high-quality presentation by Vinju on Rascal which looks &amp;quot;academically inspired&amp;quot; but definitely reality-checked.
	&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
Spoofax&lt;/h3&gt;
&lt;p&gt;
&lt;a href="http://strategoxt.org/Spoofax" target="_blank"&gt;Spoofax&lt;/a&gt; is also (like Rascal) based on &lt;a href="http://www.syntax-definition.org/" target="_blank"&gt;SDF&lt;/a&gt; (a syntax definition language) and &lt;a href="http://www.program-transformation.org/Stratego/StrategoLanguage" target="_blank"&gt;Stratego&lt;/a&gt; (a transformation / rewriting language). It's based on Eclipse and provides several meta-languages for language engineering.
&lt;/p&gt;
&lt;p&gt;
Every spoofax language definition is an eclipse plugin. The plugins are dynamically loaded so you don't have to start another Eclipse instance (more language workbenches based on Eclipse should support this!).
&lt;/p&gt;
&lt;p&gt;
You can use Eclipse IMP in addition to Spoofax to enrich your IDE. Lennart didn't explain in detail how this works and when you'll need this.
&lt;/p&gt;
&lt;p&gt;
The main advantage of Spoofax seems to be it's sophisticated approach to grammars and parsing. As Markus Voelter stated it:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;Defining expression grammars in #sdf and #spoofax really is much more convenient than in #xtext!
	&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
Intentional&lt;/h3&gt;
&lt;p&gt;
Mats Helander demonstrated the &lt;a href="http://intentsoft.com/index.html" target="_blank"&gt;Intentional&lt;/a&gt; workbench. Intentional uses projectional editors (like JetBrains MPS), so you're editing a projection of the AST directly. According to Mats you could see it as a semantic model (as Martin Fowler calls it) instead of an AST.
&lt;/p&gt;
&lt;p&gt;
Multiple projections are possible. They don't have to be complete, so it can be possible that you have to use more than one projection to complete your model.
&lt;/p&gt;
&lt;p&gt;
Code generation is done by transforming your model to the AST of C# (so, in principle this is model-to-model transformation). The AST of Java, C#, and Ruby are available in the tool. If you want to generate other languages you will have to build an AST of the target language yourself or use the plain text support.
&lt;/p&gt;
&lt;p&gt;
The results transformations are still editable, they are just projections in the end. Changes will also be updated in the model. So, you can offer a relation database scheme to an expert and let him use his expertise to improve the database scheme and thereby your entity model. This only works if your model-to-model transformation is bi-directional (which is only possible if the transformation keeps a 1 to 1 relationship between elements in source and target languages).
&lt;/p&gt;
&lt;p&gt;
Meta-languages are only used when necessary. In most cases they are just extensions of C#. Model validation rules, for example, are specified in almost native C#.
&lt;/p&gt;
&lt;p&gt;
Languages can be split in multiple files. As long as you define your concepts in the same namespace you can refer to them in the same way as you would do if they were in the same file. Mats didn't explain if Intentional supports package definitions and imports.
&lt;/p&gt;
&lt;p&gt;
The type system seem to be quite strong. You can even define distances between types.
&lt;/p&gt;
&lt;p&gt;
Due to Intentionals projectional nature it is possible to add the results of calculations directly into your editor. These can for example be used for testing.
&lt;/p&gt;
&lt;p&gt;
Mats finished his session by showing a functional specification like projection which makes it very easy for domain experts to be involved in software specification.
&lt;/p&gt;
&lt;p&gt;
At the end of the session a Twitter discussion was started about the use of having multiple projections. Some &amp;quot;soundbites&amp;quot;:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;Steven Kelly: Multiple projections often a solution looking for a problem. E.g. human langs don't want multiple alphabets for 1 lang
	&lt;/em&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;em&gt;
	Steven Kelly: MetaEdit+ has had multiple projections for 15 years - they don't get used much. Multiple reprs of each object is used a lot more
	&lt;/em&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;em&gt;
	Angelo Hulshout: Is that because mult. projection is hard to implement ( ==hard to use), or because people really don't want need it?
	&lt;/em&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;em&gt;
	Steven Kelly: I think because maintaining the same thing in two views is like doing it in two places: less work to do just one
	&lt;/em&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;em&gt;
	Angelo Hulshout: Unless you have multiple people with different backgrounds working on it (at different times or in parallel?) Realistic?
	&lt;/em&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;em&gt;
	Steven Kelly: Precisely what we thought it would be good for, but in practice one higher-level lang is better
	&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
Essential&lt;/h3&gt;
&lt;p&gt;
&lt;a href="http://pjmolina.com/metalevel/essential/" target="_blank"&gt;Essential&lt;/a&gt; was presented by its creator Pedro Molina. The workbench is based on practical experience and builds on the following principles:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
	No model infrastructure friction, use model interpretation to avoid round-trips.&lt;/li&gt;
	&lt;li&gt;Target language independence.&lt;/li&gt;
	&lt;li&gt;
	Minimalistic IDE.&lt;/li&gt;
	&lt;li&gt;
	Clear separation of Concerns (much different from Rascal, which is one language to avoid problems with integrating the concerns).&lt;/li&gt;
	&lt;li&gt;
	Easy integration in other development tool chains.
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Essential uses continuous model interpretation for error checking. It uses &lt;a href="http://www.stringtemplate.org/" target="_blank"&gt;StringTemplate&lt;/a&gt; for code generation. Model-to-model transformations are possible with the provided meta-language.
&lt;/p&gt;
&lt;p&gt;
Language composition is possible in the same way as partical classes in C#.
&lt;/p&gt;
&lt;p&gt;
It is possible to load plugins in the IDE that use reflection to analyze the model and can for example generate to different target languages.
&lt;/p&gt;
&lt;p&gt;
The IDE looks very clean (compared to the other textual / projectional tools), or essential if you like, but according to Karsten Thoms that could be because it's quite new:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;Essential shows how simple a language workbench can be at the very beginning, and then the real world requirements kick in...
	&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
Obeo Designer&lt;/h3&gt;
&lt;p&gt;
Mariot Chauvin showed us &lt;a href="http://www.obeo.fr/pages/obeo-designer/en" target="_blank"&gt;Obeo Designer&lt;/a&gt;. The focus of this workbench is on graphical modeling languages. It's based on Eclipse and works with an Ecore metamodel.
&lt;/p&gt;
&lt;p&gt;
A nice feature of Obea is the ability to use filters (or layers) on graphical editors. Quite useful to grasp certain aspects of big models in a glance. They also provide a symbol editor to create your own graphical elements for you language, including conditional styles. It is property based and compared to MetaEdit+ you have less freedom.
&lt;/p&gt;
&lt;p&gt;
For code generation you can use the full power of &lt;a href="http://www.eclipse.org/acceleo/" target="_blank"&gt;Acceleo&lt;/a&gt;, which is available as an open source Eclipse project. Validations can be specified on the metamodel or in the graphical editor, depending on the scope you want.
&lt;/p&gt;
&lt;p&gt;
The audience was quite positive to see a good working tool for graphical editors on the Eclipse platform.
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;Meinte Boersma: Do I insult Obeo when I say that their Designer provides a nice (and working!) abstraction over GMF/GEF?
	&lt;/em&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;em&gt;
	Etienne Juliot: No, it isn't an insult;) But it also provides viewpoint features for complex analysis:layers, conditional styles, refine, ...
	&lt;/em&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;em&gt;
	Markus Voelter: Although (I think) it still has some rough edges, Obeo Designer is the first reasonable tool for graphical editors on Eclipse
	&lt;/em&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;em&gt;
	Pedro Molina: Obeo Designers brings an easy way of creating visual dsl over the EMF stack
	&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Model-to-model transformations can be done using &lt;a href="http://www.eclipse.org/atl/" target="_blank"&gt;ATL&lt;/a&gt;, again an open source Eclipse project.
&lt;/p&gt;
&lt;p&gt;
Multiuser support is available due to Eclipse team support integration. There is no support yet for live collaboration using &lt;a href="http://www.eclipse.org/cdo/#cdo" target="_blank"&gt;CDO&lt;/a&gt;, but this will be part of next version, which sounds cool!
&lt;/p&gt;
&lt;p&gt;
Mariot reacts on the previous twitter discussion about multiple projections and states that it is useful to have them. He gives the example of modeling for airplanes: different people aren't doing the same job, but are still working on the same model. In this case multiple projections of that model can be quite useful.
&lt;/p&gt;
&lt;p&gt;
Pedro Molina makes the comparison with the Visual Studio offering by stating:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;First impression: I think Obeo Designer to Eclipse is quite similar to using DSL Tools on top of Visual Studio.
	&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
Xtext&lt;/h3&gt;
&lt;p&gt;
Karsten Thoms did finish the day with an demonstration of &lt;a href="http://www.eclipse.org/Xtext/" target="_blank"&gt;Xtext&lt;/a&gt;. Xtext is a workbench for creating external textual DSLs on the Eclipse platform. It has a tight integration with EMF, opening up a lot of possibilities to integrate with other tools and to, for example, mix graphical and textual languages.
&lt;/p&gt;
&lt;p&gt;
The grammar is specified with a textual language, but railroad diagram are available and clickable (will select grammar elements).
&lt;/p&gt;
&lt;p&gt;
The generation gap pattern is used for mixing generated with manual code. Code generation is done with Xtend 2, which is more java like than XPand, but also has some similarities. Xtend 2 definitions are compiled to Java code, against a small framework. Xtend 2 also supports model-to-model transformations.
&lt;/p&gt;
&lt;p&gt;
Validation can be done using Java (the Check language, which was part of oAW is deprecated), which triggered a reaction from Steven Kelly (in 2 tweets):
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;Xtext implements constraints in Java - I think that's the first tool today that doesn't use a DSL for constraints. I would expect a DSL to be better. The Java looks quite verbose. Java as a fallback maybe OK, maybe a DSL for most simple checks?
	&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Xbase, part of the Xtext offering, is a partial programming language implemented in Xtext and is meant to be embedded and extended within other programming languages and domain-specific languages (DSL) written in Xtext. It's a great starting point for expression languages in your DSLs.
&lt;/p&gt;
&lt;p&gt;
The Xtext workbench is mature, but had quite some big changes in the recent 2.0 version. Karsten showed some numbers to show that Xtext is scalable and performs well for big projects. It is used in practice for many big projects, which is an even better proof than just some numbers.
&lt;/p&gt;
&lt;p&gt;
In the free style part of the assignment Karsten showed us some nice features like automatic formatting, quick fixes and told us about the instance DSL compiler which can for example be used to define tests.
&lt;/p&gt;
&lt;h3&gt;
Conclusion&lt;/h3&gt;
&lt;p&gt;
The workshop was great! Really interesting to &lt;strong&gt;see&lt;/strong&gt; all these tools in one day. Markus Voelter agrees:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;This workshop is *so much better* than also those &amp;quot;academic&amp;quot; workshops with boring slide shows!
	&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
It wasn't really a competition as these tools have quite different characteristics. The future will learn what characteristics are the most important ones. One conclusion: graphical DSLs work great in demonstrations. To really make a useful decision about the tool you are going to use, you have to &amp;quot;feel&amp;quot; the tool an explore its borders.
&lt;/p&gt;
&lt;p&gt;
The main questions nagging me at the end of the day was whether there is a market for 10 different DSL tools / language workbenches? How big is the market? Will it grow? Markus Voelter thinks there should be a market when looking at the diversity of the tools:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;Judging from #lwc11, language engineering really isn't a niche (anymore). There are many diverse tools and approaches.... very nice!
	&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
One last observation: it was nice to have a parallel virtual-conference on twitter to directly share opinions without interrupting the presenter. It was also interesting to see the tweet rate increasing when a tool was more interesting, new, or impressive.
&lt;/p&gt;
&lt;p&gt;
Thanks to Angelo Hulshout and &lt;a href="http://www.software-acumen.com/" target="_blank"&gt;Software Acumen&lt;/a&gt; for organizing this great workshop!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=Vp6LVMJsucQ:oZaB4FvcC_I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=Vp6LVMJsucQ:oZaB4FvcC_I:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=Vp6LVMJsucQ:oZaB4FvcC_I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=Vp6LVMJsucQ:oZaB4FvcC_I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=Vp6LVMJsucQ:oZaB4FvcC_I:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=Vp6LVMJsucQ:oZaB4FvcC_I:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=Vp6LVMJsucQ:oZaB4FvcC_I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=Vp6LVMJsucQ:oZaB4FvcC_I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=Vp6LVMJsucQ:oZaB4FvcC_I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/Vp6LVMJsucQ" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">120@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Software Engineering</category>
			<pubDate>Thu, 26 May 2011 20:20:00 +0200</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2011/05/26/language-workbench-competition-2011</feedburner:origLink></item>
		
		
		
		<item>
			<title>Why aren’t we all doing Model Driven Development yet?</title>
			<link>http://feedproxy.google.com/~r/TheEnterpriseArchitect/~3/T_iMlgjavrs/why-arenat-we-all-doing-model-driven-development-yet</link>
			<comments>http://www.theenterprisearchitect.eu/archive/2011/04/16/why-arenat-we-all-doing-model-driven-development-yet#comm</comments>
                        <description>&lt;img src="http://static.tridesign.nl/images/whynotusingmdd.jpg" style="float:right;margin-left:10px;margin-bottom:5px;border:0px solid" title="Why aren't we all doing MDD yet?" alt="Why aren't we all doing MDD yet?" class="pivot-image" /&gt;About a month ago Kees Dijk asked a &lt;a href="http://programmers.stackexchange.com/questions/55679/why-arent-we-all-doing-model-driven-development-yet" target="_blank" title="question"&gt;question&lt;/a&gt; on the programmers StackExchange titled &amp;quot;&lt;em&gt;Why aren't we all doing model driven development yet?&lt;/em&gt;&amp;quot;. He reiterates his question also as &amp;quot;&lt;em&gt;What do you see as the biggest problems that make you not even consider model driven development?&lt;/em&gt;&amp;quot;. It shouldn't be a surprise that I'm interested in these kind of questions. The answers, in this and other discussions about this subject, are interesting food for thought. Why? Because if you only read &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/11/25/15-reasons-why-you-should-start-using-model-driven-development" title="15 reasons why you should start doing MDD"&gt;these 15 reasons why you should start doing MDD&lt;/a&gt; you would become curious why we aren't doing it all by now...
&lt;p&gt;
Let's look at some of the main concerns which prevent people to use MDD, as mentioned in this StackExchange thread.&lt;/p&gt;&lt;h3&gt;No Silver Bullet&lt;/h3&gt;The most upvoted answer on the programmers StackExchange refers to the essay of Fred Brooks &amp;quot;No Silver Bullet - Essence and Accident in Software Engineering&amp;quot;. Written in 1986 and still a valuable read! Brooks follows Aristotle in dividing difficulties in essential and accidental ones. Essential tasks in software engineering are about the fashioning of the complex conceptual structures that compose the abstract software entity. Sounds abstract, but it means that constructing data sets, relationships among data items, algorithms, and invocations of functions is complex, inherent from their representation. Accidental tasks in software engineering are about the representation of these abstract elements in programming languages and the mapping of these onto machine languages within space and speed constraints.
&lt;p&gt;
High-level languages are solving some of the accidental difficulties and are therefore valuable, but the essence of the problem remains the same. The specification, design, and testing of conceptual constructs need to be done by people, no tool will help you with that.
&lt;/p&gt;
&lt;h3&gt;Dangers of MDD&lt;/h3&gt;
&lt;p&gt;
Some followers of this blog may think I'm such a hardcore fan of MDD that I will now start defending MDD against Brooks. However, let's first try to get a balanced view on MDD. Please take notice of my previous articles &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/06/25/8-reasons-why-model-driven-development-is-dangerous" title="8 reasons why MDD is dangerous"&gt;8 reasons why MDD is dangerous&lt;/a&gt; and &lt;a href="http://www.infoq.com/articles/8-reasons-why-MDE-fails" target="_blank" title="8 reasons why Model-Driven approaches (will) fail."&gt;8 reasons why Model-Driven approaches (will) fail&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
In the first article I point at the following dangers:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;    MDD actually introduces a lot of rigidity.&lt;/li&gt;
	&lt;li&gt;Models are only flexible where flexibility has been designed.&lt;/li&gt;
	&lt;li&gt;The roles of project members are quite different.&lt;/li&gt;
	&lt;li&gt;The modeling environment doesn't always support version control.&lt;/li&gt;
	&lt;li&gt;The modeling tool / approach is &amp;quot;almost&amp;quot; finished at project start.&lt;/li&gt;
	&lt;li&gt;The requirements team needs to understand what is allowed and what not.&lt;/li&gt;
	&lt;li&gt;MDD is sold to the customer, but the team has no experience.&lt;/li&gt;
	&lt;li&gt;Innovation distracts.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
In the second article I mention the following eight reasons for possible MDE / MDD failure:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;    Not targeting all goals of Model-Driven Engineering.&lt;/li&gt;
	&lt;li&gt;Only using one modeling dimension: the dichotomy between PIM and PSM.&lt;/li&gt;
	&lt;li&gt;Focusing on generating new artifacts.&lt;/li&gt;
	&lt;li&gt;Using general purpose languages.&lt;/li&gt;
	&lt;li&gt;Using custom defined domain specific languages.&lt;/li&gt;
	&lt;li&gt;Using model transformations which are not fully executable.&lt;/li&gt;
	&lt;li&gt;Not testing the model.&lt;/li&gt;
	&lt;li&gt;Insufficient tooling.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
I'm mentioning these items for two reasons. First, not every approach called MDD is the same. Hence, your experience with MDD cannot be extrapolated to MDD in general. Second, MDD is indeed no silver bullet. You still need to think about the complexity of your domain and the approach you want to use. There is a lot of difference among MDD approaches and you still need to select the right approach for your situation.
&lt;/p&gt;
&lt;h3&gt;Tool support and popularity&lt;/h3&gt;
&lt;p&gt;
An interesting answer on the question comes from &amp;quot;mko&amp;quot;: &amp;quot;&lt;em&gt;Microsoft / Apple / Google isn't pushing it&lt;/em&gt;&amp;quot;. He adds &amp;quot;&lt;em&gt;What kind of development gets popularized has much to do with tools, backer and evangelism&lt;/em&gt;&amp;quot;. How true this is was shown in 2008 when Bill Gates introduced the Oslo project thereby creating a lot of buzz in the market. However, after it's sudden (and fast) dead it's a bit quiet again. Stuart Kent &lt;a href="http://blogs.msdn.com/b/stuart_kent/archive/2011/04/07/is-model-driven-development-feasible.aspx" target="_blank" title="Microsoft MDD strategy"&gt;recently explained&lt;/a&gt; that Microsoft still has an MDD strategy.
&lt;/p&gt;
&lt;p&gt;
Juha Pekka also points at a popularity problem:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;I believe that there are several reasons but one is for sure that MDD is not in the curriculum of universities. Typically the closest is a course that teaches modeling and there the models stay as sketches (no checking, code generation, debugging at model level). This &amp;quot;modeling&amp;quot; course often also introduces UML and students are puzzled why to learn such a large and complex notation when the value of created models is low.&lt;/em&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;em&gt;Contrast this to other field of engineering like embedded-hardware developers or control engineers where students get a quite different experience. With tools like Simulink or Labview students can draw a model and then it generated you the code, or at least you can run it in simulation.&lt;/em&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;em&gt;In the past universities teached compilers and parsers, but now they should teach how to make generators, implement DSLs, etc.&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Some people also point at tool support as an important reason. If you develop software you want tool support for refactoring, debugging, testing, validation, etc. The workflow is also important as code generators often introduce additional steps.
&lt;/p&gt;
&lt;h3&gt;Modeling != Programming?&lt;/h3&gt;
&lt;p&gt;
A more fundamental question is whether we should see modeling and programming as the same thing. Berin Loritsch touches this subject by making these points in his answer:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;    &lt;em&gt;Because there are programmers like me who get more progress and results from TDD than MDD.&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Because Modeling != Programming.&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Because a model that sufficiently describes a function to generate the code is no longer useful as a model.&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;Because there are programmers like me who only use models at a high level, and then work out the details with code. You see things differently in code than you do in modeling software.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
Does MDD need to convince programmers of the usefulness of modeling? Or does MDD lead to &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/02/04/roles-in-model-driven-engineering" title="changing roles in MDD"&gt;changing roles&lt;/a&gt; in software development? &lt;a target="_blank" href="http://www.jetbrains.com/mps/" title="JetBrains MPS"&gt;JetBrains MPS&lt;/a&gt; takes another position in providing an environment to seamlessly integrate programming and modeling (e.g. Java and your DSLs).
&lt;/p&gt;
&lt;h3&gt;Are there even reasons to think about MDD?&lt;/h3&gt;
&lt;p&gt;
Why should we even think about using MDD? I mentioned some &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2009/11/25/15-reasons-why-you-should-start-using-model-driven-development" title="15 reasons to start using MDD"&gt;reasons to start using MDD&lt;/a&gt; before. See also a previous article about &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2010/10/15/model-driven-engineering-hot-or-not" title="MDE succesful or not?"&gt;successful applications of MDD in practice&lt;/a&gt;. Don't limit yourself in thinking that MDD means UML + code generation. Notable success stories often involve engines interpreting models like business rule engines, business process / BPEL engines, or (not to forget ;) &lt;a href="http://www.mendix.com" target="_blank" title="Mendix"&gt;Mendix&lt;/a&gt;. In my experience most of the problems mentioned before about tool support are solved nowadays.
&lt;/p&gt;
&lt;p&gt;
But, let's get back to Fred Brooks. He stated a fundamental difference between essential and accidental complexity. As an example of accidental complexity he mentions high-level languages and explains why they don't give us the big leap in productivity we want. It can solve most of the accidental complexity, and I think MDD actually does so, but we need to address the essential parts of software development. Brooks gives four suggestions addressing the essential complexity when he gives an abstract of his 1986 article in 1995 [1]:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
	Exploiting the mass market to avoid constructing what can be bought.&lt;/li&gt;
	&lt;li&gt;Using rapid prototyping as part of a planned iteration in establishing software requirements.&lt;/li&gt;
	&lt;li&gt;Growing software organically, adding more and more function to systems as they are run, used, and tested.&lt;/li&gt;
	&lt;li&gt;Identifying and developing the great conceptual designers of the rising generation.
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
In my opinion MDD actually addresses the suggestions in the &amp;quot;No Silver Bullet&amp;quot;-article. First, it removes most of the accidental difficulties and let's you focus on the essence of the design. Second, it enables rapid prototyping and if you use it as part of an &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/01/25/why-there-is-no-future-for-model-driven-development" title="Agile Application Lifecycle Management"&gt;Agile Application Lifecycle Management&lt;/a&gt; approach you also have a great way to organically grow your software.
&lt;/p&gt;
&lt;h3&gt;A relevant question?&lt;/h3&gt;
&lt;p&gt;
This post mainly contains questions. It's not my goal, this time, to answer them... I recently gave my opinion about &lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/01/25/why-there-is-no-future-for-model-driven-development" title="future of MDD"&gt;the future for Model-Driven Development&lt;/a&gt;. Do &lt;em&gt;you&lt;/em&gt; think questions about the usefulness of MDD are relevant? Is there a future for Model-Driven Development? If so, how can we make MDD live up to its promises? How to address the &amp;quot;problems&amp;quot; of MDD mentioned above?
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Please share your thoughts in the comments&lt;/strong&gt; and consider joining my fishbowl discussion &amp;quot;&lt;a target="_blank" href="http://www.theenterprisearchitect.eu/archive/2011/03/23/code-generation-2011" title="Code Generation 2011"&gt;Making Model-Driven Software Development live up to its promises&lt;/a&gt;&amp;quot; at Code Generation 2011!
&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
--------------------------------------&lt;br /&gt;
[1] Frederick P. Brooks. &lt;a href="http://www.amazon.co.uk/gp/product/0201835959/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=theentearch-21&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=0201835959" target="_blank" title="Mythical Man-Month"&gt;The Mythical Man-Month, Anniversary edition with 4 new chapters&lt;/a&gt;, Addison Wesley (1995)
&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
Photo by &lt;a href="http://www.flickr.com/photos/alshepmcr/4298593016/" target="_blank" title="photo"&gt;alshepmcr&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=T_iMlgjavrs:_CTLINFvHW4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=T_iMlgjavrs:_CTLINFvHW4:2M-cTDv4Dz8"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=2M-cTDv4Dz8" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=T_iMlgjavrs:_CTLINFvHW4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=T_iMlgjavrs:_CTLINFvHW4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=T_iMlgjavrs:_CTLINFvHW4:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=T_iMlgjavrs:_CTLINFvHW4:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=T_iMlgjavrs:_CTLINFvHW4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?a=T_iMlgjavrs:_CTLINFvHW4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheEnterpriseArchitect?i=T_iMlgjavrs:_CTLINFvHW4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheEnterpriseArchitect/~4/T_iMlgjavrs" height="1" width="1"/&gt;</description>
			<guid isPermaLink="false">119@http://theenterprisearchitect.eu/pivot/</guid>
			<category>Software Engineering</category>
			<pubDate>Sat, 16 Apr 2011 20:01:00 +0200</pubDate>
		<feedburner:origLink>http://www.theenterprisearchitect.eu/archive/2011/04/16/why-arenat-we-all-doing-model-driven-development-yet</feedburner:origLink></item>
		
		
		
	</channel>
</rss>

