<?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:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Cirrus Minor</title>
	
	<link>http://arnon.me</link>
	<description>Musings of a holistic architect by Arnon Rotem-Gal-Oz</description>
	<lastBuildDate>Mon, 09 Aug 2010 08:25:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/CirrusMinor" /><feedburner:info uri="cirrusminor" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Evolving Architectures – Part V – Leaps</title>
		<link>http://feedproxy.google.com/~r/CirrusMinor/~3/Xnrutjn5-wk/</link>
		<comments>http://arnon.me/2010/08/evolving-architectures-part-v-leaps/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 06:21:13 +0000</pubDate>
		<dc:creator>Arnon Rotem-Gal-Oz</dc:creator>
				<category><![CDATA[Agile Architecture]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Featured Posts]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Software Architecture]]></category>

		<guid isPermaLink="false">http://arnon.me/?p=152</guid>
		<description><![CDATA[When talking about &#8220;evolving architectures&#8221; a &#8220;leap&#8221; is one of the worst things that can happen. In the in this series I defined Kent Beck&#8217;s &#8220;Leap&#8221; design strategy in the context of Software architecture as &#8220;Leap &#8211; is for when you know where you&#8217;re heading and you can afford to stop everything until the new [...]]]></description>
			<content:encoded><![CDATA[<p>When talking about &#8220;evolving architectures&#8221; a &#8220;leap&#8221; is one of the worst things that can happen. In the <a href="http://arnon.me/2010/07/evolving-architectures-part-iv-design-mechanics/">previous installment</a> in this series I defined Kent Beck&#8217;s &#8220;Leap&#8221; design strategy in the context of Software architecture as</p>
<blockquote><p>&#8220;Leap &#8211; is for when you know where you&#8217;re heading and you can afford to stop everything until the new way is in place. From an architecture perspective it is a bit like starting from scratch. From the practical perspective that would mean breaking the build until a few related changes are in place&#8221;</p></blockquote>
<p>Basically making an architecture leap means that what we did so far is not  good enough for us to go forward on. It also means that the current architecture  is too far from something useful to bother with taking the more evolutionary approaches to getting it there.</p>
<p>This sounds very much like a catastrophe and it can be if you find out you need a leap towards or after you went into full production. In my opinion, however, there are circumstances when making a leap is a valid and reasonable (and maybe even expected) strategy :</p>
<ul>
<li>When the project at hand is breaking new grounds (or is a new ground for the team)</li>
<li>When the goal of the development phase was for a specific  &#8211; e.g. The goal was time to market or better understanding the of the technology/business constraints (a.k.a. throw-away prototype).</li>
</ul>
<p>For instance,  when we started out on a new project and .NET was new (beta of 1.0) we took our best developers and sent them off-site to work with Microsoft to build a prototype architecture. This served both for getting the team up to speed on the technology and to understand the limitations of the technology so that when we designed the architecture later we made less mistakes.</p>
<p>It is probably needless to say but the above scenarios are likely to be at the early stages of a project. The question then is does the advice I provided <a href="http://arnon.me/2010/05/evolving-architectures-part-iii-starting/">in part III</a>to invest  some up-front design is still valid &#8211; if you  are going to leap anyway, up front design seems like waste.</p>
<p>My opinion (and experience) is that you need to set up a working architecture for the first phase because</p>
<ul>
<li>You need to make some architectural decisions just to start moving &#8211; for example in one of my past projects we had several teams that were geographically dispersed, in order to begin moving forward we had to somehow divide the work so the teams would be as independent as possible &#8211; that&#8217;s an architectural decision right there.</li>
<li>The initial architecture can still serve you well &#8211;  For example when I worked on Biometric systems we&#8217;ve built 2 smaller scale solutions (stand-alone station and client-server solution) based on a simple(r), less scalable architecture before we turned to building the full-scale platform. We were still able to sell those systems as they provided business value</li>
<li>You can&#8217;t be sure you&#8217;d even have the time to do a leap &#8211; For example in xsights, <a href="http://arnon.me/2010/07/interesting-opportunities/">god rest her soul</a>, our first priority was time to market, we wanted to let the marketing and sales people stop hand waving and show what we can do as soon as possible, being a startup we weren&#8217;t sure we&#8217;d have the time to change so we invested a little more time, than I would normally do, to get a good architecture rolling. So yes, we had to change it and yes it had to be a leap but it also served us to get the marketing people going on time; it was modular so a lot of the business logic survived to the new architecture. Not to mention that the architectural structure allowed us to get the team working on different parts of the solution in a way that allowed us to quickly get a fully integrated system (and get to  continuous integration and automated tests)</li>
</ul>
<p>If you are starting out, building on the assumption that you may have to abandon the initial architecture, it is important to build flexibility or at least modularity into the initial architecture. In projects where we did that, we were able to reuse most of the business logic moving from between the different architectures. Sometimes it is very simple for example, again in xsights, we moved a monorail MVC solution to a ASP.NET MVVM one in a couple of days. The other elements required more work (to strip down  infrastructure dependent code) and to move business logic to a cleaner architecture  which was, among other things, more evolvable &#8211; but that&#8217;s for the next post</p>
<hr />illustration by <a href="http://www.sxc.hu/photo/428206">ywel</a></p>
<a href="http://arnon.me/services/">Need your architecture evaluated?</a>
<script src="http://feeds.feedburner.com/~s/arnonrgo?i=http://arnon.me/2010/08/evolving-architectures-part-v-leaps/" type="text/javascript" charset="utf-8"></script><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=Xnrutjn5-wk:eCQr8a7qUZQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=Xnrutjn5-wk:eCQr8a7qUZQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=Xnrutjn5-wk:eCQr8a7qUZQ:cGdyc7Q-1BI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=cGdyc7Q-1BI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=Xnrutjn5-wk:eCQr8a7qUZQ:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=Xnrutjn5-wk:eCQr8a7qUZQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=Xnrutjn5-wk:eCQr8a7qUZQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=Xnrutjn5-wk:eCQr8a7qUZQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=Xnrutjn5-wk:eCQr8a7qUZQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=Xnrutjn5-wk:eCQr8a7qUZQ:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=Xnrutjn5-wk:eCQr8a7qUZQ:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=Xnrutjn5-wk:eCQr8a7qUZQ:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=Xnrutjn5-wk:eCQr8a7qUZQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CirrusMinor/~4/Xnrutjn5-wk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://arnon.me/2010/08/evolving-architectures-part-v-leaps/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://arnon.me/2010/08/evolving-architectures-part-v-leaps/</feedburner:origLink></item>
		<item>
		<title>Looking for interesting opportunities</title>
		<link>http://feedproxy.google.com/~r/CirrusMinor/~3/DYn9svts0MU/</link>
		<comments>http://arnon.me/2010/07/interesting-opportunities/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 19:40:37 +0000</pubDate>
		<dc:creator>Arnon Rotem-Gal-Oz</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[consulting]]></category>
		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://arnon.me/?p=251</guid>
		<description><![CDATA[After 3 years working in xsights as VP R&#38;D, it is now time to move on. I am looking for an interesting development management position preferably as VP R&#38;D. Other interesting opportunities (e.g. a  chief architect position) will also be welcomed. The position should be in Israel (Hasharon, Tel-aviv or Haifa areas) On a related note, I [...]]]></description>
			<content:encoded><![CDATA[<p>After 3 years working in xsights as VP R&amp;D, it is now time to move on.</p>
<p>I am looking for an interesting development management position preferably as VP R&amp;D. Other interesting opportunities (e.g. a  chief architect position) will also be welcomed. The position should be in Israel (Hasharon, Tel-aviv or Haifa areas)</p>
<p>On a related note, I am also available for focused consulting engagements. By focused I mean deliverables oriented (not by the hour) engagements such as architecture evaluation, technical due diligence or architecture  workshop. You can see more details in <a href="http://arnon.me/services/">this page</a>. Currently I am available for consulting world-wide.</p>
<p>If you are interested you can grab a copy of my CV from <a href="http://arnon.me/wp-content/uploads/2010/07/Arnon_Rotem-Gal-Oz_CV.pdf.pdf">here (English)</a> or<a href="http://arnon.me/wp-content/uploads/2010/08/Arnon_Rotem-Gal-Oz_Hebrew_CV.pdf"> here (Hebrew)</a></p>
<p>Last but not least, since we are closing my team is also on the look for new jobs so if you need some great .NET people please ping me as well</p>
<p>For those of you scratching your head regarding last weeks &#8220;wanted ad&#8221; &#8211; yes this was a surprise for us (esp. considering that that the company was restarted with a new CEO just 4 months ago..oh well that&#8217;s life I guess :) )</p>
<p>You can contact me <a href="mailto:consult@rgoarchitects.com">here</a></p>
<script src="http://feeds.feedburner.com/~s/arnonrgo?i=http://arnon.me/2010/07/interesting-opportunities/" type="text/javascript" charset="utf-8"></script><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=DYn9svts0MU:_c0Mon--Pho:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=DYn9svts0MU:_c0Mon--Pho:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=DYn9svts0MU:_c0Mon--Pho:cGdyc7Q-1BI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=cGdyc7Q-1BI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=DYn9svts0MU:_c0Mon--Pho:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=DYn9svts0MU:_c0Mon--Pho:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=DYn9svts0MU:_c0Mon--Pho:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=DYn9svts0MU:_c0Mon--Pho:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=DYn9svts0MU:_c0Mon--Pho:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=DYn9svts0MU:_c0Mon--Pho:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=DYn9svts0MU:_c0Mon--Pho:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=DYn9svts0MU:_c0Mon--Pho:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=DYn9svts0MU:_c0Mon--Pho:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CirrusMinor/~4/DYn9svts0MU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://arnon.me/2010/07/interesting-opportunities/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://arnon.me/2010/07/interesting-opportunities/</feedburner:origLink></item>
		<item>
		<title>Evolving Architectures – Part IV – Design mechanics</title>
		<link>http://feedproxy.google.com/~r/CirrusMinor/~3/10j0u26OB-U/</link>
		<comments>http://arnon.me/2010/07/evolving-architectures-part-iv-design-mechanics/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 21:38:58 +0000</pubDate>
		<dc:creator>Arnon Rotem-Gal-Oz</dc:creator>
				<category><![CDATA[Agile Architecture]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Featured Posts]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Evolution]]></category>
		<category><![CDATA[responsive design]]></category>
		<category><![CDATA[Software Architecture]]></category>

		<guid isPermaLink="false">http://arnon.me/?p=219</guid>
		<description><![CDATA[If we want to evolve architectures or change an existing architecture in general, for that matter, it is important to understand design mechanics. I recently attended a seminar with Kent Beck that talked about &#8220;responsive design&#8221;, where he provided a good definition for 5 strategies or types of design mechanics*: Leap Parallel Simplification Stepping Stone [...]]]></description>
			<content:encoded><![CDATA[<p>If we want to evolve architectures or change an existing architecture in general, for that matter, it is important to understand design mechanics. I recently attended a seminar  with <a href="http://www.threeriversinstitute.org/blog/">Kent Beck</a> that talked about  &#8220;responsive design&#8221;, where he provided a good definition for 5 strategies or types of design mechanics*:</p>
<ul>
<li>Leap</li>
<li>Parallel</li>
<li>Simplification</li>
<li>Stepping Stone</li>
<li>&#8220;Just Do it&#8221;</li>
</ul>
<p>Kent talks about these from a design and coding perspectives. Architecture is design but at a higher level and with more consequences system-wide so (I think)  are are few nuances  from how Kent sees this.</p>
<ul>
<li>&#8220;Just Do it&#8221; is what you do when you don&#8217;t exactly know where you are going and you so you&#8217;re adding features and everything but you probably heading into a <a href="http://www.rgoarchitects.com/nblog/CommentView,guid,0e4d6e45-d361-4b97-a67a-79257181cb3b.aspx">big ball of mud</a>. If possible it is better to avoid working this way, but sometimes realities take us there anyway.</li>
<li>Stepping Stone is what you do when you aren&#8217;t completely sure what needs to be done but you can imagine what would make the end-goal easier to reach. The way I see it, for architects that would mean an architecture proof of concept (spike), prototype of skeleton &#8211; the <a href="http://arnon.me/2010/05/saf-architecture-evaluation-evaluation-code/">three ways to evaluate architecture in code</a></li>
<li>Simplification &#8211; is when you don&#8217;t know what you want to do and it is too expansive to directly get to an end result. This is the basis of the iterative system. start small and gradually add features as you go. From an architecture perspective it is challenging to to get to a core simplified architecture you can grow later. This is useful as long as the changes in the architecture are within the expected growth path. when it is time to make a change in the architecture you&#8217;d need to go with the other strategies.</li>
<li>Parallel &#8211; is a technique to use when you know where you are going, but can&#8217;t afford to stop/halt what you already have so you keep the two designs going at the same time and migrate to the new way gradually. This is probably the best technique to use to evolve architecture as it fully considers what you already have. An analogy I like to use in describing this situation is building a new interchange on a highway. The new way would be great, but you can&#8217;t just stop traffic until everything will be in place so you&#8217;ve got to allow the old way (maybe not in full) until you can make the change safely &#8211; the same is true for a running business, nobody will halt the business until you&#8217;d get your new shiny thing up and running</li>
<li>Leap &#8211; is for when you know where you&#8217;re heading and you can afford to stop everything until the new way is in place. From an architecture perspective it is a bit like starting from scratch (I&#8217;ll expand on this in the next post). From a design perspective that would mean breaking the build until a few related changes are in place</li>
</ul>
<p>The next post will expand a little on Leap, Parallel and Simplification</p>
<hr />
* Kent also discussed several other interesting subjects related to design like <a href="http://www.threeriversinstitute.org/blog/?p=104">cohesion and coupling</a> or this <a href="http://www.threeriversinstitute.org/blog/?p=111">nice  definition for design</a> which are worth reading.<br />
** Illustration by <a href="http://www.flickr.com/photos/dipster1/1403240351/">dipster1</a></p>
<script src="http://feeds.feedburner.com/~s/arnonrgo?i=http://arnon.me/2010/07/evolving-architectures-part-iv-design-mechanics/" type="text/javascript" charset="utf-8"></script><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=10j0u26OB-U:Rkp-4vTxPTI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=10j0u26OB-U:Rkp-4vTxPTI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=10j0u26OB-U:Rkp-4vTxPTI:cGdyc7Q-1BI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=cGdyc7Q-1BI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=10j0u26OB-U:Rkp-4vTxPTI:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=10j0u26OB-U:Rkp-4vTxPTI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=10j0u26OB-U:Rkp-4vTxPTI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=10j0u26OB-U:Rkp-4vTxPTI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=10j0u26OB-U:Rkp-4vTxPTI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=10j0u26OB-U:Rkp-4vTxPTI:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=10j0u26OB-U:Rkp-4vTxPTI:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=10j0u26OB-U:Rkp-4vTxPTI:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=10j0u26OB-U:Rkp-4vTxPTI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CirrusMinor/~4/10j0u26OB-U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://arnon.me/2010/07/evolving-architectures-part-iv-design-mechanics/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://arnon.me/2010/07/evolving-architectures-part-iv-design-mechanics/</feedburner:origLink></item>
		<item>
		<title>Tidbits</title>
		<link>http://feedproxy.google.com/~r/CirrusMinor/~3/5koK4RUMZ-I/</link>
		<comments>http://arnon.me/2010/07/tidbits-2/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 19:54:28 +0000</pubDate>
		<dc:creator>Arnon Rotem-Gal-Oz</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[IASA]]></category>
		<category><![CDATA[SEI]]></category>
		<category><![CDATA[webinar]]></category>

		<guid isPermaLink="false">http://arnon.me/?p=211</guid>
		<description><![CDATA[New month new round of tidbits. IASA Israel chapter 2nd meeting This Thursday (July 8th) at 17:00 Israel time, IASA Israeli chapter is holding its 2nd meeting. I am going to be there moderating the discussion on Architecture and Lean/Agile projects if you are around Raanana feel free to join SEI webinar on software architecture [...]]]></description>
			<content:encoded><![CDATA[<p>New month new round of tidbits.</p>
<p><strong>IASA Israel chapter 2nd meeting<br />
</strong> This Thursday (July 8th)  at 17:00 Israel time, IASA Israeli chapter is holding its 2nd meeting. I am going to be there moderating the discussion on Architecture and Lean/Agile projects if you are around Raanana feel free to <a href="http://iasaisr.eventbrite.com/?ref=esli">join</a></p>
<p><strong>SEI webinar on software architecture<br />
</strong> Another software architecture related event going on on July 8th is a <a href="http://saturnnetwork.wordpress.com/2010/06/15/sei-webinar-july-8-rob-wojcik-software-architecture-fundamentals-technical-business-and-social-influences/">SEI webinar on What&#8217;s software architecture by Rob Wojcik</a> the webinar will take place on July 8 from 1:00 to 2:00 EDT. Looks like it is going to be an interesting listening if you are new to Software architecture.</p>
<p><strong>Business Analysis Agile survay</strong></p>
<p>Since my blog is also published in DDJ I get a lot of PR requests from all sorts of places, most of them end in my Junk email (if the SPAM filters doesn&#8217;t catch them first). From time to time something a little more interesting crops up. This time it was<a href="http://www.requirements.net/downloads/agile_and_the_business_analyst_30062010.pdf"> this survey</a> ran by <a href="http://requirements.net">requirements.net </a>, the International Institute of Business Analysis (IIBA) and capgemini.</p>
<p>What&#8217;s interesting about this survey is that 52% of the respondents were in business analysts (or BA management) roles and that 62% of the companies they work with had 1000+ employees. So we get some views of non-devs from large companies.</p>
<p>What I see in these results that Agile (with a capital A) is very much in vogue so everybody wants to say they are practicing agile even if they just moved to an iterative cycle within the same old waterfall process or as the survey word it:</p>
<blockquote><p>&#8220;Comments from participants demonstrate that many in IT Management desire to maintain current processes and organization structure, while delivering iterative development cycles. Of course, this often results in a hybrid Agile-Waterfall methodology which is commonly referred to as “Scrummerfall” [ARGO: I guess that's pronounced Scrum-fail" :) ] or “Wagile.”&#8221;</p></blockquote>
<p>Also it seems a lot of people don&#8217;t really understand agile by thinking that SCRUM is a synonym for agile; thinking that product owner and scrum master are a logical fit to be the same person (46%) rather that dev and QA (only 11%);  leaving the business analysts as &#8220;requirements authors&#8221; (42%) rather than having them as part of the &#8220;client team&#8221; (as Subject matter experts (21%)) or product owners (16%) etc.</p>
<p>I guess the direction is what&#8217;s important :)</p>
<hr />Illustration by <a href="http://www.flickr.com/photos/photographi_esc_/822166922/in/photostream/">esc.ape(d)</a></p>
<script src="http://feeds.feedburner.com/~s/arnonrgo?i=http://arnon.me/2010/07/tidbits-2/" type="text/javascript" charset="utf-8"></script><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=5koK4RUMZ-I:uyI5haoFjSQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=5koK4RUMZ-I:uyI5haoFjSQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=5koK4RUMZ-I:uyI5haoFjSQ:cGdyc7Q-1BI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=cGdyc7Q-1BI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=5koK4RUMZ-I:uyI5haoFjSQ:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=5koK4RUMZ-I:uyI5haoFjSQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=5koK4RUMZ-I:uyI5haoFjSQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=5koK4RUMZ-I:uyI5haoFjSQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=5koK4RUMZ-I:uyI5haoFjSQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=5koK4RUMZ-I:uyI5haoFjSQ:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=5koK4RUMZ-I:uyI5haoFjSQ:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=5koK4RUMZ-I:uyI5haoFjSQ:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=5koK4RUMZ-I:uyI5haoFjSQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CirrusMinor/~4/5koK4RUMZ-I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://arnon.me/2010/07/tidbits-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://arnon.me/2010/07/tidbits-2/</feedburner:origLink></item>
		<item>
		<title>Tier is a natural boundary</title>
		<link>http://feedproxy.google.com/~r/CirrusMinor/~3/_10uR3a4lr0/</link>
		<comments>http://arnon.me/2010/06/tier-natural-boundary/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 07:37:39 +0000</pubDate>
		<dc:creator>Arnon Rotem-Gal-Oz</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Featured Posts]]></category>
		<category><![CDATA[Layers]]></category>
		<category><![CDATA[N-Tier architecture]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<category><![CDATA[Tiers]]></category>

		<guid isPermaLink="false">http://arnon.me/?p=202</guid>
		<description><![CDATA[When talking about multi-tiered architectures, we need to remember that the tier boundary is significant. The tier boundary is where distribution happens and if you remember the &#8220;fallacies of distributed computing&#8220;, you know not to take that lightly. A tier is a physical boundary (versus, for example, an Edge in a SOA which is a [...]]]></description>
			<content:encoded><![CDATA[<p>When talking about multi-tiered architectures, we need to remember that the tier boundary is significant. The tier boundary is where distribution happens and if you remember the &#8220;<a href="http://blogs.sun.com/jag/resource/Fallacies.html">fallacies of distributed computing</a>&#8220;, you know not to take that lightly.</p>
<p>A tier is a physical boundary (versus, for example, an Edge in a SOA which is a logical boundary within the service). The implications of that are numerous. For instance, you need to consider:</p>
<ul>
<li>Trust&#8211;who do you let in?</li>
<li>Security&#8211;what do you send out?</li>
<li>Performance&#8211;you need to serialize to pass the boundary, and remote data is expensive to fetch.</li>
<li>Availability&#8211;what happens if you crash?</li>
<li>Manageability&#8211;can anyone see what&#8217;s your state? Help you recover?</li>
<li>Temporal coupling&#8211;can you afford to make synchronous calls?</li>
<li>and many similar questions.</li>
</ul>
<p>Yet many times people think passing a tier is as simple as passing a logical layer. I should know. I made this stupid mistake more than 15 years ago in one of the first distributed systems I designed. I planned this beautiful separation of the UI controls from the business logic (I didn&#8217;t know it was called &#8220;MVC&#8221; and that someone else had figured it out ages ago, so I was pretty proud of myself). When you clicked on a button you just used metadata to say that BL should catch it. I had all this wonderful &#8220;infrastructure&#8221;that handled passing the call to its destination.</p>
<p>But then we wanted to take this n-layer application and put the BL in an &#8220;application server&#8221; which will handle multiple clients. Oh&#8211;now we need to move events over the wire , handle calls from multiple unrelated clients, pass a lot of data back and forth, and what about security&#8230; you can imagine the fiasco.</p>
<p>Thus, as Niels Bohr once said, &#8220;An expert is a person who has made all the mistakes which can be made in a very narrow field.&#8221; But you don&#8217;t have to make the same mistakes. Just remember that a tier is a natural boundary. You know what? You should think of a tier as the  edge of a cliff, right there &#8211; at the end of your application. You know you want to be careful and not  fall down.</p>
<hr />
[Originally posted Aug. 2006]<br />
Illustration: <a href="http://www.sxc.hu/photo/325650">&#8216;Derek J&#8217; by Phil Watt</a></p>
<script src="http://feeds.feedburner.com/~s/arnonrgo?i=http://arnon.me/2010/06/tier-natural-boundary/" type="text/javascript" charset="utf-8"></script><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=_10uR3a4lr0:pa1LSNqVf6g:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=_10uR3a4lr0:pa1LSNqVf6g:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=_10uR3a4lr0:pa1LSNqVf6g:cGdyc7Q-1BI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=cGdyc7Q-1BI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=_10uR3a4lr0:pa1LSNqVf6g:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=_10uR3a4lr0:pa1LSNqVf6g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=_10uR3a4lr0:pa1LSNqVf6g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=_10uR3a4lr0:pa1LSNqVf6g:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=_10uR3a4lr0:pa1LSNqVf6g:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=_10uR3a4lr0:pa1LSNqVf6g:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=_10uR3a4lr0:pa1LSNqVf6g:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=_10uR3a4lr0:pa1LSNqVf6g:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=_10uR3a4lr0:pa1LSNqVf6g:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CirrusMinor/~4/_10uR3a4lr0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://arnon.me/2010/06/tier-natural-boundary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://arnon.me/2010/06/tier-natural-boundary/</feedburner:origLink></item>
		<item>
		<title>Tidbits</title>
		<link>http://feedproxy.google.com/~r/CirrusMinor/~3/2HDL-PBh6nQ/</link>
		<comments>http://arnon.me/2010/06/tidbits/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 06:46:24 +0000</pubDate>
		<dc:creator>Arnon Rotem-Gal-Oz</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[recommendations]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<category><![CDATA[tidbits]]></category>

		<guid isPermaLink="false">http://arnon.me/?p=188</guid>
		<description><![CDATA[From time to time I am going to post a few thoughts that come up which are longer than a tweet but shorter than a post. Software Architecture books I recently got a question from Jon : I am wanting to make the leap from senior engineer/team lead to software architect, can you recommend any [...]]]></description>
			<content:encoded><![CDATA[<p>From time to time I am going to post a few thoughts that come up which are longer than a tweet but shorter than a post.</p>
<p><strong>Software Architecture books</strong></p>
<p>I recently got a question from Jon :</p>
<blockquote><p>I am wanting to make the leap from senior engineer/team lead to software architect, can you recommend any good books or resources?</p></blockquote>
<p>Well, my current top 5 books for architects are</p>
<ul>
<li><a href="http://www.viewpoints-and-perspectives.info/">Software system architecture</a> &#8211;  Nick Rozanski and Eoin Woods.The book I wish I&#8217;ve written :) covers view and viewpoints very well</li>
<li><a href="http://www.pearsonhighered.com/educator/academic/product/0,4096,0321154959,00.html">Software architecture in practice</a> &#8211; Len Bass, Rick Kasman and Paul Clements &#8211; A good solid introduction to software architecture from the people at SEI</li>
<li><a href="http://www.amazon.com/Art-Systems-Architecting-Second/dp/0849304407">The art of system archieteting </a> &#8211; Mark W. Maier  &amp; Eberhardt Rechtin. The best book on using heuristics with software architecture (there&#8217;s now a 3rd edition but I haven&#8217;t read it)</li>
<li><a href="http://www.amazon.com/o/asin/0321200683/">Enterprise Integration patterns </a>- Gregor Hohpe  &amp; Bobby Woolf &#8211; Best architectural patterns catalog.</li>
<li><a href="http://www.amazon.com/Patterns-Enterprise-Application-Architecture-Martin/dp/0321127420/">Patterns of Enterprise Application Architecture</a> &#8211; Martin Fowler et al &#8211; 2nd best architectural patterns catalog.</li>
</ul>
<p>Another good source which is not a book is the <a href="http://www.iasahome.org/web/home/repo">IASA content repository </a> carrying papers written by a lot of smart guys and gals (somehow I managed to  sneak a paper there as well).</p>
<p>Lastly there are <a href="http://www.rgoarchitects.com/nblog/2009/02/27/10PapersEverySoftwareArchitectShouldReadAtLeastTwice.aspx">the 10 papers every software architect should read</a></p>
<p><strong>.NET and innovation</strong></p>
<p>Jeremy Miller posted an interesting post &#8220;<a href="http://codebetter.com/blogs/jeremy.miller/archive/2010/06/10/a-train-of-thought-innovation-and-net-edition.aspx">A train of thoughts: Innovation .NET edition</a>&#8220;. I didn&#8217;t write any .NET OSS (my bad) so I can&#8217;t comment on the OSS side of the post but I can comment on Innovation.</p>
<p>The way I see this innovation grows from pain &#8211; something that bothers us. That usually happens at the fringes not at the mainstream (that doesn&#8217;t mean that if something is great it won&#8217;t become mainstream &#8211; but it isn&#8217;t born there). This has been the case with Java &#8211; where the mainstream was painful J2EE  so a lot of new stuff sprang all over the place to fix that. These days there&#8217;s still innovation on the JVM but it usually not happening in Java. .Net is very much the same, or even worse, in the sense that it came in after Java so a. its comfort zone  was wider and b. it had a lot of Java innovation to copy over (NUnit, NHibernate N..). Obviously other, less mainsteam environments (like Ruby et al) will see more innovation these days.</p>
<p><strong>Bye bye iPhone</strong></p>
<p><strong> </strong>I&#8217;ve been using an iPhone 3GS for about a year now. I have to say that, for me, the platform was nice, but unusable unless Jailbroken. Even now with iOS4 copied the functionality of many of the jailbroken add-ons I used there are still quite a few reasons to Jailbreak (like <a href="http://modmyi.com/cydia/package.php?id=13111">Lockinfo</a>, <a href="http://mobile.grooveshark.com/iphone">Grooveshark</a>, <a href="http://imobilecinema.com/">playing flash video</a> etc.).  There&#8217;s already a jailbreak for v.4 but I am getting tired of the way Apple handles all this and other aspects of Apples tyranny (e.g. in regards to apps approval).</p>
<p>Apropos innovation mentioned above, I wonder if Apple will ever understand that the jailbreak community is where the iphone platform innovation happens (starting with getting application to the iphone in the first generation&#8230;). We can see that is a common pattern for enterprises to see successful or promising innovative things and subsume them. We can see it with Jailbroken features getting into the iOS, we can see it with Twitter cannibalizing their ecosystem (making iphone client, introducing t.co as a url shortener), Microsoft with ASP MVC and  (trying to) reinvent ORM etc.</p>
<p>Anyway, I&#8217;ve decided to replace my (i)phone with an Android handset (most probably a Samsung Galaxy S), I wonder how that will go :)</p>
<hr />Illustration by <a href="http://www.flickr.com/photos/photographi_esc_/822166922/in/photostream/">esc.ape(d)</a></p>
<script src="http://feeds.feedburner.com/~s/arnonrgo?i=http://arnon.me/2010/06/tidbits/" type="text/javascript" charset="utf-8"></script><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=2HDL-PBh6nQ:s4N2nm4-8Zc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=2HDL-PBh6nQ:s4N2nm4-8Zc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=2HDL-PBh6nQ:s4N2nm4-8Zc:cGdyc7Q-1BI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=cGdyc7Q-1BI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=2HDL-PBh6nQ:s4N2nm4-8Zc:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=2HDL-PBh6nQ:s4N2nm4-8Zc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=2HDL-PBh6nQ:s4N2nm4-8Zc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=2HDL-PBh6nQ:s4N2nm4-8Zc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=2HDL-PBh6nQ:s4N2nm4-8Zc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=2HDL-PBh6nQ:s4N2nm4-8Zc:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=2HDL-PBh6nQ:s4N2nm4-8Zc:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=2HDL-PBh6nQ:s4N2nm4-8Zc:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=2HDL-PBh6nQ:s4N2nm4-8Zc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CirrusMinor/~4/2HDL-PBh6nQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://arnon.me/2010/06/tidbits/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://arnon.me/2010/06/tidbits/</feedburner:origLink></item>
		<item>
		<title>Software Architecture – 5 years later</title>
		<link>http://feedproxy.google.com/~r/CirrusMinor/~3/ZfpVSWQYNNI/</link>
		<comments>http://arnon.me/2010/06/software-architecture-5-years/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 18:37:03 +0000</pubDate>
		<dc:creator>Arnon Rotem-Gal-Oz</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[complexity]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Lesson learned]]></category>
		<category><![CDATA[metaphor]]></category>
		<category><![CDATA[Software Architecture]]></category>

		<guid isPermaLink="false">http://arnon.me/?p=172</guid>
		<description><![CDATA[I got several interesting comments to &#8220;&#8221; (both here and on DZone). Some of them said I don&#8217;t get the architect &#8220;role&#8221;, some said I am looking at things from the code level and don&#8217;t see the forest for the trees,  others said that this whole &#8220;agile&#8221; thing is crap (admittedly not in so many [...]]]></description>
			<content:encoded><![CDATA[<p>I got several interesting comments to &#8220;<a href="http://arnon.me/2010/06/architect/">Who needs an architect</a>&#8221; (both here and on <a href="http://architects.dzone.com/news/who-needs-architect-anyway">DZone</a>). Some of them said I don&#8217;t get the architect &#8220;role&#8221;, some said I am looking at things from the code level and don&#8217;t see the forest for the trees,  others said that this whole &#8220;agile&#8221; thing is crap (admittedly not in so many words). Another one talked about the construction architect as a metaphor for software architect etc.</p>
<p>I started writing this post as an elaborate answer to these comments but something was bothering me. Something about the comments sounded familiar , yep you&#8217;ve got it &#8211; <a href="www.rgoarchitects.com/Files/Architecture.ppt">I wrote similar things more than 5 years ago</a> (if you&#8217;re interested in the parallels between the presentation to the comments see below). When I originally made this presentation I had about 15 years of experience in the software industry and 5 years as an Architect (by title and role) where I designed, led, reviewed, consulted and what not quite a few software projects (including some very large scale ones).</p>
<p>However the point of this post is not to say &#8220;been there, done that, got the t-shirt to prove it&#8221; &#8211; Rather I&#8217;d like to point out some of my observations today, i.e.  5 years and several projects later</p>
<ul>
<li>The construction architect metaphor is flawed &#8211; I guess all metaphors are flawed by definition but the construction in general and buildings in particular are quite far from software in the sense that software is soft and changing. The building metaphor serves well to demonstrate size and complexity will need different methods but software is not build it is written and it is abstract and it changes.  It is very presumptuous to think you can capture the right architecture for a project on the onset. Unless the project is either  simple enough, in which case it would probably benefit from an off-the-shelf architecture just the same. A or the project is a  well-trodden path being the nth in a series of projects. In the other cases software architecture will have to change and evolve with the project (you can read a <a href="http://arnon.me/category/blog/featured-posts/agile-architecture/">series of posts</a> I am writing on just that). Buildings don&#8217;t do that. That number of changing requirements that software projects need to endure is on a class of its own</li>
<li>Enterprise architects are not software architects &#8211; After many years with a lot of debates on what software architecture is seems that most definitions today are in the IEEE-1471 area. Considering this definition is about the structure of software and not the constellation of software within an enterprise and their alignment with the overall business it should be pretty obvious that enterprise architects design the enterprise rather than software. This is not to say that it isn&#8217;t an important job just that it requires some different skills (like deep understanding of the business itself and less, for example, technological depth). project/solution architects and product line architects (to an extent) are software architects</li>
<li>Architectural decisions are manifested in code and how it structured. The architect should understand  the different needs of the stakeholder and base her tradeoffs. A UML drawing as nice as it is is not an architectural decision until it is actually implemented in the system. I&#8217;ve seen a lot of system that had elaborated architecture documents which had very little resemblance to the actual architecture in the project as was manifested in the code. Architects that are far from the code are just playing with themselves</li>
<li>Architects should strive to code. Whether or not an architect will write code should only depend on the number of architects vs. the size of  the team. When there aren&#8217;t enough architects to go around an architect will usually won&#8217;t write too much. In any event, the architect should know how to code and up to date on the technologies involved. The architectural constraints posed by the technologies in use are real and the best way to understand them is to write code. Things that are suggested by the architect should be reasonably feasible if you can&#8217;t code chances are what you suggest will not meat this criterion. If you don&#8217;t actively code you&#8217;d get rusty &#8211; do the math.</li>
<li> Algorithms are not developed they are researched. You don&#8217;t have a concrete plan for the development of an algorithm you have several candidate ideas or approaches &#8211; some of them will work some won&#8217;t. This is true even if you adapt an existing algorithm. Some agile practices aren&#8217;t a good fit for this kind of &#8220;development&#8221; (TDD that was mentioned in one comment is an example- though a lot of tests for regression purposes are almost a must). Algorithmic research does need to responde to change as things you expected would work may need other approaches. Also, like the rest of the software the algorithms should match the changing business needs e.g. in xsights we started with 3G video calls and small(ish) image databases and now we focus on identification via clients and large image databases -the  chalenges are different. (It might be a good idea to do a post or two on architecture challenges in project with a lot of algorithmic components &#8211; let me know if this is interesting to you)</li>
<li>Agile shines for new development &#8211; This isn&#8217;t an architectural point, but the issue was raised in one of the comments. When you start with a new system a lot of the requirements are flaky &#8211; and so, most likely, is your understanding of the domain. Having a development methodology that embrace change is a real boon (esp. in startups :) )</li>
</ul>
<hr />
<ul>
<li>Software architecture vs. building architecture (Gilbert comment &lt;-&gt;slides 4-7 based on slides by Philippe Kruchten)</li>
<li>Software architecture at different levels (Sadi, Arthus &lt;-&gt; slides 20-24)</li>
<li>Software architecture vs. design (Jerome, Sadi, Arthur, Peter &lt;-&gt;slide 17)</li>
<li>Coding architects and agile (peter &lt;-&gt; few articles in DDJ s<a href="http://www.infoq.com/news/Should-Architects-Code">ee a discussion on InfoQ</a>)</li>
<li>etc.</li>
</ul>
<p>* illustration : Ziggy stardust album cover</p>
<script src="http://feeds.feedburner.com/~s/arnonrgo?i=http://arnon.me/2010/06/software-architecture-5-years/" type="text/javascript" charset="utf-8"></script><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=ZfpVSWQYNNI:xq8-YihmUJo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=ZfpVSWQYNNI:xq8-YihmUJo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=ZfpVSWQYNNI:xq8-YihmUJo:cGdyc7Q-1BI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=cGdyc7Q-1BI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=ZfpVSWQYNNI:xq8-YihmUJo:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=ZfpVSWQYNNI:xq8-YihmUJo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=ZfpVSWQYNNI:xq8-YihmUJo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=ZfpVSWQYNNI:xq8-YihmUJo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=ZfpVSWQYNNI:xq8-YihmUJo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=ZfpVSWQYNNI:xq8-YihmUJo:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=ZfpVSWQYNNI:xq8-YihmUJo:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=ZfpVSWQYNNI:xq8-YihmUJo:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=ZfpVSWQYNNI:xq8-YihmUJo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CirrusMinor/~4/ZfpVSWQYNNI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://arnon.me/2010/06/software-architecture-5-years/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://arnon.me/2010/06/software-architecture-5-years/</feedburner:origLink></item>
		<item>
		<title>Who needs an architect anyway?</title>
		<link>http://feedproxy.google.com/~r/CirrusMinor/~3/CjurSeqWVZs/</link>
		<comments>http://arnon.me/2010/06/architect/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 21:46:05 +0000</pubDate>
		<dc:creator>Arnon Rotem-Gal-Oz</dc:creator>
				<category><![CDATA[Agile Architecture]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Featured Posts]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software Architect role]]></category>
		<category><![CDATA[Software Architecture]]></category>

		<guid isPermaLink="false">http://arnon.me/?p=162</guid>
		<description><![CDATA[Not all projects need architects. There, I&#8217;ve said it. Not all projects need architects and I am not talking here just about trivial projects. There are cases (maybe even many cases) where you can get by with what I call &#8220;off-the-shelf&#8221; architecture &#8211; maybe with a few adjustments that any master developer (i.e. seasoned and [...]]]></description>
			<content:encoded><![CDATA[<p>Not all projects need architects. There, I&#8217;ve said it. Not all projects need architects and I am not talking here just about trivial projects. There are cases (maybe even many cases) where you can get by with what I call &#8220;off-the-shelf&#8221; architecture &#8211; maybe with a few adjustments that any master developer (i.e. seasoned and experienced developer) can handle. For instance a lot of web-sites can do pretty well by using Model-View-Controller (or a derivative of that) along with a simple O/R mapper such as active-record. In fact a lot of them do just that,  when they use a framework like Rails that made these architectural choices for them*. Another example is the vanilla 3-tier architecture provided by software vendors (such as <a href="http://msdn.microsoft.com/en-us/library/ms978689.aspx">this one</a> by Microsoft). Yes, when you take something off-the-shelf, the result might not be optimal but that doesn&#8217;t mean it isn&#8217;t sufficient. You just have to be aware for the tradeoffs&#8230;</p>
<p>Another point is that &#8220;design&#8221; is not some exclusive architect thing. A developer is not a good developer unless she also known about  proper design. For that matter  &#8221;mastery&#8221; of just the  technical aspects of a language without understanding the wider context of design will just help you code a lot of crap faster. So, again , a good developer knows a thing or two about design and can handle trade offs and variations on a project architecture (especially in cases described above).</p>
<p>This means  we need to consider a few issues &#8211; When (if at all?) do you need architects? What do they Do? What&#8217;s their relation and interaction with the developers ?</p>
<p><strong>When do you need architects? </strong></p>
<p>It isn&#8217;t always an obvious choice between a project that can get by with an &#8220;off-the-shelf&#8221; architecture and one that needs an architect. It would be nice if we could have something like a <a href="http://en.wikipedia.org/wiki/Litmus_test_(chemistry)">litmus test</a> that would tell us if architects are needed or not. I don&#8217;t have one. The closest thing to a litmus test I have  is something I call the SCLR test (pronounced scaler). SCLR stands for Size, Complexity &amp; Limited  Resources.</p>
<ul>
<li>Size &#8211; well if you are going to have something  estimated at 1000 man-years or dozens of teams. I think it is pretty obvious that you can&#8217;t just use something  which isn&#8217;t made to fit. If anything there&#8217;s a need to divide the work between the teams in a way that would make sense so that you wouldn&#8217;t get a big-ball of mud. There&#8217;s also a lot of need to coordinate the efforts and keep the big-picture inline. Personally I think that it doesn&#8217;t  have to be a huge project to warrent some architects involvement. Since as Fred Brooks notes the number of interactions grows exponentially as we add more people.  In my experience trouble starts even with more modest numbers &#8211; more than 4 or even 3 different teams working concurrently is probably a good number to start thinking  about architects</li>
<li>Complexity &#8211; There are many signs for complexity in a project. The vision statement can provide a hint. &#8220;Let&#8217;s design the software to support the next mars mission&#8221;, &#8220;best CRM platform ever&#8221;  &#8211; an ambitions project will not make-do with &#8220;average&#8221; architecture. Size (which  I already mentioned) is also a sign of complexity, while previously I talked about size of the project, the size of data,number of concurrent users etc. is also relevant when we&#8217;re thinking about complexity . A lot of external interfaces is another sign. Integration doesn&#8217;t seem very complicated, until you actually try to pull it off. When you have to do a lot of that in a project that&#8217;s complex. And there are many other such signs</li>
<li>Limited Resources &#8211; Naturally every project has limited resources, but limited resources should be considered as a sign for architect involvement if the resources are extreme. When resources are extremely limited the tradeoffs that have to be done are more meaningful, which is why wed want people who can help with that (i.e. architects). For instance in a projects I worked on in the past we had a lot of availability and performance requirements on one hand but only so many &#8220;U&#8221;s in the rack and even limited electricity to make all this magic happen. This turned something which otherwise was a relatively standard IT project into something a lot more challenging.</li>
</ul>
<p>Let&#8217;s assume I convinced you that some projects need architects. Convinced, you go and hire one. now what?</p>
<p><strong>What do architects do?<br />
</strong><br />
Let&#8217;s start by looking at  &#8220;architectural decisions&#8221; &#8211; which is sure sounds like something we&#8217;d want an architect to do. I read once (I think that was Martin Fowler) that an architectural decision is a decision that in hindsiight you wished you made right. if we look at a formal definition of software architecture (say from IEEE 1471) we see that the architecture embodies the fundamental decisions about the system its components, their relations and their properties. Using this definition an architectural decision is a fundamental decision about the system (which pretty much explain why we want to make them right etc.)</p>
<p>Well, here are two observations on what I&#8217;ve said thus far. One is that we would want to postpone architectural decision as much as we can, since changing them will cause us a lot of headache. The problem is that in order to postpone an architectural decision we need to build flexibility into the system which is an architectural quality in itself &#8211; which might not be the top of the list if we prioritize it vs. other architectural qualities we need.</p>
<p>The second observation is that if we &#8220;refactor&#8221; the pretty language out from both of these definition &#8211; we can see that an architectural decision is basically a guess, hopefully that&#8217;s an educated guess but it is a guess none-the-less. and as Albert Einstein once said it is  hard to make  predictions &#8211; especially about the future.</p>
<p>This is why architects  breadth of knowledge &#8211; which helps explain the architect training program I posted about a few weeks ago (see <a href="http://www.rgoarchitects.com/nblog/2007/09/29/TheNETJavaArchitectTrainingProgram.aspx">Architect training program Part I</a> and <a href="http://www.rgoarchitects.com/nblog/2007/10/04/TheNETJavaArchitectTrainingProgramPartII.aspx">Architect training program Part II)</a>. Another aspect is experience. And to get a wider perspective it can be helpful if this experience includes other roles besides developer such as project manager or business analyst etc. Another important component is domain knowledge and understanding of the business.</p>
<p>Using all these you (as an architect) may come up with a reasonable architectural decision (e.g. use MVC pattern) and a design to match it and that&#8217;s it.</p>
<p>Well, actually, not quite since as I said earlier it is still a guess. Remember  an architectural decision (and any design for that matter) is a mirage no matter how beautiful the power point slide looks (or white board or UML sketch etc.)</p>
<p>Alas, power point compilers are still in the making. Which means that as an architect, you must be able to prove your point in writing &#8211; that is coding. While you are at it, you also need to know a thing or two about the technology you are using because it too has an architecture, features etc. which may (and usually do) have a significant effect on the end result. (You can read a little bit more on this in the &#8220;<a href="http://www.rgoarchitects.com/files/archdeploy.pdf">Architecture Deployment</a>&#8221; paper I published a while ago).</p>
<p>The result of trying to postpone architectural decisions coupled with  ever changing requirements and with adding details as we unfold the  architectural abstraction level to a working system, is that the architect can&#8217;t just appear at the inception of a project and disappear afterwards &#8211; they need to stick around for the game. This is especially true if you want to have an <a href="http://arnon.me/2010/05/evolving-architectures-part-whats-software-architecture/">evolving architecture</a>.</p>
<p>The architect&#8217;s role goes beyond making architectural decisions. In effect the role shares some of the CTO roles -though on a smaller scale i.e. withing projects rather than companies making the architect the project CTO</p>
<p>Tom Berray has an <a href="http://www.brixtonspa.com/Career/The_Role_of_the_CTO_4Models.pdf">excellent paper describing 4 models for the role of a CTO.</a> 3 of them can be applied to software architects (within their projects)</p>
<ul>
<li>&#8220;Big Thinker&#8221; &#8211; This is somewhat akin to the role discussed in the previous post.</li>
<li>&#8220;External Facing Technologiest&#8221; &#8211; I usually saw this in larger projects, but it is also applicable for smaller ones. There are many occasions where the technical capabilities of the project have to be presented and/or negotiated with external stakeholders. Architects are in a good position to perform this as they should have good understanding of both the business and the technology. Additionally making architectural decisions already requires the architect to understand the different stakeholders&#8217; needs</li>
</ul>
<p>The third model is called &#8220;Technology Visionary and Operations Manager&#8221; &#8211; Making sure that technology works to deliver business goals &#8211; but how is that done?</p>
<p>In their book on organizational patterns, Jim Coplien and Neil Harrison, talk about the &#8220;Quattro Pro for Windows&#8221; (QPW) development team. According to the case study, Borland had a team of 4 architects who worked together to produce what the authors call prototypes*. 6 month later these architects were joined by additional developers to produce the product. During the development the architects kept meeting on a daily basis to coordinate their efforts (sort of like a daily stand-up in a scrum of scrums).</p>
<p>The situation in the QPW is probably close to the ideal architect involvement in a project &#8211; coding architects that work closely with the team, while driving technical and architectural decisions. The availability of multiple architects (but not too many &#8211; to prevent the &#8220;design by committee&#8221; effect) also enhances the overall quality of the solution.</p>
<p>Another aspect of the architect work is to act as a coach/mentor. It isn&#8217;t enough for the architect to &#8220;know best&#8221;. We already know that architect must also be able to reason about their recommendations/decisions, but that&#8217;s just part of the story. Helping other team members get better in what they do means that they&#8217;d be able to do their job better, they&#8217;d be able to come up with their own ideas (and get more fresh ideas into the discussions) and produce better software. Since the architect is ultimately responsible  for the quality of the solution, making others perform better should be a top priority for the architect. Being considered as a source of knowledge will help an architect perform his/her role, <a href="http://www.codingthearchitecture.com/2007/11/29/once_an_architect_always_an_architect.html">even when they don&#8217;t have an architect title</a></p>
<p>[This post is an edited version of several posts I wrote in 2007 and are (IMHO) worth reprinting] </p>
<hr size="2" />* Rails has more than just MVC and Active-Record but that isn&#8217;t an important point for this discussion<br />
** In this post &#8220;Architect&#8221; means someone doing software architecture work (role) and not necessarily someone with the job title &#8220;architect&#8221;<br />
*** Illustration taken from Matrix Reloaded</p>
<script src="http://feeds.feedburner.com/~s/arnonrgo?i=http://arnon.me/2010/06/architect/" type="text/javascript" charset="utf-8"></script><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=CjurSeqWVZs:ddkQU7U4qs4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=CjurSeqWVZs:ddkQU7U4qs4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=CjurSeqWVZs:ddkQU7U4qs4:cGdyc7Q-1BI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=cGdyc7Q-1BI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=CjurSeqWVZs:ddkQU7U4qs4:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=CjurSeqWVZs:ddkQU7U4qs4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=CjurSeqWVZs:ddkQU7U4qs4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=CjurSeqWVZs:ddkQU7U4qs4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=CjurSeqWVZs:ddkQU7U4qs4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=CjurSeqWVZs:ddkQU7U4qs4:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=CjurSeqWVZs:ddkQU7U4qs4:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=CjurSeqWVZs:ddkQU7U4qs4:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=CjurSeqWVZs:ddkQU7U4qs4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CirrusMinor/~4/CjurSeqWVZs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://arnon.me/2010/06/architect/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<feedburner:origLink>http://arnon.me/2010/06/architect/</feedburner:origLink></item>
		<item>
		<title>Software architecture should start with Why</title>
		<link>http://feedproxy.google.com/~r/CirrusMinor/~3/_p_Lkqfs6GQ/</link>
		<comments>http://arnon.me/2010/05/software-architecture-start/#comments</comments>
		<pubDate>Sun, 23 May 2010 21:28:57 +0000</pubDate>
		<dc:creator>Arnon Rotem-Gal-Oz</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[architectural requirements]]></category>
		<category><![CDATA[inspiration]]></category>
		<category><![CDATA[quality attributes]]></category>
		<category><![CDATA[Software Architecture]]></category>

		<guid isPermaLink="false">http://arnon.me/?p=132</guid>
		<description><![CDATA[I recently saw Simon Sinek&#8216;s TedX talk on Start with Why (see below) talking about leadership. But WHY  am I telling you this? For one, it&#8217;s a good talk on leadership and inspiration in itself (well worth the  18 minutes or so it would take you to watch it). The main reason, however, as the [...]]]></description>
			<content:encoded><![CDATA[<p>I recently saw <a href="http://www.startwithwhy.com/">Simon Sinek</a>&#8216;s TedX talk on Start with Why (see below) talking about leadership.</p>
<p>But WHY  am I telling you this? For one, it&#8217;s a good talk on leadership and inspiration in itself (well worth the  18 minutes or so it would take you to watch it). The main reason, however, as the title says, is that  it also pertains to software architecture decisions.</p>
<p>Simon talks about &#8220;the golden circle&#8221; going from Why -&gt; How -&gt; What. Saying most people work from the outside in (rarely getting to the why) and leaders work from the inside our (starting with Why). It is true for us as well &#8211;  Software architecture decisions should start with why</p>
<p>We&#8217;re not just building an SOA (What) using mule or nservicebus (How) we&#8217;re doing that to build a flexible solution so that we can respond to changing business needs (Why).</p>
<p>We&#8217;re not just using a NoSQL solution (What) using Cassandra cluster (How) we&#8217;re doing that to solve a database reliability and availability problem of managing a large dataset with high write  (Why) to allow the business to support X millions of images (in xsights case) with Y concurrent users and search times less than Z seconds (a better Why)</p>
<p>This is the essence of why it is a very good idea to describe <a href="http://arnon.me/2010/05/quality-attributes-introduction/">Quality attributes</a> in terms of functional scenarios. We want to make sure that an architectural solution will be tied and will answer a real business scenario within the system. We don&#8217;t want to provide fault-tolerance or 99.999% uptime . That&#8217;s not interesting. We need to define why we need high-availability, what will be the consequences of the downtime loss of a business transaction? loss of 100K dollars? loss of life? &#8211; for the last case maybe 99.999% uptime is not enough for the first case maybe a 95% uptime will do &#8211; start with why. It can save you money, it will help you get to the right requirements and it will help you justify your decisions</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/u4ZoJKF_VuA&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;color1=0x2b405b&amp;color2=0x6b8ab6" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/u4ZoJKF_VuA&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;color1=0x2b405b&amp;color2=0x6b8ab6" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<hr />
Illustration by <a href="http://www.flickr.com/photos/venturist/2241374395/">venturist</a></p>
<script src="http://feeds.feedburner.com/~s/arnonrgo?i=http://arnon.me/2010/05/software-architecture-start/" type="text/javascript" charset="utf-8"></script><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=_p_Lkqfs6GQ:AA3S1YZ5ECk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=_p_Lkqfs6GQ:AA3S1YZ5ECk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=_p_Lkqfs6GQ:AA3S1YZ5ECk:cGdyc7Q-1BI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=cGdyc7Q-1BI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=_p_Lkqfs6GQ:AA3S1YZ5ECk:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=_p_Lkqfs6GQ:AA3S1YZ5ECk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=_p_Lkqfs6GQ:AA3S1YZ5ECk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=_p_Lkqfs6GQ:AA3S1YZ5ECk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=_p_Lkqfs6GQ:AA3S1YZ5ECk:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=_p_Lkqfs6GQ:AA3S1YZ5ECk:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=_p_Lkqfs6GQ:AA3S1YZ5ECk:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=_p_Lkqfs6GQ:AA3S1YZ5ECk:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=_p_Lkqfs6GQ:AA3S1YZ5ECk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CirrusMinor/~4/_p_Lkqfs6GQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://arnon.me/2010/05/software-architecture-start/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://arnon.me/2010/05/software-architecture-start/</feedburner:origLink></item>
		<item>
		<title>Nanoservices anti-pattern pdf version</title>
		<link>http://feedproxy.google.com/~r/CirrusMinor/~3/OaTu_K8YnHU/</link>
		<comments>http://arnon.me/2010/05/nanoservices-antipattern-pdf-version/#comments</comments>
		<pubDate>Tue, 18 May 2010 07:38:14 +0000</pubDate>
		<dc:creator>Arnon Rotem-Gal-Oz</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[anti-patterns]]></category>
		<category><![CDATA[Service Oriented Architecture]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Software Architecture]]></category>

		<guid isPermaLink="false">http://arnon.me/?p=125</guid>
		<description><![CDATA[The formatting on the html version of the nano-services is a bit off (Word to HTML is so much fun) so I am also making it available  as PDF. if you don&#8217;t remember Nonoservice is an Anti-pattern where a service is too fine grained. Nanoservice is a service whose overhead (communications, maintenance etc.) out-weights its [...]]]></description>
			<content:encoded><![CDATA[<p>The formatting on the <a href="http://www.rgoarchitects.com/nblog/2010/04/28/SOAAntipatternNanoservices.aspx">html version of the nano-services</a> is a bit off (Word to HTML is so much fun) so I am also <a href="http://bit.ly/dpMY7H">making it available  as PDF</a>.</p>
<p>if you don&#8217;t remember</p>
<blockquote><p><strong>Nonoservice is an Anti-pattern where a service is too fine grained. Nanoservice is a service whose overhead (communications, maintenance etc.) out-weights its utility.</strong></p></blockquote>
<hr />* illustration by <a href="http://www.sxc.hu/photo/651768">verzerk</a></p>
<script src="http://feeds.feedburner.com/~s/arnonrgo?i=http://arnon.me/2010/05/nanoservices-antipattern-pdf-version/" type="text/javascript" charset="utf-8"></script><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=OaTu_K8YnHU:aixd0SiR84E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=OaTu_K8YnHU:aixd0SiR84E:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=OaTu_K8YnHU:aixd0SiR84E:cGdyc7Q-1BI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=cGdyc7Q-1BI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=OaTu_K8YnHU:aixd0SiR84E:G79ilh31hkQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=G79ilh31hkQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=OaTu_K8YnHU:aixd0SiR84E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=OaTu_K8YnHU:aixd0SiR84E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=OaTu_K8YnHU:aixd0SiR84E:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=OaTu_K8YnHU:aixd0SiR84E:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=OaTu_K8YnHU:aixd0SiR84E:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=OaTu_K8YnHU:aixd0SiR84E:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?i=OaTu_K8YnHU:aixd0SiR84E:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/CirrusMinor?a=OaTu_K8YnHU:aixd0SiR84E:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/CirrusMinor?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/CirrusMinor/~4/OaTu_K8YnHU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://arnon.me/2010/05/nanoservices-antipattern-pdf-version/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://arnon.me/2010/05/nanoservices-antipattern-pdf-version/</feedburner:origLink></item>
	</channel>
</rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Database Caching 27/38 queries in 0.020 seconds using disk

Served from: arnon.me @ 2010-09-02 10:47:42 -->
