<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Embrace, Extend, Extinguish: Integration with Uncooperative Systems</title>
	<atom:link href="http://www.davidwhitney.co.uk/content/blog/index.php/2008/07/12/embrace-extend-extinguish-integration-with-uncooperative-systems/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.davidwhitney.co.uk/Blog/2008/07/12/embrace-extend-extinguish-integration-with-uncooperative-systems/</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Wed, 08 Feb 2012 08:18:04 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: david</title>
		<link>http://www.davidwhitney.co.uk/Blog/2008/07/12/embrace-extend-extinguish-integration-with-uncooperative-systems/comment-page-1/#comment-15</link>
		<dc:creator>david</dc:creator>
		<pubDate>Wed, 06 Aug 2008 14:25:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.davidwhitney.co.uk/content/blog/index.php/2008/07/12/embrace-extend-extinguish-integration-with-uncooperative-systems/#comment-15</guid>
		<description>You&#039;re absolutely right.  Adapters / providers are the correct way to couple yourself to an external system in a clean room implementation.

I also conceed your point about abstraction vs. performance being a factor.

I specificly choose &quot;uncooporative&quot; rather than &quot;obsolete / legacy&quot; systems as the target of this piece because I think the challenge presented by them differ.  If the system you were replacing was simple an old system then adapters and a little bit of hard work during the migration would likely be more cost effective, however an &quot;uncooperative&quot; system, in my mind at least, is a system where the design has become practically untenable and potentially the relationship with the company that produces the system has soured.

I view this as the &quot;hostile takeover&quot; methodology of system migration as opposed to the retirement of a dear friend.

The cost / benift for one of these cases would likely be negligible in the sense that if you were driven to a drastic replacement, it could well be the difference between continuing to operate as a business or having to sustain serious losses due to an untennable environment.

As a footnote, I think that the encapsulated system would be best accessed using adapters to prevent this situation reemerging in the future but I&#039;d almost expect that as a part of good software design.  I think that ideology and fit-for-purpose software design should go hand in hand, otherwise whatever your design looks like, it&#039;s not ideal.</description>
		<content:encoded><![CDATA[<p>You&#8217;re absolutely right.  Adapters / providers are the correct way to couple yourself to an external system in a clean room implementation.</p>
<p>I also conceed your point about abstraction vs. performance being a factor.</p>
<p>I specificly choose &#8220;uncooporative&#8221; rather than &#8220;obsolete / legacy&#8221; systems as the target of this piece because I think the challenge presented by them differ.  If the system you were replacing was simple an old system then adapters and a little bit of hard work during the migration would likely be more cost effective, however an &#8220;uncooperative&#8221; system, in my mind at least, is a system where the design has become practically untenable and potentially the relationship with the company that produces the system has soured.</p>
<p>I view this as the &#8220;hostile takeover&#8221; methodology of system migration as opposed to the retirement of a dear friend.</p>
<p>The cost / benift for one of these cases would likely be negligible in the sense that if you were driven to a drastic replacement, it could well be the difference between continuing to operate as a business or having to sustain serious losses due to an untennable environment.</p>
<p>As a footnote, I think that the encapsulated system would be best accessed using adapters to prevent this situation reemerging in the future but I&#8217;d almost expect that as a part of good software design.  I think that ideology and fit-for-purpose software design should go hand in hand, otherwise whatever your design looks like, it&#8217;s not ideal.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris</title>
		<link>http://www.davidwhitney.co.uk/Blog/2008/07/12/embrace-extend-extinguish-integration-with-uncooperative-systems/comment-page-1/#comment-14</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Tue, 05 Aug 2008 22:52:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.davidwhitney.co.uk/content/blog/index.php/2008/07/12/embrace-extend-extinguish-integration-with-uncooperative-systems/#comment-14</guid>
		<description>Interesting blog, although i have a few questions i&#039;d like to put to you.

With any integration of separate or third party systems there is always a risk that it will need to change. Surly the best approach is to always provide Adapters (Providers) to these systems so when they do change they are easily replaceable?

I don&#039;t think any architecture will reach entirely a state of perfection. This in mind i think it is important to learn to accept that not every system will reach our own idealistic standards and sometimes we have to learn to let small unavoidable smells go and abstract them best as possible with the above approach. The question i suppose boils down to &quot;Would the cost of leaving the inconvenience in place outweigh the cost of implementing a new provider?&quot;

Which leads me nicely onto the fact i&#039;ve been going through this recently and i don&#039;t think it is always a simple case of &quot;hiding&quot; an uncooperative system behind a idealistic interface either. Let me give you an example, to make my uncooperative system perform i either needed to create an API that slightly coupled it to the underlying component or provide over ten times the infrastructure to support it. So we have a choice either Abstraction or Performance which do you choose?

I suppose my goal here is to point out there is a difference between ideology and fit-for-purpose which sometimes we as developers get caught up in. And also that while we should strive for perfection we sometimes have to accept imperfections.</description>
		<content:encoded><![CDATA[<p>Interesting blog, although i have a few questions i&#8217;d like to put to you.</p>
<p>With any integration of separate or third party systems there is always a risk that it will need to change. Surly the best approach is to always provide Adapters (Providers) to these systems so when they do change they are easily replaceable?</p>
<p>I don&#8217;t think any architecture will reach entirely a state of perfection. This in mind i think it is important to learn to accept that not every system will reach our own idealistic standards and sometimes we have to learn to let small unavoidable smells go and abstract them best as possible with the above approach. The question i suppose boils down to &#8220;Would the cost of leaving the inconvenience in place outweigh the cost of implementing a new provider?&#8221;</p>
<p>Which leads me nicely onto the fact i&#8217;ve been going through this recently and i don&#8217;t think it is always a simple case of &#8220;hiding&#8221; an uncooperative system behind a idealistic interface either. Let me give you an example, to make my uncooperative system perform i either needed to create an API that slightly coupled it to the underlying component or provide over ten times the infrastructure to support it. So we have a choice either Abstraction or Performance which do you choose?</p>
<p>I suppose my goal here is to point out there is a difference between ideology and fit-for-purpose which sometimes we as developers get caught up in. And also that while we should strive for perfection we sometimes have to accept imperfections.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Softweb Solutions</title>
		<link>http://www.davidwhitney.co.uk/Blog/2008/07/12/embrace-extend-extinguish-integration-with-uncooperative-systems/comment-page-1/#comment-13</link>
		<dc:creator>Softweb Solutions</dc:creator>
		<pubDate>Mon, 14 Jul 2008 05:53:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.davidwhitney.co.uk/content/blog/index.php/2008/07/12/embrace-extend-extinguish-integration-with-uncooperative-systems/#comment-13</guid>
		<description>Thanks for the very helpful information.

Best Regards
Offshore Software Development
http://www.softwebsolutions.com</description>
		<content:encoded><![CDATA[<p>Thanks for the very helpful information.</p>
<p>Best Regards<br />
Offshore Software Development<br />
<a href="http://www.softwebsolutions.com" rel="nofollow">http://www.softwebsolutions.com</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>

