<?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>Sadiqkummethi's Blog</title>
	<atom:link href="http://sadiqkummethi.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://sadiqkummethi.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Sat, 05 Jun 2010 08:24:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='sadiqkummethi.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Sadiqkummethi's Blog</title>
		<link>http://sadiqkummethi.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://sadiqkummethi.wordpress.com/osd.xml" title="Sadiqkummethi&#039;s Blog" />
	<atom:link rel='hub' href='http://sadiqkummethi.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Raw SOAP messages from WSDL</title>
		<link>http://sadiqkummethi.wordpress.com/2010/03/19/raw-soap-messages-from-wsdl/</link>
		<comments>http://sadiqkummethi.wordpress.com/2010/03/19/raw-soap-messages-from-wsdl/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 14:44:37 +0000</pubDate>
		<dc:creator>sadiqkummethi</dc:creator>
				<category><![CDATA[Tech Blogs]]></category>

		<guid isPermaLink="false">http://sadiqkummethi.wordpress.com/?p=53</guid>
		<description><![CDATA[I start my search for tools to ease my efforts. Eventually i had a requirement or it&#8217;s out of my curiosity, to see or replicate how my SOAP message looked like when it is being sent to a remote web service.we can send soap messages programmatically, but sometimes it is handy to have a way [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sadiqkummethi.wordpress.com&amp;blog=6723970&amp;post=53&amp;subd=sadiqkummethi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I start my search for tools to ease my efforts.</p>
<p>Eventually i had a requirement or it&#8217;s out of my curiosity, to see or replicate how my SOAP message looked like when it is being sent to a remote web service.we can send soap messages programmatically, but sometimes it is handy to have a way of sending the raw SOAP messages to the web service directly especially with interoperability issues between different implementations of the SOAP specification.</p>
<p>I had remote web service publishing WSDL file, and i was forced not use to any JAX RPC implemented Client programming to send data or access the service.</p>
<p>I was using simple java file to create SOAP request message and to create a proper SOAP request i had to know how the request message looked like.So here came the tool, which helped me on generating the SOAP request message in correct formats for accessing the remote WSDL file.</p>
<p>You can send the same SOAP request to remote web service using the same tool and if everything runs smooth on the remote web service, it gets a proper SOAP Response.It has a view in the Eclipse IDE from which raw SOAP messages can be sent to a web service.It can be used in validating your WSDL, checking with soap request and response it can generate</p>
<p>The open source tool which i would suggest you, comes as an eclipse plugin developed by OKC.<br />
More information on the tool is on <a href="http://wscep.sourceforge.net/">Web Service Console Eclipse Plugin </a></p>
<p>Although developed based on a need to send raw SOAP messages, the plugin can also be used to call any XML based service over HTTP, or even non-XML based services. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sadiqkummethi.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sadiqkummethi.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sadiqkummethi.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sadiqkummethi.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sadiqkummethi.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sadiqkummethi.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sadiqkummethi.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sadiqkummethi.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sadiqkummethi.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sadiqkummethi.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sadiqkummethi.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sadiqkummethi.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sadiqkummethi.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sadiqkummethi.wordpress.com/53/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sadiqkummethi.wordpress.com&amp;blog=6723970&amp;post=53&amp;subd=sadiqkummethi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sadiqkummethi.wordpress.com/2010/03/19/raw-soap-messages-from-wsdl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe51b58179a9885d98e5877c3ac8a897?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">sadiqkummethi</media:title>
		</media:content>
	</item>
		<item>
		<title>Generating test XML from XSD</title>
		<link>http://sadiqkummethi.wordpress.com/2010/03/19/generating-test-xml-from-xsd/</link>
		<comments>http://sadiqkummethi.wordpress.com/2010/03/19/generating-test-xml-from-xsd/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 13:46:12 +0000</pubDate>
		<dc:creator>sadiqkummethi</dc:creator>
				<category><![CDATA[Tech Blogs]]></category>

		<guid isPermaLink="false">http://sadiqkummethi.wordpress.com/?p=47</guid>
		<description><![CDATA[There could be need to generate test xml&#8217;s instance from the XSD Schema, as i had one for my projects. i started creating test xml&#8217;s first without any use of tool by looking at the XSD available, but most of the time i used to miss one or the other attributes and nodes. if the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sadiqkummethi.wordpress.com&amp;blog=6723970&amp;post=47&amp;subd=sadiqkummethi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There could be need to generate test xml&#8217;s instance from the XSD Schema, as i had one for my projects. i started creating test xml&#8217;s first without any use of tool by looking at the XSD available, but most of the time i used to miss one or the other attributes and nodes. if the XSD is short, you can create test xml&#8217;s with ease with out any use of tools, but as the XSD size grows and looks complex, there are open source tools which can help you to generate test xml&#8217;s.</p>
<p>The best tool i found was Exchanger XML Lite 3.2, which allows not only to generate  test xml instance,but also you can use the tool for many other XML functionality </p>
<p>How to use :<br />
1.Download  Exchanger XML Lite 3.2<br />
2. Select the XSD by File -&gt; Open -&gt; Some.XSD<br />
3.Validate XSD by  Schema -&gt; Validate XML<br />
4.Generate test xml by Schema -&gt; Schema Instance Generation<br />
5.Select the current document, the document root elements , the attributes elements and content.<br />
6.Once you select all the above options, your test xml is generated.</p>
<p>Other tool in the list is Altova XmlSpy, which is not a open source tool, but can be utilized in the trail period of 30 days</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sadiqkummethi.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sadiqkummethi.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sadiqkummethi.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sadiqkummethi.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sadiqkummethi.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sadiqkummethi.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sadiqkummethi.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sadiqkummethi.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sadiqkummethi.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sadiqkummethi.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sadiqkummethi.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sadiqkummethi.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sadiqkummethi.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sadiqkummethi.wordpress.com/47/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sadiqkummethi.wordpress.com&amp;blog=6723970&amp;post=47&amp;subd=sadiqkummethi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sadiqkummethi.wordpress.com/2010/03/19/generating-test-xml-from-xsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe51b58179a9885d98e5877c3ac8a897?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">sadiqkummethi</media:title>
		</media:content>
	</item>
		<item>
		<title>Java Multi Port  Relay Proxy Server</title>
		<link>http://sadiqkummethi.wordpress.com/2010/03/18/java-multi-port-relay-proxy-server/</link>
		<comments>http://sadiqkummethi.wordpress.com/2010/03/18/java-multi-port-relay-proxy-server/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 21:52:10 +0000</pubDate>
		<dc:creator>sadiqkummethi</dc:creator>
				<category><![CDATA[Tech Blogs]]></category>
		<category><![CDATA[Java Proxy Server]]></category>

		<guid isPermaLink="false">http://sadiqkummethi.wordpress.com/?p=37</guid>
		<description><![CDATA[The Java Multi Port Relay Proxy helps in scaling your system, as if your system is accessing data or getting requests from multiple endpoints. It does it by just connecting to a single endpoint with the help of multiple proxy sockets generated in the system. How to use : 1.Set the IP Address and Port [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sadiqkummethi.wordpress.com&amp;blog=6723970&amp;post=37&amp;subd=sadiqkummethi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The Java Multi Port Relay Proxy helps in scaling your system, as if your system is accessing data or getting  requests from multiple endpoints.</p>
<p>It does it by just connecting to a single endpoint with the help of multiple proxy sockets generated in the system.</p>
<p>How to use :<br />
1.Set the IP Address and Port Number of the system to connect to in the config file<br />
i.e connect :199.63.87.100:9000<br />
2.Set the IP Address and Start Port Number of the system where your relay can run, in the config file<br />
i.e accept :199.63.87.101:4000<br />
3.nbr in the config file specifies the number of sockets you want to create.<br />
i.e. nbr= 10 (creates 10 sockets starting from 4000 t0 4010)<br />
4.Now your System can send send messages or receive messages from 199.63.87.100:9000 through the proxy ports 199.63.87.101:4000 to 199.63.87.101:4010.<br />
5.So your System now is connected to 10 Proxy systems.</p>
<p><a href="http://sourceforge.net/javaproxyrelay">Download Code</a><br />
 if above link does not work, please send a mail to sadiqece@gmail.com</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sadiqkummethi.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sadiqkummethi.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sadiqkummethi.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sadiqkummethi.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sadiqkummethi.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sadiqkummethi.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sadiqkummethi.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sadiqkummethi.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sadiqkummethi.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sadiqkummethi.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sadiqkummethi.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sadiqkummethi.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sadiqkummethi.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sadiqkummethi.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sadiqkummethi.wordpress.com&amp;blog=6723970&amp;post=37&amp;subd=sadiqkummethi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sadiqkummethi.wordpress.com/2010/03/18/java-multi-port-relay-proxy-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe51b58179a9885d98e5877c3ac8a897?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">sadiqkummethi</media:title>
		</media:content>
	</item>
		<item>
		<title>Java Horns</title>
		<link>http://sadiqkummethi.wordpress.com/2009/07/16/java-horns/</link>
		<comments>http://sadiqkummethi.wordpress.com/2009/07/16/java-horns/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 04:26:47 +0000</pubDate>
		<dc:creator>sadiqkummethi</dc:creator>
				<category><![CDATA[Tech Blogs]]></category>

		<guid isPermaLink="false">http://sadiqkummethi.wordpress.com/?p=28</guid>
		<description><![CDATA[Technologies are around and are growing as flash of lights. Java &#8211; Without which i cannot imagine enterprise world, has been evolving and there have been add&#8217;s, looking to add, and already added lots and lots of features to the language itself and yet keeping the backward compatibility. That&#8217;s a hell of a work, I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sadiqkummethi.wordpress.com&amp;blog=6723970&amp;post=28&amp;subd=sadiqkummethi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Technologies are around and are growing as flash of lights.</p>
<p>Java &#8211; Without which i cannot imagine enterprise world, has been evolving and there have been add&#8217;s, looking to add, and already added lots and lots of features to the language itself and yet keeping the backward compatibility. That&#8217;s a hell of a work, I must say. It&#8217;s very difficult to maintain that, for sure. Sun has been doing lots of good job.</p>
<p>But what about the new java developers? What about the old java developers?</p>
<p>Old Java developers would be having to learn more and more about the language and how it works and how to use it and its features. I do not complain about learning new things, but, it&#8217;s the amount of knowledge that we; old java developers; need to learn. It&#8217;s so huge and getting bigger everyday. But the only thing that makes me able to continue is that I am building over what I already have learned. It&#8217;s accumulative. That&#8217;s what makes it, for me at least, a little bit easy. But I have seen some developers who does not read articles online daily and does not keep up with what&#8217;s new. Believe me, they are facing a tough time trying to catch up now.</p>
<p>And what about new ones? Imagine the amount of knowledge they need to learn. Imagine how much info, starting from OO concepts, variables and what they mean, and ending with&#8230;.. mmmm&#8230; is there really an end? I can&#8217;t see it. I have been in the area for over than 5 years now, and since I started and there are always lots of things new to learn, and that&#8217;s exactly what keeps it interesting.. <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </p>
<p>Few Java Updates for quick reference:</p>
<p>Java 4 </p>
<p>Java 5<br />
URL:http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html or http://www.sitepoint.com/print/introducing-java-5/<br />
Java 6<br />
URL: http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/beta2.html<br />
Java 7<br />
URL:http://tech.puredanger.com/java7</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sadiqkummethi.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sadiqkummethi.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sadiqkummethi.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sadiqkummethi.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sadiqkummethi.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sadiqkummethi.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sadiqkummethi.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sadiqkummethi.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sadiqkummethi.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sadiqkummethi.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sadiqkummethi.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sadiqkummethi.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sadiqkummethi.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sadiqkummethi.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sadiqkummethi.wordpress.com&amp;blog=6723970&amp;post=28&amp;subd=sadiqkummethi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sadiqkummethi.wordpress.com/2009/07/16/java-horns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe51b58179a9885d98e5877c3ac8a897?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">sadiqkummethi</media:title>
		</media:content>
	</item>
		<item>
		<title>Trend Towards Software As Services (SOA, Cloud Computing &amp; Much More)</title>
		<link>http://sadiqkummethi.wordpress.com/2009/05/26/trend-towards-software-as-services-soa-cloud-computing-much-more/</link>
		<comments>http://sadiqkummethi.wordpress.com/2009/05/26/trend-towards-software-as-services-soa-cloud-computing-much-more/#comments</comments>
		<pubDate>Tue, 26 May 2009 05:50:01 +0000</pubDate>
		<dc:creator>sadiqkummethi</dc:creator>
				<category><![CDATA[Tech Blogs]]></category>

		<guid isPermaLink="false">http://sadiqkummethi.wordpress.com/2009/05/26/trend-towards-software-as-services-soa-cloud-computing-much-more/</guid>
		<description><![CDATA[Software-as-services is the rapidly growing model for how software will be sold in the future. “Software as services” or SAS, its acronym abbreviation, means delivering software over the Internet in the form of a complete service. You sign up for a service and you pay a monthly, quarterly or annual subscription fee. Or, increasingly, you [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sadiqkummethi.wordpress.com&amp;blog=6723970&amp;post=23&amp;subd=sadiqkummethi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Software-as-services is the rapidly growing model for how software will be sold in the future.</p>
<p>“Software as services” or SAS, its acronym abbreviation, means delivering software over the Internet in the form of a complete service. You sign up for a service and you pay a monthly, quarterly or annual subscription fee. Or, increasingly, you pay nothing, because the service is advertising-supported and the vendor of the service gets paid through ad revenue.</p>
<p>Either way, in return you get the right to use the software. Many times there is no need to download any software on to your computer or install anything. If you want to use the software, you simply log on to a central website or some other Internet-enabled application. And, voila — you are using a new application. The point is that you have to do very little except use the service, and do not have to fuss with lengthy or complex technical tasks — all that is handled for you automatically.</p>
<p>Professionals who follow technology business models have been predicting the rise of software-as-service for some time now.</p>
<p>Important Elements Of SAS:</p>
<p>Both of SOA and Cloud Computing can be taken as seperate topics. But as they are Inter-related with SAS, below is brief description</p>
<p>   1. Service-oriented architecture (SOA) Definition : A service-oriented architecture can be defined as a group of services, which communicate with each other. The process of communication involves either simple data passing or it could involve two or more services coordinating some activity. Some means of connecting services to each other is needed<br />
   2. Cloud computing comes into focus only when you think about what IT always needs: a way to increase capacity or add capabilities on the fly without investing in new infrastructure, training new personnel, or licensing new software. Cloud computing encompasses any subscription-based or pay-per-use service that, in real time over the Internet, extends IT&#8217;s existing capabilities.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sadiqkummethi.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sadiqkummethi.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sadiqkummethi.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sadiqkummethi.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sadiqkummethi.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sadiqkummethi.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sadiqkummethi.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sadiqkummethi.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sadiqkummethi.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sadiqkummethi.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sadiqkummethi.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sadiqkummethi.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sadiqkummethi.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sadiqkummethi.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sadiqkummethi.wordpress.com&amp;blog=6723970&amp;post=23&amp;subd=sadiqkummethi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sadiqkummethi.wordpress.com/2009/05/26/trend-towards-software-as-services-soa-cloud-computing-much-more/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe51b58179a9885d98e5877c3ac8a897?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">sadiqkummethi</media:title>
		</media:content>
	</item>
		<item>
		<title>Oracle Impact On Java</title>
		<link>http://sadiqkummethi.wordpress.com/2009/04/29/oracle-impact-on-java/</link>
		<comments>http://sadiqkummethi.wordpress.com/2009/04/29/oracle-impact-on-java/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 13:03:23 +0000</pubDate>
		<dc:creator>sadiqkummethi</dc:creator>
				<category><![CDATA[Tech Blogs]]></category>

		<guid isPermaLink="false">http://sadiqkummethi.wordpress.com/?p=15</guid>
		<description><![CDATA[Sun Microsystems has been bought by Oracle. Any such major acquisition means that it’s time for all tech media to speculate on the future of the merger and of the products affected. Below are my 2 cents. Java &#8211; While many think of Oracle as a database company, the fact is that Oracle is deeply [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sadiqkummethi.wordpress.com&amp;blog=6723970&amp;post=15&amp;subd=sadiqkummethi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Sun  Microsystems has been bought by Oracle. Any such major acquisition means that  it’s time for all tech media to speculate on the future of the merger and of the  products affected. Below are my 2 cents.</span></span></p>
<ol type="1">
<li class="MsoNormal"><strong><strong><span style="font-family:Times New Roman;font-size:small;"><span>Java</span></span></strong></strong> &#8211; While many think of Oracle as a  database company, the fact is that <span style="text-decoration:underline;">Oracle is deeply invested in Java</span> and  it’s Fusion <a id="KonaLink0" title="http://www.indicthreads.com/4040/oracle-impact-on-java-solaris-mysql-netbeans-sun-open-source/" href="http://www.indicthreads.com/4040/oracle-impact-on-java-solaris-mysql-netbeans-sun-open-source/" target="undefined"><span class="klink" title="http://www.indicthreads.com/4040/oracle-impact-on-java-solaris-mysql-netbeans-sun-open-source/"><span style="font-family:Lucida Sans Unicode;font-size:x-small;"><span style="font-size:10.5pt;font-family:'Lucida Sans Unicode';" title="http://www.indicthreads.com/4040/oracle-impact-on-java-solaris-mysql-netbeans-sun-open-source/">Middleware</span></span></span></a> stack is built on Java. Oracle CEO Larry Ellison in his post acquisition call  has stated that “Java is the single most important software asset we have ever  acquired.” So it’s <span style="text-decoration:underline;">highly unlikely that Oracle will put Java on the back  burner</span> and not invest in the growth of Java.</li>
<li class="MsoNormal"><strong><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Solaris</span></span></strong></strong> &#8211; Over the past  couple of years, Oracle has had a major Linux push. Oracle Magazine has had  penguins featured on its cover and Oracle <span class="klink"><span style="text-decoration:underline;"><span style="font-family:Lucida Sans Unicode;color:blue;font-size:x-small;"><span style="font-size:10.5pt;color:blue;font-family:'Lucida Sans Unicode';">Unbreakable  Linux</span></span></span></span> has been one of it’s top marketing lines. Post  acquisition, Oracle has stated that it will be as committed as ever to Linux.  Oracle says “The Sun Solaris operating system is the leading platform for the  Oracle <span class="klink"><span style="text-decoration:underline;"><span style="font-family:Lucida Sans Unicode;color:blue;font-size:x-small;"><span style="font-size:10.5pt;color:blue;font-family:'Lucida Sans Unicode';">database</span></span></span></span>.  With the acquisition of Sun, Oracle can optimize the Oracle database for some of  the unique, high-end features of Solaris.” <span style="text-decoration:underline;">So Solaris will do ok, but I think  Oracle is too far down the Linux path to now make Solaris its preferred  OS</span>.</li>
<li class="MsoNormal"><strong><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">MySQL</span></span></strong></strong> &#8211; The acquisition FAQ  in reply to the question “What does Oracle plan to do with MySQL?” says “MySQL  will be an addition to Oracle’s existing suite of database products, which  already includes Oracle Database 11g, TimesTen, Berkeley DB <span class="klink"><span style="text-decoration:underline;"><span style="font-family:Lucida Sans Unicode;color:blue;font-size:x-small;"><span style="font-size:10.5pt;color:blue;font-family:'Lucida Sans Unicode';">open  source database</span></span></span></span>, and the open source transactional  storage engine, InnoDB.” Unlike answers about Sun’s hardware business, in case  of MySQL, Oracle does not talk of being committed the growth of MySQL or long  term focus on MySQL, etc. <span style="text-decoration:underline;">The future of MySQL at Oracle doesn’t look very  bright</span>. However if the MySQL licence doesn’t make it financially impossible,  a <span style="text-decoration:underline;">MySQL fork could emerge and gain some traction</span>. MySQL has been forked  before but the forks never got much developer attention.</li>
<li class="MsoNormal"><strong><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">IDE</span></span></strong></strong> &#8211; Until a few years back,  JDeveloper was a great alternative IDE to Netbeans and Eclipse based IDEs.  However lately JDeveloper seems to have become a tool that works best for Oracle  products and delivers solutions that Oracle app customers want. It seems like it  no longer wants to compete in the Java IDE space. So JDeveloper hasn’t  introduced much of <span class="klink"><span style="font-family:Lucida Sans Unicode;color:blue;font-size:x-small;"><span style="font-size:10.5pt;color:blue;font-family:'Lucida Sans Unicode';">scripting  language</span></span></span> support although most other IDEs have been rushing  to provide scripting language and framework support. Oracle already has two  <span class="klink"><span style="text-decoration:underline;"><span style="font-family:Lucida Sans Unicode;color:blue;font-size:x-small;"><span style="font-size:10.5pt;color:blue;font-family:'Lucida Sans Unicode';">Java  development tools</span></span></span></span> on hand in JDeveloper and Workshop  (formerly BEA Workshop) and adding NetBeans to the equation is going to further  complicate things for Oracle. <span style="text-decoration:underline;">I would think that JDeveloper will consciously  move further away from the hardcore Java crowd and be customized for traditional  Oracle Apps and Oracle Developer developers, while NetBeans and Workshop will  focus on the geeky Java enthusiasts.</span> For NetBeans lovers, I guess Sun being  acquired by Oracle is better than it being acquired by IBM.</li>
<li class="MsoNormal"><strong><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">JavaME</span></span></strong></strong> &#8211; Java on mobile  devices has been doing quite well and I would <span style="text-decoration:underline;">expect Oracle to put as much  into JavaME as Sun</span>.</li>
<li class="MsoNormal"><strong><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">JavaFX</span></span></strong></strong> &#8211; Oracle doesn’t have  a competing GUI &amp; graphics technology, however Oracle also doesn’t seem to  be very interested in that space. I would <span style="text-decoration:underline;">expect Oracle to continue to  support JavaFX for the time being</span> but truly process JavaFX maybe a year from  now, when it would have come to terms with the Sun acquisition.</li>
<li class="MsoNormal"><strong><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Sun  Hardware</span></span></strong></strong> &#8211; There’s already speculation about Oracle  <span style="text-decoration:underline;">selling off Sun’s hardware business</span> to Fujitsu. This does look  likely.</li>
<li class="MsoNormal"><strong><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">OpenSource</span></span></strong></strong> &#8211; Oracle is  primarily a builder of proprietary products and even the products that Oracle  gives away for free, like JDeveloper and the Express DB are not open source. So  although the Sun teams will bring an open source culture with them, <span style="text-decoration:underline;">Oracle is  unlikely to become a big supporter of open source</span>.</li>
<li class="MsoNormal"><strong><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Image</span></span></strong></strong> &#8211; Oracle is a mega  company with many brilliant people working for it. However Oracle doesn’t have a  geeky culture or image, and unlike many other companies in the Java space,  Oracle isn’t one to come with cool open source products that seem to have no  immediate buyers. For example, Oracle is unlikely to invest the amount of time  and effort that Sun put into building a new GUI technology from scratch, JavaFX.  Oracle products mostly solve problems for its paying customers. The <span style="text-decoration:underline;">focus is  on being solid and reliable and not on being cool. Boring but  effective</span>.</li>
</ol>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Overall, I  think Sun being acquired by Oracle is good news, as a struggling Sun would not  be good for Java and for the Java based software industry. Oracle has the muscle  to invest in the growth of various Sun technologies and ensure that they perform  to their potential. A new owner should also bring new ideas &amp; excitement to  Java.</span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sadiqkummethi.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sadiqkummethi.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sadiqkummethi.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sadiqkummethi.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sadiqkummethi.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sadiqkummethi.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sadiqkummethi.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sadiqkummethi.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sadiqkummethi.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sadiqkummethi.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sadiqkummethi.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sadiqkummethi.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sadiqkummethi.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sadiqkummethi.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sadiqkummethi.wordpress.com&amp;blog=6723970&amp;post=15&amp;subd=sadiqkummethi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sadiqkummethi.wordpress.com/2009/04/29/oracle-impact-on-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe51b58179a9885d98e5877c3ac8a897?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">sadiqkummethi</media:title>
		</media:content>
	</item>
		<item>
		<title>When Good Architecture Goes Bad</title>
		<link>http://sadiqkummethi.wordpress.com/2009/04/29/when-good-architecture-goes-bad/</link>
		<comments>http://sadiqkummethi.wordpress.com/2009/04/29/when-good-architecture-goes-bad/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 13:02:27 +0000</pubDate>
		<dc:creator>sadiqkummethi</dc:creator>
				<category><![CDATA[Tech Blogs]]></category>

		<guid isPermaLink="false">http://sadiqkummethi.wordpress.com/?p=13</guid>
		<description><![CDATA[Every developer eventually encounters it at some stage in his or her career – the code that no one understands and that no one wants to touch in case it breaks. Sound familiar? But how did the software get that bad? Presumably no one set out to make it like that? The answer is that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sadiqkummethi.wordpress.com&amp;blog=6723970&amp;post=13&amp;subd=sadiqkummethi&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Every  developer eventually encounters it at some stage in his or her career – the code  that no one understands and that no one wants to touch in case it breaks. Sound  familiar?</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">But how did  the software get that bad? Presumably no one set out to make it like that? The  answer is that the software is suffering from <strong><em><span style="font-weight:bold;font-style:italic;">Software Erosion</span></em> – </strong>the constant decay of the internal structure of a software system that  occurs in all phases of software development and  maintenance</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">At the  architectural level, Software Erosion is seen in the divergence of the software  architecture <strong><span style="font-weight:bold;">as-implemented </span></strong>from  the software architecture <strong><span style="font-weight:bold;">as-intended</span></strong>. Note that when talking about  the architecture as-intended I’m not speaking here about the initial planned  architecture of the software system. Software architectures should evolve over  time – this is to be expected as new requirements emerge – so the intended  architecture is what your <strong><span style="font-weight:bold;">current</span></strong> conception of the architecture is. With software erosion what we’re talking  about are <strong><span style="font-weight:bold;">unintended</span></strong> modifications  or <strong><span style="font-weight:bold;">temporary</span></strong> violations of the  software architecture.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">The problem  with software erosion is that its effects accumulate over time to result in a  significant decrease in the ability of a system to meet its stakeholder  requirements. Unless you take steps to actively pinpoint and stop software  erosion it will gradually creep up on you and make changing the software further  significantly harder and less predictable. In the worst case it could lead to  the cancellation of the project or, for particularly significant projects, the  closure of the business.</span></span></p>
<p><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Types of Software  Erosion</span></span></strong></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">To begin to  tackle software erosion you need an understanding of how it typically shows  itself. Common types of software erosion include:</span></span></p>
<ul type="disc">
<li class="MsoNormal"><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Architectural Rule  violations</span></span></strong> e.g. where strict layering between subsystems is  bypassed.</li>
<li class="MsoNormal"><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Cyclic dependencies</span></span></strong> – for example <strong><span style="font-weight:bold;">A</span></strong> calls <strong><span style="font-weight:bold;">B</span></strong> calls <strong><span style="font-weight:bold;">C</span></strong> calls <strong><span style="font-weight:bold;">D</span></strong> calls <strong><span style="font-weight:bold;">A</span></strong>. This type of dependency can be valid but  when it’s unintended can lead to very complex, opaque code that is hard to  understand and hard to test in isolation.</li>
<li class="MsoNormal"><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Dead code</span></span></strong> – code  that once supported part of the software, is now no longer used, but is still  cluttering the code base.</li>
<li class="MsoNormal"><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Code <em><span style="font-style:italic;">clones</span></em></span></span></strong> – identical or  near-identical code fragments scattered across the system. A bug fix or change  in one clone instance is likely to have to be propagated to the other clone  instances.</li>
<li class="MsoNormal"><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Metric outliers</span></span></strong> e.g. very deep class hierarchies, huge packages, very complex code  etc.</li>
</ul>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">A  well-known example of software erosion was highlighted in a reverse-engineering  experiment on two separate versions of ANT some years ago. ANT V1.4.1 (11  October 2001) and ANT V1.6.1 (12 February 2004) were reverse-engineered and the  results were compared.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">At the time  ANT was built in three layers, from the top-down these were <em><span style="font-style:italic;">taskdefs, ant, utils</span></em>. In the earlier  version these layers were well separated and the <em><span style="font-style:italic;">ant </span></em>layer was monolithic but small. In the  later version the <em><span style="font-style:italic;">ant </span></em>layer was  still monolithic but had now become very large – making it harder to understand  and work with. More problematically a new upward dependency from the lower-level  <em><span style="font-style:italic;">ant </span></em>layer to the top-level  <em><span style="font-style:italic;">taskdefs</span></em>layer had been  introduced.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">These types  of erosion problems lead to code that is hard to understand, hard to modify and  hard to test. But how do you know whether you’re suffering from software  erosion?</span></span></p>
<p><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Are you suffering from Software  Erosion?</span></span></strong></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Perhaps the  first thing to observe is that most projects will suffer from software erosion  at some stage unless there is a conscious effort to pinpoint and stop such  erosion. Even projects that are relatively short-lived can suffer from it. One  example I have heard about involved a software project that had to be scrapped  after only 6 months because it had already eroded  badly.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">There are  some common things you can look out for when deciding how badly your software is  suffering from software erosion:</span></span></p>
<ul type="disc">
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">The time, effort and  risk in implementing new functionality increase – productivity and quality  decrease and complexity increases. These are very common side effects when  software erosion is present.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">No one has  responsibility for the architecture and knowledge of the architecture is held by  a decreasing number of people.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">No one on the team  can tell you (or agree on) what the <strong><span style="font-weight:bold;">intended</span></strong> or <strong><span style="font-weight:bold;">implemented</span></strong> architectures are. If you don’t  have an understanding of either of these then it’s very likely that software  erosion has occurred and will continue to occur.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">The team hasn’t had  a stable core membership throughout the software’s life. If someone leaves the  team then that person’s knowledge of the architecture and software leaves with  him or her. New people take time to get up to speed on the project, so mistakes  are made and the software erodes further. If new people are unlucky enough to be  introduced into a team where no one knows what the architecture is or should be,  then the software will erode even faster as they make changes to  it.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Little or no  refactoring is sanctioned. Refactoring is the way to rollback software erosion  once it has been pinpointed. Refactorings that remove architecture violations,  eliminate code cycles, prune dead code, consolidate code clones and do away with  metric outliers are particularly beneficial, because, by fighting software  erosion, they clear the way for other refactorings, for bug fixes and for new  features in the software.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">There’s pressure to  rewrite the software. When software has eroded badly it becomes really hard for  developers to work with that software. Every change and bug fix takes  significantly longer in practice than it should in theory. The code becomes  brittle and so even the simplest change can have unexpected knock-on effects  which lead to costly rework. I’ll say more on rewriting  later.</span></span></li>
</ul>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">At a  detailed level, software erosion results in problems such as code living in the  <em><span style="font-style:italic;">wrong </span></em>place, layering violations  (as seen above in the ANT example), complex cycles insufficient decomposition,  big packages etc.</span></span></p>
<p><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Costs of Software  Erosion</span></span></strong></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">It can be  hard to measure the cost of software erosion and convey this cost to  non-technical people who often have to sanction work to stop software erosion.  Even though software erosion causes reduced productivity, reduced quality and  increased time-to-market, no one specific point of erosion causes these effects  in isolation, rather it is the effect of multiple points of erosion that combine  and reinforce each other to cause them.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">However, a  study by the US Air Force Software Technology Support Centre (STSC) attempted to  put some rough measure on the costs of software erosion. The researchers took  two versions of a mature software system (50k LOC) and asked two different teams  to perform the same maintenance task (adding approx. 3k of code) on their  respective version. Version 1 was an existing system suffering software erosion.  Version 2 was the same system but with the architecture restructured to remove  erosion.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">The results  were staggeringly different. Team 1, working on Version 1, needed over <strong><span style="font-weight:bold;">twice</span></strong> as long as team 2 to complete this  relatively short task. Furthermore, Team 1’s results contained more than  <strong><span style="font-weight:bold;">eight times</span></strong> the number of errors  than the work submitted by team 2, working on version2. Erosion in a small  system such as this still had the potential to lead to significant problems when  the software was maintained.</span></span></p>
<p><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Causes of  Erosion</span></span></strong></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">By now you  should have some clues as to how software erosion comes about. It does not arise  purely spontaneously. Software Erosion comes about through <strong><span style="font-weight:bold;">change</span></strong>.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Pressure  for change comes from a variety of sources. The need to add new features to a  product to help persuade people to buy it, changes to the environment within  which the software is deployed e.g. to support different networking or GUI  standards and technical changes, such as the desire to adopt new coding  standards all have an impact on the software. Where the initial vision for the  software doesn’t allow for change, such erosion effects will be seen very  quickly.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Software  Erosion is also known as software decay or code rot and by similar terms.  However, these don’t adequately capture the notion that it is forces external to  the software that are ultimately the cause of problems within the software.  Erosion is not something that just happens to the code without someone actively  making such changes. This is why I feel that notion of software erosion more  adequately describes this gradual wearing down of the ability to work  effectively with the software.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">The needs  of the business can also contribute to software erosion. Even though  deliberately eroding your software causes bigger problems down the line it may  be in the best interest of the business to do this for some short-term gain. The  problems build up quickly however if the business does this repeatedly without  spending time to refactor the eroded code. Every developer is familiar with the  ‘quick-fix’ that becomes a permanent feature.</span></span></p>
<p><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Real-World Examples of Software  Erosion</span></span></strong></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">How bad is  this problem in practice? In 2007-08 I decided to investigate this question by  running a number of workshops at different software events in the  UK and by engaging in some  discussions with some software practitioners further  afield.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">At every  workshop I ran participants spoke about many different examples of systems  suffering software erosion:</span></span></p>
<ul type="disc">
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Software with a  large number of cyclic dependencies that ended up as brittle spaghetti  code.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Systems where  business logic (with associated SQL) was captured in the software’s presentation  layer – making it hard to replace this layer.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">A software system  where the threading architecture eroded so badly over time that the system  became unmaintainable and had to be scrapped.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">A single class used  as a dumping ground for everything that didn’t have a better  home.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">A ‘cancerous wart’  of a software system with ever increasing coupling between modules, packages  etc.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Lots of code clones  (copies and near-identical copies).</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Uncontrolled code  use – programmers grabbing code, classes and even variables from other parts of  the software without any control on what could and couldn’t be used – once again  led to significant erosion.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Several examples of  <em><em><span style="font-family:Times New Roman;">drive-by programming</span></em></em> –  team-membership constantly changing, programmers not understanding the  architecture and so making mistakes when they coded and then moving onto their  next project. One example of <em><em><span style="font-family:Times New Roman;">drive-by-architecting</span></em></em> with similar  consequences.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Problems with  obsolete software and hardware technology; a lack of skills in these obsolete  technologies leading to further decay.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Sales-driven  evolution – where there was no clear roadmap or scope for the software system  and so the implemented software architecture inevitably diverged rapidly from  the intended architecture.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Merged companies  with different cultures and different principles having to collaborate on a  software system leading to decay.</span></span></li>
</ul>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">In every  workshop all but a few people either were working on projects that had eroded  quite badly or had worked on such projects in the  past.</span></span></p>
<p><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Case Study &#8211; Outsourcing of a 1MLOC  C/C++ system</span></span></strong></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">I outline  below a real-world case study in order to get you thinking further about  software erosion. My recommendation is to spend 10-15 minutes (either on your  own or with a colleague who is also reading this article) thinking about the  questions before proceeding to the discussion.</span></span></p>
<p><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Case Study Project  History</span></span></strong></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">A company  developed a software system over a number of years. Six years ago the software  was transferred to a company-owned outsourcing centre in India where it  has been developed since that time. At the time of the transfer the organisation  believed that the architecture of the system as intended was well documented and  matched what was implemented.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">The  software is critical and cannot be thrown away  easily.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Over time  more staff were added to the project to maintain a steady flow of new features.  The company has a similar product that is maintained and evolved by 5 developers  whereas the Indian department now has 50  developers.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">The company  recently compared the amount of work done by these two teams and assessed that  they delivered roughly the same amount of work.</span></span></p>
<p><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Present  Situation</span></span></strong></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Acting on  this difference in productivity the company compared the architecture from 6  years ago (as the outsourcing took place) against the architecture of the  current code and found that many parts of the system have dependencies that are  not intended.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">The  intended architecture was documented, so in theory all involved personnel could  have compared actual to as-intended architecture. The initial architecture was  probably appropriate for the current system (so it&#8217;s a good architecture that  has gone bad).</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">The company  now intends to bring part of the software back under control in  Germany while leaving part  under control in India.</span></span></p>
<p><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Questions</span></span></strong></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Think about  whether it is credible that software erosion led to this significant decrease in  productivity? What do you think of the company&#8217;s proposed  solution?</span></span></p>
<p><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Discussion</span></span></strong></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">The  software has been developed over a number of years; the team and their  development processes; tools and technologies may have changed during this time.  Given we can probably reason that the software has probably been modified a lot  before it was handed over and so conclude that it’s likely that the architecture  at the time of handover may have eroded.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">There was a  major personnel change 6 years ago when the project was handed over. The two  different organisations will have different cultures, knowledge &amp; skills. It  is not clear that these differences will be lessened just because both  organisations are part of the same multi-national. This could lead to further  erosion.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">We also  have to consider the reasons for the switch and the way the switch took place.  Did the organisation cut costs on the project when the software was handed over?  Was there a backlog of work on the project that it was felt the new team could  tackle sooner or better? How was the handover done? Did they redeploy the  existing team elsewhere or did they fire them? Were people from the old team  made available to help people from the new team get up to speed? How much time  was the new team given to learn about the software before having to start  modifying it? If there was no effective handover and insufficient time allowed  for the new team to learn the architecture and the code base then erosion is  more likely to have occurred.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">We’re told  that the ‘Software is critical and cannot be thrown away’. We’re also told that  there’s been a steady flow of new features Both of these indicate that changes  have and will take place implying that erosion could be present. This is  confirmed by the assessment that there are a lot of unintended dependencies in  the architecture <strong><span style="font-weight:bold;">as-implemented</span></strong>.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">My belief  is that <strong><span style="font-weight:bold;">it is credible</span></strong> that  architectural decay contributed to the team’s problems but that it cannot be  untangled from other issues.</span></span></p>
<ul type="disc">
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">There have been lots  of changes over the years.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">At the time of  handover it wasn’t clear how closely the architecture as is matched the  architecture as intended.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">There were lots of  staff changes – how well was the handover managed? – this was initially a  comprehension task that needed management and technical  support.</span></span></li>
</ul>
<p><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Stopping Software  Erosion</span></span></strong></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Stopping  software erosion requires management commitment. If managers are only interested  in the short-term viability of their software projects then it is hard for  developers to get the time and make the effort to tackle the problem. This does  not excuse developers from doing what they can to fight erosion but will  inevitably make their struggle less effective.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">If  management commitment is present then the following outline <em><span style="font-style:italic;">pattern</span></em> can be used to stop software  erosion. How you implement the pattern depends on what tools you have available,  what domain your project lies in, how mature the erosion problem is  etc.</span></span></p>
<p><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Stopping Software Erosion – a  Pattern</span></span></strong></p>
<ol type="1">
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Start out with a  sustainable architecture. – All successful software systems evolve; make sure  you have built in flexibility for future <strong><span style="font-weight:bold;">known</span></strong> changes. Assess your architecture  using the most likely change scenarios – where is it flexible, where will it  need to evolve? There are always tradeoffs here in the amount of time you can  spend in architecture assessment and also in the ‘finished’  architecture.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">When implementation  starts regularly visualize the architecture as the software changes. Get a feel  for how close your implemented architecture is to your architectural vision –  maybe you need to change the latter.</span></span></li>
<li class="MsoNormal"><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Compare</span></span></strong> the  architecture <strong><span style="font-weight:bold;">as-implemented </span></strong>to  your architecture <strong><span style="font-weight:bold;">as-intended </span></strong>to  see how they differ. With automated support this can be done as part of the  software build. This step does rely on you at least having some <em><span style="font-style:italic;">vision</span></em> of what your intended architecture  is. If you don’t have this then you can gradually reverse engineer it from your  architecture <strong><span style="font-weight:bold;">as-implemented</span></strong>. There  are now many tools from very basic free ones through to very advanced commercial  tools that can help with architecture visualization and checking.</li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Use cycle detection,  clone detection, metrics analysis and dead code detection to pinpoint software  erosion. Again there are several free and commercial tools that tackle some or  these tasks.</span></span></li>
<li class="MsoNormal"><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Refactor the  software to remove eroded code.</span></span></li>
</ol>
<p><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Stopping Software Erosion – Cultural  Factors</span></span></strong></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">As noted  above, if top management doesn’t support the fight against software erosion then  developers have their work cut out to stop erosion. With management support you  can create a culture where stopping erosion is valued. This culture is likely to  have characteristics such as – an emphasis on regular refactoring, clear  assignment of responsibilities, sharing of architectural knowledge and work,  frequent communication between the whole group.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">In <em><span style="font-style:italic;">Designing Maintainability in Software Engineering: a  Quantified Approach</span></em> Tom Gilb describes one team’s ‘Green Week’ – one  week set aside each month to focus on improving their software’s  maintainability. This proved more successful for the team than their earlier one  day a week approach and had the added benefit of making the development team  feel empowered.</span></span></p>
<p><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">A few words on  rewriting</span></span></strong></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Before I  wrap up I’d like to say a few words about software rewrites. As I noted earlier,  pressure from development teams to rewrite software commonly manifests itself  when that software has eroded. In the worst case the development team uses the  excuse of a possible future rewrite to delay refactoring work to the software.  When this occurs, the software continues to erode until it reaches a state where  working with it becomes very difficult. Even if a rewrite may once have been  avoidable if action had been taken the result is that a rewrite becomes  inevitable due to the negligence of the team.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">As a  developer, when faced with a decision about rewriting some software you should  always ask yourself whether you are planning to rewrite it for the right  reasons. Is it because you cannot make the software maintainable or is it to get  rid of code you haven’t tried hard enough to refactor or code that someone other  than you has written? Worst still, is it just to get some hot new technology  onto your CV?</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">As a  manager ask yourself whether you can afford a rewrite? Do you have the right  people with the right skills available for the right length of time? Do you  understand the risks of new tools and technologies? Do you understand what you  have to build? Are you rewriting the software or building something brand new?  Worst still, how long will it be before your competitors catch up? In the  Doomsday scenario, can your organisation handle the total failure of the  rewriting project?</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">If you’re  about to risk an expensive and lengthy rewrite of your software, are you really  sure that you’ve exhausted every approach to fighting software erosion in your  current code base?</span></span></p>
<p><strong><span style="font-family:Times New Roman;font-size:small;"><span style="font-weight:bold;font-size:12pt;">Summary</span></span></strong></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">Any  successful software system is likely to evolve. Unless preventative work is  undertaken the software will erode. As the software erodes the cost and risk of  further development rises. It’s <strong><span style="font-weight:bold;">rarely too  early</span></strong> to start fighting software erosion. The costs of software  erosion start to bite very quickly once it sets in.</span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;"><span style="font-size:12pt;">There are  lots of different things that can be done to stop software erosion – you (just)  need to work out what the best value approach is for your particular project. If  you are a <strong><span style="font-weight:bold;">manager</span></strong> then create a  culture where fighting software erosion is encouraged and supported. If you  don&#8217;t do this then no one will care about erosion. If you are an <strong><span style="font-weight:bold;">architect</span></strong> or <strong><span style="font-weight:bold;">developer</span></strong> then educate yourself about the  different causes of erosion and the different approaches for fighting it. If  you’re interested in finding out more, or sharing your ideas on stopping  software erosion, then please get in touch.</span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sadiqkummethi.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sadiqkummethi.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sadiqkummethi.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sadiqkummethi.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sadiqkummethi.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sadiqkummethi.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sadiqkummethi.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sadiqkummethi.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sadiqkummethi.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sadiqkummethi.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sadiqkummethi.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sadiqkummethi.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sadiqkummethi.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sadiqkummethi.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sadiqkummethi.wordpress.com&amp;blog=6723970&amp;post=13&amp;subd=sadiqkummethi&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sadiqkummethi.wordpress.com/2009/04/29/when-good-architecture-goes-bad/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fe51b58179a9885d98e5877c3ac8a897?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">sadiqkummethi</media:title>
		</media:content>
	</item>
	</channel>
</rss>
