<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8063665</id><updated>2012-01-02T13:39:48.701+01:00</updated><category term='WebService'/><category term='ria'/><category term='Web2.0'/><category term='SaaS'/><category term='BPM'/><category term='cloud'/><category term='Application Platform'/><category term='architecture'/><category term='PaaS'/><category term='SOA'/><category term='soa governance'/><category term='Amazon'/><title type='text'>Andrew Doble's Blog</title><subtitle type='html'>About the architecture that sits somewhere between the business processes and the code.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/10629648847240962295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://2.bp.blogspot.com/_peAUD8AxyoE/STPw5HY4iGI/AAAAAAAAAAM/J0bo7XyveDc/S220/doble+2.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8063665.post-5832355365834962086</id><published>2012-01-02T13:39:00.000+01:00</published><updated>2012-01-02T13:39:48.714+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><title type='text'>Developing for the Cloud</title><content type='html'>I’ve recently come across two apparently unrelated articles that together imply a lot about how development for the cloud should be done.&lt;br /&gt;&lt;br /&gt;The first refers to &lt;a href="http://akamai.infoworld.com/t/service-oriented-architecture/ex-amazonian-urges-google-sample-amazons-secret-sauce-175906?page=0,1&amp;amp;source=rss_enterprise_architecture"&gt;post &lt;/a&gt;by Steve Yegge. In this he explains how Amazon embraced service orientation and what that meant for the developers and the company.&lt;br /&gt;&lt;br /&gt;The second &lt;a href="http://blog.gardeviance.org/2011/12/future-costs-and-cloud.html"&gt;article &lt;/a&gt;is from Simon Wardley in which he laments that current “enterprise” cloud developments have a product rather than a utility mindset, i.e.:&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;Unfortunately, many applications are designed with the best practice for a product world i.e. scaling is about bigger machines, resilience is about N+1 and in general the focus is on reliable hardware. Best practice for a utility world involves resilience, scaling and failure modes built around software i.e. design for failure, distributed systems and chaos engines such as Netflix's chaos monkey approach. There is an inevitable cost of architectural transition from one set of best practices to another.&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;Both of these provide lessons in how to develop for the cloud:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Use SOA with clear contracts and a mechanism for handling contract violations.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Loose coupling between sub-systems is essential for business survivability in an unreliable distributed computing environment a.k.a. the cloud.&lt;/li&gt;&lt;li&gt;Develop platforms, and with it the ability to continually extend what’s offered. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-5832355365834962086?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/5832355365834962086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=5832355365834962086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/5832355365834962086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/5832355365834962086'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2012/01/developing-for-cloud.html' title='Developing for the Cloud'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/10629648847240962295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://2.bp.blogspot.com/_peAUD8AxyoE/STPw5HY4iGI/AAAAAAAAAAM/J0bo7XyveDc/S220/doble+2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-2518913082074184516</id><published>2011-11-22T17:53:00.001+01:00</published><updated>2011-12-07T22:00:18.701+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='PaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>What's PaaS?</title><content type='html'>&lt;div class="separator" style="clear: both; font-family: inherit; text-align: left;"&gt;&lt;span id="internal-source-marker_0.6517136222521425" style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;One of the models used to explain the cloud computing service offerings - derived from the &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="background-color: transparent; color: #000099; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;"&gt;&lt;a href="http://collaborate.nist.gov/twiki-cloud-computing/pub/CloudComputing/ReferenceArchitectureTaxonomy/NIST_CC_Reference_Architecture_v1_March_30_2011.pdf"&gt;NIST&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;model -&amp;nbsp; shows the service models arranged as a stack. Implicit in this model is a usage hierarchy (explicitly shown in the diagram below) , that is BPaaS will use SaaS, SaaS uses PaaS to provide an abstraction from underlying computing resources and IaaS provides the basic resources. This seems to make a lot of sense to software architects who recognise a familiar &lt;/span&gt;&lt;a href="http://www.infoq.com/news/2009/02/Architectural-Styles-Patterns"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="background-color: transparent; color: #000099; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;"&gt;pattern&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;.&amp;nbsp;&amp;nbsp;&lt;/span&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-CPnJRcjEQQA/TtS9W25AbeI/AAAAAAAAAGI/oJ6omA9Ha6c/s1600/OldPaaSModel.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="178" src="http://4.bp.blogspot.com/-CPnJRcjEQQA/TtS9W25AbeI/AAAAAAAAAGI/oJ6omA9Ha6c/s200/OldPaaSModel.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; However, one of the problems I face when talking about PaaS is that many have different preconceptions as to what it is, usually derived from what is currently being provided by various cloud vendors. These range from: &lt;/span&gt;&lt;br /&gt;&lt;div dir="ltr" style="font-family: inherit;"&gt;&lt;table style="border-collapse: collapse; border: medium none;"&gt;&lt;colgroup&gt;&lt;col width="342"&gt;&lt;/col&gt;&lt;col width="282"&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style="height: 0px;"&gt;&lt;td style="background-color: #0c343d; border: 1px dotted rgb(170, 170, 170); font-family: inherit; padding: 7px; vertical-align: top;"&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: center;"&gt;&lt;span style="background-color: transparent; color: white; font-size: small; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"&gt;Provided PaaS Services&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="background-color: #0c343d; border: 1px dotted rgb(170, 170, 170); font-family: inherit; padding: 7px; vertical-align: top;"&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: center;"&gt;&lt;span style="background-color: transparent; color: white; font-size: small; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"&gt;Example Provider&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 32px;"&gt;&lt;td style="border: 1px dotted rgb(170, 170, 170); font-family: inherit; padding: 7px; vertical-align: top;"&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;A set of services for resource allocation in a IaaS service model.&lt;/span&gt;&lt;/td&gt;&lt;td style="border: 1px dotted rgb(170, 170, 170); font-family: inherit; padding: 7px; vertical-align: top;"&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Amazon &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://aws.amazon.com/ec2/"&gt;&lt;span style="background-color: transparent; color: #000099; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;"&gt;EC2&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.rackspace.com/cloud/"&gt;&lt;span style="background-color: transparent; color: #000099; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;"&gt;Rackspace&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 0px;"&gt;&lt;td style="border: 1px dotted rgb(170, 170, 170); font-family: inherit; padding: 7px; vertical-align: top;"&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Basic middleware and data storage services.&lt;/span&gt;&lt;/td&gt;&lt;td style="border: 1px dotted rgb(170, 170, 170); font-family: inherit; padding: 7px; vertical-align: top;"&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Amazon Web Services (&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://aws.amazon.com/products/"&gt;&lt;span style="background-color: transparent; color: #000099; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;"&gt;AWS&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 0px;"&gt;&lt;td style="border: 1px dotted rgb(170, 170, 170); font-family: inherit; padding: 7px; vertical-align: top;"&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;A set of application services.&lt;/span&gt;&lt;/td&gt;&lt;td style="border: 1px dotted rgb(170, 170, 170); font-family: inherit; padding: 7px; vertical-align: top;"&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Goggle App Engine (&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;a href="https://appengine.google.com/start"&gt;&lt;span style="background-color: transparent; color: #000099; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;"&gt;GAE&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;) &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 0px;"&gt;&lt;td style="border: 1px dotted rgb(170, 170, 170); font-family: inherit; padding: 7px; vertical-align: top;"&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Model driven development platforms in the cloud.&lt;/span&gt;&lt;/td&gt;&lt;td style="border: 1px dotted rgb(170, 170, 170); font-family: inherit; padding: 7px; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://force.com/"&gt;&lt;span style="background-color: transparent; color: #000099; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;"&gt;force.com&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 0px;"&gt;&lt;td style="border: 1px dotted rgb(170, 170, 170); font-family: inherit; padding: 7px; vertical-align: top;"&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Application development framework for cloud computing.&lt;/span&gt;&lt;/td&gt;&lt;td style="border: 1px dotted rgb(170, 170, 170); font-family: inherit; padding: 7px; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.vmware.com/products/vfabric/"&gt;&lt;span style="background-color: transparent; color: #000099; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;"&gt;vFabric&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.heroku.com/"&gt;&lt;span style="background-color: transparent; color: #000099; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;"&gt;Heroku&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 0px;"&gt;&lt;td style="border: 1px dotted rgb(170, 170, 170); font-family: inherit; padding: 7px; vertical-align: top;"&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;A process development framework in the cloud.&lt;/span&gt;&lt;/td&gt;&lt;td style="border: 1px dotted rgb(170, 170, 170); font-family: inherit; padding: 7px; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.cordys.com/cordyscms_com/process_factory_on_demand_bpm.php"&gt;&lt;span style="background-color: transparent; color: #000099; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;"&gt;Cordys Process Factory&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;a href="https://www.blueworkslive.com/"&gt;&lt;span style="background-color: transparent; color: #000099; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;"&gt;IBM Blueworks Live&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 0px;"&gt;&lt;td style="border: 1px dotted rgb(170, 170, 170); font-family: inherit; padding: 7px; vertical-align: top;"&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Platforms that provide a set of business functionality that can be built upon.&lt;/span&gt;&lt;/td&gt;&lt;td style="border: 1px dotted rgb(170, 170, 170); font-family: inherit; padding: 7px; vertical-align: top;"&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;CRM functionality, platforms that provide document management and process automation etc..&amp;nbsp; PaaS at this level seems to be a underdeveloped model. &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Looking at this suggests that the simple model as proposed by the NIST is, in fact too simplistic. So what should the model look like? &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="background-color: transparent; color: black; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;One possibility I like, is to place the PaaS service model to the side of the others and show that they are used by two different roles, i.e.:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-3cxvLzyDLCU/TtS9cQsZCGI/AAAAAAAAAGQ/hZgquUvpSZU/s1600/NewPaaSModel.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="132" src="http://1.bp.blogspot.com/-3cxvLzyDLCU/TtS9cQsZCGI/AAAAAAAAAGQ/hZgquUvpSZU/s320/NewPaaSModel.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;PaaS is then a set of functionality that can cover the development needs for the complete spectrum from IaaS to BPaaS, but in practice each cloud service provider will only cover a limited set.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;i&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;(Update: I've been having some problems with the images displaying. Reloaded them so hopefully it works now.) &amp;nbsp;&lt;/span&gt;&lt;/i&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;style&gt;p, pre {margin: 0;}input.blogger-ie-hack {position: absolute; left: -9999px;}hr.more {border-width:1px 0 0 0; border-style:dashed; border-color: #666; height: 8px; background:#ddd}table.tr-caption-container {padding: 6px; margin-bottom: .5em} td.tr-caption {font-size: 80%; padding-top: 4px} img {cursor: move}body {margin: 8px 16px;} img {-moz-force-broken-image-icon: 1;}&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-2518913082074184516?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/2518913082074184516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=2518913082074184516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/2518913082074184516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/2518913082074184516'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2011/11/whats-paas.html' title='What&apos;s PaaS?'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/10629648847240962295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://2.bp.blogspot.com/_peAUD8AxyoE/STPw5HY4iGI/AAAAAAAAAAM/J0bo7XyveDc/S220/doble+2.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-CPnJRcjEQQA/TtS9W25AbeI/AAAAAAAAAGI/oJ6omA9Ha6c/s72-c/OldPaaSModel.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-7005651946521688588</id><published>2011-06-26T17:57:00.009+02:00</published><updated>2011-11-14T17:51:41.897+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Architectural Decisions</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="background-color: transparent; margin-top: 0px; margin-left: 0px; margin-bottom: 0px; margin-right: 0px; font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;span id="internal-source-marker_0.784799562767148" style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;If you are trying to implement any kind of architecture management you have to start documenting the architectural decisions you have made to keep future developers aware of the problems that were faced and why they where solved that way. But what information should be kept? One model I have used in the past is the Tyree-Akermann model (published in IEEE Software  March/April 2005). This captures the issue, the alternative solutions considered and, of course, the decision itself. In addition, the model is extended with information that supports the decision (e.g. architectural  principles, business factors). &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;This isn’t the only model that can be used. IBM have developed &lt;/span&gt;&lt;a href="http://www.ibm.com/developerworks/architecture/library/ar-knowwiki1/"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; "&gt;one &lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;in some detail and the ARC42 project has, as part of a software documentation template, developed an &lt;/span&gt;&lt;a href="http://www.arc42.com/template/template/10-decisions.html"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; "&gt;implicit model &lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;(only in German). &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Now, one way to go, would be to &lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;c&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;onsolidate the models t&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;o &lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;derive a "universal" architectural decision. However, since reading "Architectural Design Decisions as Reusable Design Assets” by Olaf Zimmermann  (originally published in IEEE Software Jan/Feb 2001, but now available &lt;/span&gt;&lt;a href="http://www.infoq.com/articles/ieee-arch-decisions"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; "&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;), my thinking has been pushed into concentrating on using the decisions to provide a knowledge base for other architects, i.e. reference architectures. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Zimmermann’s paper proposes, that when creating a reference architecture, not only the component, connector, patterns etc. are documented, but also the issues that the architect has to solve together with the design alternatives available in applying the reference architecture to a real situation. These issues - complete with alternatives and recommendations - form a &lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;guidance model&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;. This guidance model is then tailored to the project situation to produce a &lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;decision model&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; and extended with the actual outcomes.The beauty of this simple scheme is that the guidance and decision models have the same structure making it easier to extract best practices from completed architectural documentation. Zimmermann goes into a lot of detail about this, but I have tried to summarize it with the following two diagrams:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;1. The structure of the models. Although Zimmerman uses a SOA reference architecture as an example, the principle can be applied to any reference architecture as I’ve tried to show in the diagram. &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="background-color: transparent; margin-top: 0px; margin-left: 0px; margin-bottom: 0px; margin-right: 0px; font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="http://2.bp.blogspot.com/-GIFdDdLC2CA/TgdXLKjcZDI/AAAAAAAAAC8/l6Ng45Ujgn8/s320/Models%2BOverview.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 320px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5622558509118546994" /&gt;&lt;div style="background-color: transparent; margin-top: 0px; margin-left: 0px; margin-bottom: 0px; margin-right: 0px; font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;span id="internal-source-marker_0.784799562767148" style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;2. A (simplified) process showing how the guidance and decision models are used in architectural design. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-Ndj1eQZ7PJI/TgdXX4RT3kI/AAAAAAAAADE/MKuDyw9Pjbw/s1600/Architecture%2Bprocess.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="text-align: left;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 320px; height: 207px; " src="http://4.bp.blogspot.com/-Ndj1eQZ7PJI/TgdXX4RT3kI/AAAAAAAAADE/MKuDyw9Pjbw/s320/Architecture%2Bprocess.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5622558727548952130" /&gt;&lt;/a&gt;&lt;div style="background-color: transparent; margin-top: 0px; margin-left: 0px; margin-bottom: 0px; margin-right: 0px; font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;span id="internal-source-marker_0.784799562767148" style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Two main challenges still remain though - getting your architects to document their decisions and setting up an organisation and processes that can actually extract and propagate architectural best practices. &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-7005651946521688588?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/7005651946521688588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=7005651946521688588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/7005651946521688588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/7005651946521688588'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2011/06/if-you-are-trying-to-implement-any-kind.html' title='Architectural Decisions'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/10629648847240962295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://2.bp.blogspot.com/_peAUD8AxyoE/STPw5HY4iGI/AAAAAAAAAAM/J0bo7XyveDc/S220/doble+2.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-GIFdDdLC2CA/TgdXLKjcZDI/AAAAAAAAAC8/l6Ng45Ujgn8/s72-c/Models%2BOverview.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-8949036863451654409</id><published>2011-06-12T16:38:00.003+02:00</published><updated>2011-06-12T16:47:02.468+02:00</updated><title type='text'>Quantum computers - a commercially viable option?</title><content type='html'>Way back at the beginning of  2007 I posted a minimalist &lt;a href="http://andrewdoble.blogspot.com/2007/02/quantum-computers.html"&gt;comment &lt;/a&gt;expressing some incredulity that a company - &lt;a href="http://www.dwavesys.com"&gt;D-Wave&lt;/a&gt; - had been founded to develop and sell quantum computers. I've now just seen that they have &lt;a href="http://www.dwavesys.com/en/pressreleases.html#lm_2011"&gt;sold one&lt;/a&gt; to Lockheed Martin for undisclosed purposes.&lt;br /&gt;&lt;br /&gt;So when can we expect a quantum computing service in the cloud (a.k.a. QaaS)?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-8949036863451654409?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/8949036863451654409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=8949036863451654409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/8949036863451654409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/8949036863451654409'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2011/06/quantum-computers-commercially-viable.html' title='Quantum computers - a commercially viable option?'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/10629648847240962295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://2.bp.blogspot.com/_peAUD8AxyoE/STPw5HY4iGI/AAAAAAAAAAM/J0bo7XyveDc/S220/doble+2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-5326731673585325031</id><published>2010-11-10T17:16:00.004+01:00</published><updated>2011-11-14T17:51:57.233+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>It's Alive</title><content type='html'>&lt;object height="300" width="374"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xos2MnVxe-c?fs=1&amp;amp;hl=en_GB"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/xos2MnVxe-c?fs=1&amp;amp;hl=en_GB" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="300" width="374"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This seems to be the analyst's reaction to the Burton Group's claim, that despite previous doubts, SOA is alive (see David Linthicum's &lt;a href="http://www.ebizq.net/blogs/cloudsoa/2010/11/the-soa-is-dead-thing-returns.php" id="cz:7" title="coverage"&gt;coverage&lt;/a&gt; on this).&lt;br /&gt;&lt;br /&gt;In talking to clients there does seem to be a tacit acceptance that SOA principles (rather than the technology) are the way forward.  However, many do not want to mention the SOA word, perhaps out of fear that the idea will be seen as another (expensive) technology fix, rather than as a partial solution to some of the problems (high costs, unresponsiveness to business demands, lack of innovation) that currently plague enterprise IT.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-5326731673585325031?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/5326731673585325031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=5326731673585325031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/5326731673585325031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/5326731673585325031'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2010/11/it-alive.html' title='It&amp;#39;s Alive'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/10629648847240962295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://2.bp.blogspot.com/_peAUD8AxyoE/STPw5HY4iGI/AAAAAAAAAAM/J0bo7XyveDc/S220/doble+2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-6930848991946859487</id><published>2010-07-12T14:54:00.002+02:00</published><updated>2011-11-14T17:51:57.237+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>The SOA Roller Coaster</title><content type='html'>&lt;span style="font-style: normal; vertical-align: baseline;font-size:100%;" &gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;Joe McKendrick &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://www.zdnet.com/blog/service-oriented/five-ways-soa-now-powers-transformation-behind-the-scenes/2910?tag=mantle_skin;content"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000099;"&gt;&lt;u&gt;thinks&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;font-size:100%;" &gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt; that the &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://andrewdoble.blogspot.com/2008/12/trough-of-disillusionment.html"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000099;"&gt;&lt;u&gt;SOA roller coaster&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;font-size:100%;" &gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt; has moved on and is now moving along  the plateau of productivity.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-6930848991946859487?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/6930848991946859487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=6930848991946859487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/6930848991946859487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/6930848991946859487'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2010/07/soa-roller-coaster.html' title='The SOA Roller Coaster'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/10629648847240962295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://2.bp.blogspot.com/_peAUD8AxyoE/STPw5HY4iGI/AAAAAAAAAAM/J0bo7XyveDc/S220/doble+2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-8650203137828916198</id><published>2010-07-03T15:33:00.001+02:00</published><updated>2010-07-03T15:33:43.283+02:00</updated><title type='text'>The Internal Cloud</title><content type='html'>A few years ago we lived trough the rise of the web. For those working in enterprise computing this new world used a set of exotic technologies such as HTTP, HTML, Browser, web servers that had no place in the IT landscapes that existed then. As the business advantages of &amp;quot;e-business&amp;quot; &amp;nbsp;started became clear, many companies started embracing these technologies so that they too could compete in this space. Whilst this was happening, another, more subtle, revolution was taking place within the walls of traditional IT. The very technologies that powered a company&amp;#39;s web presence started finding there way into the design of internal applications. IT managers started demanding that applications became available over a browser; the cost savings in not having to deploy to each client providing a powerful argument for this. Business departments started demanding portals for their own staff and web based interfaces for the growing number of homeworkers. &amp;nbsp;In the mean time these technologies have become commonplace in most companies and in the area of WS* based technologies have found their own niche. &lt;br&gt;&lt;br&gt;We now faced with the next new thing - cloud computing. Although many are focusing on the advantages of &amp;quot;moving out to the cloud&amp;quot;, are there already &amp;quot;&lt;a href="http://en.wikipedia.org/wiki/Futurology#Weak_signals.2C_the_future_sign_and_wild_cards" id="k1lx" title="weak signals"&gt;weak signals&lt;/a&gt;&amp;quot; that &amp;nbsp;cloud technologies will become as commonplace in enterprise IT as e-business technologies have already become.&lt;br&gt;&lt;br&gt;&lt;div&gt;Let&amp;#39;s have a look at some of these starting off with &lt;b&gt;virtualisation&lt;/b&gt;. OK, this is no brainer as many are already adopting this today. However, virtulisation also leads to having large images for each virtualised application - a obvious cost factor when you consider storage. One way around this, and an idea taken from SaaS providers, is to have a strong form of &lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/Multitenancy" id="d64o" title="multi-tenancy"&gt;multi-tenancy&lt;/a&gt;&lt;/b&gt;. In this model, core functionality remains the same (and is virtualised) but specific processes, rules and screens for different user groups are developed by configuring the core functionality, rather than developing new applications. &lt;br&gt;&lt;br&gt;Cloud providers have also changed the way we think about databases. Many are under the impression that there is only one type of database and it&amp;#39;s relational. However the rise of the &lt;b&gt;&lt;a href="http://nosql-database.org/" id="hkmg" title="NoSQL database"&gt;NoSQL database&lt;/a&gt; &lt;/b&gt;has shown that other types of databases have properties that can be attractive for different types of application.&lt;/div&gt;&lt;br&gt;&lt;div&gt;In order to achieve the levels &amp;nbsp;of performance and scalability that cloud providers need, they seem to have totally &amp;nbsp;abandoned the three tier architectures that predominate in post year 2000 enterprise systems. Instead, other architectures that either cache the data &amp;nbsp;or provide ways of directly manipulating objects as if in memory are standard. This has lead to a new class of &amp;nbsp;&lt;b&gt;application server&lt;/b&gt;&amp;nbsp;that performs the heavy lifting of handling &amp;nbsp;the distributed processing and data behind the scenes - examples include &lt;a href="http://www.terracotta.org" id="e1bd" title="Terracotta"&gt;Terracotta&lt;/a&gt;, &lt;a href="http://www.gigaspaces.com/xap" id="tfa3" title="Gigaspaces"&gt;Gigaspaces&lt;/a&gt;, and&amp;nbsp;&lt;a href="http://www.oracle.com/technology/products/coherence/index.html" id="n728" title="Coherance"&gt;Coherance&lt;/a&gt;. These types of application servers have already stated making in-roads into the financial services sector, due to the extreme performance requirements there. From an architectural viewpoint however, there seems to be a grey zone here between NoSQL databases and these &amp;quot;in-memory&amp;quot; techniques.&amp;nbsp;&lt;/div&gt;&lt;br&gt;&lt;div&gt;The humble batch job can also expect a work-over, with techniques such as &lt;a href="http://labs.google.com/papers/mapreduce.html" id="mpyh" title="MapReduce"&gt;MapReduce&lt;/a&gt;&amp;nbsp;and systems such as &lt;a href="http://hadoop.apache.org/mapreduce/" id="r60l" title="Hadroop"&gt;Hadroop&lt;/a&gt; gaining ground.&amp;nbsp;&lt;/div&gt;&lt;br&gt;Bringing this all together on the consumer side there is the architectural technique previously known as &lt;b&gt;SOA &lt;/b&gt;coupled up with mash-up frameworks and associated &lt;a href="http://www.openmashup.org/" id="wnmk" title="standards"&gt;standards&lt;/a&gt;.&amp;nbsp;&lt;br&gt;&lt;br&gt;&lt;div&gt;I&amp;#39;m pretty sure that eventually these kinds of technologies will become so pervasive in the typical IT shop that we will forget the cloud hype and just get on building systems with them.&amp;nbsp;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-8650203137828916198?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/8650203137828916198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=8650203137828916198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/8650203137828916198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/8650203137828916198'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2010/07/internal-cloud.html' title='The Internal Cloud'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/10629648847240962295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://2.bp.blogspot.com/_peAUD8AxyoE/STPw5HY4iGI/AAAAAAAAAAM/J0bo7XyveDc/S220/doble+2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-2789649608644016258</id><published>2010-01-21T21:15:00.001+01:00</published><updated>2010-01-21T21:15:25.028+01:00</updated><title type='text'>The Virtual Enterprise - Updated</title><content type='html'>Around 2005 I wrote a series of blog entries (starting &lt;a title="here" href="http://andrewdoble.blogspot.com/2005/01/building-enterprise-using-hosted.html" id="mslj"&gt;here&lt;/a&gt;) asking if an enterprise IT could be completely covered by SaaS applications (the word cloud wasn't used then so I talked about a "virtual enterprise"). Gartner now &lt;a title="predict" href="http://www.gartner.com/it/page.jsp?id=1278413" id="pv8j"&gt;predict&lt;/a&gt; that "By 2012, 20 percent of businesses will own no IT assets". &lt;br&gt;&lt;br&gt;Disregarding if 2012 is the right time-frame, what type of enterprise could dispense with all of their IT assets. I can only assume one in which IT offers no competitive advantage. &lt;br&gt;&lt;br&gt;Looking back on those old blog posts, I also noticed that a lot of the SaaS companies I mentioned either don't exist anymore or have morphed into something else. If you believed in 2005 that you could dispense with IT assets, then by now you would have realised that you need to be capable of moving your information assets to different SaaS providers and adapting your business processes accordingly. This is probably still true in 2010 and will be something to consider by the 20% of "IT free" companies in 2012. &lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-2789649608644016258?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/2789649608644016258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=2789649608644016258' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/2789649608644016258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/2789649608644016258'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2010/01/virtual-enterprise-updated.html' title='The Virtual Enterprise - Updated'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/10629648847240962295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://2.bp.blogspot.com/_peAUD8AxyoE/STPw5HY4iGI/AAAAAAAAAAM/J0bo7XyveDc/S220/doble+2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-8072825660551512590</id><published>2009-04-03T13:48:00.002+02:00</published><updated>2009-04-03T13:53:20.371+02:00</updated><title type='text'>Coding the architecture or architecting the code</title><content type='html'>&lt;a href="http://www.infoq.com/news/Should-Architects-Code"&gt;Many&lt;/a&gt; &lt;a href="http://www.ddj.com/blog/architectblog/archives/2006/04/should_architec.html"&gt;have &lt;/a&gt;&lt;a href="http://97-things.near-time.net/wiki/if-you-design-it-you-should-be-able-to-code-it"&gt;asked&lt;/a&gt; the rhetorical question „Should software architects code?”  In my experience if you ask that question directly to an architect who does code you get a resounding “yes” and a look that suggests heretical attitudes in just thinking of asking. Ask the same question to an architect who does not code, you get a resounding “No” and are left with the impression that coding is somehow a menial task that real architects don’t need to get involved in.&lt;br /&gt;&lt;p class="MsoNormal"&gt;Sometimes though, if I listen carefully or reflect on what I do or have done, I get glimpses of what software architects hope to achieve by coding. This leaves me with the impression that the question should be rephrased to “Why should software architects code?”&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Let’s list some answers:&lt;br /&gt;&lt;/p&gt;A software architect has to communicate with the developers in order to guide them in implementing the architecture. Writing code is the only way to communicate the intent of the architecture. Ultimately this comes down to the fact that no “language” exists to communicate architectural intent that is both understood by developers (who read it) and architects (who write it). Although UML goes someway to fulfill this need, judging by the number of architects who feel they should code, it doesn’t seem to go far enough in explaining architectural intent.&lt;br /&gt;&lt;p class="MsoNormal"&gt;The architect has to ensure that the system being developed actually implements the proposed architecture.  As documentation is suspect and may even not be there, the architect has to read the code. But wouldn’t it be more efficient to have a tool that extracted the architecture from the code so that the architect only needed to make a comparison? Unfortunately tools to visualize the architecture based on the code do not seem be mainstream, especially in the context of modern distributed software systems (i.e. the type of system we really would like to see the architecture for!).&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Architects need to code to understand new components, frameworks, ways of doing things etc. Most artifacts that are intended for general use in the software world are, from the viewpoint of an architect, terribly documented. Instead of providing clear advice on where a component (or framework or library) can be used, what problem it solves and in what context it solves that, most documentation forces the reader to go through page after page of coding examples which only show how it can be used. In short, the how, why and where are not there.&lt;br /&gt;&lt;/p&gt;And some just like coding. The problem with this is that the architect can find themselves very quickly on the critical path for development leaving little time for architecting the rest of the system.&lt;br /&gt;&lt;p class="MsoNormal"&gt;Most of the above are about one thing - communication of the architecture - be it from architect to developer, developer to architect (via the implemented system) or supplier/vendor etc. to the architect.   Software architects seem to be trapped like the &lt;a href="http://en.wikipedia.org/wiki/Allegory_of_the_cave"&gt;prisoner in Plato’s cave&lt;/a&gt;. They cannot see the architecture, but only the shadows of it in the code. &lt;/p&gt;&lt;p class="MsoNormal"&gt;Isn’t about time to change that?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-8072825660551512590?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/8072825660551512590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=8072825660551512590' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/8072825660551512590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/8072825660551512590'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2009/04/coding-architecture-or-architecting.html' title='Coding the architecture or architecting the code'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/10629648847240962295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://2.bp.blogspot.com/_peAUD8AxyoE/STPw5HY4iGI/AAAAAAAAAAM/J0bo7XyveDc/S220/doble+2.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-8499433947847706360</id><published>2009-03-19T20:58:00.002+01:00</published><updated>2009-03-19T20:59:45.393+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Architecture that learns</title><content type='html'>I recently came across a rather old (1997) BBC series on architecture - buildings rather than software. The series -  "&lt;a title="How Buildings Learn" href="http://www.kottke.org/08/08/how-buildings-learn-tv-series" id="ckk_"&gt;How Buildings Learn&lt;/a&gt; " - concentrated on what makes a building adaptable to the continually changing needs of those who live in them. The parallels to software architecture are astonishing. There is even an interview with &lt;a title="Christopher Alexander" href="http://en.wikipedia.org/wiki/Christopher_Alexander" id="g-pz"&gt;Christopher Alexander&lt;/a&gt;  - that's right, the man who inspired the patterns movement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-8499433947847706360?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/8499433947847706360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=8499433947847706360' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/8499433947847706360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/8499433947847706360'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2009/03/architecture-that-learns.html' title='Architecture that learns'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/10629648847240962295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://2.bp.blogspot.com/_peAUD8AxyoE/STPw5HY4iGI/AAAAAAAAAAM/J0bo7XyveDc/S220/doble+2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-5646288137859876059</id><published>2008-12-05T16:46:00.003+01:00</published><updated>2009-02-23T09:09:47.214+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='soa governance'/><title type='text'>The Pentagon Model of Service Contracts</title><content type='html'>&lt;a id="vi0n" title="Many" href="http://www.zapthink.com/report.html?id=ZAPFLASH-2005824"&gt;Many&lt;/a&gt; &lt;a id="g:.c" title="have" href="http://www.mwdadvisors.com/blog/2008/11/on-soa-governance-for-soa-read-cpoa.html"&gt;have&lt;/a&gt; &lt;a id="qe-8" title="stressed" href="http://safari.ibmpressbooks.com/9780131360648"&gt;stressed&lt;/a&gt; the importance of an service contract model in specifying services in an SOA. But what should a service contract contain and what is its structure?&lt;br /&gt;&lt;br /&gt;One model I have been using is what I call the the "Pentagon Model". No, this does not have any thing to do with the US Department of Defence, but comes from the broad shape of the relationships between parts of the contract (see the diagram).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="vg5w" style="padding: 1em 0px; text-align: center;"&gt;&lt;img src="http://docs.google.com/File?id=dgj9mn4j_52gvr7mcck_b" /&gt;&lt;/div&gt;&lt;div id="f:-4" style="padding: 1em 0pt;"&gt;&lt;div id="yv3f" style="text-align: left;"&gt;The model starts with the premise that any contract is between a consumer and provider and is not directly associated with the thing that is the subject of the contract. Secondly the subject of the contract is the service operation rather than the whole service.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Let's illustrate this with an example. If you were implementing a CRM service then this may have operations such GetCustomer, FindCustomer. It stands to reason that each of these operations has a different contract due to the different interface and that they may well have different SLAs (searching for a customer probably takes longer that just returning one specified by a key value). However you may want to specify different SLAs for the service operations when they are called from the corporate network than when called over a mobile phone connection by a mobile sales force. Most definitely the security policies would be different in each case. &lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Changing the consumer is one thing, but why also have the contract depending on the provider? Well, you may have a number of providers for the same service interface. For example, the CRM service in Europe may have different response times and access policies associated with it than when accessing the same service interface, but using the CRM provider in the US branch. This is even more important when accessing sensitive information that may be subject to the laws of different jurisdictions.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;This model is, of course, a simplification of a complete service contracts model. It starts to get complex when you have to model the policy structure and also have to take into the account that providers can be consumers. But it provides a simple framework to start thinking about service contracts. &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-5646288137859876059?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/5646288137859876059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=5646288137859876059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/5646288137859876059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/5646288137859876059'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2008/12/pentagon-model-of-service-contracts.html' title='The Pentagon Model of Service Contracts'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/10629648847240962295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://2.bp.blogspot.com/_peAUD8AxyoE/STPw5HY4iGI/AAAAAAAAAAM/J0bo7XyveDc/S220/doble+2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-3516317957640097588</id><published>2008-12-02T20:14:00.003+01:00</published><updated>2009-02-23T09:10:56.483+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Think about the arrows</title><content type='html'>&lt;span style="font-family:Arial;"&gt;When doing architecture reviews. I'll often point at one of the arrows on the architecture diagram and ask "what is this?". Depressingly I often get an answer similar to " Well, component A talks to component B". Rarely do I get an answer will actually explains: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:Arial;"&gt;Why the components need to communicate &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Arial;"&gt;What information is communicated &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Arial;"&gt;What the arrow indicates (e.g. flow of information) &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Arial;"&gt;What component initiates the communication &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Arial;"&gt;How the information is represented &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Arial;"&gt;What protocols are used &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Arial;"&gt;What is physically used to transmit the information &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p id="ep_v1"&gt;&lt;span style="font-family:Arial;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style="font-family:Arial;"&gt;In designing an software architecture I've always found it useful to think about what the arrowed lines actually mean as this often provides insights into how the design will actually behave.  I was therefore happy to see that at least somebody else also thinks the same way and have submitted a software axiom ("&lt;a id="t9r5" title="Architects focus is on the boundaries and interfaces" href="http://97-things.near-time.net/wiki/Architects%20focus%20is%20on%20the%20boundaries%20and%20interfaces"&gt;Architects focus is on the boundaries and interfaces&lt;/a&gt;" by  Einar Landre)  to Richard Monson-Haefel's &lt;a id="dfxj" title="97 Things" href="http://97-things.near-time.net/wiki"&gt;97 Things&lt;/a&gt;. If you haven't come across this before, 97 Things is a set of "&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;axioms for software architects by software architects" and should be published by O'Reilly next year. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-3516317957640097588?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/3516317957640097588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=3516317957640097588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/3516317957640097588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/3516317957640097588'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2008/12/think-about-arrows.html' title='Think about the arrows'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/10629648847240962295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://2.bp.blogspot.com/_peAUD8AxyoE/STPw5HY4iGI/AAAAAAAAAAM/J0bo7XyveDc/S220/doble+2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-6698383822149206850</id><published>2008-12-01T15:17:00.003+01:00</published><updated>2009-02-23T09:11:11.429+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>Trough of disillusionment</title><content type='html'>&lt;span id="tyyn4"  style="font-family:Garamond;"&gt;&lt;span id="n4z10"  style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Mr. Gartner had built a new roller coaster based on his, now famous, principles which ensured that every ride was indeed a heady experience which one would not easily forget. His previous rides, often simply named with combinations of letters, were indeed exhilarating experiences. I was eager to ride this one, famously called SOA, and was lucky enough to be now sitting in the front carriage, which was slowly taking me up the steep incline. As the carriage ascended I was able to take in the magnificent vista of the landscape lying below me, revealing a hitherto unknown complexity. But then, looking forward again, I realized I could not see the track in front of me. In fact I seemed to be poised on a great void. It was then that I realized that I was heading into the &lt;/span&gt;&lt;a id="gizw" title="trough of disillusionment" href="http://www.gartner.com/it/page.jsp?id=790717"&gt;&lt;span style="font-family:arial;"&gt;trough of disillusionment&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-6698383822149206850?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/6698383822149206850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=6698383822149206850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/6698383822149206850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/6698383822149206850'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2008/12/trough-of-disillusionment.html' title='Trough of disillusionment'/><author><name>Andrew</name><uri>http://www.blogger.com/profile/10629648847240962295</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://2.bp.blogspot.com/_peAUD8AxyoE/STPw5HY4iGI/AAAAAAAAAAM/J0bo7XyveDc/S220/doble+2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-4715280744058602555</id><published>2008-03-14T12:40:00.002+01:00</published><updated>2009-02-23T09:11:43.906+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>BPMN Again</title><content type='html'>I've &lt;a title="posted" href="http://andrewdoble.blogspot.com/2007/06/as-architect-i-often-have-to-sketch.html" id="lhkl"&gt;posted&lt;/a&gt; in the past about trying to find good online introductions to BPMN. Recently Bruce Silver has released some excellent e-learning &lt;a title="material" href="https://www.sdn.sap.com/irj/sdn/wiki?path=/x/2_E" id="l41k"&gt;material&lt;/a&gt;  on SAP's Business Process Expert community site (registration is required).&lt;br /&gt;&lt;br /&gt;Bruce uses some as yet unreleased software to diagram the BPMN examples he uses. I've taken the cheap route in the past and have been using some of the free Visio stencils I mentioned in the last post. Recently though I've been using a elegant &lt;a title="stencil" href="http://www.bpmn.co.uk/bpmn.aspx" id="mvxa"&gt;stencil&lt;/a&gt; from Orbus software. Unfortunately it doesn't cover all of the features (e.g. catching and throwing events) and symbols in &lt;a title="version 1.1" href="http://www.omg.org/spec/BPMN/1.1/" id="ufeb"&gt;version 1.1&lt;/a&gt; of BPMN.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-4715280744058602555?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/4715280744058602555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=4715280744058602555' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/4715280744058602555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/4715280744058602555'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2008/03/bpmn-again-ive-posted-in-past-about.html' title='BPMN Again'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-1799552337119222967</id><published>2008-02-22T13:44:00.004+01:00</published><updated>2008-02-22T13:48:55.879+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Application Platform'/><title type='text'>Application Servers - The Next Generation?</title><content type='html'>I recently came across this in an InfoQ &lt;a title="post" href="http://www.infoq.com/news/2008/02/infiniflow-12" id="tj8n"&gt;post&lt;/a&gt; (my highlighting):&lt;br /&gt;&lt;a href="http://www.paremus.com/"&gt;&lt;/a&gt;&lt;blockquote&gt;&lt;a href="http://www.paremus.com/"&gt;Paremus&lt;/a&gt; recently released &lt;a href="http://www.paremus.com/news/pr/pr08-034-infiniflow_with_spring_dynamic_modules.html"&gt;version 1.2&lt;/a&gt; of &lt;a href="http://www.paremus.com/products/products.html"&gt;Infiniflow&lt;/a&gt;, a &lt;b&gt;next-generation&lt;/b&gt; distributed application server based on OSGi and SCA. &lt;/blockquote&gt;What is interesting is the tacit acceptance that there is now a "next generation" of application servers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-1799552337119222967?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/1799552337119222967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=1799552337119222967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/1799552337119222967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/1799552337119222967'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2008/02/application-servers-next-generation-i.html' title='Application Servers - The Next Generation?'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-2044625987618060105</id><published>2008-02-20T21:03:00.002+01:00</published><updated>2008-02-20T21:07:18.180+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>SOA in Cloud Cuckoo Land</title><content type='html'>There seems to be a general feeling that SOA services will somehow just exist out there in a cloud. The nitty gritty of their implementation, of who is actually responsible for them and how they are managed is hidden behind the service interface and the consumer doesn't have to worry about it.&lt;br /&gt;&lt;br /&gt;If you had that point of view and you'd been using Amazon's &lt;a title="S3" href="http://www.amazon.com/gp/browse.html?node=16427261" id="q8yh"&gt;S3&lt;/a&gt; services you would have been hit when the S3 service went &lt;a title="down" href="http://www.roughtype.com/archives/2008/02/why_s3_failed.php" id="nv:q"&gt;down&lt;/a&gt; last week. If you boil down Amazon's explanation to it's essence it seems that the number of "consumers" increased unexpectedly and overloaded the security system. Now Amazon's up-time statistics are maybe very good, but systems still go down.&lt;br /&gt;&lt;br /&gt;Now say that you're implementing a SOA in your company. The services provided are going to be mission critical (just like your applications are). But one day, they will go down. And when they do you better make sure that you know who is responsible for them, what the implementation is so that you can fix things and that the management is so set up that the right people are brought to the problem as soon as possible (and while you're at make sure that you've defined the SLAs for the services, governance processes are in place to ensure that usage profiles are known in advance and that the services are monitored so that you can spot possible problems before they become serious).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-2044625987618060105?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/2044625987618060105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=2044625987618060105' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/2044625987618060105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/2044625987618060105'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2008/02/there-seems-to-be-general-feeling-that.html' title='SOA in Cloud Cuckoo Land'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-7110936314225508667</id><published>2007-09-29T16:55:00.001+02:00</published><updated>2009-02-23T09:12:19.881+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>ESBs again</title><content type='html'>I've posted in &lt;a href="http://andrewdoble.blogspot.com/2007/06/my-colleague-mark-masterson-asks-in-his.html"&gt;the&lt;/a&gt; &lt;a href="http://andrewdoble.blogspot.com/2007/07/more-on-esbs_09.html"&gt;past &lt;/a&gt;about what ESBs really are (and why we need them). As evidenced by this &lt;a href="http://www.infoq.com/news/2007/09/what-does-the-term-esb-mean"&gt;entry &lt;/a&gt;in InfoQ the discussion seems to be widespread in the industry. I sense that we are entering one of these "grand" debates like SOAP vs. REST. This time it's the question "do we need an ESB or are WS standards enough".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-7110936314225508667?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/7110936314225508667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=7110936314225508667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/7110936314225508667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/7110936314225508667'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2007/09/esbs-again.html' title='ESBs again'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-5543933926852997392</id><published>2007-09-25T16:44:00.000+02:00</published><updated>2007-09-25T16:57:28.385+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>BPEL4People - The Architecture</title><content type='html'>As I explained in my last &lt;a href="http://andrewdoble.blogspot.com/2007/07/soa-human-angle.html"&gt;post&lt;/a&gt;, the new &lt;a href="http://www.ibm.com/developerworks/webservices/library/specification/ws-bpel4people/"&gt;BPEL4People draft standards&lt;/a&gt; are intended to integrate people into those business processes that are being controlled by a “requesting application” ( I think it’s pretty safe to assume that in most SOA implementations this would be a process engine running BPEL). The draft spec  itself is split into two parts. The first (WS-BPEL Extension for People) explains how BPEL can be extended with specific process constructs to deal with human interactions and lists a number of ways (called constellations) that the management of these tasks can be implemented. From an architectural point of view the most interesting one is when the task infrastructure is decoupled from the process infrastructure and a separate spec (WS-Human Task) has also been released to cover this. I’ve tried to convert this last “constellation” into a more detailed architecture diagram:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_i2sygfx7nU8/RvkfkeAgTbI/AAAAAAAAABA/jJxuIkloV00/s1600-h/SOA_with_humans.PNG"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_i2sygfx7nU8/RvkfkeAgTbI/AAAAAAAAABA/jJxuIkloV00/s320/SOA_with_humans.PNG" alt="" id="BLOGGER_PHOTO_ID_5114153563246841266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;How does this all go together? Let’s start off at the simpler end. The basic assumption is that people provide services by acting on tasks which have been assigned to them. To see and handle the tasks which have been assigned to them is done using a task client. This is not specified by the specification, but it is a relatively safe bet that will take the form of a user interface with some kind of task list which the user can interact with (for instance, in a SAP environment this could be a universal work list). The user interface interacts with a task management component which stores the tasks assigned to the users. Again, it’s pretty likely that the task manager will be a central component that can hold the tasks for a number of users each of who has their own user interface. The spec defines the services which the task manager component exposes to a user interface. I’ve grouped them into three categories:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Life Cycle, i.e. claiming a task (i.e. saying you’ll do it), starting, suspending and stopping tasks etc. &lt;/li&gt;&lt;li&gt;Query, i.e. finding tasks based on certain criteria. The most important one here is &lt;span style="font-family: courier new;"&gt;getMyTasks&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Administration services such as explicitly nominating someone to a task &lt;/li&gt;&lt;/ul&gt;To do this the task manager needs to access some information regarding the people. The spec assumes a people directory with an interface for queries, but doesn’t actually fix what this looks like.&lt;br /&gt;&lt;br /&gt;So how do the tasks get into the task manager? Conceptually this is very simple. The task manager exposes a service for the business function (or functions) which need to be performed by a human. The service can then be called from another application or a process engine. Once the service has been invoked, the task manager creates a task which, as far the users are concerned, appears in a task list and can be dealt with over the task client. The user can then decide to act on the task until it’s completed. I’ve sketched a simplified scenario (using as an example a credit approval service) in a UML sequence diagram:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_i2sygfx7nU8/RvkgSeAgTcI/AAAAAAAAABI/UBFRbQCGKZs/s1600-h/Sequence%2BDiagram.png"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_i2sygfx7nU8/RvkgSeAgTcI/AAAAAAAAABI/UBFRbQCGKZs/s320/Sequence%2BDiagram.png" alt="" id="BLOGGER_PHOTO_ID_5114154353520823746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I must admit, I find the interface between the requesting application (the process engine in our scenario) and the task manager rather specific to the business logic required. The task manager has to expose specific services such as &lt;span style="font-family: courier new;"&gt;ApproveCredit &lt;/span&gt;rather than use a more general approach with services such as &lt;span style="font-family: courier new;"&gt;TaskCreate&lt;/span&gt;. This implies that any service developer will have to use an API which is specific (i.e. proprietary) to the task management component being used.&lt;br /&gt;&lt;br /&gt;The above only sketches some of the main features found in the draft specification. Other features (such as notifications and placing service calls in a context) I haven’t included. The spec also defines in detail the messages between the main components. I look forward to more articles detailing what the specs actually mean for architects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-5543933926852997392?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/5543933926852997392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=5543933926852997392' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/5543933926852997392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/5543933926852997392'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2007/09/bpel4people-architecture.html' title='BPEL4People - The Architecture'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_i2sygfx7nU8/RvkfkeAgTbI/AAAAAAAAABA/jJxuIkloV00/s72-c/SOA_with_humans.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-5408929498921507708</id><published>2007-07-21T15:20:00.001+02:00</published><updated>2009-02-23T09:12:40.193+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>SOA: The Human Angle</title><content type='html'>Most discussions on SOAs assume an architectural model in which services are provided  by software and these services are in turn consumed by clients (e.g. user interfaces)  or are orchestrated by a process engine. A good example of this type of thinking has been recently published by a set of authors from IBM in IEEE IT Pro. In their &lt;a href="http://www.computer.org/portal/cms_docs_itpro/itpro/homepage/2007/may_june/f3010.pdf" title="S3: A Service-Oriented Reference Architecture"&gt;article&lt;/a&gt;, “S3: A Service-Oriented Reference Architecture” they describe a metamodel which:&lt;br /&gt;&lt;blockquote&gt;“ … captures architectural building blocks … as well as the relations among these blocks and among layers, interaction patterns, options, and architectural decisions.”.&lt;/blockquote&gt;However , although most of these SOA models  talks about business processes they give scant attention to the role of humans within those process. For instance, at one stage in a credit process we might need someone to approve the loan. Effectively this means that the approver is providing a service – deciding on loans using their experience and intelligence. In the IT Pro article we come across this statement:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;“An SOA ... would support that process by creating a composite service that choreographs the information flow among a set of services and human actors”&lt;/blockquote&gt;But that’s it. How the human actors are actually integrated into the SOA is not explained. This is fairly typically for most of the literature in this area which assumes an architectural model such as:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_i2sygfx7nU8/RqIJWu2a1NI/AAAAAAAAAAw/XEe7faYs3Nc/s1600-h/SOA+without+humans.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_i2sygfx7nU8/RqIJWu2a1NI/AAAAAAAAAAw/XEe7faYs3Nc/s320/SOA+without+humans.png" alt="" id="BLOGGER_PHOTO_ID_5089640815020135634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I was therefore interested to see that the BPEL4People draft &lt;a href="http://www.ibm.com/developerworks/webservices/library/specification/ws-bpel4people/%20" title="specification"&gt;specification&lt;/a&gt; has been recently published by a consortium of companies with the intent of getting this ratified by &lt;a href="http://www.oasis-open.org/" title="OASIS"&gt;OASIS&lt;/a&gt;  as a WS-* specification.  BPEL4People is a set of extensions to the BPEL specification that address scenarios in which humans are involved in business processes. How it does this from an architectural point of view I’d like to explore in my next entry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-5408929498921507708?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/5408929498921507708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=5408929498921507708' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/5408929498921507708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/5408929498921507708'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2007/07/soa-human-angle.html' title='SOA: The Human Angle'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_i2sygfx7nU8/RqIJWu2a1NI/AAAAAAAAAAw/XEe7faYs3Nc/s72-c/SOA+without+humans.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-7703306826741431306</id><published>2007-07-10T15:55:00.001+02:00</published><updated>2009-02-23T09:13:02.812+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>German government specifies  SOA</title><content type='html'>The German federal government has released an &lt;a href="http://www.kbst.bund.de/cln_046/nn_1141090/Content/Standards/Saga/Architekturkonzept/achitekturkonzept.html"&gt;IT Architecture&lt;/a&gt; for the administration. Surprisingly (or perhaps not, depending on your PoV) it's service oriented.&lt;br /&gt;&lt;br /&gt;Currently it is only in German, but often such documents are translated into English and published on the same web site later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-7703306826741431306?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/7703306826741431306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=7703306826741431306' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/7703306826741431306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/7703306826741431306'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2007/07/german-government-specifies-soa.html' title='German government specifies  SOA'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-3362796820774091935</id><published>2007-07-09T21:13:00.001+02:00</published><updated>2007-07-09T21:21:57.358+02:00</updated><title type='text'>More on ESBs</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Arial;"&gt;Just to muddy the &lt;a href="http://andrewdoble.blogspot.com/2007/06/my-colleague-mark-masterson-asks-in-his.html"&gt;waters &lt;/a&gt;in trying to explain what an &lt;/span&gt;ESB&lt;span style="font-family:Arial;"&gt; is (and why we need one) I came across this (dated 2005) &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://jim.webber.name/downloads/presentations/2005-10-Quarterly-Technology-Briefing.ppt" title="presentation"&gt;presentation&lt;/a&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Arial;"&gt;from Jim Webber &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Arial;"&gt;(you have to display it in presentation mode to see it all). Jim &lt;/span&gt;doesn't&lt;span style="font-family:Arial;"&gt; hold much with &lt;/span&gt;ESB&lt;span style="font-family:Arial;"&gt; vendors and believes that the "bus" should just be SOAP and WS-Addressing.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=";font-family:Arial;" &gt;&lt;br /&gt;The slide set reminds of a colleague (I wish I could &lt;/span&gt;remember&lt;span style="font-family:Arial;"&gt; his name) who once said "it is almost criminal to let a vendor determine your architecture".&lt;/span&gt;&lt;/span&gt;&lt;p&gt; &lt;/p&gt;   &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-3362796820774091935?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/3362796820774091935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=3362796820774091935' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/3362796820774091935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/3362796820774091935'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2007/07/more-on-esbs_09.html' title='More on ESBs'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-2063384365163144200</id><published>2007-06-28T21:46:00.000+02:00</published><updated>2007-06-28T21:51:06.628+02:00</updated><title type='text'>Point-Point, Hub-and-Spoke, ESB</title><content type='html'>My colleague Mark Masterson asks in his &lt;a title="blog" href="http://jroller.com/page/MasterMark?entry=soa_esb_hub_and_spoke"&gt;blog&lt;/a&gt; about the “fitness of the classical "hub and spoke" architecture in a modern enterprise systems landscape” and “what, exactly, is the purpose of an enterprise service bus (ESB)?”&lt;br /&gt;&lt;br /&gt;As he points out there is a lot written about this, but nothing seems to be conclusive. When confronted by such situations I attack them by asking “want do we really want” and then  work backwards to “what have we got”.&lt;br /&gt;&lt;br /&gt;So, the first question is; do we want a “hub and spoke” architecture? Well, this was proposed as an answer to the point-to-point interconnection style. Continuing on with this ruthless analysis (so beloved of &lt;a title="Dr. House" href="http://en.wikipedia.org/wiki/House_%28TV_series%29"&gt;Dr. House&lt;/a&gt;) let’s ask the seemingly dumb question; do we need a point to point interconnection style?&lt;br /&gt;&lt;br /&gt;Point to point came about because people needed to transfer data between applications. As time went on, more and more applications were written and, with them, more and more point to point interconnections were produced. This lead to a nightmare IT landscape which nobody could understand, let alone maintain (I once did an application inventory for a client in which the interfaces were also documented – the result filled four sheets of DIN A0 and made for interesting wallpaper!).&lt;br /&gt;&lt;br /&gt;To solve this the hub-and-spoke architecture was proposed, which lead to EAI tools etc. etc.. But that was then and this is now and I think we have to ask again: why point-to-point?&lt;br /&gt;&lt;br /&gt;In the brave new world of SOA we don’t have applications which need to pass data between themselves. Instead we have autonomous services. These are arranged in a hierarchy (although not a strict one) . Services are consumed by other services (e.g. composite services call atomic services) or, at the top nodes, by service consumers such as user interfaces. If we start building systems to implement this architectural style, we soon start to realize that certain functionality is required time and time again. We need to implement small processes which call services in predefined sequences, data needs to be aggregated from many sources or needs to be distributed to other services. The data needs to be transformed, enriched, split up. In addition we need build low level coordination between the services, so that we can implement concepts such as transactions and security. We also need to ensure that data is really transfered to the services (i.e. reliable delivery) etc..&lt;br /&gt;&lt;br /&gt;All of this is what we really need to implement an SOA. But instead of implementing this all ourselves, we buy these things from somebody who has packaged it all together and given it a name - ESB.&lt;br /&gt;&lt;br /&gt;Using this  analysis means that the original question of fitness of a hub-and-spoke system is a question that does not need to be answered as a hub-and-spoke architecture is irrelevant for a modern systems landscape if an SOA style is used.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-2063384365163144200?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/2063384365163144200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=2063384365163144200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/2063384365163144200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/2063384365163144200'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2007/06/my-colleague-mark-masterson-asks-in-his.html' title='Point-Point, Hub-and-Spoke, ESB'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-321759556649805732</id><published>2007-06-19T17:49:00.000+02:00</published><updated>2007-06-19T17:51:29.427+02:00</updated><title type='text'>Designing Interfaces and REST</title><content type='html'>I've blogged in &lt;a title="the" href="http://andrewdoble.blogspot.com/2007/01/in-his-comment-on-my-last-post-steve.html"&gt;the&lt;/a&gt; &lt;a title="past" href="http://andrewdoble.blogspot.com/2007/02/loosely-coupled-interfaces.html"&gt;past&lt;/a&gt; about how the design of interfaces in distributed systems is an important, but often overlooked topic. Instead the current debate seems to be around the technology used - SOAP, REST - rather that the interface design itself.&lt;br /&gt;&lt;br /&gt;I was therefore interested to come across this blog &lt;a title="entry" href="http://bitworking.org/news/201/RESTify-DayTrader"&gt;entry&lt;/a&gt; from Joe Gregorio in which he applies REST technology to the design of the Apache &lt;a title="DayTrader" href="http://cwiki.apache.org/GMOxDOC20/daytrader.html"&gt;DayTrader&lt;/a&gt; benchmark. What I find striking about this entry is how much care he has given to the interface design, reducing the original, and somewhat ad-hoc interface specification, to simpler principles based on a few entities and operations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-321759556649805732?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/321759556649805732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=321759556649805732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/321759556649805732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/321759556649805732'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2007/06/designing-interfaces-and-rest-ive.html' title='Designing Interfaces and REST'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-6321803783264545782</id><published>2007-06-12T17:39:00.000+02:00</published><updated>2007-06-19T17:52:19.522+02:00</updated><title type='text'>Tools for Globally Distributed Development (GDD)</title><content type='html'>&lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Arial;"&gt;Working for a company that routinely spreads its development out through the world I was interested to come across this &lt;a title="report" href="http://www.onlamp.com/pub/a/onlamp/2007/05/17/tools-for-geographically-distributed-software-development.html?page=1"&gt;report&lt;/a&gt; from&lt;/span&gt;&lt;span style="font-family:Arial;"&gt; Ryan Bagueros &lt;/span&gt;&lt;span style="font-family:Arial;"&gt;on how a small software development company can set up the tool support for GDD on the cheap by using tools available on the web. As he says:  &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Arial;"&gt;"With some careful setup, any group of developers can compete with the budgets used by multinational software development firms to distribute their application engineering ..."&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Arial;"&gt;Of course, these tools do not need to be used on the scale of global development, but can be used on smaller scale developments where the developers do not all sit together. &lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-6321803783264545782?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/6321803783264545782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=6321803783264545782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/6321803783264545782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/6321803783264545782'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2007/06/tools-for-globally-distributed.html' title='Tools for Globally Distributed Development (GDD)'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-4085004904949007555</id><published>2007-06-07T08:16:00.000+02:00</published><updated>2007-06-07T08:18:15.832+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>Using BPMN</title><content type='html'>&lt;p&gt;As an architect I often have to sketch the processes to see how everything goes together. Over the last year I been increasingly using &lt;a title="BPMN" href="http://www.bpmn.org/"&gt;BPMN&lt;/a&gt; to do this, either on paper or with Visio. Unfortunately there doesn't seem to be much out there in the way of books which explain how BPMN should be used . Instead, I use a couple of tutorials written by Stephen White from IBM. Those with patience can use the &lt;a title="textual" href="http://www.bpmn.org/Documents/Introduction%20to%20BPMN.pdf"&gt;textual&lt;/a&gt; version, for the impatient the &lt;a title="slide show" href="http://www.bpmn.org/Documents/OMG%20BPMN%20Tutorial.pdf"&gt;slide show&lt;/a&gt; is the best. &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;As to sketching processes in Visio a number of stencils (with various levels of completeness and features) are available on the &lt;a title="bpmn.org" href="http://www.bpmn.org/documents.htm"&gt;bpmn.org&lt;/a&gt; site. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-4085004904949007555?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/4085004904949007555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=4085004904949007555' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/4085004904949007555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/4085004904949007555'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2007/06/as-architect-i-often-have-to-sketch.html' title='Using BPMN'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-6486347276977459421</id><published>2007-02-17T15:48:00.000+01:00</published><updated>2007-02-17T15:52:14.442+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ria'/><title type='text'>Developing rich internet apps - what to use</title><content type='html'>A quick round up of what seem to be the current major development libraries and/or environments for developing RIAs.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" title="Flash" href="http://www.adobe.com/devnet/flash/"&gt;Flash&lt;/a&gt; is the well-known browser plug-in from Adobe as well as the development platform. Adobe have also announced in the mean time - but not released - &lt;a title="Apollo" href="http://labs.adobe.com/wiki/index.php/Apollo"&gt;Apollo&lt;/a&gt; as a cross platform run-time that handles Flash, Flex, PDF, plain HTML or Ajax based user interface. Effectively a type of universal client instead of the browser.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" title="DoJo" href="http://dojotoolkit.org/"&gt;DoJo&lt;/a&gt; is an open source javascript library. As well as the usual UI components, one feature I find interesting are components to store data on the local drive. I first saw this feature used in &lt;a title="TiddlyWiki" href="http://www.tiddlywiki.com/"&gt;TiddlyWiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" title="script.aculo.us" href="http://script.aculo.us/"&gt;script.aculo.us&lt;/a&gt; is also a javascript library. It is based on the &lt;a style="font-weight: bold;" title="Prototype" href="http://prototypejs.org/"&gt;Prototype&lt;/a&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;javascript library.  &lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" title="Google Web Toolkit" href="http://code.google.com/webtoolkit/"&gt;Google Web Toolkit&lt;/a&gt;&lt;span style="font-weight: bold;"&gt; (GWT)&lt;/span&gt;. The GWT lets developers write code in Java which is then converted to JavaScript apparently apparently freeing the developer for learning JavaScript (Java developers are assumed here, not a bad assumption for most enterprise development work). This has been nicely written up in a IBM developer world &lt;a title="article" href="http://www-128.ibm.com/developerworks/library/j-ajax4/index.html?ca=dgr-jw22GWT4Ajax"&gt;article&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Are there any more?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-6486347276977459421?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/6486347276977459421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=6486347276977459421' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/6486347276977459421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/6486347276977459421'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2007/02/developing-rich-internet-apps-what-to.html' title='Developing rich internet apps - what to use'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-3350953233494939282</id><published>2007-02-14T17:24:00.001+01:00</published><updated>2007-06-07T08:44:44.577+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>Loosely coupled interfaces</title><content type='html'>I &lt;a title="posted" href="http://andrewdoble.blogspot.com/2007/01/in-his-comment-on-my-last-post-steve.html"&gt;posted&lt;/a&gt; a short while back an entry about designing generic service interfaces. By chance I happened to come across this (rather old) blog &lt;a title="entry" href="http://www.manageability.org/blog/stuff/the-restfulness-of-speech-acts/view"&gt;entry&lt;/a&gt; by Carlos E. Perez in which he proposes extending &lt;a title="speech acts" href="http://en.wikipedia.org/wiki/Speech_acts"&gt;speech acts&lt;/a&gt; to define loosely couple interfaces. He bases it on a &lt;a title="paper" href="http://www.dsv.su.se/~prasad/Publications/WorkInProgress20021129BP2.pdf"&gt;paper&lt;/a&gt; by researchers at Stockholm University in which they try to provide a universal framework for human communication in an economic domain, i.e. the business world (the paper is still marked as work-in-progress, so I guess it hasn't been peer reviewed). To do this they use a a triple:&lt;br /&gt;&lt;br /&gt;&lt;div style="MARGIN-LEFT: 40px"&gt;(intention, action, object).&lt;br /&gt;&lt;intention,&gt;&lt;br /&gt;&lt;/INTENTION,&gt;&lt;/div&gt;The values each element can take on are:&lt;br /&gt;&lt;br /&gt;&lt;table class="zeroBorder" style="WIDTH: 265px; HEIGHT: 194px" cellspacing="0" cellpadding="3" bgcolor="#ffffff" border="0" classname="zeroBorder"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="COLOR: rgb(255,255,255); TEXT-ALIGN: left" width="50%" bg=""&gt;&lt;span style="FONT-WEIGHT: bold;color:#000000;" &gt;Intention&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="TEXT-ALIGN: left" width="50%"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Action&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;&lt;div style="MARGIN-LEFT: 40px"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top" width="50%" bgcolor="#ffffff"&gt;propose &lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;create&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top" width="50%" bgcolor="#ffffff"&gt;accept&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;change&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top" width="50%" bgcolor="#ffffff"&gt;reject&lt;br /&gt;&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;cancel&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top" width="50%" bgcolor="#ffffff"&gt;declare&lt;br /&gt;&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;none&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top" width="50%" bgcolor="#ffffff"&gt;query&lt;br /&gt;&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td width="50%" bgcolor="#ffffff"&gt;reply&lt;br /&gt;&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td width="50%"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#cccccc"&gt;&lt;td style="VERTICAL-ALIGN: top" bgcolor="#ffffff"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td width="50%" bgcolor="#ffffff"&gt;assert&lt;/td&gt;&lt;td style="VERTICAL-ALIGN: top" bgcolor="#ffffff"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td width="50%" bgcolor="#ffffff"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;So, to create a new customer record the triple could be:&lt;br /&gt;&lt;br /&gt;&lt;div style="MARGIN-LEFT: 40px"&gt;(propose, create, aCustomer)&lt;/div&gt;&lt;br /&gt;the service could then return with:&lt;br /&gt;&lt;br /&gt;&lt;div style="MARGIN-LEFT: 40px"&gt;(accept, create, aCustomer)&lt;br /&gt;&lt;accept,&gt;&lt;br /&gt;&lt;/ACCEPT,&gt;&lt;/div&gt;or, in the case of an error could return:&lt;br /&gt;&lt;div style="MARGIN-LEFT: 40px"&gt;&lt;br /&gt;(reject, create, aCustomer)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;You can have a lot of fun thinking up new combinations. One thing to notice is that services themselves don't seem to have names. Instead, one could envision a dispatcher which takes each received triple and then finds the correct service implementation.&lt;br /&gt;&lt;br /&gt;If this would work out in practice, I do not know. But it seems to aid support to my argument that the REST vs SOAP debate is about which technology should be used, and not about designing interfaces to achieve loosely coupled services. How to achieve this should be the real debate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-3350953233494939282?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/3350953233494939282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=3350953233494939282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/3350953233494939282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/3350953233494939282'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2007/02/loosely-coupled-interfaces.html' title='Loosely coupled interfaces'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-6525288579728039713</id><published>2007-02-13T20:32:00.000+01:00</published><updated>2007-02-10T20:47:12.533+01:00</updated><title type='text'>Quantum Computers</title><content type='html'>&lt;a href="http://www.dwavesys.com/index.php?mact=News,cntnt01,detail,0&amp;cntnt01articleid=4&amp;amp;cntnt01origid=15&amp;amp;cntnt01returnid=21"&gt;Really?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-6525288579728039713?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/6525288579728039713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=6525288579728039713' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/6525288579728039713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/6525288579728039713'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2007/02/quantum-computers.html' title='Quantum Computers'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-5361938018624446514</id><published>2007-02-09T15:55:00.000+01:00</published><updated>2007-02-09T16:02:45.620+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Application Platform'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>The next n-tier architecture</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_i2sygfx7nU8/RcyMrXGxfMI/AAAAAAAAAAU/7N0gFyvQjlw/s1600-h/Data+Pool+Architecture.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp0.blogger.com/_i2sygfx7nU8/RcyMrXGxfMI/AAAAAAAAAAU/7N0gFyvQjlw/s320/Data+Pool+Architecture.png" alt="" id="BLOGGER_PHOTO_ID_5029549560430689474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It seems that the now traditional three tier architecture may well be slowly coming to an end. For specialised high performance applications, the bottlenecks between the tiers have already been pushing developers in this area to turn to specialised data caching platforms such as &lt;a title="Tangosol" href="http://www.tangosol.com/"&gt;&lt;span class="misspell" suggestions="Tango sol,Tango-sol,Tangos,Tango's,Tangelo"&gt;Tangosol&lt;/span&gt;&lt;/a&gt;, or to unified application platforms such as &lt;a title="Intersystems Ensemble" href="http://www.intersystems.com/ensemble/"&gt;&lt;span class="misspell" suggestions="Inter systems,Inter-systems"&gt;Intersystems&lt;/span&gt; Ensemble&lt;/a&gt;. In the data caching area the architecture seems to be consolidating to a cached data pool which is accessible from many machines in a cluster. This trend is now being followed by vendors of "traditional" application servers such as &lt;a title="BEA" href="http://dev2dev.bea.com/2006/01/ALDSP_Data_Cache_Tech_Note.pdf"&gt;BEA&lt;/a&gt; and &lt;a title="IBM," href="http://www-1.ibm.com/support/docview.wss?uid=swg27006432"&gt;IBM.&lt;/a&gt; For &lt;span class="misspell" suggestions="Sosa,SO As,SO-As,Soars,SOS"&gt;SOAs&lt;/span&gt; this has the advantage that each service accesses the same data in the data pool, rather than having to aggregate data from different data sources (see diagram). The application platform deals with all the hard problems of data caching such as data consistency, cache actualization etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Not so long ago I saw a presentation from &lt;a title="GigaSpaces" href="http://www.gigaspaces.com/"&gt;&lt;span class="misspell" suggestions="Backspaces,Crosspieces,Crosspiece's,Exposes"&gt;GigaSpaces&lt;/span&gt;&lt;/a&gt; who also provided a cached data pool. What is interesting about the product architecture is that they have revived the old, and hardly adopted, &lt;a title="JavaSpaces" href="http://java.sun.com/developer/products/jini/index.jsp"&gt;&lt;span class="misspell" suggestions="Java Spaces,Java-Spaces,Crosspieces,Crosspiece's"&gt;JavaSpaces&lt;/span&gt;&lt;/a&gt; concept.  The data pool (or space) is a  set of Java objects which are effectively in a shared memory accessable from each machine in a cluster. Each object can be accessed by providing a "template" which matches the contents of the objects and returns one of more of the matching objects. Templates can also be set as triggers, so that creation of new objects with particular data characteristics can notify another Java object.  If you're still interested, a good tutorial on Java Spaces can be found &lt;a title="here" href="http://www.javaworld.com/javaworld/jw-11-1999/jw-11-jiniology.html?page=1"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-5361938018624446514?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/5361938018624446514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=5361938018624446514' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/5361938018624446514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/5361938018624446514'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2007/02/next-n-tier-architecture.html' title='The next n-tier architecture'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_i2sygfx7nU8/RcyMrXGxfMI/AAAAAAAAAAU/7N0gFyvQjlw/s72-c/Data+Pool+Architecture.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-6287538297626056785</id><published>2007-02-08T19:34:00.000+01:00</published><updated>2007-02-08T19:37:06.165+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Web2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='SaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='Amazon'/><category scheme='http://www.blogger.com/atom/ns#' term='WebService'/><title type='text'>Building Virtual SOAs</title><content type='html'>Doug Kaye has &lt;a title="written" href="http://www.blogarithms.com/index.php/archives/2007/02/03/amazon-for-infrastructure-on-demand/"&gt;written&lt;/a&gt; about how he used Amazon web services to build the infrastructure for his application, i.e.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;elastic compute cloud to run the apps&lt;/li&gt;&lt;li&gt;simple storage services to store the content&lt;br /&gt;&lt;/li&gt;&lt;li&gt;simple queue services to connect the apps. &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;And talking about building applications,&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;a title="Coghead" href="http://www.coghead.com/"&gt;Coghead&lt;/a&gt; (which has recently gone into limited beta) lets users define screens which can trigger user defined orchestration processes and data mappings. Just about what every ESB/EAI/SOA tool can do except that this uses a &lt;a title="SaaS" href="http://en.wikipedia.org/wiki/Software_as_a_Service"&gt;SaaS&lt;/a&gt; model.&lt;br /&gt;&lt;br /&gt;Using these tools, what stops you defining a "virtual" SOA, in which the Coghead defined UI triggers the orchestration which calls up web services implemented using the Amazon virtual infrastructure?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-6287538297626056785?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/6287538297626056785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=6287538297626056785' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/6287538297626056785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/6287538297626056785'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2007/02/building-virtual-soas.html' title='Building Virtual SOAs'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-6570482181188892158</id><published>2007-01-13T17:26:00.000+01:00</published><updated>2007-01-13T17:30:01.759+01:00</updated><title type='text'>On Generic Interfaces</title><content type='html'>&lt;p class="MsoNormal"&gt;   In his comment on my last &lt;a title="post" href="http://andrewdoble.blogspot.com/2007/01/it-seems-that-google-have-decided-to.html"&gt;post&lt;/a&gt;  , &lt;a title="Steve Vinoski" href="http://www.iona.com/hyplan/vinoski/"&gt;Steve Vinoski&lt;/a&gt;  warns against getting into “pseudo-religious technical debates like "REST vs. SOAP”. I agree. &lt;/p&gt; &lt;p class="MsoNormal"&gt;   However, for an enterprise architect implementing (or planning to implement) an SOA, the decision still has to be made as to what technology should be used – a decision which could have a considerable influence on the costs and success of any SOA initiative. Such a decision needs to be based on arguments which corporate management understands, rather than hearsay about what apparently works or does not.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;   The difficulty in making such architectural decisions is not on seeing what simply works. SOAP works, so does REST. Way back in the mists of time (i.e 1999) I worked on a project which used a REST style of communication between the client (an applet - remember those) and the server. I made the decision to use a simple HTTP interface as no other alternative existed then (according to &lt;a href="http://webservices.xml.com/pub/a/ws/2001/04/04/soap.html" title="Don Box"&gt;Don Box&lt;/a&gt;, the SOAP spec only shipped in 4Q1999). It actually worked surprisingly well (and is still working to this day). REST can work in an enterprise environment.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;   The problems start when we come to architecture in the large. In large architectures other factors come into play, such as how to manage the interfaces in the face of changing requirements. As Steve mentions in his &lt;a href="http://dsonline.computer.org/portal/site/dsonline/menuitem.9ed3d9924aeb0dcd82ccc6716bbe36ec/index.jsp?&amp;pName=dso_level1&amp;amp;path=dsonline/2007/01&amp;file=w1tow.xml&amp;amp;xsl=article.xsl&amp;amp;;jsessionid=FlbQpMNw28ph4QMX3mwvGzz8TWqm2gDJTpTpr1dn17tj5PmLRV2w%211131093901" title="article"&gt;article&lt;/a&gt; "... some of the architects and developers I know who work on large SOA systems ... figured out the uniform interface constraint on their own, without ever hearing of REST".  Developing generic interfaces does help, but how generic does an interface need to be?&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;In the REST model the generic interface supports the four interaction verbs described in the HTTP spec, i.e. GET, POST (equivalent to create), PUT (equivalent to update) and DELETE. However, taking one extreme it is possible to reduce POST, PUT and DELETE to one verb - MAINTAIN - and split the data payload into a before image (BI) and an after image (AI). Specifying the BI and leaving the AI empty is equivalent to a DELETE. Specifying the AI and leaving the BI empty acts like a create. Specifying both is an update, with the advantage that the system can check if the data has changed in the meantime by looking at the BI. Apart from database interfaces I haven't seen anything written about this technique in creating SOAs. I have, however, seen one system which implemented it in a web service context and with SOAP.&lt;br /&gt;&lt;br /&gt;As the above example shows, you can still provide generic interfaces with the SOAP/WSDL combination as well as with REST. It seems to me that the SOAP vs. REST debate is arguing about the wrong things. It should about how to design interfaces rather than the technology used for their implementation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-6570482181188892158?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/6570482181188892158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=6570482181188892158' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/6570482181188892158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/6570482181188892158'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2007/01/in-his-comment-on-my-last-post-steve.html' title='On Generic Interfaces'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-583487715962840664</id><published>2007-01-10T18:32:00.000+01:00</published><updated>2007-01-10T18:32:47.212+01:00</updated><title type='text'>REST vs. SOAP Reloaded</title><content type='html'>It seems that Google have decided to &lt;a href="http://www.infoq.com/news/2006/12/google-search-api-gone" title="drop"&gt;drop&lt;/a&gt; its SOAP interface in favour of a REST style interface. This again raises the REST vs. SOAP debate. I was therefore interested in reading this &lt;a href="http://dsonline.computer.org/portal/site/dsonline/menuitem.9ed3d9924aeb0dcd82ccc6716bbe36ec/index.jsp?&amp;pName=dso_level1&amp;amp;path=dsonline/2007/01&amp;file=w1tow.xml&amp;amp;xsl=article.xsl&amp;amp;;jsessionid=FlbQpMNw28ph4QMX3mwvGzz8TWqm2gDJTpTpr1dn17tj5PmLRV2w%211131093901" title="Article in IEEE Distributed Systems Online"&gt;article&lt;/a&gt; from Steve Vinoski  &lt;span class="highlight"&gt;of &lt;/span&gt;&lt;a href="http://www.iona.com/" title="IONA"&gt;IONA&lt;/a&gt; Technologies. Although he tries to  "explain REST from the viewpoint of someone steeped in SOA..." I had the sneaking feeling that he came down on the side of REST, which is even more surprising when you realise that IONA was one of the original exponents of CORBA and has been heavily pushing SOAP over the past years.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-583487715962840664?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/583487715962840664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=583487715962840664' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/583487715962840664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/583487715962840664'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2007/01/it-seems-that-google-have-decided-to.html' title='REST vs. SOAP Reloaded'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-116618648161062544</id><published>2006-12-15T13:41:00.000+01:00</published><updated>2006-12-15T13:48:59.520+01:00</updated><title type='text'>Where are the composite app standards?</title><content type='html'>In reading about composite applications, I was surprised to see how little work in terms of open source and open standards is being done in this area. I found the following standards:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a title="XForms" href="http://www.w3.org/MarkUp/Forms/"&gt;XForms&lt;/a&gt;  for web based forms&lt;/li&gt;&lt;li&gt;&lt;a title="BPEL" href="http://www-128.ibm.com/developerworks/library/specification/ws-bpel/"&gt;BPEL&lt;/a&gt;  for orchestration&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="WS-CAF" href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ws-caf"&gt;WS-CAF&lt;/a&gt;  from OASIS has only released one part of 3 planned standards.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;and of course the whole raft of web services standards&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Missing are standards for:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Screen flow, i.e. controlling the order of screens presented to the user.&lt;/li&gt;&lt;li&gt;Work flow in terms of transferring work between people (the so called BPEL4People standard has yet to be published and maybe is not what we want.&lt;/li&gt;&lt;li&gt;Screen layout.&lt;/li&gt;&lt;li&gt;Packing all the bits of a composite app together so that it can be shipped (similar to web apps today).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;All this is available in propriety products, which makes me surprised to find that nobody is working on standards in this area and even more surprised that nobody is working on an open source version of a composite application framework.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-116618648161062544?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/116618648161062544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=116618648161062544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/116618648161062544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/116618648161062544'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2006/12/where-are-composite-app-standards.html' title='Where are the composite app standards?'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-116591794374746279</id><published>2006-12-12T11:05:00.000+01:00</published><updated>2006-12-12T11:08:13.253+01:00</updated><title type='text'>Will the real composite app please stand up</title><content type='html'>In trying to get to grips with what is meant by a composite application I came across this blog &lt;a title="entry" href="http://www-03.ibm.com/developerworks/blogs/page/CompApps?entry=composite_applications_defined"&gt;entry&lt;/a&gt;  from Jeff Calow of IBM. He writes that &lt;a title="the" href="http://looselycoupled.com/glossary/composite%20application"&gt;the&lt;/a&gt;  &lt;a title="usual" href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ws-caf"&gt;usual&lt;/a&gt;  &lt;a title="definitions" href="http://en.wikipedia.org/wiki/Composite_application"&gt;definitions&lt;/a&gt;  of composite applications all deal with automation, but then asks about the user interface aspects. I would like to extend this and assert that a composite application consists of three optional aspects:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A user interface which brings together in one place everything the user needs to carry out a task. This could be a portal or a scripted front end as found in many &lt;a title="mashups" href="http://www.programmableweb.com/matrix"&gt;mashups&lt;/a&gt;  . Rich clients are another possibility.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A business process execution environment that not only handles the automation of processes, but also deals with user centric aspects such as workflow and screenflow.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;An integration infrastructure that allows data to be transformed from one format to another.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;IMHO any self respecting composite application framework should support all three aspects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-116591794374746279?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/116591794374746279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=116591794374746279' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/116591794374746279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/116591794374746279'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2006/12/will-real-composite-app-please-stand.html' title='Will the real composite app please stand up'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-116333164605207847</id><published>2006-11-12T12:40:00.000+01:00</published><updated>2006-11-12T13:03:41.640+01:00</updated><title type='text'>More on BPM and OO</title><content type='html'>&lt;p class="MsoNormal"&gt;  &lt;/p&gt;&lt;p class="MsoNormal"&gt;Keith Harrison-Broninski starts to ask in his &lt;a title="blog" href="http://www.ebizq.net/topics/bpm/features/7410.html"&gt;blog&lt;/a&gt; why process modelling is based on a series of activities rather than business objects. He believes that we need an additional object based modelling layer for high level objects and their interactions. &lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  I’ve tried to show in a previous &lt;a title="post" href="http://andrewdoble.blogspot.com/2006/03/what-is-difference-between-oo-and-bpm.html"&gt;post&lt;/a&gt;  that BPM and object orientation are, at a deep level, conceptually similar. Rather than yet another layer which represents yet another set of concepts, we really need a unified model which lets modellers (and the underlying software) do what the business wants without having to constantly bamboozle them with different representations.&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-GB"&gt; &lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-116333164605207847?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/116333164605207847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=116333164605207847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/116333164605207847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/116333164605207847'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2006/11/more-on-bpm-and-oo.html' title='More on BPM and OO'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-115970262382706865</id><published>2006-10-01T13:31:00.000+02:00</published><updated>2006-11-16T17:28:51.050+01:00</updated><title type='text'>Reuse and SOA</title><content type='html'>&lt;p&gt;&lt;span style="" lang="EN-GB"&gt;In the last week I have heard and &lt;a href="http://www.davidchappell.com/HTML_email/Opinari_No16_8_06.html#article2"&gt;read &lt;/a&gt;the usual lament that software reuse is hard and has been a dismal failure. As many claim that the main value preposition for SOA is based on reuse, the argument is that it also will be a dismal failure. &lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="" lang="EN-GB"&gt;&lt;p&gt;&lt;/p&gt;Here I have to take a heretical POV and contend that software reuse is maybe hard, but that it exists, has been an enormous success and forms the mainstay of software development today. &lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="" lang="EN-GB"&gt;&lt;p&gt;&lt;/p&gt;Let’s look at UIs. Nobody would develop a UI today without a set of reusable components. What about basic programming. One only needs to look at how rich and extensive the J2EE or .NET class libraries are and how much their (re)use is part of standard software development practices is to see that reusability is the norm rather than the exception. &lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="" lang="EN-GB"&gt;&lt;p&gt;&lt;/p&gt;But what about the bit in the middle, the so called business logic? The enormous success of ERP companies such as &lt;a href="http://www.sap.com/index.epx"&gt;SAP &lt;/a&gt;is surely adequate proof that reusable business logic is a reality. &lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="" lang="EN-GB"&gt;&lt;p&gt;&lt;/p&gt;The only thing that stands out here is that reusable components are not developed in-house by IT-Shops (as David Chappell pointed out when he asked about in-house reuse programs), but are developed by vendors who: &lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="" lang="EN-GB"&gt;a) invest heavily into their products and &lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="" lang="EN-GB"&gt;b) have an industry wide view point instead of a restricted company view point. &lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="" lang="EN-GB"&gt;&lt;p&gt;&lt;/p&gt;Perhaps this is clear indicator to where we can expect the majority of reusable business services to come from. &lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-115970262382706865?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/115970262382706865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=115970262382706865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/115970262382706865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/115970262382706865'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2006/10/reuse-and-soa.html' title='Reuse and SOA'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-114407748985734287</id><published>2006-06-10T02:12:00.000+02:00</published><updated>2006-11-16T17:40:13.950+01:00</updated><title type='text'>Difference between OO and BPM Part II - Inheritance</title><content type='html'>&lt;span&gt;I tried to show in a previous &lt;a href="http://andrewdoble.blogspot.com/2006/03/what-is-difference-between-oo-and-bpm.html"&gt;post &lt;/a&gt;that the difference between the brave new world of BPM and the old traditional world of object orientation is really not so different. I left off wondering about inheritance and how that manifests itself in the BPM world.&lt;/span&gt;        &lt;p&gt;&lt;span&gt;&lt;p&gt; &lt;/p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;Now every OO programmer knows what inheritance is. Or do they? It seems that inheritance is a slippery concept. Way back in 1996, Bertrand Meyer (the inventor of Eiffel) published an &lt;a href="http://csdl2.computer.org/persagen/DLAbsToc.jsp?resourcePath=/dl/mags/co/&amp;toc=comp/mags/co/1996/05/r5toc.xml&amp;amp;DOI=10.1109/2.494093"&gt;article &lt;/a&gt;in IEEE Computer in which he listed 12 different types of inheritance. It's no wonder that the usual advice given to an OO developer is to keep the inheritance hierarchy shallow – if you don’t, you’ll get swallowed up in the complexity.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Judging by the amount of academic papers written on this theme, it seems that process inheritance is also a complex topic. One which caught my eye, was a &lt;a href="http://blrc.edu.cn/blrcweb/publication/gxy2.pdf"&gt;paper &lt;/a&gt;by &lt;span&gt;Guangxin Yang as part of his Ph.D.. In it, he models process as a set of activities, each of which can trigger events which, in turn, cause messages to flow to other activities. In this way he can allow inherited processes to add new activities, add events, enable/disable triggers and also to change the semantics of the activities so they fit more closely to the business requirements.&lt;/span&gt; Although these seem to be powerful ideas, Yang’s paper doesn’t seem to have attracted much attention, only getting &lt;a href="http://scholar.google.de/scholar?hl=en&amp;lr=&amp;amp;cluster=7870645478728988739"&gt;2 citations&lt;/a&gt; according to Google Scholar.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;So far, process inheritance does not seem to have reached commercial products, although this would seem to be a very useful feature to have. For instance, a typical business process could be defined and customer specific extensions could then be made to the inherited process in the same way that specific features are added to inherited classes in the OO paradigm. Some readers may recognise this. It is how most ERP systems are implemented today, only the “inheritance” mechanism is implemented by programming user exits and/or adding new customer build activities. The disadvantage here is that these changes are specific and propriety to the ERP system being implemented. If we want to implement processes over a heterogeneous environment (i.e. a lot of different applications or over the web) then inheriting from a process running in an external process engine would be an obvious solution. And with the rise of web services, composite apps a.k.a mashups, it wouldn’t surprise me if we start to see inheritance mechanisms creeping into the feature sets of process engine vendors.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-114407748985734287?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/114407748985734287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=114407748985734287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/114407748985734287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/114407748985734287'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2006/06/difference-between-oo-and-bpm-part-ii.html' title='Difference between OO and BPM Part II - Inheritance'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-113947705599157018</id><published>2006-05-27T08:42:00.000+02:00</published><updated>2006-05-27T09:48:02.080+02:00</updated><title type='text'>Speeding up SOAP requests in a SOA</title><content type='html'>In a previous &lt;a href="http://andrewdoble.blogspot.com/2005/01/fast-xml.html#links"&gt;post&lt;/a&gt; I mentioned how efforts are under way to inprove the speed of XML processing. Another approach is taken in this &lt;a href="http://www-128.ibm.com/developerworks/java/library/x-accsoa/index.html?ca=drs-"&gt;article &lt;/a&gt;I came across in which the author shows how SOAP requests in a SOA can be cached in a middle tier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-113947705599157018?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/113947705599157018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=113947705599157018' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/113947705599157018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/113947705599157018'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2006/05/speeding-up-soap-requests-in-soa.html' title='Speeding up SOAP requests in a SOA'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-114854537495734162</id><published>2006-05-25T10:15:00.001+02:00</published><updated>2010-01-21T20:49:57.113+01:00</updated><title type='text'>My very own homepage</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-GB"&gt;I finally got around to creating my own &lt;a href="http://www.andrew-doble.homepage.t-online.de/"&gt;home page&lt;/a&gt;. It is extremely simplistic, but still does not reach the minimalist heights demonstrated by this &lt;a href="http://www.caa.com/"&gt;web site&lt;/a&gt;. &lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="" lang="EN-GB"&gt;I was keen to write the HTML by hand, so I have been using &lt;a href="http://selfhtml.org/#en"&gt;SelfHTML &lt;/a&gt;which is an excellent web based and downloadable guide to HTML. An English version doesn’t exist as yet, but they’re looking for volunteers to do the translation.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="" lang="EN-GB"&gt;Update: Reread this old blog post and clicked on the minimalist web page link (actually from Creative Artists Agency). Previously this was was just the equivalent of a business card - company name and contact details. It's now been updated with a more dynamic javascript enabled interface. Only it doesn't do much more than before.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="" lang="EN-GB"&gt;I guess their message is very simple - You have to talk to us.&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-114854537495734162?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/114854537495734162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=114854537495734162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/114854537495734162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/114854537495734162'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2006/05/my-very-own-homepage.html' title='My very own homepage'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-114218411510106825</id><published>2006-03-12T18:15:00.001+01:00</published><updated>2010-07-14T13:12:49.245+02:00</updated><title type='text'>What is the difference between OO and BPM?</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;The answer is … none!&lt;p&gt;&lt;/p&gt;     &lt;p&gt;I know that this is a heretical viewpoint, BPM (and in particular the use of a process engine or BPMS) being regarded as the next great step. I’m not disputing that, I just saying that at a fundamental level OO and BPM are just the same. &lt;/p&gt;     &lt;p&gt;To justify my viewpoint lets take at look at what was regarded as OO when people were first thinking about it (Xerox PARC and all that). Objects were considered as things which had the following properties:&lt;br /&gt;&lt;/p&gt; &lt;ol&gt;   &lt;li&gt;Each object could receive messages and change their internal state accordingly.&lt;/li&gt;   &lt;li&gt;Each object could send messages to collaborating objects&lt;/li&gt;   &lt;li&gt;Many instances of an object could exist at the same time, each having their own state.Objects could inherit parts of their behavior from other objects.&lt;/li&gt; &lt;/ol&gt;                  &lt;p&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;It was a lovely idea, but over the years it just got more and more watered down due to limitations in how technology could support it, market forces and misunderstanding. Look at message transfer between objects. This became nothing more than a (synchronous) procedure call. Look at the idea of state. If more than one user is involved then our objects have to be “stateless” if we want to achieve anything like a decent response time.&lt;span style=""&gt;  &lt;/span&gt;Inheritance became something to treat very carefully if we want to avoid building brittle, difficult to change, programs. Over time, objects degenerated more and more into simple data objects and the functionality happened someplace else, in modules which had names such as “session beans”.&lt;br /&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;p&gt;What about BPM? The BPM paradigm talks about processes, and each process has the following properties:&lt;br /&gt;&lt;/p&gt;         &lt;div style="text-align: left;"&gt;&lt;ol&gt;   &lt;li&gt;A process can receive messages and change their internal state accordingly. For example, a user can fill in a credit application and sent this (as a message) to the credit acceptance process. The process changes its state to reflect that the credit application has been received.&lt;/li&gt;   &lt;li&gt;A process can send messages to collaborating processes. Continuing with the following example, the process now sends a message to another process, which checks the credit worthiness of the applicant.&lt;/li&gt;   &lt;li&gt;Many process instances can exists at the same time, each having their own state, e.g. different credit applications. &lt;/li&gt; &lt;/ol&gt; &lt;!--[endif]--&gt;&lt;/div&gt;            &lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;Replace process with object and you get the point. &lt;p&gt;&lt;/p&gt;     &lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;But, I hear you say, an important part of the OO paradigm is inheritance. Where is that in the BPM paradigm? Currently, the idea of process inheritance does seem to be getting much attention, but does that mean it that it is an idea without value? &lt;p&gt;&lt;/p&gt;     &lt;p&gt;&lt;/p&gt;&lt;p&gt;That is something that I’d like to explore in a later &lt;a href="http://andrewdoble.blogspot.com/2006/06/difference-between-oo-and-bpm-part-ii.html"&gt;entry&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-114218411510106825?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/114218411510106825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=114218411510106825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/114218411510106825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/114218411510106825'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2006/03/what-is-difference-between-oo-and-bpm.html' title='What is the difference between OO and BPM?'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-113810282267784183</id><published>2006-01-24T12:40:00.000+01:00</published><updated>2006-01-24T12:41:58.480+01:00</updated><title type='text'>AJAX goes mainstream</title><content type='html'>It seems that &lt;a href="http://www.adaptivepath.com/publications/essays/archives/000385.php"&gt;AJAX &lt;/a&gt;is finally making it to mainstream (in the sense that traditional IT is starting to see its potential). Integration product vendors are starting to provide tools - see, for instance, the &lt;a href="http://www.tibco.com/software/business_optimization/generalinterface.jsp"&gt;TIBCO General Interface&lt;/a&gt; - and even Microsoft are getting into the act with the &lt;a href="http://weblogs.asp.net/scottgu/archive/2005/06/28/416185.aspx"&gt;Atlas &lt;/a&gt;project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-113810282267784183?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/113810282267784183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=113810282267784183' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/113810282267784183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/113810282267784183'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2006/01/ajax-goes-mainstream.html' title='AJAX goes mainstream'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-113767929806956601</id><published>2006-01-19T14:54:00.000+01:00</published><updated>2006-01-24T16:12:43.600+01:00</updated><title type='text'>Design Pattern Books</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;After a long hiatus due to project and personal commitments, I thought I should start posting here again.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;     &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;I was asked today, do I know any good books on patterns. So, for future reference, here is my list, stating off with the classic:&lt;/span&gt;&lt;b&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;     &lt;p class="MsoNormal"&gt;&lt;b&gt;Design Patterns: Elements of Reusable Object-Oriented Software&lt;/b&gt;&lt;span style=""&gt; (Addison-Wesley Professional Computing Series)&lt;br /&gt;by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;       &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;Patterns of &lt;/b&gt;&lt;st1:city&gt;&lt;st1:place&gt;&lt;b style=""&gt;Enterprise&lt;/b&gt;&lt;/st1:place&gt;&lt;/st1:city&gt;&lt;b style=""&gt; Application Architecture&lt;/b&gt;&lt;br /&gt;by Martin Fowler &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;       &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;st1:city&gt;&lt;st1:place&gt;&lt;b style=""&gt;Enterprise&lt;/b&gt;&lt;/st1:place&gt;&lt;/st1:city&gt;&lt;b style=""&gt; Integration Patterns : Designing, Building, and Deploying Messaging Solutions&lt;/b&gt;&lt;br /&gt;by Gregor Hohpe, Bobby Woolf &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;       &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;b style=""&gt;Pattern-Oriented Software Architecture, Volume 1: A System of Patterns&lt;/b&gt;&lt;br /&gt;by Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal, Peter Sommerlad, Michael Stal&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;       &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;b style=""&gt;Pattern-Oriented Software Architecture, Volume 2, Patterns for Concurrent and Networked Objects&lt;/b&gt;&lt;br /&gt;&lt;span style="" lang="DE"&gt;by Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;       &lt;p class="MsoNormal"&gt;&lt;span style="" lang="DE"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;b style=""&gt;Analysis Patterns : Reusable Object Models&lt;/b&gt; (Addison-Wesley Object Technology: Addison-Wesley Object Technology Series)&lt;br /&gt;by Martin Fowler&lt;/p&gt;     &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;span style=";font-family:Arial;font-size:10;color:black;"   &gt;&lt;a href="http://java.sun.com/blueprints/patterns/index.html"&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-113767929806956601?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/113767929806956601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=113767929806956601' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/113767929806956601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/113767929806956601'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2006/01/design-pattern-books.html' title='Design Pattern Books'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-112966366347835185</id><published>2005-10-18T21:11:00.000+02:00</published><updated>2005-10-22T13:45:23.816+02:00</updated><title type='text'>The lost BPM links</title><content type='html'>&lt;p&gt;Towards the end of last year I came across an entry for business process management in &lt;a href="http://www.wikipedia.org/"&gt;Wikipedia&lt;/a&gt;. It wasn’t very good so, in the true spirit of Wikipedia, I rewrote it and tried to get some structure in it. Since then it has evolved with many people each making different contributions, although the original structure seems to have remained. Although I do have a few gripes with the current version of the &lt;a href="http://en.wikipedia.org/wiki/Business_Process_Management"&gt;entry&lt;/a&gt;, I guess I have to bow to the fact that my POV is not necessarily the POV of everybody else.&lt;/p&gt;     &lt;p&gt;One section I added was a set of links to vendors currently offering BPM products. This has recently be removed by another Wikipedian with the comment that “it’s not a web directory”. Well, maybe. I have to admit that the section was troublesome in that everybody wanted to add their favorite vendor, even if their products had nothing to do with BPM. But I still found the section useful. However, rather than lamenting its demise, I have moved it here so what follows is the last link list from Wikipedia (edited to remove a number of spurious entries):&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.actiontech.com/" title="http://www.actiontech.com/"&gt;Action Technologies&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.adeptia.com/" title="http://www.adeptia.com/"&gt;Adeptia&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.boc-eu.com/" title="http://www.boc-eu.com/"&gt;ADONIS&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://incubator.apache.org/projects/agila/index.html" title="http://incubator.apache.org/projects/agila/index.html"&gt;Apache Agila&lt;/a&gt; (Open Source)  &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.appiancorp.com/" title="http://www.appiancorp.com"&gt;Appian Corporation&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://e-docs.bea.com/wli/docs70/interm/bpmhome.htm" title="http://e-docs.bea.com/wli/docs70/interm/bpmhome.htm"&gt;BEA&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.cordys.com/" title="http://www.cordys.com"&gt;Cordys&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.cosa.de/COSA_BPM.html" title="http://www.cosa.de/COSA BPM.html"&gt;COSA BPM&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.chordiant.com/" title="http://www.chordiant.com"&gt;Chordiant&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.documentum.com/" title="http://www.documentum.com"&gt;Documentum&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.dotcubes.com/" title="http://www.dotcubes.com"&gt;Workflow.Cubes&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.filenet.com/" title="http://www.filenet.com/"&gt;FileNet&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.flowcentric.net/" title="http://www.flowcentric.net/"&gt;FlowCentric&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.fuego.com/" title="http://www.fuego.com/"&gt;Fuego&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.fujitsu.com/global/services/software/interstage/products/bpm/" title="http://www.fujitsu.com/global/services/software/interstage/products/bpm/"&gt;Fujitsu&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.handysoft.com/" title="http://www.handysoft.com/"&gt;HandySoft&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www-306.ibm.com/software/integration/mqfamily/about/" title="http://www-306.ibm.com/software/integration/mqfamily/about/"&gt;IBM&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.ids-scheer.com/" title="http://www.ids-scheer.com/"&gt;IDS Scheer AG&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.intalio.com/" title="http://www.intalio.com/"&gt;Intalio&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://jbpm.org/" title="http://jbpm.org/"&gt;JBoss jBPM&lt;/a&gt;(Open Source)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.jcom1.com/" title="http://www.jcom1.com/"&gt;jCOM1&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.k2workflow.com/" title="http://www.k2workflow.com/"&gt;K2.net Enterprise Workflow&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.lombardisoftware.com/" title="http://www.lombardisoftware.com/"&gt;Lombardi&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.metastorm.com/" title="http://www.metastorm.com/"&gt;Metastorm&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/biztalk/" title="http://www.microsoft.com/biztalk/"&gt;Microsoft&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.newgen.net/" title="http://www.newgen.net/"&gt;Newgen Software&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.opentext.com/products/livelink/business-process-management-server/" title="http://www.opentext.com/products/livelink/business-process-management-server/"&gt;Open      Text&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.openwfe.org/" title="http://www.openwfe.org"&gt;OpenWFE&lt;/a&gt; (Open Source)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/solutions/integration/bpm.html" title="http://www.oracle.com/solutions/integration/bpm.html"&gt;Oracle&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.pegasystems.com/" title="http://www.pegasystems.com/"&gt;Pegasystems&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.pikos.net/englishweb/index1.htm" title="http://www.pikos.net/englishweb/index1.htm"&gt;Pikos' Bonapart&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.sap.com/solutions/netweaver/index.aspx" title="http://www.sap.com/solutions/netweaver/index.aspx"&gt;SAP NetWeaver&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.savvion.com/" title="http://www.savvion.com/"&gt;Savvion&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.seebeyond.com/" title="http://www.seebeyond.com/"&gt;Sun / SeeBeyond&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.skelta.com/" title="http://www.skelta.com/"&gt;Skelta Workflow Software&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.tibco.com/solutions/bpm.jsp" title="http://www.tibco.com/solutions/bpm.jsp"&gt;TIBCO&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.ultimus.com/products" title="http://www.ultimus.com/products"&gt;Ultimus&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://virtuoso.openlinksw.com/" title="http://virtuoso.openlinksw.com/"&gt;Virtuoso Universal Server&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.vitria.com/" title="http://www.vitria.com/"&gt;Vitria&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.webmethods.com/" title="http://www.webmethods.com/"&gt;webMethods&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;My criteria for selection are rather loose, basically that each vendor states on their web site that they support business process management rather than just supporting particular processes (such as CRM , SCM etc.). The list is, of course, incomplete.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-112966366347835185?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/112966366347835185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=112966366347835185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/112966366347835185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/112966366347835185'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/10/lost-bpm-links.html' title='The lost BPM links'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-112836657411223541</id><published>2005-10-03T21:05:00.000+02:00</published><updated>2005-10-03T21:09:34.120+02:00</updated><title type='text'>Rich Clients in a Browser - More about AJAX</title><content type='html'>I’ve been pretty busy over the last months (new project in another city) so this is my first post for a number of months.&lt;br /&gt;&lt;br /&gt;However, since posting about AJAX and rich clients back in March a lot seems to be happening in trying to ease the burden of providing rich client functionally in a browser, i.e. people are creating JavaScript libraries. The following caught my eye:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://script.aculo.us/"&gt;script.aculo.us&lt;/a&gt; has a JavaScript library for creating user interfaces elements and functionality, such as drag and drop and auto-completing text fields.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://openrico.org/rico/home.page"&gt;Rico &lt;/a&gt;who as well as offering a number of visual effects also has a data grid which allows a HTML table to be connected to a data source.&lt;br /&gt;&lt;br /&gt;Both of these are based on the &lt;a href="http://prototype.conio.net/"&gt;Prototype &lt;/a&gt;framework which is a JavaScript framework which claims “to ease the development of dynamic web applications” and has functionality to ease the handling of &lt;a href="http://www.xml.com/pub/a/2005/02/09/xml-http-request.html"&gt;XMLHttpRequest &lt;/a&gt;(one of the fundamental building blocks of AJAX).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-112836657411223541?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/112836657411223541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=112836657411223541' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/112836657411223541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/112836657411223541'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/10/rich-clients-in-browser-more-about.html' title='Rich Clients in a Browser - More about AJAX'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-111823408498170336</id><published>2005-06-08T14:34:00.000+02:00</published><updated>2005-06-08T14:36:36.593+02:00</updated><title type='text'>Virtual Enterprise and the SOA - What Reardon are doing</title><content type='html'>Another &lt;a href="http://www.infoworld.com/article/05/02/28/09FEtalaris_1.html?s=feature"&gt;InfoWorld article&lt;/a&gt; about &lt;a href="http://www.reardencommerce.com/"&gt;Rearden Commerce's &lt;/a&gt;plans. What's interesting is not only that they offer a set of business services, but also a platform which lets the end user assemble composite apps (including their own processes).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-111823408498170336?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/111823408498170336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=111823408498170336' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/111823408498170336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/111823408498170336'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/06/virtual-enterprise-and-soa-what.html' title='Virtual Enterprise and the SOA - What Reardon are doing'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-111486649757239632</id><published>2005-04-30T15:03:00.000+02:00</published><updated>2005-04-30T15:08:17.573+02:00</updated><title type='text'>Versioning Sevices - The last word?</title><content type='html'>My &lt;a href="http://www.sigs-datacom.de/sd/publications/pub_article_show.htm?&amp;AID=1575&amp;amp;TABLE=sd_article"&gt;article &lt;/a&gt;(written with my colleague Andreas Elting) on service versioning has been published in &lt;a href="http://www.sigs-datacom.de/sd/publications/os/index.htm"&gt;ObjektSpektrum&lt;/a&gt;, one of Germany’s leading technical magazines (the means of course that it’s in German!). As I have tried to show in this blog the idea of just using web services does NOT mean that the services and their consumers are fully decoupled from each other. Changes in the XML are unavoidable if the architecture has to adapt to changing business requirements, but these very changes can render a message unreadable for either the service provider of consumer. Service versioning is one way of managing this problem.&lt;br /&gt;&lt;br /&gt;Previous ruminations on this topic can be found &lt;a href="http://andrewdoble.blogspot.com/2005/02/versioning-service-ii.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-111486649757239632?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/111486649757239632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=111486649757239632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/111486649757239632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/111486649757239632'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/04/versioning-sevices-last-word.html' title='Versioning Sevices - The last word?'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-111125212997823145</id><published>2005-03-19T18:08:00.000+01:00</published><updated>2005-04-29T16:46:00.376+02:00</updated><title type='text'>Ajax - Rich Clients in a Browser</title><content type='html'>A lot of buzz is starting to develop around the Ajax architectural technique. Indeed, before giving up, I counted 200 links in &lt;a href="http://del.icio.us/tag/ajax"&gt;del.icio.us &lt;/a&gt;with Ajax as tag. This really is a buzz when you consider that the technique was only coined in February this year by Jesse James Garrett in &lt;a href="http://www.adaptivepath.com/publications/essays/archives/000385.php"&gt;an excellent article&lt;/a&gt;. As this describes Ajax so well, I’ll just try to condense it into two sentences: Ajax is about using the inherent rich client functionality of a standard browser to provide responsive user interfaces using standard web technologies. These are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Rendering with XHTML and CSS&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Client logic with Javascript and the document object model.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Communication using asynchronous calls to get XML data with &lt;a href="http://www.xml.com/pub/a/2005/02/09/xml-http-request.html"&gt;XMLHttpRequest&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Although the technique has just been given a name it seems &lt;a href="http://www.ajaxmatters.com/"&gt;quite a lot of UIs &lt;/a&gt;have already been produced which use this technique. Having a name though, allows people to say “yes, we’ve done that” or “yes we’re doing that”, in a manner similar to the naming of design patterns. Indeed I’m sure that some of &lt;a href="http://de.country.csc.com/de/"&gt;my colleagues &lt;/a&gt;who have produced rich UIs for various companies using JavaScript will say just that.&lt;br /&gt;&lt;br /&gt;Although the hype is just starting, I need to sound a note of caution. If the amount of JavaScript increases above a certain point, then the perceived performance of the UI can degrade significantly. This is mainly due to the load time of the page. Certain commercial products (who will remain nameless) that rely heavily on large quantities of JavaScript are hitting this problem. It’s nothing new, anybody who once tried to bring rich client functionality to the browser using &lt;a href="http://java.sun.com/applets/"&gt;Java Applets &lt;/a&gt;(remember those?) knows what I am talking about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-111125212997823145?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/111125212997823145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=111125212997823145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/111125212997823145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/111125212997823145'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/03/ajax-rich-clients-in-browser.html' title='Ajax - Rich Clients in a Browser'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-111029339494615872</id><published>2005-03-08T15:49:00.000+01:00</published><updated>2005-04-19T15:09:14.786+02:00</updated><title type='text'>More Services for the Virtual Enterprise</title><content type='html'>Two more hosted apps for the virtual enterprise:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.reardencommerce.com/0.0.php"&gt;Rearden Commerce&lt;/a&gt; - Employee Business Services. What Rearden are really doing is explained in this &lt;a href="http://www.infoworld.com/article/05/02/28/09FEtalaris_1.html"&gt;Infoworld article&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.jrgsystems.com/index.jsp"&gt;JRG&lt;/a&gt; - Supply Chain Planning.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;And an interesting &lt;a href="http://www.cio.com/blog_view.html?CID=2989"&gt;article &lt;/a&gt;in CIO Online.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-111029339494615872?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/111029339494615872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=111029339494615872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/111029339494615872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/111029339494615872'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/03/more-services-for-virtual-enterprise.html' title='More Services for the Virtual Enterprise'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-110959204341824508</id><published>2005-02-28T13:00:00.000+01:00</published><updated>2005-02-28T13:31:15.406+01:00</updated><title type='text'>Building a Virtual Enterprise IV</title><content type='html'>The following &lt;a href="http://informationweek.com/story/showArticle.jhtml?articleID=60401128"&gt;InformationWeek article &lt;/a&gt;describes how GrandCentral (mentioned before in this blog) have added a raft of new partners, each offering different business services. I've included the following quote from the article and linked the references:&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;In addition to &lt;/em&gt;&lt;a href="http://www.netsuite.com/"&gt;&lt;em&gt;NetSuite &lt;/em&gt;&lt;/a&gt;&lt;em&gt;and &lt;/em&gt;&lt;a href="http://www.nsite.com/"&gt;&lt;em&gt;NSite&lt;/em&gt;&lt;/a&gt; [note: NSite offer business automation services], &lt;em&gt;Grand Central's partners include &lt;/em&gt;&lt;a href="http://www.serviceobjects.com/"&gt;&lt;em&gt;ServiceObjects&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, a customer-data-validation service; &lt;/em&gt;&lt;a href="http://www.demandware.com/"&gt;&lt;em&gt;Demandware's &lt;/em&gt;&lt;/a&gt;&lt;em&gt;E-commerce system; &lt;/em&gt;&lt;a href="http://www.recruitforce.com/"&gt;&lt;em&gt;RecruitForce.com&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, an online system for managing job applicants and the application process; &lt;/em&gt;&lt;a href="http://www.spscommerce.com/"&gt;&lt;em&gt;SPS Commerce&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, an EDI hosting service; &lt;/em&gt;&lt;a href="http://www.strikeiron.com/"&gt;&lt;em&gt;StrikeIron&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, which provides tools to simplify publishing, finding, and utilizing Web services; and &lt;/em&gt;&lt;a href="http://www.xignite.com/"&gt;&lt;em&gt;Xignite&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, a supplier of online financial services components.&lt;br /&gt;Additional partners are: &lt;/em&gt;&lt;a href="http://w.moreover.com/"&gt;&lt;em&gt;Moreover Technologies&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, a supplier of online news service systems; &lt;/em&gt;&lt;a href="http://www.advanous.com/"&gt;&lt;em&gt;Advanous&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, a division of EnterBridge Technologies, supplier of an online distribution-management system; &lt;/em&gt;&lt;a href="http://www.expediteship.com/"&gt;&lt;em&gt;ExpediteBiz&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, an automated shipping-service supplier; &lt;/em&gt;&lt;a href="http://www.openair.com/"&gt;&lt;em&gt;OpenAir&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, an automated professional-services-management system; &lt;/em&gt;&lt;a href="http://www.intellibank.com"&gt;&lt;em&gt;Intellibank&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, an online relationship-management system; and &lt;/em&gt;&lt;a href="http://adx.com/"&gt;&lt;em&gt;Advanced Data Exchange&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, an online EDI document-exchange service."&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-110959204341824508?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/110959204341824508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=110959204341824508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110959204341824508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110959204341824508'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/02/building-virtual-enterprise-iv.html' title='Building a Virtual Enterprise IV'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-110864432295101484</id><published>2005-02-19T13:41:00.000+01:00</published><updated>2005-02-23T12:40:34.463+01:00</updated><title type='text'>Versioning Service II</title><content type='html'>In a previous &lt;a href="http://andrewdoble.blogspot.com/2005/01/versioning-services.html"&gt;blog&lt;/a&gt;, I started to explore the idea of how services could be versioned in a SOA. Although versioning the WSDL seemed to be an alternative for web services using SOAP the question remained on how to version services which use a queuing mechanism (e.g. with a JMS interface). If a service is invoked over a queue then the queue becomes synonymous with the service. All that has to happen is that new versions of a service are connected to new queues (appropriately named) . Old clients just stay connected to the old queues or are migrated to use the new services over the new queues. Seems easy, but I suspect that in a large system with many services it would be a nightmare to administer, especially as there is no lookup information for the queue. Indeed, this seems to depart from two of the main tenets of SOA, i.e. services are loosely coupled and that they can be discovered.&lt;br /&gt;&lt;br /&gt;However, having previously discussed that versioning is possible in web services, can web services be combined with a queuing system and the advantages of web service versioning kept? New standards in the web services space seem to point to a possible solution (as web service management vendors - such as &lt;a href="http://www.integrationconsortium.org/docs/member%20docs/systinet/MOM_WebServices.pdf"&gt;Systinet&lt;/a&gt; - are keen to point out). The basic architecture seems to look like this:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.andrew-doble.homepage.t-online.de/img/ws-mom-gateway-architecture.gif" /&gt;&lt;br /&gt;&lt;br /&gt;SOAP Messages are sent to a MOM gateway, which extracts the messages, finds the queue and sends the message (maybe using JMS if it’s a J2EE implemetation) to a service provider. Messages sent back from the service provider are picked up by the gateway and send as a SOAP response back to the consumer. All the issues concerned with message correlation etc. are handled by the MOM gateway.&lt;br /&gt;&lt;br /&gt;Not shown in this diagram is how to deal with an asynchronous style of communication. To solve this comes a small, and apparently unassuming, specification called &lt;a href="http://www-106.ibm.com/developerworks/library/ws-address.html"&gt;WS-Addressing&lt;/a&gt;. This provides a uniform way of supplying the endpoint of a web service within the SOAP message rather than just using a URL. Although it seems to add complexity, the standard ends up providing extra flexibility and may well be the answer to dealing with versioning of services, but more about that later. In the case of asynchronous messaging, WS-Addressing defines a "ReplyTo" SOAP header block and this could be the endpoint for the return message from the provider.&lt;br /&gt;&lt;br /&gt;I have, for the time being, ignored the handling of publish/subscribe mechanisms. Within an SOA one would typically also architect an eventing mechanism, e.g. to notify that a change has happened to some data. &lt;a href="http://www-128.ibm.com/developerworks/library/specification/ws-eventing/"&gt;WS-Eventing&lt;/a&gt; is maybe the right standard to use, but I not going into that now.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Having seen how to use web services with MOMs, lets get back to the versioning problem. In order to find the correct version of a web service an additional degree of layering is required. I’ve tried to show this in the following diagram:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.andrew-doble.homepage.t-online.de/img/version-resolution.gif" /&gt;&lt;br /&gt;&lt;br /&gt;Now the usual parole is to say that the namespaces of the XML messages are versioned and that the version resolution layer checks the name space and directs the message to appropriate service. However, WS-Addressing offers another possibility. Instead of specifying the endpoint of the service provider the corresponding endpoint of the version resolution system is specified plus versioning information. Based on this, the version resolution finds the correct endpoint, modifies the endpoint in the WS-Addressing part of the SOAP header and directs the message to this.&lt;br /&gt;&lt;br /&gt;Nobody seems to be actually offering anything in this area, although application platform vendors such as &lt;a href="http://www.bea.com"&gt;BEA&lt;/a&gt; seem to be active in terms of XML versioning, but if they are going to use WS-Addressing in their products to implement versioning , remains open. Web services management vendors such as &lt;a href="http://www.amberpoint.com/solutions/foundation.shtml"&gt;AmberPoint &lt;/a&gt;, also seem to offer support for service versioning with their products, although how far this goes and if it is based on open standards is unclear.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-110864432295101484?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/110864432295101484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=110864432295101484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110864432295101484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110864432295101484'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/02/versioning-service-ii.html' title='Versioning Service II'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-110873730249606538</id><published>2005-02-18T15:35:00.000+01:00</published><updated>2005-02-18T15:35:51.696+01:00</updated><title type='text'>Extending XML Schemas</title><content type='html'>Interesting &lt;a href="http://www.xfront.com/ExtensibleContentModels.pdf"&gt;article&lt;/a&gt; about how to write XML Schemas which can be extended. Extending the schema doesn't remove the need for versioning, but it goes some way in preserving loose coupling.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-110873730249606538?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/110873730249606538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=110873730249606538' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110873730249606538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110873730249606538'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/02/extending-xml-schemas.html' title='Extending XML Schemas'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-110864134868929679</id><published>2005-02-17T11:46:00.000+01:00</published><updated>2005-02-17T12:55:48.693+01:00</updated><title type='text'>For the Web Service Challenged</title><content type='html'>Having problems keeping a track on all those web service standards.? Maybe these 3 help:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www-106.ibm.com/developerworks/views/webservices/standards.jsp"&gt;IBM &lt;/a&gt;keep a list of web service standards as well as their current status. Unfortunately these only seem to be those which IBM was involved in (including organisations such as OASIS and w3C). &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/webservices/understanding/specs/default.aspx"&gt;Microsoft &lt;/a&gt;also keep a list, but in a more verbose fashion and, like IBM, it seems to be focused on Microsoft efforts. &lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/List_of_Web_service_specifications"&gt;Wikipedia &lt;/a&gt;also has a list of web service standards, but currently does not show the status. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-110864134868929679?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/110864134868929679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=110864134868929679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110864134868929679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110864134868929679'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/02/for-web-service-challenged.html' title='For the Web Service Challenged'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-110803922468582118</id><published>2005-02-10T13:40:00.000+01:00</published><updated>2005-02-14T15:30:55.760+01:00</updated><title type='text'>Business Process Handbook</title><content type='html'>The &lt;a href="http://process.mit.edu/Directory.asp?ID=970203154850AB5013"&gt;MIT Process Handbook&lt;/a&gt; is a catalog of processes, arranged in a hierarchical structure. Rather than just letting you examine the processes it also lets you generate ideas (based on related processes), which could be used to improve them.&lt;br /&gt;&lt;br /&gt;A book is also available that explains the concepts behind it: &lt;a href="http://mitpress.mit.edu/catalog/item/default.asp?sid=C44C4753-ED92-401A-96CC-3CF6338F3E64&amp;ttype=2&amp;amp;tid=9942"&gt;Organizing Business Knowledge: The MIT Process Handbook &lt;/a&gt;&lt;br /&gt;by Thomas W. Malone, Kevin Crowston and George A. Herman - ISBN:0262134292&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-110803922468582118?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/110803922468582118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=110803922468582118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110803922468582118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110803922468582118'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/02/business-process-handbook.html' title='Business Process Handbook'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-110785572795113701</id><published>2005-02-08T10:42:00.000+01:00</published><updated>2005-02-09T12:00:00.610+01:00</updated><title type='text'>Building an Enterprise using Hosted Services III</title><content type='html'>In previous blogs I have talked about building a virtual IT, i. e. having all apps and data hosted by someone else. In my travels I've found three more providers. &lt;a href="http://web.salesnet.com/index.asp"&gt;Salesnet &lt;/a&gt;and &lt;a href="http://www.rightnow.com/"&gt;Rightnow&lt;/a&gt; offer CRM. &lt;a href="http://www.netsuite.com/"&gt;Netsuite &lt;/a&gt;also offers financials and ERP support.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.rightnow.com/"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-110785572795113701?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/110785572795113701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=110785572795113701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110785572795113701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110785572795113701'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/02/building-enterprise-using-hosted.html' title='Building an Enterprise using Hosted Services III'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-110684329249129925</id><published>2005-01-27T17:27:00.000+01:00</published><updated>2005-02-14T15:29:25.263+01:00</updated><title type='text'>Building an Enterprise using Hosted Services II</title><content type='html'>A couple of blogs back I wrote about the idea of how far a company can go in terms of virtualising it's IT, i.e. having somebody else hosting it, but wondered how all the external services could work together. It seems the idea has not escaped others. I first came across this &lt;a href="http://www.looselycoupled.com/blog/lc00aa00086.html"&gt;blog&lt;/a&gt; on the &lt;em&gt;Loosely Coupled &lt;/em&gt;web site. Although the author was trying to make another point (i.e. what is the ratio between objects, components and services in an enterprise) he trys to envisage a company which has no IT but uses services from, for example, salesforce.com and brings everything together using &lt;a href="http://www.grandcentral.com/company/index_html"&gt;Grand Central&lt;/a&gt; and maybe the &lt;a href="http://www.amazon.com/gp/browse.html/ref=sc_fe_c_1_3435361_3/104-7272829-3687911?%5Fencoding=UTF8&amp;node=13584001&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;no=3435361&amp;amp;me=A36L942TSJ2AJA"&gt;Amazon Simple Queue Service&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Searching further I found this infoworld &lt;a href="http://www.infoworld.com/article/04/07/02/27TCwsi_1.html"&gt;article &lt;/a&gt;which also extols on Grand Central's capabilities and focuses on their use of a hosted &lt;a href="http://www-128.ibm.com/developerworks/library/ws-bpel/"&gt;BPEL &lt;/a&gt;engine which lets developers define their own processes and have them hosted.&lt;br /&gt;&lt;br /&gt;Now that we have some of the business services/processes hosted and something like GrandCentral/Amazon to integrate them, what remains? Well first of all we need a lot more &lt;strong&gt;business&lt;/strong&gt; services. GrandCentral's web site seems to offer a lot of the "informational" web services as hosted by organizations such as &lt;a href="http://www.xmethods.com/"&gt;XMethods&lt;/a&gt;. Difficult to see how a meaningful chunk of business functionality could be implemented with those. (Maybe I doing an injustice to GrandCentral as I'm not a member of them and couldn't log in, plus the fact that their web site reminds me of a maze.) Secondly we need user interfaces - can &lt;em&gt;they &lt;/em&gt;be hosted? Thirdly we need lots of data storage, which is properly managed and can also be used to host data warehouses. And fourthly we need alternate sourcing for this stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-110684329249129925?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/110684329249129925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=110684329249129925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110684329249129925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110684329249129925'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/01/building-enterprise-using-hosted_27.html' title='Building an Enterprise using Hosted Services II'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-110684296225920983</id><published>2005-01-27T17:17:00.000+01:00</published><updated>2005-01-28T15:40:03.856+01:00</updated><title type='text'>Fast XML</title><content type='html'>Many, many years ago I picked up a book about a standard used in the telecommunication industry for describing and encoding data. The standard was called Abstract Syntax Notation 1 or ASN.1. Using this, data structures could be described and encoded in a standard way for transmission. This should sound familiar - if not you only have to click &lt;a href="http://www.w3.org/XML/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This was so long ago that I can't remember who wrote it and also seem to have lost my only copy.&lt;br /&gt;&lt;br /&gt;Then in the January 2004 issue of &lt;a href="http://www.computer.org/itpro/"&gt;IEEEPro&lt;/a&gt;, I was surprised to read an article by Darren Mundy and David Chadwick ("An XML Alternative for Performance and Security: ASN.1") in which they showed that using ASN.1 binary encoding is significantly faster than using XML encoding. Using this the data can be described using ASN.1 (analog to XML Schema) and encoded using a standard ASN.1 binary encoding . (Unfortunately only the &lt;a href="http://csdl.computer.org/comp/mags/it/2004/01/f1030abs.htm"&gt;abstract &lt;/a&gt;is publicly available.)&lt;br /&gt;&lt;br /&gt;This seemed a Good Idea, especially in enterprise environments were performance is important. However, the idea has not escaped others, as I found out when I came across this news &lt;a href="http://news.com.com/2100-7345_3-5534249.html"&gt;article &lt;/a&gt;about speeding up XML. This references the &lt;a href="http://java.sun.com/developer/technicalArticles/xml/fastinfoset/"&gt;Fast Infoset&lt;/a&gt; project which (you've guessed it!) uses the &lt;a href="http://asn1.elibel.tm.fr/en/"&gt;ASN.1&lt;/a&gt; standards and encodings.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-110684296225920983?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/110684296225920983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=110684296225920983' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110684296225920983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110684296225920983'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/01/fast-xml.html' title='Fast XML'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-110536340594508443</id><published>2005-01-10T14:07:00.000+01:00</published><updated>2005-02-05T18:13:20.816+01:00</updated><title type='text'>Building an Enterprise using Hosted Services I</title><content type='html'>Hopefully I'll get back to the service versioning problem later. But in the mean time I keep hitting against the idea of running a enterprise just by using hosted services. This seems very attractive - no software to install and manage, cut down on the amout of hardware you need etc.. So I thought it would be interesting to find out what types of business processes can be supported in this way. First one I found was &lt;a href="http://www.talaris.com/"&gt;Talaris &lt;/a&gt;who deal with procurement. Next was &lt;a href="http://www.salesforce.com/"&gt;Salesforce.com&lt;/a&gt; - they deal with, obviously enough, sales processes (incuding CRM). One in Germany, &lt;a href="http://www.acinum.com"&gt;Acinum &lt;/a&gt;who deals with various SCM procesess (careful, when I tried, the english version was not working).&lt;br /&gt;&lt;br /&gt;I'm sure there are more and when I find them I'll blog them. Maybe you can run all your companies business processes just by using hosted services from different suppliers. But how will they all work together?&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-110536340594508443?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/110536340594508443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=110536340594508443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110536340594508443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110536340594508443'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/01/building-enterprise-using-hosted.html' title='Building an Enterprise using Hosted Services I'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-110502376784153741</id><published>2005-01-06T15:19:00.000+01:00</published><updated>2005-01-06T16:02:47.840+01:00</updated><title type='text'>Versioning Services</title><content type='html'>I becoming interested in how services can be versioned in a serviced orientated architecture. Doing a google shows quite a lot of activity in the area, only every one seems to think that the problem is restricted to web services, but a more about that later.&lt;br /&gt;&lt;br /&gt;One article - &lt;a href="http://www-128.ibm.com/developerworks/webservices/library/ws-version/"&gt;Best practices for Web services versioning &lt;/a&gt;- from a couple of IBMers proposes versioning the XML namespaces of the messages schema (as defined in the WSDL) and then either issuing errors for requesters using the old schema of using some kind of routing mechanism which picks up on the namespace and directs to the correct version. The authors do, however, go on to say that products to do this type of routing for you are rare on the ground (they mention &lt;a href="http://www.talkingblocks.com"&gt;TalkingBlocks&lt;/a&gt;, but this seems to have been taken over by HP and, at a first glance, I couldn't find any explicit mention of how such routing is achieved). They then go on to show how the versioned service definitions can be stored in a UDDI compliant directory.&lt;br /&gt;&lt;br /&gt;One consensus which seems to have formed is that you're on your own when it comes to service versioning.&lt;br /&gt;&lt;br /&gt;As I mentioned before, the terms services and SOA seem to be synonymous with web services. But what about SOAs which use MOM or use &lt;a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm"&gt;REST &lt;/a&gt;styles of communication or mix them all together. Is there a general mechanism or architecture which can bring these all under the umbrella of one versioning scheme?&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-110502376784153741?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/110502376784153741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=110502376784153741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110502376784153741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110502376784153741'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/01/versioning-services.html' title='Versioning Services'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-110840160672753196</id><published>2005-01-05T18:19:00.000+01:00</published><updated>2005-02-14T18:20:06.730+01:00</updated><title type='text'>Java Development</title><content type='html'>Developers seem to be getting tired of the complexity associated with the J2EE architecture and as such are developing and using lightweight frameworks which use POJOs. A combination which seems to becoming popular is &lt;a href="http://struts.apache.org/"&gt;Struts &lt;/a&gt;for the (web) user interface, &lt;a href="http://www.springframework.org/"&gt;Spring&lt;/a&gt; for the code container and &lt;a href="http://www.hibernate.org/"&gt;Hibernate &lt;/a&gt;for object/relational mapping.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-110840160672753196?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/110840160672753196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=110840160672753196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110840160672753196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/110840160672753196'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2005/01/java-development.html' title='Java Development'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8063665.post-109337216924407677</id><published>2004-08-24T20:26:00.000+02:00</published><updated>2005-02-08T10:08:24.680+01:00</updated><title type='text'>The Beginning</title><content type='html'>Decided to start a blog under my own name.This is partly a continuation from my previous &lt;a href="http://swarchitecture.blogspot.com/"&gt;blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Stay tuned.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8063665-109337216924407677?l=andrewdoble.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://andrewdoble.blogspot.com/feeds/109337216924407677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8063665&amp;postID=109337216924407677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/109337216924407677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8063665/posts/default/109337216924407677'/><link rel='alternate' type='text/html' href='http://andrewdoble.blogspot.com/2004/08/beginning.html' title='The Beginning'/><author><name>Andrew</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://www.andrew-doble.homepage.t-online.de/img/portrait.jpg'/></author><thr:total>0</thr:total></entry></feed>
