<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Art of Software Reuse</title>
	<atom:link href="http://artofsoftwarereuse.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://artofsoftwarereuse.com</link>
	<description>Enabling Organizational Agility using Systematic Software Reuse</description>
	<lastBuildDate>Mon, 06 Sep 2010 13:58:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='artofsoftwarereuse.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/867ea3399412f403d50af9d95344fa89?s=96&#038;d=http://s2.wp.com/i/buttonw-com.png</url>
		<title>Art of Software Reuse</title>
		<link>http://artofsoftwarereuse.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://artofsoftwarereuse.com/osd.xml" title="Art of Software Reuse" />
	<atom:link rel='hub' href='http://artofsoftwarereuse.com/?pushpress=hub'/>
		<item>
		<title>Leverage the Service Refactoring Pattern</title>
		<link>http://artofsoftwarereuse.com/2010/09/06/leverage-the-service-refactoring-pattern/</link>
		<comments>http://artofsoftwarereuse.com/2010/09/06/leverage-the-service-refactoring-pattern/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 13:58:53 +0000</pubDate>
		<dc:creator>vijaynarayanan</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Reuse]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[adapter]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[Service-oriented architecture]]></category>
		<category><![CDATA[software reuse]]></category>

		<guid isPermaLink="false">http://artofsoftwarereuse.com/?p=2434</guid>
		<description><![CDATA[The Service Refactoring pattern facilitates changes in service logic and/or underlying service implementation while preserving existing consumer contracts. The Service Refactoring pattern allows the service provider to change the service implementation while preserving existing service contracts. This allows the provider the flexibility to honor existing consumers while taking advantage of streamlined service logic and/or better [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2434&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The Service Refactoring pattern facilitates changes in service logic and/or underlying service implementation while preserving existing consumer contracts.</p>
<p>The <a href="http://www.soapatterns.org/service_refactoring.asp">Service Refactoring pattern</a> allows the service provider to change the service implementation while preserving existing service contracts. This allows the provider the flexibility to honor existing consumers while taking advantage of streamlined service logic and/or better technologies. If this idea sounds familiar, it is based on the refactoring principles and techniques advocated by Martin Fowler in the object oriented design paradigm and aims to achieve the same result for services in a SOA context. This pattern requires the development of an adapter – that will translate messages conforming to the existing contract into the refactored contract and vice versa.</p>
<p>This pattern:</p>
<ul>
<li>Allows      for phased migration of consumers who use existing contract to a new one</li>
<li>Allows      the provider to upgrade/enhance service behavior in phases. The      refactoring can be accomplished via multiple steps and don’t all have to      be bundled in a single release</li>
<li>Eliminates      the need for consumers to change code to take advantage of refactored      service</li>
<li>Allows      new consumers to bind to the enhanced service contract and allows for new      and existing consumers to co-exist</li>
<li>Potentially      enhance performance, availability, and scalability as new consumers come      on board</li>
</ul>
<p>There is a need for strong and coordinated service governance to make sure that consumers are aware of the refactoring effort, retest to validate the behavior, and ultimately provide sign-off for the service capability to be turned on in a production environment. At a minimum, this pattern needs to make sure that existing consumers conduct regression testing to guarantee that the refactored service doesn’t necessitate code changes.</p>
<br /> Tagged: <a href='http://artofsoftwarereuse.com/tag/adapter/'>adapter</a>, <a href='http://artofsoftwarereuse.com/tag/design-pattern/'>design pattern</a>, <a href='http://artofsoftwarereuse.com/tag/service-oriented-architecture/'>Service-oriented architecture</a>, <a href='http://artofsoftwarereuse.com/tag/soa/'>SOA</a>, <a href='http://artofsoftwarereuse.com/tag/software-reuse/'>software reuse</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/softwarereuse.wordpress.com/2434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/softwarereuse.wordpress.com/2434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/softwarereuse.wordpress.com/2434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/softwarereuse.wordpress.com/2434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/softwarereuse.wordpress.com/2434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/softwarereuse.wordpress.com/2434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/softwarereuse.wordpress.com/2434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/softwarereuse.wordpress.com/2434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/softwarereuse.wordpress.com/2434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/softwarereuse.wordpress.com/2434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/softwarereuse.wordpress.com/2434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/softwarereuse.wordpress.com/2434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/softwarereuse.wordpress.com/2434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/softwarereuse.wordpress.com/2434/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2434&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://artofsoftwarereuse.com/2010/09/06/leverage-the-service-refactoring-pattern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edf4a0cc88a15552fecbf78099c790ac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijay</media:title>
		</media:content>
	</item>
		<item>
		<title>Practicing Continuous Alignment &#8211; Examples</title>
		<link>http://artofsoftwarereuse.com/2010/09/05/practicing-continuous-alignment-examples/</link>
		<comments>http://artofsoftwarereuse.com/2010/09/05/practicing-continuous-alignment-examples/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 23:42:06 +0000</pubDate>
		<dc:creator>vijaynarayanan</dc:creator>
				<category><![CDATA[Reuse]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[software reuse]]></category>

		<guid isPermaLink="false">http://artofsoftwarereuse.com/?p=2194</guid>
		<description><![CDATA[Received an email from a reader on the continuous alignment post and wanted additional examples. Practicing continuous alignment entails refactoring existing code to align assets better towards a reuse strategy. Here are a few scenarios where refactoring opportunities can be utilized: Horizontal logic mixed with app-specific logic: This is typically manifested in two flavors &#8211; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2194&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Received an email from a reader on the <a href="http://artofsoftwarereuse.com/2009/05/24/continously-align-your-software-assets-to-be-more-reusable/">continuous alignment</a> post and wanted additional examples. Practicing continuous alignment entails refactoring existing code to align assets better towards a reuse strategy.</p>
<p>Here are a few scenarios where refactoring opportunities can be utilized:</p>
<p><em>Horizontal logic mixed with app-specific logic: </em>This is typically manifested in two flavors &#8211; cross-cutting functionality that is horizontal across several applications or domain-specific functionality that is applicable to a product line. Cross cutting functionality such as authentication, logging, error handling etc. can be refactored from app-specific to distinct components.</p>
<p><em>Redundant definition of business objects: </em>maybe two or more of your projects are redefining a core concept from your problem domain and refactoring can help align them to a common definition. Once a common definition is used, add tasks into your iteration plans.</p>
<p><em>Manage application configuration: </em>If several applications use ad-hoc set of practices to manage runtime configurations (e.g. xml configurations, property files etc.), refactoring them to use a consistent strategy would certainly make sense. This refactoring can be done one component at a time if time constraints make it harder to transform an entire suite of components in the app.</p>
<br /> Tagged: <a href='http://artofsoftwarereuse.com/tag/refactoring/'>refactoring</a>, <a href='http://artofsoftwarereuse.com/tag/software-reuse/'>software reuse</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/softwarereuse.wordpress.com/2194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/softwarereuse.wordpress.com/2194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/softwarereuse.wordpress.com/2194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/softwarereuse.wordpress.com/2194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/softwarereuse.wordpress.com/2194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/softwarereuse.wordpress.com/2194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/softwarereuse.wordpress.com/2194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/softwarereuse.wordpress.com/2194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/softwarereuse.wordpress.com/2194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/softwarereuse.wordpress.com/2194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/softwarereuse.wordpress.com/2194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/softwarereuse.wordpress.com/2194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/softwarereuse.wordpress.com/2194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/softwarereuse.wordpress.com/2194/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2194&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://artofsoftwarereuse.com/2010/09/05/practicing-continuous-alignment-examples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edf4a0cc88a15552fecbf78099c790ac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijay</media:title>
		</media:content>
	</item>
		<item>
		<title>Using Spring Interceptors to Reuse Functionality</title>
		<link>http://artofsoftwarereuse.com/2010/08/29/using-spring-interceptors-to-reuse-functionality/</link>
		<comments>http://artofsoftwarereuse.com/2010/08/29/using-spring-interceptors-to-reuse-functionality/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 21:19:24 +0000</pubDate>
		<dc:creator>vijaynarayanan</dc:creator>
				<category><![CDATA[Reuse]]></category>
		<category><![CDATA[software reuse]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[systematic software reuse]]></category>
		<category><![CDATA[interceptor]]></category>
		<category><![CDATA[spring framework]]></category>
		<category><![CDATA[mvc]]></category>

		<guid isPermaLink="false">http://artofsoftwarereuse.com/?p=2415</guid>
		<description><![CDATA[Spring MVC interceptors (learn more about interceptor design pattern here) can be used to plug in functionality that needs to be executed as part of handling a request. These interceptors can be an ideal place to reuse functionality that is applicable for non-web application related scenarios. Interceptors can be used to execute horizontal, cross cutting [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2415&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html">Spring MVC</a> interceptors (learn more about <em><a href="http://en.wikipedia.org/wiki/Interceptor_pattern">interceptor design pattern</a> </em>here) can be used to plug in functionality that needs to be executed as part of handling a request. These interceptors can be an ideal place to reuse functionality that is applicable for non-web application related scenarios. Interceptors can be used to execute horizontal, cross cutting concerns &#8211; e.g. security, metrics, logging, etc. If you have an existing component that was developed for a command-line application or a JMS event handler and need to reuse it in a web app, an interceptor would be an ideal choice.</p>
<p>Here is an example implementation for a a Spring Interceptor extending the <a href="http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html#mvc-handlermapping-interceptor">HandlerInterceptorAdapter</a>:</p>
<pre class="brush: plain;">
package com.yourapp.learn;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class LoginInterceptor extends HandlerInterceptorAdapter {

 @Override
 public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
 Object handler) throws Exception {

 Boolean userAuthenticated = (Boolean)request.getSession().getAttribute(&quot;userAuthenticated&quot;);

 if (userAuthenticated) {
    return true;
 } else {
    return false;
 }

 }
}
</pre>
<p>This interceptor simply checks to see if the user is authenticated by looking for a session attribute. If the result is true, the request is processed further.<br />
Here is an example bean definition fragment for utilizing the above:</p>
<pre class="brush: plain;">
&lt;bean id=&quot;testInterceptor&quot; /&gt;

&lt;bean id=&quot;testSimpleUrlHandlerMapping&quot;
 class=&quot;org.springframework.web.servlet.handler.SimpleUrlHandlerMapping&quot;&gt;

&lt;property name=&quot;interceptors&quot;&gt;
 &lt;list&gt;
 &lt;ref bean=&quot;testInterceptor&quot;/&gt;
 &lt;/list&gt;
&lt;/property&gt;

 &lt;property name=&quot;mappings&quot;&gt;
 &lt;props&gt;
 &lt;prop key=&quot;/test&quot;&gt;someController&lt;/prop&gt;
 &lt;/props&gt;
 &lt;/property&gt;
&lt;/bean&gt;
</pre>
<p>The actual logic can be in another component that is leveraged in the interceptor. The component itself could be reused across several apps. If such a component isn&#8217;t available, you can refactor existing logic to carve out the common functionality.</p>
<br /> Tagged: <a href='http://artofsoftwarereuse.com/tag/design-pattern/'>design pattern</a>, <a href='http://artofsoftwarereuse.com/tag/interceptor/'>interceptor</a>, <a href='http://artofsoftwarereuse.com/tag/mvc/'>mvc</a>, <a href='http://artofsoftwarereuse.com/tag/software-reuse/'>software reuse</a>, <a href='http://artofsoftwarereuse.com/tag/spring-framework/'>spring framework</a>, <a href='http://artofsoftwarereuse.com/tag/systematic-software-reuse/'>systematic software reuse</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/softwarereuse.wordpress.com/2415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/softwarereuse.wordpress.com/2415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/softwarereuse.wordpress.com/2415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/softwarereuse.wordpress.com/2415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/softwarereuse.wordpress.com/2415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/softwarereuse.wordpress.com/2415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/softwarereuse.wordpress.com/2415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/softwarereuse.wordpress.com/2415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/softwarereuse.wordpress.com/2415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/softwarereuse.wordpress.com/2415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/softwarereuse.wordpress.com/2415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/softwarereuse.wordpress.com/2415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/softwarereuse.wordpress.com/2415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/softwarereuse.wordpress.com/2415/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2415&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://artofsoftwarereuse.com/2010/08/29/using-spring-interceptors-to-reuse-functionality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edf4a0cc88a15552fecbf78099c790ac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijay</media:title>
		</media:content>
	</item>
		<item>
		<title>Systematic Reuse Panacea?</title>
		<link>http://artofsoftwarereuse.com/2010/08/28/systematic-reuse-panacea/</link>
		<comments>http://artofsoftwarereuse.com/2010/08/28/systematic-reuse-panacea/#comments</comments>
		<pubDate>Sat, 28 Aug 2010 20:10:14 +0000</pubDate>
		<dc:creator>vijaynarayanan</dc:creator>
				<category><![CDATA[Reuse]]></category>
		<category><![CDATA[software reuse]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[systematic software reuse]]></category>
		<category><![CDATA[culture]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[software product lines]]></category>

		<guid isPermaLink="false">http://artofsoftwarereuse.com/?p=2409</guid>
		<description><![CDATA[I received an email the other day from a professional asking if there was any new technology that I recommend for achieving immediate, widespread software reuse. The short answer is no Technology is an important, essential, and necessary ingredient for systematic reuse. However, it isn&#8217;t sufficient to achieve widespread reuse. Hyperbole? No &#8211; widespread reuse [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2409&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I received an email the other day from a professional asking if there was any new technology that I recommend for achieving immediate, widespread software reuse. The short answer is no <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Technology is an important, essential, and necessary ingredient for systematic reuse. However, it isn&#8217;t sufficient to achieve widespread reuse. Hyperbole? No &#8211; widespread reuse is being touted from the days of mainframe routines, functions, object oriented design, and component based development to service oriented architecture and domain specific languages. Yes, the level of abstraction is inching closer to the business domain and the tools have certainly gotten richer and more reuse-friendly (for instance, refactoring support in IDEs).</p>
<p>So why hasn&#8217;t systematic reuse happened? There are equally relevant considerations with systematic reuse (ones that often get ignored):</p>
<ul>
<li><strong>Process </strong>- are your teams performing <a href="http://artofsoftwarereuse.com/2010/07/14/systematic-reuse-success-factor-11-code-reviews/">design and code reviews</a>? how much thought is given to architecture &#8211; not only at a system level but when systems interact and exchange data? are requirements reused across projects? if not, are overlapping/similar requirements resulting in duplicate functionality?</li>
<li><strong>Training-</strong> how can a new developer who joins the organization come to know about<a href="http://artofsoftwarereuse.com/2009/09/12/the-assetmap-useful-resource/"> reusable assets</a>? how do we reduce the learning curve and demonstrate utility of existing assets? how do we align architecture efforts to better leverage reusable assets?</li>
<li><strong>Infrastructure </strong>- how are reusable assets identified, developed, managed, and retired? what if a team needs to contribute a patch to an existing asset? are there continuous/daily builds and <a href="http://artofsoftwarereuse.com/2009/10/08/automated-tests-are-foundational-to-systematic-reuse/">automated tests</a> for reusable assets? who ensures the quality of reusable assets? who &#8220;owns&#8221; these assets and how do they get supported?</li>
<li><strong>Culture</strong>- do your teams <a href="http://artofsoftwarereuse.com/2009/04/18/systematic-reuse-success-factor-1-teamwork/">collaborate</a> and cross-pollinate ideas? is there a not-invented-here syndrome prevalent when it comes to leveraging existing solutions? how do technical leads and developers come to know about reusable assets?</li>
<li><strong>Resource </strong>- how are resources allocated when they are meant to be useful for multiple applications? are there incentives for developing and leveraging reusable assets? are there resources allocated for horizontal components that are non-functional in nature &#8211; but extremely useful for several apps?</li>
</ul>
<p>This is only scratching the surface and is meant to illustrate that technology alone <a href="http://www.cs.wustl.edu/~schmidt/reuse-lessons.html">isn&#8217;t a silver bullet</a> to achieving systematic reuse. No single product or technology can guarantee reuse to happen organization-wide overnight. You can make it easier with the right set of technology tools/libraries/products but time, sustained effort, and calibrated strategy (one that takes into account your organization&#8217;s challenges and constraints) are essential for enduring success.</p>
<p>The <a href="www.sei.cmu.edu/productlines/">Software Product Line</a> (SPL) practices from<a href="www.sei.cmu.edu"> Software Engineering  Institute</a> pursues a comprehensive set of practices that address the  above considerations. It takes a holistic view of reuse covering multiple perspectives including people, process, technology, and places a common architecture at the heart of achieving widespread reuse. It isn&#8217;t promising a panacea and is a much better approach than buying a technology that is being touted to hand you reuse success.</p>
<br /> Tagged: <a href='http://artofsoftwarereuse.com/tag/culture/'>culture</a>, <a href='http://artofsoftwarereuse.com/tag/infrastructure/'>infrastructure</a>, <a href='http://artofsoftwarereuse.com/tag/process/'>process</a>, <a href='http://artofsoftwarereuse.com/tag/software-product-lines/'>software product lines</a>, <a href='http://artofsoftwarereuse.com/tag/software-reuse/'>software reuse</a>, <a href='http://artofsoftwarereuse.com/tag/systematic-software-reuse/'>systematic software reuse</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/softwarereuse.wordpress.com/2409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/softwarereuse.wordpress.com/2409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/softwarereuse.wordpress.com/2409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/softwarereuse.wordpress.com/2409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/softwarereuse.wordpress.com/2409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/softwarereuse.wordpress.com/2409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/softwarereuse.wordpress.com/2409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/softwarereuse.wordpress.com/2409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/softwarereuse.wordpress.com/2409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/softwarereuse.wordpress.com/2409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/softwarereuse.wordpress.com/2409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/softwarereuse.wordpress.com/2409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/softwarereuse.wordpress.com/2409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/softwarereuse.wordpress.com/2409/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2409&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://artofsoftwarereuse.com/2010/08/28/systematic-reuse-panacea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edf4a0cc88a15552fecbf78099c790ac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijay</media:title>
		</media:content>
	</item>
		<item>
		<title>Transforming Object to XML using Freemarker</title>
		<link>http://artofsoftwarereuse.com/2010/08/22/transforming-object-to-xml-using-freemarker/</link>
		<comments>http://artofsoftwarereuse.com/2010/08/22/transforming-object-to-xml-using-freemarker/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 02:00:08 +0000</pubDate>
		<dc:creator>vijaynarayanan</dc:creator>
				<category><![CDATA[Reuse]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[software reuse]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[freemarker]]></category>
		<category><![CDATA[template engine]]></category>
		<category><![CDATA[object transformation]]></category>

		<guid isPermaLink="false">http://artofsoftwarereuse.com/?p=2400</guid>
		<description><![CDATA[I wrote earlier about using open source software for fulfilling functionality prior to building a custom implementation. Many projects have the need to transform object to text or XML &#8211; e.g. return XML response for REST-based services or return JSON string to support a web application etc. Freemarker is a templating engine that can be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2400&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I wrote earlier about <a href="http://artofsoftwarereuse.com/2010/04/17/refactoring-to-reuse-5/">using open source software</a> for fulfilling functionality prior to building a custom implementation. Many projects have the need to transform object to text or XML &#8211; e.g. return XML response for REST-based services or return JSON string to support a web application etc.</p>
<p><a href="http://freemarker.sourceforge.net/">Freemarker </a>is a templating engine that can be leveraged to perform object to text transformations &#8211; with freemarker it is easy to generate RSS feeds or delimited text or plain old XML very easily. Below are some code fragments that illustrate freemarker usage:</p>
<p>Below is a code fragment for setting up the template configuration:</p>
<pre class="brush: plain;">
try {
	// Initialize configuration;
	cfg = new Configuration();
	cfg.setDirectoryForTemplateLoading(new File(templatesLocation));
	cfg.setTemplateUpdateDelay(0);
	cfg.setTemplateExceptionHandler(TemplateExceptionHandler.HTML_DEBUG_HANDLER);
	//Use beans wrapper (recommmended for most applications)
	cfg.setObjectWrapper(ObjectWrapper.BEANS_WRAPPER);
	cfg.setDefaultEncoding(&quot;ISO-8859-1&quot;);
	//charset of the output
	cfg.setOutputEncoding(&quot;UTF-8&quot;);
	//default locale
	cfg.setLocale(Locale.US);

} catch (Exception e) {
	//handle the exception
}
</pre>
<p>The <em>templatesLocation </em>variable is the path to a folder with freemarker templates (referred to as FTL templates). These are similar to templates used with frameworks such as Velocity. For example, below is a template fragment:</p>
<pre class="brush: plain;">
&lt;Name&gt;${myBean.firstName} ${myBean.lastName}&lt;/Name&gt;
</pre>
<p>&#8220;myBean&#8221; is the java object that has first name and last name properties supported by JavaBeans style getXYZ() methods.</p>
<p>Below is the code fragment when trying to invoke a template with a java object:</p>
<pre class="brush: plain;">
// loading the template file
Template template = //get template from a map
Writer out = new StringWriter();
template.process(dataObject, out);
String strResponse = out.toString();
</pre>
<p>The above code fragment essentially takes a java object (dataObject) as input and creates a string as output. Using the template above, the output for example could be:</p>
<pre class="brush: plain;">&lt;Name&gt;John Smith&lt;/Name&gt;</pre>
<p>Freemarker also supports loops and conditions and offers a rich library of built-in functions as well.</p>
<br /> Tagged: <a href='http://artofsoftwarereuse.com/tag/freemarker/'>freemarker</a>, <a href='http://artofsoftwarereuse.com/tag/object-transformation/'>object transformation</a>, <a href='http://artofsoftwarereuse.com/tag/refactoring/'>refactoring</a>, <a href='http://artofsoftwarereuse.com/tag/software-reuse/'>software reuse</a>, <a href='http://artofsoftwarereuse.com/tag/template-engine/'>template engine</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/softwarereuse.wordpress.com/2400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/softwarereuse.wordpress.com/2400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/softwarereuse.wordpress.com/2400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/softwarereuse.wordpress.com/2400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/softwarereuse.wordpress.com/2400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/softwarereuse.wordpress.com/2400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/softwarereuse.wordpress.com/2400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/softwarereuse.wordpress.com/2400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/softwarereuse.wordpress.com/2400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/softwarereuse.wordpress.com/2400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/softwarereuse.wordpress.com/2400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/softwarereuse.wordpress.com/2400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/softwarereuse.wordpress.com/2400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/softwarereuse.wordpress.com/2400/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2400&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://artofsoftwarereuse.com/2010/08/22/transforming-object-to-xml-using-freemarker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edf4a0cc88a15552fecbf78099c790ac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijay</media:title>
		</media:content>
	</item>
		<item>
		<title>5 Signs Indicating Need for Service Governance</title>
		<link>http://artofsoftwarereuse.com/2010/08/21/5-signs-indicating-need-for-service-governance/</link>
		<comments>http://artofsoftwarereuse.com/2010/08/21/5-signs-indicating-need-for-service-governance/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 15:16:02 +0000</pubDate>
		<dc:creator>vijaynarayanan</dc:creator>
				<category><![CDATA[BPM]]></category>
		<category><![CDATA[Planning]]></category>
		<category><![CDATA[Reuse]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[software reuse]]></category>
		<category><![CDATA[Service-oriented architecture]]></category>
		<category><![CDATA[governance]]></category>
		<category><![CDATA[service governance]]></category>

		<guid isPermaLink="false">http://artofsoftwarereuse.com/?p=2389</guid>
		<description><![CDATA[The word &#8216;governance&#8217; seems to conjure up all sorts of negative images for IT folks &#8211; needless bureaucracy seems to top that list. However, without lightweight governance, SOA and systematic reuse efforts will fail to achieve their full potential. Can you spot signs that indicate need for governance? I believe so and here are five: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2389&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The word &#8216;governance&#8217; seems to conjure up all sorts of negative images for IT folks &#8211; needless bureaucracy seems to top that list. However, without lightweight governance, SOA and systematic reuse efforts will fail to achieve their full potential. Can you spot signs that indicate need for governance? I believe so and here are five:</p>
<ol>
<li>Every project seems to reinvent business abstractions that are fundamental to your problem domain. No sharing or consistency of information models &#8211; this will be painfully evident when projects are happening back to back and your teams seem to be running into overlapping data modeling, data definition, and data validation issues.</li>
<li>Directly linked to above &#8211; is service definitions seem to not reuse schemas &#8211; i.e. each service has a unique schema definition for a customer or product (or some key object from your domain) and your service consumers are forced to deal with multiple conflicting schemas.</li>
<li>Legacy capabilities are leveraged as-is without <a href="http://artofsoftwarereuse.com/2009/06/14/the-value-of-service-mediation/">mediation </a>- increasing coupling between consumers and legacy systems. Tell tale sign here is if you see arcane naming and needless legacy data attributes sprinkled all over service interfaces.</li>
<li>Services seem to have inconsistent runtime characteristics &#8211; new service capabilities are added without regard to performance requirements &#8211; issues tend to manifest in production where users or entire processes/applications get impacted to service behavior.</li>
<li>Business processes <a href="http://artofsoftwarereuse.com/2009/09/03/risks-with-pursuing-bpm-without-soa/">bypass a service layer</a> and directly access underlying data stores &#8211; if you have seen a business process invoking several stored procedures, doing FTP, publishing to multiple messaging destinations &#8211; all from a monolithic process definition that is a clear sign that governance is non existent.</li>
</ol>
<p>These are few signs but key indicators that services are being built in a tactical fashion. In a follow up post, will expand on how governance can be leveraged appropriately to address these issues.</p>
<br /> Tagged: <a href='http://artofsoftwarereuse.com/tag/governance/'>governance</a>, <a href='http://artofsoftwarereuse.com/tag/reuse/'>Reuse</a>, <a href='http://artofsoftwarereuse.com/tag/service-governance/'>service governance</a>, <a href='http://artofsoftwarereuse.com/tag/service-oriented-architecture/'>Service-oriented architecture</a>, <a href='http://artofsoftwarereuse.com/tag/soa/'>SOA</a>, <a href='http://artofsoftwarereuse.com/tag/software-reuse/'>software reuse</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/softwarereuse.wordpress.com/2389/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/softwarereuse.wordpress.com/2389/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/softwarereuse.wordpress.com/2389/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/softwarereuse.wordpress.com/2389/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/softwarereuse.wordpress.com/2389/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/softwarereuse.wordpress.com/2389/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/softwarereuse.wordpress.com/2389/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/softwarereuse.wordpress.com/2389/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/softwarereuse.wordpress.com/2389/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/softwarereuse.wordpress.com/2389/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/softwarereuse.wordpress.com/2389/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/softwarereuse.wordpress.com/2389/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/softwarereuse.wordpress.com/2389/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/softwarereuse.wordpress.com/2389/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2389&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://artofsoftwarereuse.com/2010/08/21/5-signs-indicating-need-for-service-governance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edf4a0cc88a15552fecbf78099c790ac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijay</media:title>
		</media:content>
	</item>
		<item>
		<title>Article: SOA Adoption using Agile Practices</title>
		<link>http://artofsoftwarereuse.com/2010/08/18/article-soa-adoption-using-agile-practices-2/</link>
		<comments>http://artofsoftwarereuse.com/2010/08/18/article-soa-adoption-using-agile-practices-2/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 11:19:16 +0000</pubDate>
		<dc:creator>vijaynarayanan</dc:creator>
				<category><![CDATA[Reuse]]></category>
		<category><![CDATA[adoption]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[Service-oriented architecture]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://artofsoftwarereuse.com/?p=2385</guid>
		<description><![CDATA[Part 1 of a two part Article series on SOA adoption is up on the SOA magazine Tagged: adoption, agile, Service-oriented architecture, SOA<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2385&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_2396" class="wp-caption alignleft" style="width: 107px"><a href="http://www.soamag.com/I42/0810-2.php"><img class="size-full wp-image-2396 " title="soamag" src="http://softwarereuse.files.wordpress.com/2010/08/soamag.png?w=97&#038;h=76" alt="" width="97" height="76" /></a><p class="wp-caption-text">SOA Adoption Using Agile</p></div>
<p>Part 1 of a two part Article series on <a href="http://www.soamag.com/I42/0810-2.php">SOA adoption</a> is up on the SOA magazine</p>
<br /> Tagged: <a href='http://artofsoftwarereuse.com/tag/adoption/'>adoption</a>, <a href='http://artofsoftwarereuse.com/tag/agile/'>agile</a>, <a href='http://artofsoftwarereuse.com/tag/service-oriented-architecture/'>Service-oriented architecture</a>, <a href='http://artofsoftwarereuse.com/tag/soa/'>SOA</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/softwarereuse.wordpress.com/2385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/softwarereuse.wordpress.com/2385/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/softwarereuse.wordpress.com/2385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/softwarereuse.wordpress.com/2385/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/softwarereuse.wordpress.com/2385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/softwarereuse.wordpress.com/2385/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/softwarereuse.wordpress.com/2385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/softwarereuse.wordpress.com/2385/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/softwarereuse.wordpress.com/2385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/softwarereuse.wordpress.com/2385/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/softwarereuse.wordpress.com/2385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/softwarereuse.wordpress.com/2385/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/softwarereuse.wordpress.com/2385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/softwarereuse.wordpress.com/2385/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2385&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://artofsoftwarereuse.com/2010/08/18/article-soa-adoption-using-agile-practices-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edf4a0cc88a15552fecbf78099c790ac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijay</media:title>
		</media:content>

		<media:content url="http://softwarereuse.files.wordpress.com/2010/08/soamag.png" medium="image">
			<media:title type="html">soamag</media:title>
		</media:content>
	</item>
		<item>
		<title>In a hurry to decide if something is reusable?</title>
		<link>http://artofsoftwarereuse.com/2010/08/15/in-a-hurry-to-decide-if-something-is-reusable/</link>
		<comments>http://artofsoftwarereuse.com/2010/08/15/in-a-hurry-to-decide-if-something-is-reusable/#comments</comments>
		<pubDate>Sun, 15 Aug 2010 21:05:31 +0000</pubDate>
		<dc:creator>vijaynarayanan</dc:creator>
				<category><![CDATA[Reuse]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[Asset]]></category>
		<category><![CDATA[code generation]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[software investment]]></category>
		<category><![CDATA[software reuse]]></category>
		<category><![CDATA[strategy]]></category>

		<guid isPermaLink="false">http://artofsoftwarereuse.com/?p=2376</guid>
		<description><![CDATA[I have heard some variation of the following line from developers, technical leads, and architects &#8211; &#8220;we want to make things more reusable, but we don&#8217;t have the time.&#8221; There is always a deadline (or many deadlines) to meet and technical debt to accumulate. Since we are always in a hurry, it helps to be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2376&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have heard some variation of the following line from developers, technical leads, and architects &#8211; &#8220;we want to make things more reusable, <em>but </em>we don&#8217;t have the time.&#8221;</p>
<p>There is always a deadline (or many deadlines) to meet and technical debt to accumulate. Since we are always in a hurry, it helps to be aware of what should be reusable &#8211; even if we won&#8217;t get to it in this iteration . So here are some ideas that can help you decide whether or not a capability should be developed for reuse:</p>
<ul>
<li>is the capability <em>unique </em>to your enterprise? i.e. it captures logic and/or process variations that provide competitive differentiation.</li>
<li>is the capability making something incredibly hard/defect prone simpler and/or easier?</li>
<li>is there a desire for customers to have a capability across business channels? i.e. from the web, from a mobile device etc.</li>
<li>is it specific to your domain and potentially relevant to multiple applications in the domain? this may or may not be obvious &#8211; if it isn&#8217;t, <a href="http://artofsoftwarereuse.com/2009/03/27/not-sure-if-something-is-reusable-delay-the-decision/">delay commitment</a>.</li>
<li>is the capability only available in a particular technical platform but is solving  an often needed problem?</li>
<li>is it automating boiler plate code generation or preventing defects?</li>
<li>is there an in-house/external alternative that achieves your functional requirements? if so, seriously consider stopping investment in the asset.</li>
</ul>
<p>This is a starter list &#8211; the idea that we keep coming back to is this &#8211; treat a reusable asset like a real investment. Every iteration and release is an opportunity to review and update the investment. When you make a decision, <a href="http://artofsoftwarereuse.com/2010/04/10/continuous-refactoring-is-a-wise-investment/">continuously refactor</a> to make the capabilities less app specific and reusable.</p>
<br /> Tagged: <a href='http://artofsoftwarereuse.com/tag/agile/'>agile</a>, <a href='http://artofsoftwarereuse.com/tag/asset/'>Asset</a>, <a href='http://artofsoftwarereuse.com/tag/code-generation/'>code generation</a>, <a href='http://artofsoftwarereuse.com/tag/refactoring/'>refactoring</a>, <a href='http://artofsoftwarereuse.com/tag/software-investment/'>software investment</a>, <a href='http://artofsoftwarereuse.com/tag/software-reuse/'>software reuse</a>, <a href='http://artofsoftwarereuse.com/tag/strategy/'>strategy</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/softwarereuse.wordpress.com/2376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/softwarereuse.wordpress.com/2376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/softwarereuse.wordpress.com/2376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/softwarereuse.wordpress.com/2376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/softwarereuse.wordpress.com/2376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/softwarereuse.wordpress.com/2376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/softwarereuse.wordpress.com/2376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/softwarereuse.wordpress.com/2376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/softwarereuse.wordpress.com/2376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/softwarereuse.wordpress.com/2376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/softwarereuse.wordpress.com/2376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/softwarereuse.wordpress.com/2376/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/softwarereuse.wordpress.com/2376/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/softwarereuse.wordpress.com/2376/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2376&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://artofsoftwarereuse.com/2010/08/15/in-a-hurry-to-decide-if-something-is-reusable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edf4a0cc88a15552fecbf78099c790ac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijay</media:title>
		</media:content>
	</item>
		<item>
		<title>Think Capabilities Not Technologies</title>
		<link>http://artofsoftwarereuse.com/2010/08/14/think-capabilities-not-technologies/</link>
		<comments>http://artofsoftwarereuse.com/2010/08/14/think-capabilities-not-technologies/#comments</comments>
		<pubDate>Sat, 14 Aug 2010 16:08:53 +0000</pubDate>
		<dc:creator>vijaynarayanan</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Planning]]></category>
		<category><![CDATA[Reuse]]></category>
		<category><![CDATA[software reuse]]></category>
		<category><![CDATA[implementation]]></category>
		<category><![CDATA[business capability]]></category>
		<category><![CDATA[technology strategy]]></category>

		<guid isPermaLink="false">http://artofsoftwarereuse.com/?p=2373</guid>
		<description><![CDATA[There is a reason why your team builds software &#8211; most likely, you are either building a product for external customers or supporting technology solutions for internal stakeholders within the organization. Systematic reuse cannot be achieved if we focus exclusively on technologies. Focus on capabilities, more specifically, business capabilities instead. This is a simple but [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2373&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There is a reason why your team builds software &#8211; most likely, you are either building a product for external customers or supporting technology solutions for internal stakeholders within the organization. Systematic reuse cannot be achieved if we focus exclusively on technologies. Focus on capabilities, more specifically, business capabilities instead.</p>
<p>This is a simple but significantly useful perspective to adopt. Capabilities are tangible units of functionality &#8211; regardless of implementation technologies used or systems that they are part of. When capabilities are identified, you can make more informed decisions about whether or not it is a reuse candidate. This is also handy every time there is a discussion on which part of a functionality should reside in a server component or a presentation component etc. Capabilities, when aligned with business needs, gives you the right level of abstraction when considering refactoring efforts. Are we refactoring the right capabilities from a legacy codebase? is this a capability that is useful as-is or is it only relevant within the context of a specific business process? is the current implementation assuming (aka coupling) too much about a business capability?</p>
<p>These are extremely relevant questions &#8211; and notice how we haven&#8217;t talked about technology implementation decisions. That is on purpose &#8211; if we are not careful, impatient technology choices could adversely constrain business capabilities. Once you are clear on the capabilities &#8211; technology decisions and need for variability, agility, and other quality attributes can be made appropriately.</p>
<br /> Tagged: <a href='http://artofsoftwarereuse.com/tag/business-capability/'>business capability</a>, <a href='http://artofsoftwarereuse.com/tag/implementation/'>implementation</a>, <a href='http://artofsoftwarereuse.com/tag/software-reuse/'>software reuse</a>, <a href='http://artofsoftwarereuse.com/tag/technology-strategy/'>technology strategy</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/softwarereuse.wordpress.com/2373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/softwarereuse.wordpress.com/2373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/softwarereuse.wordpress.com/2373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/softwarereuse.wordpress.com/2373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/softwarereuse.wordpress.com/2373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/softwarereuse.wordpress.com/2373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/softwarereuse.wordpress.com/2373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/softwarereuse.wordpress.com/2373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/softwarereuse.wordpress.com/2373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/softwarereuse.wordpress.com/2373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/softwarereuse.wordpress.com/2373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/softwarereuse.wordpress.com/2373/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/softwarereuse.wordpress.com/2373/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/softwarereuse.wordpress.com/2373/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2373&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://artofsoftwarereuse.com/2010/08/14/think-capabilities-not-technologies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edf4a0cc88a15552fecbf78099c790ac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijay</media:title>
		</media:content>
	</item>
		<item>
		<title>Getting Started With Systematic Reuse &#8211; Free E-Book</title>
		<link>http://artofsoftwarereuse.com/2010/08/01/getting-started-with-systematic-reuse-free-e-book/</link>
		<comments>http://artofsoftwarereuse.com/2010/08/01/getting-started-with-systematic-reuse-free-e-book/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 22:03:20 +0000</pubDate>
		<dc:creator>vijaynarayanan</dc:creator>
				<category><![CDATA[Reuse]]></category>
		<category><![CDATA[software reuse]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[iterative]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[systematic software reuse]]></category>
		<category><![CDATA[getting started]]></category>

		<guid isPermaLink="false">http://artofsoftwarereuse.com/?p=2340</guid>
		<description><![CDATA[Here is a free e-book on getting started with systematic software reuse. It introduces software reuse, risks with reuse and how to address them. Also includes an example roadmap that can be used as a reference. Enjoy! Tagged: agile, ebook, getting started, iterative, software reuse, systematic software reuse<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2340&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here is a free e-book on <a href="http://www.box.net/shared/aiki1t1yf5" target="_blank">getting started</a> with systematic software reuse. It  introduces software reuse, risks with reuse and how to address them. Also includes an example roadmap that can be used as a reference. Enjoy!</p>
<p><a href="http://www.box.net/shared/aiki1t1yf5" target='new'><img class="size-thumbnail wp-image-2342 " title="getting_started_with_reuse" src="http://softwarereuse.files.wordpress.com/2010/08/getting_started_with_reuse.jpg?w=150&#038;h=96" alt="" width="150" height="96" /></a></p>
<br /> Tagged: <a href='http://artofsoftwarereuse.com/tag/agile/'>agile</a>, <a href='http://artofsoftwarereuse.com/tag/ebook/'>ebook</a>, <a href='http://artofsoftwarereuse.com/tag/getting-started/'>getting started</a>, <a href='http://artofsoftwarereuse.com/tag/iterative/'>iterative</a>, <a href='http://artofsoftwarereuse.com/tag/software-reuse/'>software reuse</a>, <a href='http://artofsoftwarereuse.com/tag/systematic-software-reuse/'>systematic software reuse</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/softwarereuse.wordpress.com/2340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/softwarereuse.wordpress.com/2340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/softwarereuse.wordpress.com/2340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/softwarereuse.wordpress.com/2340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/softwarereuse.wordpress.com/2340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/softwarereuse.wordpress.com/2340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/softwarereuse.wordpress.com/2340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/softwarereuse.wordpress.com/2340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/softwarereuse.wordpress.com/2340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/softwarereuse.wordpress.com/2340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/softwarereuse.wordpress.com/2340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/softwarereuse.wordpress.com/2340/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/softwarereuse.wordpress.com/2340/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/softwarereuse.wordpress.com/2340/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=artofsoftwarereuse.com&amp;blog=7058737&amp;post=2340&amp;subd=softwarereuse&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://artofsoftwarereuse.com/2010/08/01/getting-started-with-systematic-reuse-free-e-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/edf4a0cc88a15552fecbf78099c790ac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vijay</media:title>
		</media:content>

		<media:content url="http://softwarereuse.files.wordpress.com/2010/08/getting_started_with_reuse.jpg?w=150" medium="image">
			<media:title type="html">getting_started_with_reuse</media:title>
		</media:content>
	</item>
	</channel>
</rss>