<?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>Sridhar Yerramreddy&#039;s Weblog</title>
	<atom:link href="http://srireddy.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://srireddy.wordpress.com</link>
	<description>Architecture is the only answer!!</description>
	<lastBuildDate>Mon, 15 Aug 2011 15:23:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='srireddy.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Sridhar Yerramreddy&#039;s Weblog</title>
		<link>http://srireddy.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://srireddy.wordpress.com/osd.xml" title="Sridhar Yerramreddy&#039;s Weblog" />
	<atom:link rel='hub' href='http://srireddy.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Phonegap &#8212; Future Mobile Framework</title>
		<link>http://srireddy.wordpress.com/2011/07/07/phonegap-future-mobile-framework/</link>
		<comments>http://srireddy.wordpress.com/2011/07/07/phonegap-future-mobile-framework/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 16:42:06 +0000</pubDate>
		<dc:creator>srireddy</dc:creator>
				<category><![CDATA[SDLC]]></category>

		<guid isPermaLink="false">http://srireddy.wordpress.com/?p=144</guid>
		<description><![CDATA[It is true that there are many other cross-platform mobile development options available – and for the record, I do refer to a few of the more popular ones in the book. The reason I support PhoneGap is that it’s the only cross-platform mobile development solution that allows you to write your apps with standard [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=144&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It is true that there are many other cross-platform mobile development options available – and for the record, I do refer to a few of the more popular ones in the book. The reason I support PhoneGap is that it’s the only cross-platform mobile development solution that allows you to write your apps with standard HTML, CSS, and JavaScript.</p>
<p>In other words, with PhoneGap, you write a normal web app and then drop it into native app wrappers for the various platforms. With all of the other cross-platform mobile options, you write code based on a proprietary framework that will only run as a native app.</p>
<p>For example, you can write a Titanium Mobile app using Appcelerator’s proprietary framework to create native apps. But Titanium Mobile won’t output your app in a way that will also run in a mobile browser.</p>
<p>Call me crazy, but I see the standards-based mobile web as the future of mobile computing. I don’t advocate cross-platform development approaches that conflict with this view.</p>
<p>Another thing to consider is the number of supported platforms. Titanium Mobile, for example, only supports iPhone and Android. As I write this, PhoneGap supports iPhone, Android, Palm, Symbian, Maemo, Windows Mobile, and Blackberry. And iPad and Windows Phone 7 are coming to PhoneGap soon.</p>
<p>If you have a big mobile project coming up, it would be a good idea to investigate your options. Ultimately, the best approach will depend on your target market and goals. My general advice to developers is that if you can build your app with standard HTML, CSS, and JavaScript, then you probably should leverage standards based technology. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/srireddy.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/srireddy.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/srireddy.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/srireddy.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/srireddy.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/srireddy.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/srireddy.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/srireddy.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/srireddy.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/srireddy.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/srireddy.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/srireddy.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/srireddy.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/srireddy.wordpress.com/144/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=144&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://srireddy.wordpress.com/2011/07/07/phonegap-future-mobile-framework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">srireddy</media:title>
		</media:content>
	</item>
		<item>
		<title>BASE Architectural Pattern</title>
		<link>http://srireddy.wordpress.com/2010/07/28/141/</link>
		<comments>http://srireddy.wordpress.com/2010/07/28/141/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 14:14:54 +0000</pubDate>
		<dc:creator>srireddy</dc:creator>
				<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://srireddy.wordpress.com/?p=141</guid>
		<description><![CDATA["Eventual Consistency" and "BASE" are the modern architectural approaches to achieve highly scalable web applications. .<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=141&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8220;Eventual Consistency&#8221; and &#8220;BASE&#8221; are the modern architectural approaches to achieve highly scalable web applications. .</p>
<p>I recently have some good conversation from my visit to Google I/O on the &#8220;eventual consistency&#8221; model. There is a general design pattern that I want to capture here.</p>
<p>The definition of data integrity</p>
<p>&#8220;Data integrity&#8221; is defined by the business people. It needs to hold at specific stages of the business operation cycle. Here we use a book seller example to illustrate. The data integrity is defined as &#8230;</p>
<p>Sufficient books must be available in stock before shipment is made to fulfil an order.</p>
<p>The application designer, who design the application to support the business, may transform the &#8220;data integrity&#8221; as &#8230;</p>
<p>Total_books_in_stock &gt; sum_of_all_orders</p>
<p>The app designer is confident that if the above data integrity is observed, then the business integrity will automatically be observed. Note here that &#8220;data integrity&#8221; may be transformed by the application designer into a more restrictive form.</p>
<p>Now, the designer proceeds with the application implementation &#8230; There are 2 approaches to choose from, with different implications of scalability.</p>
<p>The ACID approach</p>
<p>One way of ensuring the above integrity is observed is to use the traditional ACID approach. Here, a counter &#8220;no_of_books_in_stock&#8221; is used to keep track of available books in the most up-to-date fashion. When every new order enters, the transaction checks the data integrity still holds. </p>
<p>In this approach, &#8220;no_of_books_in_stock&#8221; becomes a shared state that every concurrent transacton need to access. Therefore, every transaction take turns sequentially to lock the shared state in order to achieve serializability. A choke point is created and the system is not very scalable.</p>
<p>Hence the second approach &#8230;</p>
<p>The BASE approach</p>
<p>Instead of checking against a &#8220;shared state&#8221; at the order taking time, the order taking transaction may just get a general idea of how many books is available in stock at the beginning of the day and only checks against that. Note that this is not a shared state, and hence there is no choke points. Of course, since every transaction assumes no other transaction is proceeding, there is a possibility of over-booking.</p>
<p>At the end of the day, there is a reconciliation process that took the sum of all orders taken in the day, and check that against the number of books in stock. Data integrity checking is done here, but in batch mode which is much more efficient. In case the data integity is not maintained, the reconciliation process fire up compensating actions such as print more books, or refund some orders, in order to reestablish the data integrity.</p>
<p>Generalizing the Design pattern of BASE</p>
<p>&#8220;Eventual consistency&#8221; is based on the notion that every action is revokable by executing a &#8220;compensating action&#8221;. However, all compensating actions different costs involved, which is the sum of this individual compensation plus all compensating actions that it triggers. </p>
<p>In BASE, the design goal is to reduce the probability of doing high-cost revokation. Note that BASE is a probablistic model while ACID is a binary, all-or-none model.</p>
<p>In BASE, data is organized into two kinds of &#8220;states&#8221;: &#8220;Provisional state&#8221; and &#8220;Real state&#8221;. </p>
<p>All online transactions should only read/write the provisional state, which is a local, non-shared view among these transactions. Since there is no shared state and choke point involved, online transactions can proceed very efficiently.</p>
<p>Real state reflects the actual state of the business (e.g. how many books are actually in stock), which always lacks behind the provisonal state. The &#8220;real state&#8221; and &#8220;provisional state&#8221; are brought together periodically via a batch-oriented reconciliation process.</p>
<p>Data integrity checking is defer until the reconciliation process executes. High efficiency is achieved because of its batch nature. When the data integrity does not hold, the reconciliation process will fire up compensating actions in order to reestablish the data integrity. At the end of the reconciliation, the provisional state and real state are brought in sync with each other.</p>
<p>To minimize the cost of compensating actions, we need to confine the deviation between the provisional state and the real state. This may mean that we need to do the reconciliation more frequently. We should also minimize the chaining effect of compensating actions</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/srireddy.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/srireddy.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/srireddy.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/srireddy.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/srireddy.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/srireddy.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/srireddy.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/srireddy.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/srireddy.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/srireddy.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/srireddy.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/srireddy.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/srireddy.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/srireddy.wordpress.com/141/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=141&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://srireddy.wordpress.com/2010/07/28/141/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">srireddy</media:title>
		</media:content>
	</item>
		<item>
		<title>Enterprise Modularity by OSGi</title>
		<link>http://srireddy.wordpress.com/2010/04/06/enterprise-modularity-by-osgi/</link>
		<comments>http://srireddy.wordpress.com/2010/04/06/enterprise-modularity-by-osgi/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 18:54:35 +0000</pubDate>
		<dc:creator>srireddy</dc:creator>
				<category><![CDATA[SDLC]]></category>

		<guid isPermaLink="false">http://srireddy.wordpress.com/?p=138</guid>
		<description><![CDATA[The disruptive transition in the Enterprise Java world from the old, monolithic thinking to the new way of thinking modular is not a smooth one though, and takes time. I am writing this blog to highlight the developments in Enterprise Java and especially OSGi juggernaut that is on its way. For Enterprise developers, the major [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=138&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The disruptive transition in the Enterprise Java world from the old, monolithic thinking to the new way of thinking modular is not a smooth one though, and takes time. I am writing this blog to highlight the developments in Enterprise Java and especially OSGi juggernaut that is on its way.</p>
<p>For Enterprise developers, the major news is that the first Enterprise OSGi specification is reaching finalization. Although the OSGi Enterprise Expert Group (EEG) website doesn&#8217;t give much details about the specs, you can find draft v4 on the Apache Aries, more on that project later. This draft specification also contains interesting annotations from reviewers by the way, recommended to do a quick scan of this document.</p>
<p>The new specification defines how several JEE specs should work in a dynamic OSGi environment. The JEE specs that are chosen are for example the JPA spec (Java Persistence API), JMX (Java Management Extensions), JDBC (Java Database Connectivity), the JTA (Java Transaction API) and JNDI (Java Naming and Directory Interface). Although the OSGi Enterprise specification doesn&#8217;t cover all of the JEE APIs, it does cover the most important ones, more than enough for most Enterprise applications.</p>
<p>On top of the OSGi-ified JEE APIs, there are some new concepts introduced in the Enterprise OSGi specs. The most important one is the standardization of .wab files, which are OSGi versions of .war files. You need to add some descriptors, and then you can deploy those .wab files like regular OSGi bundles, including life cycle and dependency management. Regular .war files are also supported, they need to be transformed transparently and on the fly by the OSGi container to .wab files. Last year there were several vendors already experimenting with server side bundles, and using different APIs and even different file extensions (like .par and regular .jar), it&#8217;s great to see a standard here.</p>
<p>Another new feature is remote OSGi, which enables you to use exported services from an OSGi bundle in a remote Virtual Machine. This gives new possibilities for distributed solutions, for example to solve scalability or redundancy issues. As a bundle developer you already need to develop with the possibility in mind of not available services, in effect a poor mans &#8216;design by failure&#8217; approach, which works great in a distributed environment.</p>
<p>To facilitate, experiment and learn from the new specs and its uses, two projects are started: Apache Aries and Eclipse Gemini. Both projects have approximately the same goal: provide implementations of the Enterprise OSGi specifications, create examples and create a community. Apache Aries is in incubation and sponsored by IBM and SAP, Eclipse Gemini is sponsored by Oracle and SpringSource.</p>
<p>To top it all of, SpringSource is in the process of donating its open source OSGi container to Eclipse, and renamed it from SpringSource DM to Eclipse Virgo. This container serves as the reference implementation for the Enterprise OSGi specification. This also means that the license is moved from the restrictive GPL to a more open EPL license.</p>
<p>Almost all Enterprise container vendors like JBoss, Glassfish, Oracle and IBM were already building the application server on top of OSGi, but didn&#8217;t expose OSGi to the enterprise application developer, or did expose it, but with proprietary APIs, therefore locking in the developer and hindering further adoption in the larger Java EE space. With the new Enterprise OSGi specification, developers can use the power of OSGi, without being locked in, which is great.</p>
<p>So all new specifications to get rid of vendor lock in, various implementations of these standards, open and closed source, community to work with, is this all good news then? No, sadly it&#8217;s not.</p>
<p>Adoption from &#8216;old&#8217; Java EE users is slow. In part because of the technical challenge: Java has been monolithic of nature from the very beginning, and adding modularization to a very stable, mature platform is hard. It will take time and determination to solve all the problems while in the mean time keeping an upgrade path for JEE users.</p>
<p>Another problem is that the Java industry has been taught for 15 years to think in monolithic architectures. Thinking in components and services architectures is a revolutionary, disruptive trend, which will take time and effort for those affected to learn and understand.</p>
<p>And the last issue is of more political nature: There is still tension between the JCP and the OSGi consortium. Both are defining standards, and are not necessarily in agreement of each others approach. With the takeover of Sun by Oracle, this might change. There is a real risk that new JEE specifications are defined without taking OSGi into account, and that would create the possibility of forking the Enterprise standards.</p>
<p>But even with the above remarks it&#8217;s clear that modularization is on the brink of a breakthrough in Java Enterprise Development. Especially for architects, this means thinking in complete new ways about their work and responsibilities. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/srireddy.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/srireddy.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/srireddy.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/srireddy.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/srireddy.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/srireddy.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/srireddy.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/srireddy.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/srireddy.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/srireddy.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/srireddy.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/srireddy.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/srireddy.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/srireddy.wordpress.com/138/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=138&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://srireddy.wordpress.com/2010/04/06/enterprise-modularity-by-osgi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">srireddy</media:title>
		</media:content>
	</item>
		<item>
		<title>Enterprise Architecture via SOA approach</title>
		<link>http://srireddy.wordpress.com/2010/02/10/enterprise-architecture-via-bpm-and-soa/</link>
		<comments>http://srireddy.wordpress.com/2010/02/10/enterprise-architecture-via-bpm-and-soa/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 16:09:09 +0000</pubDate>
		<dc:creator>srireddy</dc:creator>
				<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://srireddy.wordpress.com/?p=132</guid>
		<description><![CDATA[How SOA can address complex integration problems.//<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=132&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Several companies have invested vast amounts of resources and effort into information systems. In the course of time, these systems have integrated with idiosyncratic point-to-point solutions to address larger business transactions. While this has appeared as simple and pragmatic on the outset, over time the increasing complexity and disconnected dependencies have resulted in &#8220;integration spaghetti&#8221; that is prohibitively difficult and operationally expensive to manage and maintain. The problem is aggravated by the increasing need for business agility that cannot be achieved with cast-in-concrete proprietary solutions.</p>
<p>While this deeply ingrained &#8220;technology mess&#8221; is too overwhelming to be dismantled and replaced, the truth is out there that and can be disentangled. By mapping physical data to logical information objects and technical functions to business activities, a canonical information and operational model can be elicited. To this end,  a business has to define its own, consistent ontology, which may partly be adopted from the normative nomenclature of this respective industry vertical (Health care, Financial and Insurance, etc..). The data in the underlying information systems (both silo&#8217;ed and horizontal), can be mapped to these canonical concepts using appropriate integration technologies and exposed as data or process centric SOA services. By analyzing the functional requirements of business processes, a set of logic centric services can also be identified.</p>
<p>In Service Oriented Architecture (SOA), the intricacies of applications and technology infrastructure are encapsulated behind well defined, self-describing service interfaces that exposed the contained information and functionality as reusable, context independent services. The underlying implementation of a service can be changed as long as the service contract is maintained. SOA services provide modular building blocks that can be composed to higher level constructs, e.g., orchestrations or composite applications. The coarse-grained modularity reduces inherent complexity of the enterprise architecture and improves business agility. The service abstraction insulates business changes from IT development and thereby bring more synergies between the business and IT life-cycles.</p>
<p>I will be writing on how to enable an agile SOA with BPM and Event Driven architectures in the next segment. Good day.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/srireddy.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/srireddy.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/srireddy.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/srireddy.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/srireddy.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/srireddy.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/srireddy.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/srireddy.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/srireddy.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/srireddy.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/srireddy.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/srireddy.wordpress.com/132/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/srireddy.wordpress.com/132/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/srireddy.wordpress.com/132/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=132&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://srireddy.wordpress.com/2010/02/10/enterprise-architecture-via-bpm-and-soa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">srireddy</media:title>
		</media:content>
	</item>
		<item>
		<title>Why Spring Framework?</title>
		<link>http://srireddy.wordpress.com/2010/01/20/why-spring-framework/</link>
		<comments>http://srireddy.wordpress.com/2010/01/20/why-spring-framework/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 02:16:32 +0000</pubDate>
		<dc:creator>srireddy</dc:creator>
				<category><![CDATA[SDLC]]></category>

		<guid isPermaLink="false">http://srireddy.wordpress.com/?p=126</guid>
		<description><![CDATA[Spring Framework provides remarkable improvements in developer productivity, runtime performance, and overall application quality. Its unique blend of a complete, lightweight container that allows you to build a complex application from loosely-coupled POJOs and a set of easily understood abstractions that simplify construction, testing, and deployment make Spring both powerful and easy-to-use—a hard-to-beat combination. With [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=126&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Spring Framework provides remarkable improvements in developer productivity, runtime performance, and overall application quality. Its unique blend of a complete, lightweight container that allows you to build a complex application from loosely-coupled POJOs and a set of easily understood abstractions that simplify construction, testing, and deployment make Spring both powerful and easy-to-use—a hard-to-beat combination. With this power comes the potential for a wide range of uses in both common and not-so-common scenarios.</p>
<blockquote><p><strong>Spring enables you to enjoy the key benefits of JEE, while minimizing the complexity encountered by application code.</strong><strong>The essence of Spring is in providing enterprise services to Plain Old Java Objects (POJOs). This is particularly valuable in a JEE environment, but application code delivered as POJOs is naturally reusable in a variety of runtime environments.</strong></p></blockquote>
<h4>Spring in Context</h4>
<p>Spring is a manifestation of a wider movement. Spring is the most successful product in what can broadly be termed <em>agile</em> JEE.</p>
<h4>Technologies</h4>
<p>While Spring has been responsible for real innovation, many of the ideas it has popularized were part of the <em>zeitgeist</em> and would have become important even had there been no Spring project. Spring&#8217;s greatest contribution — besides a solid, high quality, implementation — has been its combination of emerging ideas into a coherent whole, along with an overall architectural vision to facilitate effective use.</p>
<h4>Inversion of Control and Dependency Injection</h4>
<p>The technology that Spring is most identified with is <em>Inversion of Control</em> (or IoC), and specifically the<em>Dependency Injection</em> flavor of IoC. Spring is often thought of as an Inversion of Control container, although in reality it is much more.</p>
<p>Inversion of Control is best understood through the term the &#8220;Hollywood Principle,&#8221; which basically means &#8220;Don&#8217;t call me, I&#8217;ll call you.&#8221; Consider a traditional class library: Application code is responsible for the overall flow of control, calling out to the class library as necessary. With the Hollywood Principle, framework code invokes application code, coordinating overall workflow, rather than application code invoking framework code.</p>
<p>IoC is a broad concept, and can encompass many things, including the EJB and Servlet model, and the way in which Spring uses callback interfaces to allow clean acquisition and release of resources such as JDBC Connections.</p>
<p>Spring&#8217;s flavor of IoC for configuration management is rather more specific. Consequently, Martin Fowler, Rod Johnson, Aslak Hellesoy, and Paul Hammant coined the name <em>Dependency Injection</em> in late 2003 to describe the approach to IoC promoted by Spring, PicoContainer, and HiveMind-the three most popular lightweight frameworks.</p>
<blockquote><p><strong>Dependency Injection is based on Java language constructs, rather than the use of framework-specific interfaces. Instead of application code using framework APIs to resolve dependencies such as configuration parameters and collaborating objects, application classes expose their dependencies through methods or constructors that the framework can call with the appropriate values at runtime, based on configuration.</strong></p></blockquote>
<p>Dependency Injection is a form of <em>push</em> configuration; the container &#8220;pushes&#8221; dependencies into application objects at runtime. This is the opposite of traditional <em>pull</em> configuration, in which the application object &#8220;pulls&#8221; dependencies from its environment. Thus, Dependency Injection objects never load custom properties or go to a database to load configuration — the framework is wholly responsible for actually reading configuration.</p>
<p>Push configuration has a number of compelling advantages over traditional pull configuration. For example, it means that:</p>
<ul>
<li><strong>Application classes are self-documenting, and dependencies are explicit.</strong> It&#8217;s merely necessary to look at the constructors and other methods on a class to see its configuration requirements. There&#8217;s no danger that the class will expect its own undocumented properties or other formats.</li>
<li>For the same reason, <strong>documentation of dependencies is always up-to-date.</strong></li>
<li><strong>There&#8217;s little or no lock-in to a particular framework, or proprietary code, for configuration management.</strong> It&#8217;s all done through the Java language itself.</li>
<li>As the framework is wholly responsible for reading configuration, <strong>it&#8217;s possible to switch where configuration comes from without breaking application code.</strong> For example, the same application classes could be configured from XML files, properties files, or a database without needing to be changed.</li>
<li>As the framework is wholly responsible for reading configuration, there is usually <strong>greater consistency in configuration management.</strong> Gone are the days when each developer will approach configuration management differently.</li>
<li><strong>Code in application classes focuses on the relevant business responsibilities.</strong> There&#8217;s no need to waste time writing configuration management code, and configuration management code won&#8217;t obscure business logic. A key piece of application plumbing is kept out of the developer&#8217;s way.</li>
</ul>
<p>Developers who try Dependency Injection rapidly become hooked. These advantages are even more apparent in practice than they sound in theory.</p>
<p>Spring supports several types of Dependency Injection, making its support more comprehensive than that of any other product:</p>
<ul>
<li><strong>Setter Injection:</strong> The injection of dependencies via JavaBean setter methods. Often, but not necessarily, each setter has a corresponding getter method, in which case the <em>property</em> is set to be <em>writable</em> as well as <em>readable</em>.</li>
<li><strong>Constructor Injection:</strong> The injection of dependencies via constructor arguments.</li>
<li><strong>Method Injection:</strong> A more rarely used form of Dependency Injection in which the container is responsible for implementing methods at runtime. For example, an object might define a protected abstract method, and the container might implement it at runtime to return an object resulting from a container lookup. The aim of Method Injection is, again, to avoid dependencies on the container API.</li>
</ul>
<p>Uniquely, Spring allows all three to be mixed when configuring one class, if appropriate.</p>
<p>Enough theory — take look at a simple example of an object being configured using Dependency Injection.</p>
<p>Assume that there is an interface — in this case, <code>Service</code> — which callers will code against. In this case, the implementation will be called <code>ServiceImpl</code>. However, of course the name is hidden from callers, who don&#8217;t know anything about how the <code>Service</code> implementation is constructed.</p>
<p>Assume that this implementation of <code>Service</code> has two dependencies: an int configuration property, setting a timeout; and a DAO that it uses to obtain persistent objects.</p>
<p>With Setter Injection you can configure <code>ServiceImpl</code> using JavaBean properties to satisfy these two dependencies, as follows:</p>
<blockquote>
<pre>public class ServiceImpl implements Service {
 private int timeout;
 private AccountDao accountDao;

   public void setTimeout(int timeout) {
     this.timeout = timeout;
   }

   public void setAccountDao(AccountDao accountDao) {
     this.accountDao = accountDao;
   }</pre>
</blockquote>
<p>With Constructor Injection, you supply both properties in the Constructor, as follows:</p>
<blockquote>
<pre>public class ServiceImpl implements Service {
 private int timeout;
 private AccountDao accountDao;

   public ServiceImpl (int timeout, AccountDao accountDao) {
       this.timeout = timeout;
       this.accountDao = accountDao;
   }</pre>
</blockquote>
<p>Either way, the dependencies are satisfied by the framework before any business methods on<code>ServiceImpl</code> are invoked. (For brevity, there are business methods shown in the code fragments. Business methods will use the instance variables populated through Dependency Injection.)</p>
<p>This may seem trivial. You may be wondering how such a simple concept can be so important. While it is conceptually simple, it can scale to handle complex configuration requirements, populating whole object graphs as required. It&#8217;s possible to build object graphs of arbitrary complexity using Dependency Injection. Spring also supports configuration of maps, lists, arrays, and properties, including arbitrary nesting.</p>
<p>As an IoC container takes responsibility for object instantiation, it can also support important creational patterns such as singletons, prototypes, and object pools. For example, a sophisticated IoC container such as Spring can allow a choice between &#8220;singleton&#8221; or shared objects (one per IoC container instance) and non-singleton or &#8220;prototype&#8221; instances (of which there can be any number of independent instances).</p>
<p>Because the container is responsible for satisfying dependencies, it can also introduce a layer of indirection as required to allow custom interception or hot swapping. (In the case of Spring, it can go a step farther and provide a true AOP capability. Thus, for example, the container can satisfy a dependency with an object that is instrumented by the container, or which hides a &#8220;target object&#8221; that can be changed at runtime without affecting references. Unlike some IoC containers and complex configuration management APIs such as JMX, Spring does not introduce such indirection unless it&#8217;s necessary. In accordance with its philosophy of allowing the simplest thing that can possibly work, unless you want such features, Spring will give you normal instances of your POJOs, wired together through normal property references. However, it provides powerful indirection capabilities if you want to take that next step.</p>
<p>Spring also provides many hooks that allow power users to customize how the container works. As with the optional lifecycle callbacks, you won&#8217;t often need to use this capability, but it&#8217;s essential in some advanced cases, and is the product of experience using IoC in many demanding scenarios.</p>
<blockquote><p><strong>The key innovation in Dependency Injection is that it works with pure Java syntax: no dependence on container APIs is required.</strong></p>
<p><strong>Dependency Injection is an amazingly simple concept, yet, with a good container, it&#8217;s amazingly powerful. It can be used to manage arbitrarily fine-grained objects; it places few constraints on object design; and it can be combined with container services to provide a wide range of value adds.</strong></p>
<p><strong>You don&#8217;t need to do anything in particular to make an application class eligible for Dependency Injection — that&#8217;s part of its elegance. In order to make classes &#8220;good citizens,&#8221; you should avoid doing things that cut against the spirit of Dependency Injection, such as parsing custom properties files. But there are no hard and fast rules. Thus there is a huge potential to use legacy code in a container that supports Dependency Injection, and that&#8217;s a big win.</strong></p></blockquote>
<h4>Aspect-Oriented Programming</h4>
<p>Dependency Injection goes a long way towards delivering the ideal of a fully featured application framework enabling a POJO programming model. However, configuration management isn&#8217;t the only issue; you also need to provide declarative <code>services</code> to objects. It&#8217;s a great start to be able to configure POJOs-even with a rich network of collaborators-without constraining their design; it&#8217;s equally important to be able to apply services such as transaction management to POJOs without them needing to implement special APIs.</p>
<p>The ideal solution is Aspect-Oriented Programming (AOP). (AOP is also a solution for much more; besides, this article refers to a particular use of AOP, rather than the end all and be all of AOP.)</p>
<p>AOP provides a different way of thinking about code structure, compared to OOP or procedural programming. Whereas in OOP you model real-world objects or concepts, such as bank accounts, as objects, and organize those objects in hierarchies, AOP enables you to think about <em>concerns</em> or <em>aspects</em>in your system. Typical concerns are transaction management, logging, or failure monitoring. For example, transaction management applies to operations on bank accounts, but also to many other things besides. Transaction management applies to sets of methods without much relationship to the object hierarchy. This can be hard to capture in traditional OOP. Typically you end up with a choice of tradeoffs:</p>
<ul>
<li><strong>Writing boilerplate code to apply the services to every method that requires them</strong>: Like all cut-and-paste approaches, this is unmaintainable; if you need to modify how a service is delivered, you need to change multiple blocks of code, and OOP alone can&#8217;t help you modularize that code. Furthermore, each additional concern will result in its own boilerplate code, threatening to obscure the business purpose of each method. You can use the <strong>Decorator</strong>design pattern to keep the new code distinct, but there will still be a lot of code duplication. In a minority of cases the <strong>Observer</strong> design pattern is sufficient, but it doesn&#8217;t offer strong typing, and you must build in support for the pattern by making your objects observable.</li>
<li><strong>Detype operations, through something like the Command pattern:</strong> This enables a custom interceptor chain to apply behavior such as declarative transaction management, but at the loss of strong typing and readability.</li>
<li><strong>Choosing a heavyweight dedicated framework such as EJB that can deliver the necessary services:</strong> This works for some concerns such as transaction management, but fails if you need a custom service, or don&#8217;t like the way in which the EJB specification approaches the particular concern. For example, you can&#8217;t use EJB services if you have a web application that should ideally run in a web container, or in case of a standalone application with a Swing GUI. Such frameworks also place constraints on your code-you are no longer in the realm of POJOs.</li>
</ul>
<p>In short, with a traditional OO approach the choices are code duplication, loss of strong typing, or an intrusive special-purpose framework.</p>
<p>AOP enables you to capture the cross-cutting code in modules such as interceptors that can be applied declaratively wherever the concern they express applies — <em>without imposing tradeoffs on the objects benefiting from the services</em>.</p>
<p>Spring AOP allows the proxying of interfaces or classes. It provides an extensible <em>pointcut</em> model, enabling identification of which sets of method to advise. It also supports <em>introduction</em>: advice that makes a class implement additional interfaces. Introduction can be very useful in certain circumstances (especially infrastructural code within the framework itself).</p>
<p>Here, the interest lies in the value proposition that Spring AOP provides and why it&#8217;s key to the overall Spring vision.</p>
<p>Spring AOP is used in the framework itself for a variety of purposes, many of which are behind the scenes and which many users may not realize are the result of AOP:</p>
<ul>
<li><strong>Declarative transaction management</strong>: This is the most important out-of-the-box service supplied with Spring.<br />
* It can be applied to any POJO.<br />
* It isn&#8217;t tied to JTA, but can work with a variety of underlying transaction APIs (including JTA). Thus it can work in a web container or standalone application using a single database, and doesn&#8217;t require a full J2EE application server.<br />
* It supports additional semantics that minimize the need to depend on a proprietary transaction API to force rollback.</li>
<li><strong>Hot swapping:</strong> An AOP proxy can be used to provide a layer of indirection. (Remember the discussion of how indirection can provide a key benefit in implementing Dependency Injection?) For example, if an <code>OrderProcessor</code> depends on an <code>InventoryManager</code>, and the<code>InventoryManager</code> is set as a property of the <code>OrderProcessor</code>, it&#8217;s possible to introduce a proxy to ensure that the <code>InventoryManager</code> instance can be changed without invalidating the<code>OrderProcessor</code> reference. This mechanism is threadsafe, providing powerful &#8220;hot swap&#8221; capabilities. Full-blown AOP isn&#8217;t the only way to do this, but if a proxy is to be introduced at all, enabling the full power of Spring AOP makes sense.</li>
<li><strong>&#8220;Dynamic object&#8221; support</strong>: As with hot swapping, the use of an AOP proxy can enable &#8220;dynamic&#8221; objects such as objects sourced from scripts in a language such as Groovy or Beanshell to support reload (changing the underlying instance) and (using introduction) implement additional interfaces allowing state to be queried and manipulated (last refresh, forcible refresh, and so on).</li>
<li><strong>Security</strong>: Acegi Security for Spring is an associated framework that uses Spring AOP to deliver a sophisticated declarative security model.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/srireddy.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/srireddy.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/srireddy.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/srireddy.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/srireddy.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/srireddy.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/srireddy.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/srireddy.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/srireddy.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/srireddy.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/srireddy.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/srireddy.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/srireddy.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/srireddy.wordpress.com/126/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=126&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://srireddy.wordpress.com/2010/01/20/why-spring-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">srireddy</media:title>
		</media:content>
	</item>
		<item>
		<title>SAAS and Enterprise Architecture</title>
		<link>http://srireddy.wordpress.com/2009/12/31/saas-and-enterprise-architecture/</link>
		<comments>http://srireddy.wordpress.com/2009/12/31/saas-and-enterprise-architecture/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 18:16:00 +0000</pubDate>
		<dc:creator>srireddy</dc:creator>
				<category><![CDATA[SDLC]]></category>

		<guid isPermaLink="false">http://srireddy.wordpress.com/?p=114</guid>
		<description><![CDATA[Business Architecture – Business drivers, shareholders views, business process maps, value chains, etc.  Gaps in the existing enterprise solutions need to be mapped to the SaaS solution and analyzed for completeness. Information Architecture – how does the SaaS impact data flow? Reporting and Analysis?   Data as an asset? Integration Architecture – how will this new [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=114&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<ul>
<li><strong>Business Architecture</strong> – Business drivers, shareholders views, business process maps, value chains, etc.  Gaps in the existing enterprise solutions need to be mapped to the SaaS solution and analyzed for completeness.</li>
<li><strong>Information Architecture</strong> – how does the SaaS impact data flow? Reporting and Analysis?   Data as an asset?</li>
<li><strong>Integration Architecture</strong> – how will this new “cloud based” system interoperate with on-site systems?  Partners? Customers?  What is the impact on your integration principles and strategy / road map?</li>
<li><strong>Operational Management</strong> – everything from security and risk to quality of service, communications architecture and SLAs.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/srireddy.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/srireddy.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/srireddy.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/srireddy.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/srireddy.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/srireddy.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/srireddy.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/srireddy.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/srireddy.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/srireddy.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/srireddy.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/srireddy.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/srireddy.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/srireddy.wordpress.com/114/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=114&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://srireddy.wordpress.com/2009/12/31/saas-and-enterprise-architecture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">srireddy</media:title>
		</media:content>
	</item>
		<item>
		<title>AppDev &#8211; 2009 a year in perspective</title>
		<link>http://srireddy.wordpress.com/2009/12/29/appdev-2009-a-year-in-perspective/</link>
		<comments>http://srireddy.wordpress.com/2009/12/29/appdev-2009-a-year-in-perspective/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 15:54:04 +0000</pubDate>
		<dc:creator>srireddy</dc:creator>
				<category><![CDATA[SDLC]]></category>

		<guid isPermaLink="false">http://srireddy.wordpress.com/?p=110</guid>
		<description><![CDATA[Alternate models for acquiring and delivering systems — such as the Web for global deployment — have begun to emerge, forcing organizations to rethink how they fulfill their needs for those systems. BPM-enabling technologies are making business processes explicit, addressing the increased business requirement for operational transparency. Open source has illuminated the value of having large groups of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=110&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">
<ul>
<li>Alternate models for acquiring and delivering systems — such as the Web for global deployment — have begun to emerge, forcing organizations to rethink how they fulfill their needs for those systems.</li>
<li>BPM-enabling technologies are making business processes explicit, addressing the increased business requirement for operational transparency.</li>
<li>Open source has illuminated the value of having large groups of people working independently to solve software problems in a community fashion and won greater acceptance in corporate world.</li>
<li>Web 2.0, SOA and cloud computing have broken up our systems into autonomous pieces, which can be stitched together to form solutions that break the constraints of what we formerly thought of as &#8220;applications (using concepts such as orchestration of services using BPEL and Service Component Architecture and rule based workflow decision making).&#8221;</li>
</ul>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/srireddy.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/srireddy.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/srireddy.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/srireddy.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/srireddy.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/srireddy.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/srireddy.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/srireddy.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/srireddy.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/srireddy.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/srireddy.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/srireddy.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/srireddy.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/srireddy.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=110&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://srireddy.wordpress.com/2009/12/29/appdev-2009-a-year-in-perspective/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">srireddy</media:title>
		</media:content>
	</item>
		<item>
		<title>Pragmatic SOA</title>
		<link>http://srireddy.wordpress.com/2009/12/17/pragmatic-soa/</link>
		<comments>http://srireddy.wordpress.com/2009/12/17/pragmatic-soa/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 15:47:21 +0000</pubDate>
		<dc:creator>srireddy</dc:creator>
				<category><![CDATA[SDLC]]></category>

		<guid isPermaLink="false">http://srireddy.wordpress.com/?p=108</guid>
		<description><![CDATA[I would like to share some insight into practical ways of implementing Service Orientation Architecture and my intent is to clear some hazy definitions out there and bring some clarity from Enterprise Architecture perspective. About Services Services should be designed by simplifying the components of your enterprise and making them easy for business to own [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=108&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I would like to share some insight into practical ways of implementing Service Orientation Architecture and my intent is to clear some hazy definitions out there and bring some clarity from Enterprise Architecture perspective.</p>
<p><strong>About Services</strong></p>
<p>Services should be designed by simplifying the components of your enterprise and making them easy for business to own them and reference them in their day-to-day business processes. Simplicity should be the key aspect and should not be confused with buzz words (vendor originated) and truly aligned with business key words. Simplification could take some effort but achievable with clear decomposition mind set.</p>
<p><strong>Data</strong></p>
<p>Service design should always consider the importance of Data and its context of usage. I have seen too many times where canonical models were established only to be withdrawn due to poorly federated design practices. One size doesn&#8217;t fit all is the key.  The data aspect ideally should be standardized amongst the business groups or domains. For e.g., P.O (purchase order) can potentially have 3 canonical forms in an enterprise along the lines of its decentralized units.</p>
<p>The key thing is to have a centralized or federal model for some services and demonstrate loose coupling by having shared services for others.</p>
<p>WS-* or REST</p>
<p>This is one topic that hits me the most&#8230; Both WS-* and REST are applicable models for distributed computing models that promote agnostic call-ins. The answer is &#8220;It Depends&#8221; approach based on what you are trying to solve.  REST provides an uniform interface approach and in my opinion, there are advantages to develop features in a quicker manner to things such as Micro-formatting, late binding and dynamic content negotiation approaches, etc. Either WS-* or REST, a fundamental design-first approach is essential for any successful SOA initiative.</p>
<p>Contract design</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/srireddy.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/srireddy.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/srireddy.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/srireddy.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/srireddy.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/srireddy.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/srireddy.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/srireddy.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/srireddy.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/srireddy.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/srireddy.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/srireddy.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/srireddy.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/srireddy.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=108&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://srireddy.wordpress.com/2009/12/17/pragmatic-soa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">srireddy</media:title>
		</media:content>
	</item>
		<item>
		<title>Context and Dependency Injection JEE 6.0</title>
		<link>http://srireddy.wordpress.com/2009/12/17/context-and-dependency-injection-jee-6-0/</link>
		<comments>http://srireddy.wordpress.com/2009/12/17/context-and-dependency-injection-jee-6-0/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 00:45:06 +0000</pubDate>
		<dc:creator>srireddy</dc:creator>
				<category><![CDATA[SDLC]]></category>

		<guid isPermaLink="false">http://srireddy.wordpress.com/?p=106</guid>
		<description><![CDATA[The Contexts and Dependency Injection for the Java EE Platform (CDI), JSR 299 specification, supplies a set of services to Java EE components. These services allow Java EE components, including EJBs and JSF components to be injected and to interact by firing and observing events (Event driven design models). CDI also unifies and simplifies the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=106&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The Contexts and Dependency Injection for the Java EE Platform (CDI), JSR 299 specification, supplies a set of services to Java EE components. These services allow Java EE components, including EJBs and JSF components to be injected and to interact by firing and observing events (Event driven design models). CDI also unifies and simplifies the EJB and JSF programming models to allow enterprise beans to replace JSF managed beans in a JSF application (similar to what SEAM embraces).</p>
<p>The new Bean Validation specification (<a href="http://jcp.org/en/jsr/detail?id=303">JSR 303</a>) makes validation simpler and reduces the duplication and errors. It provides a standard framework for validation, in which the same set of validation rules can be shared by all the layers of an application (web, controller, service, and domain layers).</p>
<p>I believe this feature will give completeness to the JSF spec and makes EJB 3.1.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/srireddy.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/srireddy.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/srireddy.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/srireddy.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/srireddy.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/srireddy.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/srireddy.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/srireddy.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/srireddy.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/srireddy.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/srireddy.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/srireddy.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/srireddy.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/srireddy.wordpress.com/106/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=106&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://srireddy.wordpress.com/2009/12/17/context-and-dependency-injection-jee-6-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">srireddy</media:title>
		</media:content>
	</item>
		<item>
		<title>EJB 3.1</title>
		<link>http://srireddy.wordpress.com/2009/12/17/ejb-3-1/</link>
		<comments>http://srireddy.wordpress.com/2009/12/17/ejb-3-1/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 00:41:30 +0000</pubDate>
		<dc:creator>srireddy</dc:creator>
				<category><![CDATA[SDLC]]></category>

		<guid isPermaLink="false">http://srireddy.wordpress.com/?p=104</guid>
		<description><![CDATA[EJB 3.1<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=104&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>On the server side, Java EE 6 release includes EJB version 3.1 (<a href="http://jcp.org/en/jsr/detail?id=318">JSR 318</a>) and Java API for RESTful Web Services (JAX-RS) specification (<a href="http://jcp.org/en/jsr/detail?id=311">JSR 311</a>). Some major improvements made in EJB 3.1 that will make EJBs more loosely coupled are:</p>
<ul>
<li><strong>No-interface view:</strong> This simplifies the creation of an enterprise bean using only a bean class without having to write a separate business interface.</li>
<li><strong>Singletons:</strong> The new Singleton design, using the @Singleton annotation, lets you easily share state between multiple instances of an enterprise bean component or between multiple enterprise bean components in an application.</li>
<li><strong>Asynchronous session bean invocation:</strong> Using the <a href="http://java.sun.com/javaee/6/docs/api/javax/ejb/Asynchronous.html">@Asynchronous</a>annotation, the session bean methods can now be invoked asynchronously.</li>
<li><strong>Simplified Packaging:</strong> The new packaging mechanism removes the restriction that enterprise bean classes must be packaged in an ejb-jar file. The EJB classes can now be directly placed in a WAR file.</li>
<li><strong>EJB Lite:</strong> This model is a subset of EJB 3.1 for inclusion in the Java EE profiles.</li>
</ul>
<p>JAX-RS specification enables the development of lightweight web services that conform to the <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST</a> style of software architecture. It provides the API for building RESTful web services in Java with a set of annotations and associated classes and interfaces. Overall impressive considering the evolution from earlier versions of EJB 3.o and 2.x.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/srireddy.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/srireddy.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/srireddy.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/srireddy.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/srireddy.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/srireddy.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/srireddy.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/srireddy.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/srireddy.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/srireddy.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/srireddy.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/srireddy.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/srireddy.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/srireddy.wordpress.com/104/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=srireddy.wordpress.com&amp;blog=1436760&amp;post=104&amp;subd=srireddy&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://srireddy.wordpress.com/2009/12/17/ejb-3-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">srireddy</media:title>
		</media:content>
	</item>
	</channel>
</rss>
