<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-272217273003537784</atom:id><lastBuildDate>Mon, 02 Sep 2024 08:44:45 +0000</lastBuildDate><category>SOA</category><category>IT Books</category><category>Coupling</category><category>Enterprise Architecture</category><category>Design</category><category>Web Services</category><category>ESB</category><category>IT Governance</category><category>Wikipedia</category><category>IT Personnel</category><category>Java EE</category><category>XML</category><category>Capability Maturity</category><category>Lego</category><category>Web 2.0</category><category>Content Management</category><category>Costs</category><category>Hype</category><category>IT Skills</category><category>IT Strategy</category><category>ITIL</category><category>Mainframe</category><category>Monkeys</category><category>Orchestration</category><category>Wiki</category><category>AJAX</category><category>AOP</category><category>Business Anaysis</category><category>EJB</category><category>Gartner</category><category>MEST</category><category>Model View Controller</category><category>Passion</category><category>Project Management</category><category>Virtualization</category><category>Choreography</category><category>Cocoon</category><category>Cohesion</category><category>Methodology</category><category>Page Flows</category><category>Struts</category><title>SOA Evolution</title><description>A chronicle of an organisation&#39;s journey to achieve Service Oriented Architecture.  On the way there will be a number of personal opinions and remotely related sub-topics.  The opinions expressed are solely the opinion of the author and not to be taken as representing his organisation.</description><link>http://soaevolution.blogspot.com/</link><managingEditor>noreply@blogger.com (Merkel Marmaduke)</managingEditor><generator>Blogger</generator><openSearch:totalResults>65</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-7997684165283683860</guid><pubDate>Sun, 03 Jan 2010 04:21:00 +0000</pubDate><atom:updated>2010-01-02T22:56:36.786-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">IT Books</category><category domain="http://www.blogger.com/atom/ns#">IT Governance</category><category domain="http://www.blogger.com/atom/ns#">ITIL</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><title>ITIL Services</title><description>ITIL Services are different from Services Oriented Architecture (SOA) Services. The Information Technology Infrastructure Library (ITIL) is an accepted standard for operational IT issues such as incident management, problem management and change management. ITIL builds up a large set of terms and tries to use these terms consistently throughout its discussion of Service Management.&lt;br /&gt;&lt;br /&gt;The conflict over the term &quot;service&quot; can lead to some confusing conversations between developers and operations staff. I have posted earlier on the definition of services in SOA. The ITIL definition is&lt;br /&gt;&lt;blockquote&gt;&quot;A service is a means of delivering value to customers by facilitating outcomes&lt;br /&gt;customers want to achieve without the ownership of specific cost and risks. &quot;&lt;br /&gt;ITSMWatch &lt;/blockquote&gt;&lt;br /&gt;Two very different examples of a service in ITIL could be a payroll system and the resetting of a LAN password. The services of an IT organization should be available on a &quot;service catalogue&quot; and the clients of the IT organization can use this catalogue to choose and understand the services they receive.&lt;br /&gt;&lt;br /&gt;This is different from an SOA service. An SOA service is a software component which:&lt;br /&gt;• Hides its implementation,&lt;br /&gt;• Is based on standards,&lt;br /&gt;• Is location transparent,&lt;br /&gt;• Is message coupled, and&lt;br /&gt;• Is accessible through defined platform independent interfaces.&lt;br /&gt;&lt;br /&gt;The main difference is that an SOA service is a software component in SOA. It is not the service that a help desk provides when they reset your password and it is generally smaller than a whole payroll system. An SOA service can be hidden away from the users in the cloud of application components. Ideally it is granular enough to have meaning to users but a user does not need to be able to interface with a service directly.&lt;br /&gt;&lt;br /&gt;There can be coincidental overlap between an SOA service and an ITIL service. A service for paying a bill may also be presented directly to the users of an IT Department or organization and therefore be a service on their catalogue. This only seems to confound the issue. It is safer to assume that ITIL stalwarts and SOA engineers are talking about different things when they refer to a service.&lt;br /&gt;&lt;br /&gt;IT Service Management (ITSM) under ITIL however can provide an appropriate means for providing governance for your SOA and for providing the operational platform for your SOA. SOA may contain more component parts than traditional systems and a disciplined approach to configuring, operating and changing these parts is required which is exactly what ITIL offers.&lt;br /&gt;&lt;br /&gt;Interestingly ITIL also seems to redefine SOA as &quot;Service Offerings and Agreements&quot; and &quot;Service Outage Analysis&quot; which also makes life complicated.&lt;br /&gt;&lt;br /&gt;Notes:&lt;br /&gt;Some good articles on ITIL and SOA follow:&lt;br /&gt;&lt;a href=&quot;http://www.ca.com/Files/WhitePapers/soa_wp_jlong_33146.pdf&quot;&gt;http://www.ca.com/Files/WhitePapers/soa_wp_jlong_33146.pdf&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/ibm/library/ar-soaitil/&quot;&gt;http://www.ibm.com/developerworks/ibm/library/ar-soaitil/&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ebizq.net/blogs/bethgb/2009/03/can_itil_help_fix_soa.php&quot;&gt;http://www.ebizq.net/blogs/bethgb/2009/03/can_itil_help_fix_soa.php&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.biske.com/blog/?p=467&quot;&gt;http://www.biske.com/blog/?p=467&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The book I am reading which proffered the payroll as a service example is:&lt;br /&gt;&lt;br /&gt;Klosterboer, Larry, &#39;Implementing ITIL Change and Release Management&#39;, IBM Press, 01 Dec 2008.</description><link>http://soaevolution.blogspot.com/2010/01/itil-services.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-2045678402641344293</guid><pubDate>Fri, 01 Jan 2010 04:30:00 +0000</pubDate><atom:updated>2010-01-02T18:07:39.904-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Content Management</category><category domain="http://www.blogger.com/atom/ns#">ESB</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><category domain="http://www.blogger.com/atom/ns#">Virtualization</category><category domain="http://www.blogger.com/atom/ns#">Web 2.0</category><title>Oracle Redefines Middleware</title><description>Oracle Fusion Middleware 11g is the first real attempt to integrate the Oracle Fusion suite with the recent BEA products it acquired in 2008. According to Oracle this &quot;Completes the integration of BEA into Oracle&quot;.&lt;br /&gt;&lt;br /&gt;Oracle seems to be redefining &quot;middleware&quot; to include such things as Business Intelligence, Content Management and Collaboration which has typically been considered user-facing software. At the other end of the software stack Oracle looks at infrastructure services such as virtualization utilities.&lt;br /&gt;&lt;br /&gt;&quot;We take a broad view of what is included in Middleware&quot; Rick Schultz of Oracle says on his &lt;a href=&quot;http://streaming.oracle.com/ebn/podcasts/middleware/media/7720783_rick_schultz_060809.mp3&quot;&gt;podcast&lt;/a&gt;. According to the &lt;a href=&quot;http://event.on24.com/event/15/02/99/rt/launch.html?eventid=150299&amp;amp;sessionid=1&amp;amp;key=409AAB2E4D0C341FD02DC012B04173EB&amp;amp;eventuserid=30650977&quot;&gt;materials&lt;/a&gt; that Oracle make available, Middleware seems to be defined as a &quot;Set of components that all applications need&quot;. This includes&lt;br /&gt;&lt;ul&gt;&lt;li&gt;User Interaction (Web 2.0, RIA, Mobile, Search) &lt;/li&gt;&lt;li&gt;Enterprise Performance Management (Planning, Budgeting, Scorecards) &lt;/li&gt;&lt;li&gt;Business Intelligence &lt;/li&gt;&lt;li&gt;Content Management &lt;/li&gt;&lt;li&gt;SOA and Process Management &lt;/li&gt;&lt;li&gt;Application Server &lt;/li&gt;&lt;li&gt;Grid Infrastructure &lt;/li&gt;&lt;li&gt;Development Tools &lt;/li&gt;&lt;li&gt;Enterprise Management &lt;/li&gt;&lt;li&gt;Identity Management &lt;/li&gt;&lt;/ul&gt;Depending on the spin, redefining middleware could be a good or a bad thing. I always felt I understood what middleware was. I agree with &lt;a href=&quot;http://www.blogger.com/en.wikipedia.org/wiki/Middleware&quot;&gt;Wikipedia&lt;/a&gt; that &quot;Middleware is computer software that connects software components or applications.&quot; To put it more plainly it is the &lt;a href=&quot;http://searchsoa.techtarget.com/sDefinition/0,,sid26_gci212571,00.html&quot;&gt;glue&lt;/a&gt; that holds together different parts of a computer application and helps integrate computer applications.&lt;br /&gt;&lt;br /&gt;The Oracle list is huge, and I suggest Oracle needs to come up with another name for all this software infrastructure (like Software Infrastructure Suite) which does not suggest it is simply the glue that holds the application together. User facing software infrastructure such as Web 2.0 collaboration facilities, Search, budgeting software, score card software and business intelligence is much more user facing than most custom built software. Other products on the list are part of the operating environment. This is infrastructure that the software developer should have little concern with.&lt;br /&gt;&lt;br /&gt;This is not to say that the Oracle Suite is a bad idea. We have to accept that with SOA there is far more of an application that can delivered out of the box rather than written anew by developers. True middleware such as the ESB, is still a significant part of the Oracle Suite but the other components also need to be part of the solution architecture.  Oracle focuses on some important aspects from the traditional middleware space including:&lt;br /&gt;• Support for SCA (SOA Component Architecture).&lt;br /&gt;• Support for Event Driven Architecture.&lt;br /&gt;&lt;br /&gt;Oracle now has a concerted push to explain its offering to the world. This has resulted in seminars and workshops around the world. I attended a couple and they are worth the time to get an idea about what Oracle is proposing. I wish to thank the presenter for the descriptive term &quot;Marketecture&quot; (aka Marchitecture). This term seemed to gain popularity through &lt;a href=&quot;http://searchsoa.techtarget.com/sDefinition/0,,sid26_gci212571,00.html&quot;&gt;Dilbert&lt;/a&gt; cartoons in 2009, after having some more serious uses back in 2003. Marketecture is the IT architecture as presented by marketing people and therefore has limited detail and may bear little resemblance to the technical architecture.&lt;br /&gt;&lt;br /&gt;In conclusion, there seems to be much goodness in the new Oracle Suite. SOA can benefit from a large number of products to support the approach. Oracle Suite is much more than middleware, but Oracle should not try to cover everything under the &quot;middleware&quot; term just because its long list of acquisitions allows it to do so.&lt;br /&gt;&lt;br /&gt;Other references:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.dilbert.com/strips/comic/2009-03-02/&quot;&gt;http://www.dilbert.com/strips/comic/2009-03-02/&lt;/a&gt;, Marketect cartoon&lt;br /&gt;&lt;a href=&quot;http://www.uml.org.cn/success/pdf/marketecture.pdf&quot;&gt;http://www.uml.org.cn/success/pdf/marketecture.pdf&lt;/a&gt;, Marketecture vs Tarchitecture&lt;br /&gt;&lt;a href=&quot;http://www.it-director.com/technology/content.php?cid=6173&quot;&gt;http://www.it-director.com/technology/content.php?cid=6173&lt;/a&gt;, Architecture Marchitecture (spelt differently but same idea)&lt;br /&gt;&lt;a href=&quot;http://www.oracle.com/technology/products/middleware/index.html&quot;&gt;http://www.oracle.com/technology/products/middleware/index.html&lt;/a&gt;, The list of products in the Oracle Middleware stack&lt;br /&gt;&lt;a href=&quot;http://www.oracle.com/products/middleware/docs/microsite09-flashmedia-pdfs/fmw11g-overview-solution-brief.pdf&quot;&gt;http://www.oracle.com/products/middleware/docs/microsite09-flashmedia-pdfs/fmw11g-overview-solution-brief.pdf&lt;/a&gt;, Overview of Oracle Middleware</description><link>http://soaevolution.blogspot.com/2009/12/oracle-redefines-middleware.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-8818254370870297517</guid><pubDate>Sun, 14 Jun 2009 04:26:00 +0000</pubDate><atom:updated>2009-06-13T23:43:28.767-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">IT Books</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><title>SOA Definition Revisited</title><description>It is time to revisit the definition of SOA. In an &lt;a href=&quot;http://soaevolution.blogspot.com/2007/09/definitive-soa.html&quot;&gt;earlier posting&lt;/a&gt; I provided the following definition and suggested it may evolve.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;SOA is a software architecture where the business logic is encapsulated in services and a single application may be distributed over many processors.&lt;br /&gt;&lt;br /&gt;A service in this context is a software component which· &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Hides its implementation,&lt;/li&gt;&lt;li&gt;Is based on standards,&lt;/li&gt;&lt;li&gt;Is location transparent,&lt;/li&gt;&lt;li&gt;Is message coupled, and&lt;/li&gt;&lt;li&gt;Is accessible through defined platform independent&lt;br /&gt;interfaces.&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;I recently came across this definition in a book published by IBM Press (see reference below).&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;A service-oriented architecture is a framework for integrating business processes and supporting IT infrastructure as secure, standardized components—services—that can be reused and combined to address changing business priorities.&lt;/blockquote&gt;Beiberstein et al refer to SOA as a framework I refer to it as an architecture which should be self evident. I do not think this is an important difference. The difference suggests another layer of abstraction a littler further away from the implemented product. The &lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/zachman-and-soa.html&quot;&gt;Zachman framework&lt;/a&gt; is even more abstract though.&lt;br /&gt;&lt;br /&gt;There is an IEEE definition for architecture it is &quot;the fundamental organization of a [business] system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution&quot;.  I think this sufficiently describes what is needed for an SOA without out going to the next level of calling it framework.  I will stick with calling SOA an architecture for now, although I acknowledge that there are a number of technical, logical, and business centric models that should be documented for an SOA.&lt;br /&gt;&lt;br /&gt;I like the reference to business processes and I compare it to my discussion of business logic although business logic is at finer grain and is within a service. There is an &lt;a href=&quot;http://www.soa-consortium.org/podcasts-webcasts/DC-2009/podcast-jpm.htm&quot;&gt;interesting argument&lt;/a&gt; that Business Process Modelling (BPM) should be separated from SOA but generally a good SOA implementation will allow an organization to implement its business process more easily than with other architectures. The BPM tool may be considered to be outside of the services but still be part of the overall SOA. I&#39;ll watch this space and consider where I draw my SOA boundary.&lt;br /&gt;&lt;br /&gt;Standardize components (services) are obviously central to SOA. I don&#39;t think they are necessary secure components. Unsecure services can still be SOA even though it may be bad SOA and security has been a bit of a challenge for the evolution of SOA.&lt;br /&gt;&lt;br /&gt;Reuse and combination are important outcomes of SOA but they do not necessarily define SOA.&lt;br /&gt;&lt;br /&gt;My SOA definition above is still looking strong. It has the possible deficiency that it uses the term &quot;&lt;a href=&quot;http://soaevolution.blogspot.com/2008/01/coupling-calculus.html&quot;&gt;Message Coupled&lt;/a&gt;&quot; rather than &quot;Loosely Coupled&quot;. &quot;Message Coupled&quot; is not in wide usage. While &quot;Loosely Coupled&quot; is in wide usage and is descriptive to a point, I found it too loose in my &lt;a href=&quot;http://soaevolution.blogspot.com/2007/09/definitive-soa.html&quot;&gt;earlier posting&lt;/a&gt; and still stand by it.&lt;br /&gt;&lt;a name=&quot;is_a&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;http://www.informit.com/authors/author_bio.aspx?ISBN=9780132353748&quot;&gt;Norbert Bieberstein; Robert G. Laird; Dr. Keith Jones; Tilak Mitra&lt;/a&gt;, &lt;a title=&quot;Executing SOA: A Practical Guide for the Service-Oriented Architect&quot; href=&quot;http://search.safaribooksonline.com/9780137149476&quot;&gt;Executing SOA: A Practical Guide for the Service-Oriented Architect&lt;/a&gt;, IBM Press: The developerWorks® Series, May 2008, Page 4.&lt;br /&gt;&lt;br /&gt;The definition of Architecture can be found in IEEE Std 1471-2000 Systems and Software Engineering—Recommended Practice for Architectural Description of Software-intensive Systems [2007-07-15]</description><link>http://soaevolution.blogspot.com/2009/06/soa-definition-revisited.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-3229247850028860376</guid><pubDate>Tue, 09 Jun 2009 11:58:00 +0000</pubDate><atom:updated>2009-06-09T05:24:46.964-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Enterprise Architecture</category><category domain="http://www.blogger.com/atom/ns#">Orchestration</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><title>SWOT on BPM</title><description>Toward the end of a problematic first implementation of a BPM solution, I was asked to evaluate whether it was worth pursuing this for future solutions in my organisation. The result was a SWOT (Strengths Weaknesses Opportunities and Threats) Analysis in which I put the case for persisting with BPM. An edited version of this paper follows. While I echo the optimism of vendors for large organisations there some cautions and costs that need to taken into account when embarking on the journey to adopt BPM.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Background&lt;/strong&gt;&lt;br /&gt;Business Process Modelling (BPM) is a technique for implementing IT systems that makes the process explicit usually through the use of a graphical tool that allows the process to be illustrated as a flowchart. This flowchart can be implemented directly as system of integrated application and services once these application and services have been built.&lt;br /&gt;&lt;br /&gt;The process model represents processes of an enterprise, so that the current process may be analysed and improved in future. The development of a business process model is typically performed by business analysts and managers who are seeking to improve process efficiency and quality. The process is implemented by IT staff who may be assisted by BPM tools.&lt;br /&gt;&lt;br /&gt;In theory, BPM tools provide business users with the ability to model their business processes, implement and execute those models, and refine the models based on real data. As a result, business process modelling tools can provide transparency into business processes, as well as the centralization of corporate business process models and execution metrics. In practice, BPM tools require significant training and needs users to work closely with other specialist IT staff to implement systems using these tools.&lt;br /&gt;&lt;br /&gt;Our organisation has acquired Aqualogic BPM which is being used to redevelop the XYZ system. Vendor X are doing the development work. Aqualogic is new to both Vendor X and our organisation. This has meant both organisations have had to undertake learning in this technology. The project has taken longer than expected. The project will cost more than expected and the support model for this technology has not yet been developed.&lt;br /&gt;&lt;br /&gt;This paper will assess the risks involved in moving forward with BPM and advise whether we should continue with XYZ system using the BPM product.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Analysis&lt;/strong&gt;&lt;br /&gt;When looking at the benefits related to BPM a distinction needs to be made between the BPM process and the BPM tools. Our use of BPM tools so far, has been to reverse engineer the XYZ system and implement an existing process. This is not the most beneficial way to use BPM and therefore will not immediately produce any savings for XYZ system.&lt;br /&gt;&lt;br /&gt;More benefits are likely to flow from the revision of the business processes that is inevitable with complicated processes. The mapping and refinement on business process is the same as any continuous improvement initiative.&lt;br /&gt;&lt;br /&gt;An effective BPM implementation is much more top-down. BPM is more suited to projects that involve a significant Business Analysis effort. The analysis of the process should be conducted at the business level. The process is then refined and optimised and where possible automated.&lt;br /&gt;&lt;br /&gt;Computer Applications are no longer written purely for discrete business units. Modern enterprise applications link different business units with ever more complex processes involving people from all over the organisation. The emerging standard approach for this is to break applications into services (Service Oriented Architect) and link these together using BPM tools. In this way BPM can support large integrated enterprise applications. Along with a portal product and an enterprise services bus, a BPM tool is a central component of the modern SOA development toolkit.&lt;br /&gt;&lt;br /&gt;If the right skills and tools are in place, BPM promises to enable a more agile organisation. Conventionally, changing software to implement a changed business process involves editing complicated program code possibly spread over a number of different applications. With BPM the process is presented in a more intuitively obvious form and can be stored centrally rather than spread across different applications. This enables changes and therefore more business agility because of the ability to change these processes more rapidly at lower cost.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Strengths&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;BPM allows the process to be viewed and communicated to non-technical users&lt;/li&gt;&lt;li&gt;The BPM can be changed by staff who understand the BPM tool&lt;/li&gt;&lt;li&gt;The business process is easier to follow than the corresponding Java code.&lt;/li&gt;&lt;li&gt;Status can be tracked using the BPM Tool&lt;/li&gt;&lt;li&gt;Possibilities for process change can be investigated using the BPM diagrams.&lt;/li&gt;&lt;li&gt;Supports Services Oriented Architecture (SOA)&lt;/li&gt;&lt;li&gt;Standards-based approach to integrating diverse systems and data sources.&lt;/li&gt;&lt;li&gt;Engenders Continuous Process Improvement&lt;/li&gt;&lt;li&gt;Improves business agility&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Weakness&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Staff need to be trained to use the BPM Tool&lt;/li&gt;&lt;li&gt;The organisation needs to pay significant costs to license the BPM tool (including non-production versions)&lt;/li&gt;&lt;li&gt;There are more points of possible failure in production systems.&lt;br /&gt;Production systems need to be supported which may will involve extra servers.&lt;/li&gt;&lt;li&gt;Business process changes normally require constant involvement of the user. (Collaborative development model). This may require more user resource but also a change in software development approach.&lt;/li&gt;&lt;li&gt;The default process management screens on the BPM Tool may not be appropriate for users. In the case of XYZ system it is costing more to implement custom interfaces.&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Opportunities&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We could use the models in the BPM in our Architecture repository and benefit other projects.&lt;/li&gt;&lt;li&gt;Other projects will become easier to develop using BPM once we have sufficient skills and a critical mass of services that can be used with BPM.&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Threats (Risks)&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The organisation may not have chosen the correct tool and this may be replaced by a competitors product in the future.&lt;/li&gt;&lt;li&gt;The Aqualogic Tool may not be supported by the vendor in the future&lt;/li&gt;&lt;li&gt;It is possible to map more complicated processes. There may be a tendency to get automated tools to do this rather than simplify the business process.&lt;/li&gt;&lt;li&gt;There is a performance overhead in running BPM applications. This may cause programs to perform slowly and impact users.&lt;/li&gt;&lt;li&gt;BPM tool support from any vendor is limited in regional locations.&lt;/li&gt;&lt;li&gt;If we write custom interfaces for users to manage BPM workflow then we have to make sure these interfaces are compatible with future versions of the tool.&lt;/li&gt;&lt;li&gt;Outsourcers who have forged a partnership with our organisation will be able to charge high rates to support its BPM tool.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;Conclusion&lt;br /&gt;&lt;/strong&gt;The choice of BPM for XYZ System was sensible from the point of view that the system was automating complicated business processes involving different roles. The decision was not ideal because the project did not require a business analysis stage and an opportunity to refine the business process.&lt;br /&gt;&lt;br /&gt;The XYZ system project will therefore suffer the learning curve costs of the BPM Tool. It should also reap some benefits later on for having a process that can easily be modified our organisation retains sufficient skills to do this.&lt;br /&gt;&lt;br /&gt;The BPM version of XYZ system should still be implemented. Handover to support should involve making sure there is an adequate support model for the product. This should involve having someone in-house that can support the runtime component of the BPM Tool and assist with the design-time component with the tool.&lt;br /&gt;&lt;br /&gt;The investment in in-house skills should be used in other projects. The identification of the potential to use BPM should made early in a project so that the Business Analysis can be done with BPM in mind.&lt;br /&gt;&lt;br /&gt;The risks are significant but most can be addressed by acquiring the necessary skills to use the BPM tool effectively. The benefits are also significant. An effective BPM capability will assist build integrated systems effectively and efficiently, and support implementation of a Services Oriented Architecture.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Rudden, J, &lt;em&gt;Making the Case for BPM: A Benefits Checklist&lt;/em&gt;, BPTrends Jan 2007, &lt;a href=&quot;http://www.bptrends.com/publicationfiles/01-07-ART-MakingtheCaseforBPM-BenefitsChecklist-Rudden.pdf&quot;&gt;http://www.bptrends.com/publicationfiles/01-07-ART-MakingtheCaseforBPM-BenefitsChecklist-Rudden.pdf&lt;/a&gt;&lt;br /&gt;Sinur, Jim, &lt;em&gt;The Top Five Benefits That BPM Delivers Today&lt;/em&gt;, Feb 4 2009, &lt;a href=&quot;http://blogs.gartner.com/jim_sinur/2009/02/04/the-top-five-benefits-that-bpm-delivers-today/&quot;&gt;http://blogs.gartner.com/jim_sinur/2009/02/04/the-top-five-benefits-that-bpm-delivers-today/&lt;/a&gt;&lt;br /&gt;Khadye, Vinayek, &lt;em&gt;Benefits of BPM Systems&lt;/em&gt;, 7 Mar 2005, &lt;a href=&quot;http://it.toolbox.com/blogs/bpm-blog/bpm-series-benefits-of-bpm-systems-4837&quot;&gt;http://it.toolbox.com/blogs/bpm-blog/bpm-series-benefits-of-bpm-systems-4837&lt;/a&gt;&lt;br /&gt;Cooper, Mark and Patterson , Paul, Business &lt;em&gt;Process Management (BPM) Definition and Solutions&lt;/em&gt;, May 2007, &lt;a href=&quot;http://www.cio.com/article/106609/Business_Process_Management_BPM_Definition_and_Solutions?page=5&quot;&gt;http://www.cio.com/article/106609/Business_Process_Management_BPM_Definition_and_Solutions?page=5&lt;/a&gt;</description><link>http://soaevolution.blogspot.com/2009/06/swot-on-bpm.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-141212239339377971</guid><pubDate>Mon, 23 Mar 2009 09:35:00 +0000</pubDate><atom:updated>2009-03-23T02:43:59.547-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">IT Books</category><category domain="http://www.blogger.com/atom/ns#">IT Governance</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><title>SOA Adoption for Dummies Such as Managers</title><description>Software AG has commissioned another SOA publication to &quot;Dummies&quot; series and released it to their customers. This follows on from their &quot;&lt;a href=&quot;http://www.softwareag.com/Corporate/res/books/bpm_for_dummies/default.asp&quot;&gt;BPM Basics for Dummies&lt;/a&gt;&quot; book which was a referred to in an &lt;a href=&quot;http://soaevolution.blogspot.com/2008/08/will-bpm-be-savior-of-soa.html&quot;&gt;earlier post&lt;/a&gt;. I have to confess to listening to the &lt;a href=&quot;http://www.softwareag.com/Corporate/res/books/soa_adoption_for_dummies/audio_book_landingpage.asp&quot;&gt;podcast version&lt;/a&gt; of this book while &lt;a href=&quot;http://soaevolution.blogspot.com/2009/03/soa-and-cricket.html&quot;&gt;watching the cricket&lt;/a&gt; rather than reading the book in detail the conventional way.&lt;br /&gt;&lt;br /&gt;This book is focused on SOA Adoption rather than SOA. It is not a technical book in SOA. References to XML, SOAP and WSDL are consigned to a footnote. This book is evangelical and pitched at management. I question whether it is right to consider that dummies would be involved in SOA adoption. Your average person involved in an SOA Adoption decision is a highly credentialed senior IT manager on one hand but on the other hand the time taken over each decision of a manager can be minimal and display all the appearances of being made by a dummy.&lt;br /&gt;&lt;br /&gt;The authors should be congratulated for taking SOA Adoption as subject in itself as it is a difficult for enterprises to adopt SOA and it is much more than just the technical challenge that needs to be addressed. The book and podcast series are well produced and easy to absorb.&lt;br /&gt;&lt;br /&gt;Do not expect any great depth from this book however. The authors call their SOA adoption approach &quot;Rocket Science&quot; but this approach simply consists of:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;  1.  Keep the pointy end of the rocket up.&lt;/p&gt;&lt;p&gt;  2.  Keep moving up.&lt;/p&gt;&lt;p&gt;  3.  Don’t stop till you are weightless.&lt;/p&gt;This is good motherhood advice for any significant undertaking but I do not see it as being particularly insightful for SOA adoption.&lt;br /&gt;&lt;br /&gt;The authors do a good job of SOA evangelism and have lived up to the creation of simple book for &quot;Dummies&quot; by missing a lot of the technical detail. There is nothing particularly radical in this book but it does give you some important things to watch such as SOA Governance, Organization structure, SOA infrastructure, the SOA competency centre and organization structural issues that might arise from SOA.&lt;br /&gt;&lt;br /&gt;In summary, this is a good book to give a dummy or manager who needs to be brought on board to get with your SOA program. It will not get you to SOA weightlessness without a lot of other expertise, skills and resources. It is not the bible for someone wishing to be the main driver behind SOA adoption.&lt;br /&gt;&lt;br /&gt;Reference&lt;br /&gt;&lt;br /&gt;Miko Matsumura, Bjoern Brauel and Jignesh Shah, &lt;a href=&quot;http://www.softwareag.com/Corporate/res/books/soa_adoption_for_dummies/default.asp&quot;&gt;SOA Adoption for Dummies&lt;/a&gt; , Wiley Publishing Inc., 2009&lt;br /&gt;&lt;a href=&quot;http://www.softwareag.com/Corporate/res/books/soa_adoption_for_dummies/default.asp&quot;&gt;http://www.softwareag.com/Corporate/res/books/soa_adoption_for_dummies/default.asp&lt;/a&gt;</description><link>http://soaevolution.blogspot.com/2009/03/soa-adoption-for-dummies-such-as.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-7322578688393165676</guid><pubDate>Sat, 21 Mar 2009 05:32:00 +0000</pubDate><atom:updated>2009-03-20T22:33:25.959-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SOA</category><title>SOA and Cricket</title><description>It has been a long while since I put together a blog posting.  This has been for a number of reasons both personal and professional.  But one reason has been the game of cricket.&lt;br /&gt;&lt;br /&gt;I have two sons that are good at cricket and play for a local club.  Most of the English-speaking world knows what Cricket is.  For the Americans who may read this it is a bit like baseball.  You use a bat and a ball and not much happens for long periods of time.  Unlike baseball it can be played over several days for up to six hours a day.  Much of my time has been involved in watching the game played by my sons but also watching the televised games between the Australian national team and the South African national team.&lt;br /&gt;&lt;br /&gt;Progress is made slowly in cricket and it is often not clear whether you are winning until near the end of the game.  The players need to stay focused on what they are trying to achieve and there are a whole range specialists (batters, bowlers and fieldsman) involved.  SOA is much the same.  It takes time.  Since my last blog I can report some real progress from my organization but we have still only completed a small part of the journey.  We need to stay focused on the desired SOA outcomes and we are gradually building a set of skills and relationships that are required to bring SOA to fruition.&lt;br /&gt;&lt;br /&gt;I intend to prepare more blog postings shortly.  The cricket season is over and the hot spell in South Australia has passed.  Meanwhile my organization has completed a number of projects and has embarked on more which will advance its SOA so I have some content to provide and hopefully the motivation to provide it.</description><link>http://soaevolution.blogspot.com/2009/03/soa-and-cricket.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-8253701706300469728</guid><pubDate>Sat, 16 Aug 2008 04:56:00 +0000</pubDate><atom:updated>2008-08-15T23:30:38.680-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Enterprise Architecture</category><category domain="http://www.blogger.com/atom/ns#">ESB</category><category domain="http://www.blogger.com/atom/ns#">IT Books</category><category domain="http://www.blogger.com/atom/ns#">IT Personnel</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><title>Understanding Enterprise SOA: Book Review</title><description>I was handed this book by one of my programmers. He lent it to me because he knew I was doing some reading on the subject and trying to work out how to bring my software developers up to speed with SOA. I didn&#39;t get the impression that he had got terribly much from the book himself. After reading it I can see there is benefit for managers but I think there was not enough technical meat in the book for programmers and analysts.&lt;br /&gt;&lt;br /&gt;This book is not technical. It can be read by managers, salesmen or students and I think these were the intended audience. The explanations are easy to understand although I found them long-winded and overly simplistic on many occasions.&lt;br /&gt;&lt;br /&gt;The authors attempted to explain procedural code as if it was museum artifact. This made me feel very old. It begs the questions whether the developers brought up on object-oriented development and SOA really need a detailed explanation of the concept of procedural code.&lt;br /&gt;&lt;br /&gt;On the positive side this books tackles issues that others do not. It has a good non-technical discussion about security issues and there is a lot of discussion about human issues such as training, reorganization and corporate culture.&lt;br /&gt;&lt;br /&gt;Oddly for a book written in 2006 I did not find any mention of Enterprise Service Bus (ESB) although it was clear the author was encouraging looking at off-the-shelf SOA management solutions as well as SOA security and routing software.&lt;br /&gt;&lt;br /&gt;Eric Pulier in his preface is unbridled in his enthusiasm for SOA standards:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;In a spectacular cycle of enlightened self-interest, every major company in the world has build on top of standards which have ushered a potentially exponential release of value from investments in information technology.&lt;/blockquote&gt;Elsewhere in the book there are sufficient cautions to temper this enthusiasm. In particular the authors advise that much of SOA is still hard work and that there are no industry standard solutions to problems such as transaction processing and security.&lt;br /&gt;&lt;br /&gt;There is a long and detailed case study running through the book. The authors do not hold back on the multitude of issues that confront an organization adoption SOA. Parts are realistic and even painful for those of us who have been through implementations of a difficult project or technology.&lt;br /&gt;&lt;br /&gt;The book has a good history of technologies and standards. The authors make a good point about standards conforming to the Tipping Point model (see references below). This is when a standard reaches a certain level adoption that it suddenly becomes desirable for the majority of developers.&lt;br /&gt;&lt;br /&gt;This is not a strong academic text. There are not many references to other information sources. The definitions are not clearly stated and often over-simplify the concepts. Concepts like Enterprise Architecture, Real-Time Computing and loose coupling are all not accurately defined.&lt;br /&gt;&lt;br /&gt;&quot;Loose-Coupling&quot; is described but not adequately explained. The authors give the impression that loose-coupling is only about where you can locate services.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Web services, in contrast are loosely coupled. Once a piece of software has been exposed as a web service it is simple to move it to another computer.&lt;/blockquote&gt;This is an important aspect of coupling but is not the whole story as I have identified on &lt;a href=&quot;http://soaevolution.blogspot.com/2008/01/coupling-calculus.html&quot;&gt;previous postings&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The book focuses on synchronous services rather than asynchronous services. This is unfortunate as other texts such as &lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/book-review-soa-concepts-technology-and.html&quot;&gt;Thomas Erl &lt;/a&gt;or &lt;a href=&quot;http://soaevolution.blogspot.com/2007/09/soa-best-practices-book-review.html&quot;&gt;Krafzig, Banke &amp;amp; Slama&lt;/a&gt; seem to advocate asynchronous services.&lt;br /&gt;&lt;br /&gt;The book addresses the Subject of Enterprise Architecture again loosely defined. At one point the book states&lt;br /&gt;&lt;blockquote&gt;There is no institute providing credentials for enterprise architects. &lt;/blockquote&gt;&lt;br /&gt;I&#39;ll give the authors the benefit of doubt. Perhaps in 2006 there were not the credentials around but these days there are a number of places to get recognized credentials as an IT Architect. The &lt;a href=&quot;http://www.microsoft.com/learning/mcp/architect/technology/default.mspx&quot;&gt;Microsoft Certified Architect&lt;/a&gt; programs spring to mind although I will not vouch for the content of these programs.&lt;br /&gt;&lt;br /&gt;The authors see SOA as a method for replacing parts of the Data Warehouse. I was not particularly convinced by this. This was an interesting subject which I had not seen before. I think there is benefit in moving the content of SOA logging to the data warehouse but I was not convinced that SOA radically changes the typical data warehouse ETL process.&lt;br /&gt;&lt;br /&gt;This is not a book with detail examples of SOAP and WSDL. It will not explain how to code or build services. You will not find much detail on WS-* here either.&lt;br /&gt;&lt;br /&gt;Contracts and Service Level Agreements (SLAs) are described in the book. The authors also introduce the Business Level Agreement (BLA). This is agreement to monitor business conditions such as an inventory pile-up causing $100k per minute of cost.&lt;br /&gt;&lt;br /&gt;The book is well illustrated with copious diagrams and notes attached to the diagrams. I found myself skipping past a lot of the diagrams because they did not seem to be explaining anything particularly special.&lt;br /&gt;&lt;br /&gt;I congratulate the authors for including detail about setting up training programs in the book and explaining how the resources are brought in to deal with the adoption of SOA. This is missing from many other texts and is an important issue today.&lt;br /&gt;&lt;br /&gt;The authors emphasize that SOA is an enterprise approach. Under SOA, IT departments put in place infrastructure to serve the enterprise rather than just serving particular applications.&lt;br /&gt;&lt;br /&gt;I would recommend other books before this one for most audiences. The simplistic and at times pedantic prose would make it hard to recommend to an IT professional. Nevertheless there are some well-made observations in this book that you are not likely to find elsewhere.&lt;br /&gt;&lt;br /&gt;References&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Understanding Enterprise SOA&lt;/em&gt;, Eric Pulier and Hugh Taylor with forward by Paul Gaffney, Manning, 2006&lt;br /&gt;&lt;br /&gt;&lt;em&gt;The Tipping Point: How Little Things Can Make a Big Difference&lt;/em&gt; (&lt;a href=&quot;http://en.wikipedia.org/wiki/Special:BookSources/0316316962&quot;&gt;ISBN 0-316-31696-2&lt;/a&gt;) is a book by &lt;a title=&quot;Malcolm Gladwell&quot; href=&quot;http://en.wikipedia.org/wiki/Malcolm_Gladwell&quot;&gt;Malcolm Gladwell&lt;/a&gt;, first published by &lt;a title=&quot;Little Brown&quot; href=&quot;http://en.wikipedia.org/wiki/Little_Brown&quot;&gt;Little Brown&lt;/a&gt; in &lt;a title=&quot;2000 in literature&quot; href=&quot;http://en.wikipedia.org/wiki/2000_in_literature&quot;&gt;2000&lt;/a&gt;.</description><link>http://soaevolution.blogspot.com/2008/08/understanding-enterprise-soa-book.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-5615634801841463919</guid><pubDate>Sun, 03 Aug 2008 13:35:00 +0000</pubDate><atom:updated>2008-08-03T06:38:12.353-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Business Anaysis</category><category domain="http://www.blogger.com/atom/ns#">IT Books</category><category domain="http://www.blogger.com/atom/ns#">Lego</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><category domain="http://www.blogger.com/atom/ns#">Web Services</category><title>Will BPM be the Savior of SOA?</title><description>My friendly Software AG representative recently gave me a copy of the &quot;BPM Basics for Dummies&quot;.  This was an interesting little book pitched at the Executive level.  It would not help an IT person to get started with any particular product set but would help them understand what all the fuss was about.&lt;br /&gt;&lt;br /&gt;BPM (see note below) has been with us since at least the 1980s.  It used to a paper process of writing up the process and then getting a team of programmers to build it, then implementing it on usually a big computer that could handle it and then have the computer operators monitoring it. &lt;br /&gt;&lt;br /&gt;In the 1990s Business Process Reengineering (BPR) was an approach which changed an organizational process.  It involved process diagrams, IT change and business change.&lt;br /&gt;&lt;br /&gt;The excitement with BPM is that some of the leg work involved in actually building systems can be removed if the components of the business process are already established.  In this case the components are Web Services enabled through an SOA.&lt;br /&gt;&lt;br /&gt;What interests me about this is that some of the concepts behind BPM are a lot easier to explain to the business than SOA.  You can get out the &lt;a href=&quot;http://soaevolution.blogspot.com/2008/04/lego-carrots-and-coleslaw.html&quot;&gt;Lego blocks&lt;/a&gt; and explain the benefits of agility until you are blue in the face but you are still only talking in analogies and expecting the business to take a leap of faith.  If you show the business a diagram of one of their business processes and then tell the business the cost of changing that business process then that makes sense in terms the business understands. Of course there is a significant investment in infrastructure, tools and services to establish before you get to that point.  It is this significant investment that the IT executive wants to sell.  If you are pushing a plan to buy infrastructure, tools and establish services then the plan will make more business sense if the objective is BPM rather than SOA.&lt;br /&gt;&lt;br /&gt;I think Software AG understands this and that is why they are giving out &quot;BPM Basics for Dummies&quot; and not &quot;SOA Basics for Dummies&quot;.  I think the business will get behind BPM before they will embrace SOA.  We may see more push for BPM to business executives and SOA may take a back seat.  The IT department however knows it needs SOA to get BPM to work.  That is just how it meets the business goal of BPM.&lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt;&lt;br /&gt;BPM stands for Business Process Management, but you would excused for thinking it stood for Business Process Modeling.  The &quot;Management&quot; implies that we are doing a lot more than mapping out the processes.  The &quot;Management&quot; moves beyond documenting the processes to making them happen and monitoring their effectiveness. &lt;br /&gt;&lt;br /&gt;This is not to be confused with BPMN (Business Process Modeling Notation) where the &quot;M&quot; stands for &quot;Modeling&quot;.  BPMN however can move beyond an aesthetic model to an operational system by converting it to BPEL.&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ebizq.net/hot_topics/bpm/&quot;&gt;http://www.ebizq.net/hot_topics/bpm/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.bpmn.org/Documents/Mapping%20BPMN%20to%20BPEL%20Example.pdf&quot;&gt;http://www.bpmn.org/Documents/Mapping%20BPMN%20to%20BPEL%20Example.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Business_process_reengineering&quot;&gt;http://en.wikipedia.org/wiki/Business_process_reengineering&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kiran Garimella, Michael Lees and Bruce Williams, &quot;BPM Basics for Dummies (Software AG Special Edition)&quot;, Wiley Publishing Inc. 2008.</description><link>http://soaevolution.blogspot.com/2008/08/will-bpm-be-savior-of-soa.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-5391655935562454120</guid><pubDate>Mon, 21 Jul 2008 12:32:00 +0000</pubDate><atom:updated>2008-08-31T01:10:56.139-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">IT Books</category><category domain="http://www.blogger.com/atom/ns#">IT Personnel</category><category domain="http://www.blogger.com/atom/ns#">Project Management</category><category domain="http://www.blogger.com/atom/ns#">Wikipedia</category><title>Laws of Software Development</title><description>I ran across an new eponymous law while reading &quot;Understanding Enterprise SOA&quot; by Eric Pulier and Hugh Taylor.&lt;br /&gt;Pulier&#39;s rule of reuse:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;A programmer will look at another programmer&#39;s output, no matter how brilliant and declare it garbage &lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;The best law&#39;s and rules are named by others who admire the author&#39;s work, but this one seemed pretty worthy to me. This got me reminiscing about some laws of software development that perhaps had the same rigour as Newton&#39;s Laws, Boyle&#39;s Law or Hooke&#39;s Law.&lt;br /&gt;&lt;br /&gt;The rules I have admired during my career are:&lt;br /&gt;&lt;br /&gt;Brooks&#39;s Law:&lt;/p&gt;&lt;blockquote&gt;adding manpower to a late software project makes it later&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;Hofstadter&#39;s Law:&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;It always takes longer than you expect, even when you take Hofstadter&#39;s Law into account. &lt;/blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://www.webopedia.com/TERM/C/Codds_Rules.html&quot;&gt;Codd&#39;s Rules &lt;/a&gt;of relational database management systems which I won&#39;t quote here because there are 13 of them.&lt;br /&gt;&lt;br /&gt;Moore&#39;s Law:&lt;/p&gt;&lt;blockquote&gt;The number of &lt;a title=&quot;Transistors&quot; href=&quot;http://en.wikipedia.org/wiki/Transistors&quot;&gt;transistors&lt;/a&gt; that can be inexpensively placed on an &lt;a title=&quot;Integrated circuit&quot; href=&quot;http://en.wikipedia.org/wiki/Integrated_circuit&quot;&gt;integrated circuit&lt;/a&gt; is increasing &lt;a title=&quot;Exponential growth&quot; href=&quot;http://en.wikipedia.org/wiki/Exponential_growth&quot;&gt;exponentially&lt;/a&gt;, doubling approximately every two years. &lt;/blockquote&gt;&lt;p&gt;This has a number of applications outside of transistors such as processing speed, memory and disk capacity.&lt;br /&gt;&lt;br /&gt;Clarke&#39;s 3rd Law:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Any sufficiently advanced technology is indistinguishable from magic. &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;The reason I class this as a software development Law is that it points out the futility of trying to explain the technical details of software to Business users. If a technical decision does not have any business impact then it may as well be magic.&lt;br /&gt;&lt;br /&gt;I thought I would check what other software development Laws there are on the net. Here is a good sample from some useful sources listed in the Bibliography below:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Amdahl&quot;&gt;Amdahl’s Law&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;The speedup gained from running a program on a parallel computer is greatly limited by the fraction of that program that can’t be parallelized.&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;Asimov&#39;s laws (Yes its SF but one day a software developer might have to follow them):&lt;/p&gt;&lt;ol&gt;&lt;li&gt;A robot may not injure a human being or, through inaction, allow a human being to come to harm. &lt;/li&gt;&lt;li&gt;A robot must obey orders given to it by human beings, except where such orders would conflict with the First Law. &lt;/li&gt;&lt;li&gt;A robot must protect its own existence as long as such protection does not conflict with the First or Second Law. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Atwood’s Law: &lt;/p&gt;&lt;blockquote&gt;Any application that can be written in JavaScript, will eventually be written in JavaScript&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a title=&quot;Bye&#39;s First Law of Model Railroading (page does not exist)&quot; href=&quot;http://en.wikipedia.org/w/index.php?title=Bye%27s_First_Law_of_Model_Railroading&amp;amp;action=edit&amp;amp;redlink=1&quot;&gt;Bye&#39;s First Law of Model Railroading&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;Anytime you wish to demonstrate something, the number of faults is proportional to the number of viewers.&lt;/blockquote&gt;&lt;p&gt;Clarke&#39;s 1st Law:&lt;/p&gt;&lt;blockquote&gt;When a distinguished but elderly scientist states that something is possible, he is almost certainly right. When he states that something is impossible, he is very probably wrong.&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;Clarke&#39;s 2nd Law:&lt;/p&gt;&lt;blockquote&gt;The only way of discovering the limits of the possible is to venture a little way past them into the impossible. &lt;/blockquote&gt;&lt;p&gt;Clarke&#39;s 4th Law (He&#39;s not often credited with this one):&lt;/p&gt;&lt;blockquote&gt;For every expert there is an equal and opposite expert.&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a title=&quot;Conway&#39;s Law&quot; href=&quot;http://en.wikipedia.org/wiki/Conway%27s_Law&quot;&gt;Conway&#39;s Law&lt;/a&gt;:&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;Any piece of software reflects the organizational structure that produced it.&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a title=&quot;Edwards&#39; law (page does not exist)&quot; href=&quot;http://en.wikipedia.org/w/index.php?title=Edwards%27_law&amp;amp;action=edit&amp;amp;redlink=1&quot;&gt;Edwards&#39; law&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;You cannot apply a technological solution to a sociological problem.&lt;/blockquote&gt;&lt;p&gt;Greenspun&#39;s Tenth Rule of Programming (There actually are no rules 1 to 9)&lt;/p&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;Any sufficiently complicated &lt;a title=&quot;C (programming language)&quot; href=&quot;http://en.wikipedia.org/wiki/C_%28programming_language%29&quot;&gt;C&lt;/a&gt; or &lt;a title=&quot;Fortran&quot; href=&quot;http://en.wikipedia.org/wiki/Fortran&quot;&gt;Fortran&lt;/a&gt; program contains an ad hoc, informally-specified, &lt;a title=&quot;Computer bug&quot; href=&quot;http://en.wikipedia.org/wiki/Computer_bug&quot;&gt;bug-ridden&lt;/a&gt;, slow implementation of half of &lt;a title=&quot;Common Lisp&quot; href=&quot;http://en.wikipedia.org/wiki/Common_Lisp&quot;&gt;Common Lisp&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;This can also be worded “Those who do not understand Lisp are doomed to reinvent it.”&lt;/p&gt;&lt;p&gt;&lt;a title=&quot;Gustafson&#39;s Law&quot; href=&quot;http://en.wikipedia.org/wiki/Gustafson%27s_Law&quot;&gt;Gustafson&#39;s Law&lt;/a&gt; (also known as Gustafson-Barsis&#39; law) &lt;/p&gt;&lt;blockquote&gt;Any sufficiently large problem can be efficiently &lt;a title=&quot;Parallel computing&quot; href=&quot;http://en.wikipedia.org/wiki/Parallel_computing&quot;&gt;parallelized&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a title=&quot;Kerckhoffs&#39; principle&quot; href=&quot;http://en.wikipedia.org/wiki/Kerckhoffs%27_principle&quot;&gt;Kerckhoffs&#39; law&lt;/a&gt; on secure cryptography&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;A cryptosystem should be secure even if everything about the system, except the key, is public knowledge &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Lehmann&#39;s Laws&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Systems that are used must change or automatically become less useful&lt;/li&gt;&lt;li&gt;Through changes the structure of a system becomes ever more complex and more resources are needed to simplify it&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;a title=&quot;Linus&#39;s law&quot; href=&quot;http://en.wikipedia.org/wiki/Linus%27s_law&quot;&gt;Linus&#39;s law&lt;/a&gt; — named for &lt;a title=&quot;Linus Torvalds&quot; href=&quot;http://en.wikipedia.org/wiki/Linus_Torvalds&quot;&gt;Linus Torvalds&lt;/a&gt;, &lt;/p&gt;&lt;blockquote&gt;given enough eyeballs, all &lt;a title=&quot;Computer bug&quot; href=&quot;http://en.wikipedia.org/wiki/Computer_bug&quot;&gt;bugs&lt;/a&gt; are shallow&lt;/blockquote&gt;&lt;p&gt;Lubarsky&#39;s law of Cybernetic Entomology:&lt;/p&gt;&lt;blockquote&gt;There is always one more bug.&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;McLuhan&#39;s Law:&lt;/p&gt;&lt;blockquote&gt;If it works it&#39;s obsolete.&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a title=&quot;Metcalfe&#39;s law&quot; href=&quot;http://en.wikipedia.org/wiki/Metcalfe%27s_law&quot;&gt;Metcalfe&#39;s law&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;In &lt;a title=&quot;Communication&quot; href=&quot;http://en.wikipedia.org/wiki/Communication&quot;&gt;communications&lt;/a&gt; and &lt;a title=&quot;Network theory&quot; href=&quot;http://en.wikipedia.org/wiki/Network_theory&quot;&gt;network&lt;/a&gt; theory, states that the value of a system grows as approximately the square of the number of users of the system. &lt;/blockquote&gt;&lt;p&gt;Murphy&#39;s Law &lt;/p&gt;&lt;blockquote&gt;If anything can go wrong, it will.&lt;/blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Occam&quot;&gt;Occam&#39;s Razor:&lt;/a&gt;&lt;br /&gt;There are many wordings for Occam&#39;s razor and debate about how it is interpreted but from software development I think the best wording is &quot;The simplest solution is usually the best&quot;. This is very nearly the same as the KISS principal &quot;Keep it simple stupid&quot;.&lt;/p&gt;&lt;p&gt;Putt’s Law: &lt;/p&gt;&lt;blockquote&gt;Technology is dominated by two types of people: those who understand what they do not manage, and those who manage what they do not understand.&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;Sturgeon&#39;s Revelation (sometimes referred to as his second law):&lt;/p&gt;&lt;blockquote&gt;Ninety percent of everything is &lt;a title=&quot;wikt:crap&quot; href=&quot;http://en.wiktionary.org/wiki/crap&quot;&gt;crap&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;Weinberg’s Law: &lt;/p&gt;&lt;blockquote&gt;If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization. &lt;/blockquote&gt;&lt;p&gt;&lt;a title=&quot;Wirth&#39;s law&quot; href=&quot;http://en.wikipedia.org/wiki/Wirth%27s_law&quot;&gt;Wirth&#39;s law&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;Software gets slower faster than hardware gets faster.&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a title=&quot;Jamie Zawinski&quot; href=&quot;http://en.wikipedia.org/wiki/Jamie_Zawinski#Quotes&quot;&gt;Zawinski&#39;s law&lt;/a&gt;&lt;/p&gt;&lt;blockquote&gt;Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;Here are still more great laws from &lt;a href=&quot;http://globalnerdy.com/2007/07/18/laws-of-software-development/&quot;&gt;Joey DeVilla&#39;s Blog posting&lt;/a&gt;.&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;The Law&lt;/th&gt;&lt;th&gt;Who Said It&lt;/th&gt;&lt;th&gt;What it Says&lt;/th&gt;&lt;/tr&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.cultdeadcow.com/panel2001/hacktivism_panel.php&quot;&gt;Ellison’s Law of Cryptography and Usability&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a href=&quot;http://world.std.com/~cme/&quot;&gt;Carl Ellison&lt;/a&gt;&lt;/td&gt;&lt;td&gt;The user base for strong cryptography declines by half with every additional keystroke or mouse click required to make it work.&lt;/td&gt;&lt;tr&gt;&lt;td&gt;Ellison’s Law of Data&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Larry_Ellison&quot;&gt;Larry Ellison&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;Once the business data have been centralized and integrated, the value of the database is greater than the sum of the preexisting parts.&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.cs.iastate.edu/~leavens/ComS541Fall98/hw-pages/comparing/index.html&quot;&gt;Flon’s Axiom&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a href=&quot;http://libra.msra.cn/authordetail.aspx?id=403157&quot;&gt;Lawrence Flon&lt;/a&gt;&lt;/td&gt;&lt;td&gt;There does not now, nor will there ever, exist a programming language in which it is the least bit hard to write bad programs.&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.netlingo.com/lookup.cfm?term=Gilder&quot;&gt;Gilder’s Law&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/George_Gilder&quot;&gt;George Gilder&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Bandwidth grows at least three times faster than computer power.&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Grosch&quot;&gt;Grosch’s Law&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Herb_Grosch&quot;&gt;Herb Grosch&lt;/a&gt;&lt;/td&gt;&lt;td&gt;The cost of computing systems increases as the square root of the computational power of the systems.&lt;/td&gt;&lt;tr&gt;&lt;td&gt;Hartree’s Law&lt;/td&gt;&lt;td&gt;&lt;br /&gt;Douglas Hartree&lt;/td&gt;&lt;td&gt;&lt;br /&gt;Whatever the state of a project, the time a project-leader will estimate for completion is constant.&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Heisenbug#Heisenbugs&quot;&gt;Heisenbug Uncertainty Principle&lt;/a&gt; (restated)&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Jim_Gray_(computer_scientist)&quot;&gt;Jim Gray&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Most production software bugs are soft: they go away when you look at them.&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://safari.oreilly.com/0321286081/pref06&quot;&gt;Hoare’s Law of Large Programs&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/C._A._R._Hoare&quot;&gt;C. A. R. Hoare&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;Inside every large problem is a small problem struggling to get out.&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.useit.com/alertbox/20000723.html&quot;&gt;Jakob’s Law of the Internet User Experience&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Jakob_Nielsen_(usability_consultant)&quot;&gt;Jakob Nielsen&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;Users spend most of their time on other sites. This means that users prefer your site to work the same way as all the other sites they already know.&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.smallworks.com/archives/00000368.htm&quot;&gt;Joy’s Law&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Bill_Joy&quot;&gt;Bill Joy&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;smart(employees) = log(employees), or “No matter who you are, most of the smartest people work for someone else.”&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.sauria.com/blog/2004/05/25&quot;&gt;Lister’s Law&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a href=&quot;http://www.systemsguild.com/GuildSite/TRL/Tim_Lister.html&quot;&gt;Timothy Lister&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;People under time pressure don’t think faster.&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://research.microsoft.com/ACM97/nm/sld026.htm&quot;&gt;Nathan’s First Law&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Nathan_Myhrvold&quot;&gt;Nathan Myhrvold&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Software is a gas; it expands to fill its container.&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Ninety-ninety_rule&quot;&gt;Ninety-ninety Law&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a href=&quot;http://www.profcon.com/profcon/cargill/index.html&quot;&gt;Tom Cargill&lt;/a&gt;&lt;/td&gt;&lt;td&gt;The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.&lt;/td&gt;&lt;tr&gt;&lt;td&gt;Pesticide Paradox&lt;/td&gt;&lt;td&gt;&lt;br /&gt;Bruce Beizer&lt;/td&gt;&lt;td&gt;Every method you use to prevent or find bugs leaves a residue of subtler bugs against which those methods are ineffectual.&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Reed&quot;&gt;Reed’s Law&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/David_P._Reed&quot;&gt;David P. Reed&lt;/a&gt;&lt;/td&gt;&lt;td&gt;The utility of large networks, particularly social networks, scales exponentially with the size of the network.&lt;/td&gt;&lt;tr&gt;&lt;td&gt;Sixty-sixty Rule&lt;/td&gt;&lt;td&gt;&lt;br /&gt;Robert Glass&lt;/td&gt;&lt;td&gt;&lt;br /&gt;Sixty percent of software’s dollar is spent on maintenance, and sixty percent of that maintenance is enhancement.&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.infoworld.com/pageone/news/features/anniversary/98ann.future.shtml&quot;&gt;Spector’s Law&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a href=&quot;http://www.thelinkinspector.com/&quot;&gt;Lincoln Spector&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;The time it takes your favorite application to complete a given task doubles with each new revision.&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.spaffordconsulting.com/Protecting%20the%20Internets%20Potential%20Value.html&quot;&gt;Spafford’s Adoption Rule&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://www.spaffordconsulting.com/&quot;&gt;George Spafford&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;For just about any technology, be it an operating system, application or network, when a sufficient level of adoption is reached, that technology then becomes a threat vector.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Some unattributed &quot;laws&quot; that are worth mentioning:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Build a system that even a fool can use, and only a fool would want to use it.&lt;/li&gt;&lt;li&gt;Any program over 100 instructions can be simplified by 3 instructions (without losing any functionality).&lt;/li&gt;&lt;li&gt;Any idiot can learn to use computers, and many do&lt;/li&gt;&lt;li&gt;There’s never time to do it right in the first place, but there’s always time to do it over when it doesn’t work.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This posting started with Pulier&#39;s Law: &quot;A programmer will look at another programmer&#39;s output, no matter how brilliant and declare it garbage&quot;. At the risk of repeating Pulier&#39;s conceit of naming law about himself I propose:&lt;br /&gt;Kimber&#39;s Corollary:&lt;/p&gt;&lt;blockquote&gt;No amount of documentation is ever sufficient to completely understand a system&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;Bibliography&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Adages_named_after_people&quot;&gt;http://en.wikipedia.org/wiki/Adages_named_after_people&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&quot;Moore&#39;s Law is Dead&quot;, &lt;a href=&quot;http://www.techworld.com/opsys/news/index.cfm?newsid=3477&quot;&gt;http://www.techworld.com/opsys/news/index.cfm?newsid=3477&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Change_management_(engineering&quot;&gt;http://en.wikipedia.org/wiki/Change_management_(engineering&lt;/a&gt;), This includes the reference to Lehmann&#39;s Laws siting Hinley, D.S. (1996). Software evolution management: a process-oriented perspective. Information and Software Technology, 38, 723-730&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Moore&quot;&gt;http://en.wikipedia.org/wiki/Moore&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Occam&quot;&gt;http://en.wikipedia.org/wiki/Occam&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.webopedia.com/TERM/C/Codds_Rules.html&quot;&gt;http://www.webopedia.com/TERM/C/Codds_Rules.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Joey de Villa, &lt;a href=&quot;http://globalnerdy.com/2007/07/18/laws-of-software-development/&quot;&gt;http://globalnerdy.com/2007/07/18/laws-of-software-development/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Phil Haack, &lt;a title=&quot;Title of this entry.&quot; href=&quot;http://haacked.com/archive/2007/07/17/the-eponymous-laws-of-software-development.aspx&quot;&gt;19 Eponymous Laws Of Software Development&lt;/a&gt;, &lt;a href=&quot;http://haacked.com/archive/2007/07/17/the-eponymous-laws-of-software-development.aspx&quot;&gt;http://haacked.com/archive/2007/07/17/the-eponymous-laws-of-software-development.aspx&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Eric Pulier and Hugh Taylor, &quot;Understanding Enterprise SOA&quot;, Manning Publications, 2006&lt;/p&gt;</description><link>http://soaevolution.blogspot.com/2008/07/laws-of-software-development.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-5244847972267867189</guid><pubDate>Sat, 19 Jul 2008 12:24:00 +0000</pubDate><atom:updated>2008-07-19T05:27:31.707-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">IT Books</category><category domain="http://www.blogger.com/atom/ns#">Java EE</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><category domain="http://www.blogger.com/atom/ns#">Web Services</category><title>Book Review: J2EE and Weblogic</title><description>I was drawn to reading the book &quot;J2EE Web Services on BEA Weblogic&quot; by &lt;a href=&quot;http://www.informit.com/authors/author_bio.asp?ISBN=0131430726&quot;&gt;Anjali Anagol-Subbarao&lt;/a&gt; because my organization has purchased the Weblogic platform and I wanted more detail about how to make the best use of the tools available in this suite. General books on SOA can tell you about the principals and standards but without actually talking about specific tools there is a big gap between theory and practice.&lt;br /&gt;&lt;br /&gt;&quot;J2EE Web Services on BEA Weblogic&quot; was published as part of the Hewlett-Packard Professional Book Series. While the Weblogic content the descriptions of some of the management functions of HP Openview were a bit alienating as I have not used this product. However it did also talk about some useful utilities and open source products that were not provided by either BEA or HP.&lt;br /&gt;&lt;br /&gt;While the description of the tools were fairly high level and probably could be translated into similar functions in other suites I do not expect this book attract users of other SOA platforms suites.&lt;br /&gt;&lt;br /&gt;The book style is fairly easy to read with some good diagrams and examples. The SOA standards and principles are covered well with a focus on the WS-*, SOAP and WSDL standards.&lt;br /&gt;&lt;br /&gt;The basics of J2EE and EJBs are explained and some fundamentals of the Weblogic platform. This is not an evangelistic book about SOA or Web Services but goes into a bit about the technology of how to bring it about. The SOA benefits are there but the SOA story gets a bit lost amongst the instruction on how to use the BEA tools.&lt;br /&gt;&lt;br /&gt;Some of the material reads like BEA marketing literature. I would have liked more practical tips on what to use and what not to use. In a book like this we need information that we can&#39;t glean from the manuals. This provided the high level overview with out some of the more practical &quot;dos and don&#39;ts&quot;.&lt;br /&gt;&lt;br /&gt;There is good information on versioning and a good section on evaluating WS management tools. Also the book provides some practical approaches to performance issues.&lt;br /&gt;&lt;br /&gt;This book has limited readership and will date quickly. Your best technical advice will always come from the product manuals but this book explains a bit about the suite is used as a whole. Published in 2004 this book is nearing its &quot;use by&quot; date but there is still some relevance to what it describes. Be quick though, with the acquisition of BEA by Oracle we can expect some changes to the BEA product suite.</description><link>http://soaevolution.blogspot.com/2008/07/book-review-j2ee-and-weblogic.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-3715219060567413525</guid><pubDate>Sun, 27 Apr 2008 02:48:00 +0000</pubDate><atom:updated>2008-04-26T19:48:56.231-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Lego</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><title>Lego, Carrots and Coleslaw</title><description>I discovered &lt;a href=&quot;http://schneider.blogspot.com/archives/2006_01_29_schneider_archive.html#113872155419415124&quot;&gt;Jeff Schneider&#39;s blog archive&lt;/a&gt; about SOA and Lego blocks.  He has added some great photos.  Unlike some other photos illustrating SOA on the web these blocks on the photo are real lego.  Jeff discusses accessibility, recombination, composite applications and peer-oriented systems using the metaphor of lego blocks.  He also makes judicial used of carrots, cabbage and coleslaw.&lt;br /&gt;&lt;br /&gt;I have discussed some of the advantages and disadvantages of the lego metaphor in my earlier posting &lt;a href=&quot;http://soaevolution.blogspot.com/2007/07/lego-and-soa.html&quot;&gt;Lego and SOA&lt;/a&gt;.  It has also made an appearance in some &lt;a href=&quot;http://soaevolution.blogspot.com/2007/09/soa-videos.html&quot;&gt;videos I have seen&lt;/a&gt; and &lt;a href=&quot;http://soaevolution.blogspot.com/2007/10/conference-summary-served-with.html&quot;&gt;conferences I have attended&lt;/a&gt;.</description><link>http://soaevolution.blogspot.com/2008/04/lego-carrots-and-coleslaw.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-2477097711455225612</guid><pubDate>Sun, 27 Apr 2008 02:21:00 +0000</pubDate><atom:updated>2008-04-27T03:15:24.142-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Enterprise Architecture</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><category domain="http://www.blogger.com/atom/ns#">Web Services</category><title>Web Services versus the REST</title><description>Despite there being much discussion about the relative strengths on between SOAP Web Services and REST it is not actually that often that you make an explicit decision between the two. Once the die is set you will tend use one or the other. Alternatively it may be self-evident which approach gets used for what services.&lt;br /&gt;&lt;br /&gt;The decision to use one technique or another is not made very often. Often such a decision is made in series of smaller decisions over a period time. For instance REST may be chosen to be used for some aspect of some project several times over before it assumes the role of accepted practice in an organisation. Often these decisions are not made in a formal way.&lt;br /&gt;&lt;br /&gt;This week my organisation had one of those smaller decision points. The solution architect proposed that we use REST or SOAP Web Services for our services. To define the solution architecture fully we needed to decide which one we going to use.&lt;br /&gt;&lt;br /&gt;The case for REST was:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;There would be less processing overhead&lt;/li&gt;&lt;li&gt;It would a less heavyweight solution as far as programming effort&lt;/li&gt;&lt;li&gt;Easy for service consumers to understand&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The case for SOAP Web Services was:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The project was already using SOAP elsewhere&lt;/li&gt;&lt;li&gt;Web Services was a standard and REST was a &quot;architectural style&quot;&lt;/li&gt;&lt;li&gt;Our partners were more likely to adopt Web Services than REST&lt;/li&gt;&lt;li&gt;The explicit definition of service contracts in &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;WSDL&lt;/span&gt; would be an advantage&lt;/li&gt;&lt;li&gt;Can deal in standard fashion with reliability and transaction issues&lt;/li&gt;&lt;li&gt;Better for modelling processes (verbs rather than just nouns)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Other points that were considered&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Our organisation is not particularly experience with either SOAP or REST&lt;/li&gt;&lt;li&gt;We had used other &quot;service&quot; approaches (neither SOAP or REST in the past)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The decision is not a simply a decision between one or the other. An organisation can adopt neither, both for different circumstances or both in combination. &lt;a href=&quot;http://www.zapthink.com/report.html?id=ZAPFLASH-2006712&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;Zapthink&lt;/span&gt;&lt;/a&gt; advises&lt;/p&gt;&lt;blockquote&gt;… the debate about Web Services and REST is as pointless as arguing whether a&lt;br /&gt;hammer or a screwdriver is a better tool.&lt;/blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://www.w3.org/2005/Talks/1115-hh-k-ecows/#(1)&quot;&gt;W3C&lt;/a&gt; discuss a scheme for reconciling the two so that SOAP-based services can be used in &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;RESTful&lt;/span&gt; ways.&lt;br /&gt;&lt;br /&gt;The winner in this case discussed above was Web Services. This does not commit the organisation to using these technique in the future however this decision will influence future decisions to adopt Web Services in favour of REST. The &quot;horses for courses&quot; approach of choosing the best approach for the application will become less likely as the organisation developers expertise and confidence with Web Services.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Notes:&lt;br /&gt;&lt;/strong&gt;There is some argument about &lt;span class=&quot;blsp-spelling-corrected&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;whether&lt;/span&gt; REST is Web Services or not. The use of Web Services Description Language (&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;WSDL&lt;/span&gt;) in conjunction with SOAP and not REST suggests that SOAP and Web Services are inseparable. I will use Web Services (capital &quot;W&quot; and capital &quot;S&quot;) to describe SOAP based services. Many commentators advocate using &quot;web services&quot; as a description of services developed in REST.&lt;br /&gt;&lt;br /&gt;Some REST (Representational State Transfer) include&lt;br /&gt;&lt;br /&gt;Daniel &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;Rubio&lt;/span&gt;&lt;br /&gt;&lt;a href=&quot;http://www.webforefront.com/archives/2005/05/rest_-_represen.html&quot;&gt;http://www.webforefront.com/archives/2005/05/rest_-_represen.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.xml.com/pub/au/225&quot;&gt;Joe Gregorio&lt;/a&gt;, December 01, 2004&lt;br /&gt;&lt;a href=&quot;http://www.xml.com/pub/a/2004/12/01/restful-web.html&quot;&gt;http://www.xml.com/pub/a/2004/12/01/restful-web.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mark Baker &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;et&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;al&lt;/span&gt;&lt;br /&gt;&lt;a href=&quot;http://rest.blueoxen.net/cgi-bin/wiki.pl?FrontPage&quot;&gt;http://rest.blueoxen.net/cgi-bin/wiki.pl?FrontPage&lt;/a&gt;&lt;br /&gt;&lt;a name=&quot;report&quot;&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://soaevolution.blogspot.com/2008/04/web-services-versus-rest.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-8702132452016817252</guid><pubDate>Sun, 30 Mar 2008 06:44:00 +0000</pubDate><atom:updated>2008-03-29T23:47:38.243-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Monkeys</category><category domain="http://www.blogger.com/atom/ns#">Passion</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><title>Evolution: The Fittest and the Sexiest</title><description>The topic of this blog is &quot;SOA Evolution&quot; so it seems overdue for me to look at the Evolution process.  I coined this title to chronicle my organisation&#39;s slow but deliberate adoption of SOA.  &#39;Evolution&#39; seemed to be an appropriate term because it was both a slow process but one that would improve our applications.  In this posting I will look at evolution more literally and find more appropriateness in the term than I first imagined.&lt;br /&gt;&lt;br /&gt;I am reading a book by Richard Dawkins (see references below) on a range of topics but primary about evolution in biology.  There are two principal evolutionary processes.  One is the survival of the fittest and the other is sexual selection which is the process of influencing the evolution process by the choice of a mate.  The success of evolution is its ability to adapt to its environment and to succeed against other species in that environment. &lt;br /&gt;&lt;br /&gt;Natural adaptations are gradual and based on the parent life form.  The history of the life forms can be discerned in the DNA of the life form.  We can determine that humans evolved from an ancestor we share with Chimpanzees from looking at this DNA.&lt;br /&gt;&lt;br /&gt;The process of survival of the fittest can be applied to software development technologies.  We see various versions of programming languages replaced by later more effective versions.  We see whole languages disappear into obscurity (eg. Algol, APL, SmallTalk, ADA) or replaced by new languages.  Relational databases took over from set-based or network databases.  Software development approaches have evolved from structured programming, to object-oriented programming to SOA.  It has been mentioned that SOA was forged from marriage of distributed computing and document-based integration.&lt;br /&gt;&lt;br /&gt;Extinction of old approaches is often not as complete as we would like.  The Cobol programs and the old database technologies are still around.  The old dinosaurs are hard to kill off completely.&lt;br /&gt;&lt;br /&gt;As with any evolutionary process the origins of software development are evident when we dig deep.  Visual Basic .NET is still saddled with some of the terminology and constructs that were around in DOS Basic.  The kernel of some operating systems still contains some anachronisms which would not be used if it were not for historical reasons.  Many software systems have parts that were written long ago or copied from other systems that no-one can maintain or just do not make sense in the context of software written today.  Some software maintenance tasks are like archaeological expeditions.  Unfortunately it is not passive fossils that the software archaeologist finds amongst the code.  Some of these historical curiosities actually support critical business functions.&lt;br /&gt;&lt;br /&gt;There are some principles from long ago that we do not want to discard though.  Just like some of the primitive instincts and emotions buried in the core of our brain there are principles from long ago that should remain in our software.  Procedures and functions still have a role in our software as do objects.  The development of services does not replace the need for these other means of encapsulation.  The principles for strong typing and structured programming still have as much value today as they did thirty years ago.&lt;br /&gt;&lt;br /&gt;The mechanism for natural selection process in software technologies is not that different from the animal kingdom.  Programmers will rewrite software using new techniques if requirements change.  New tools outsell older tools that do not provide the same benefits.  New techniques that reduce development time or improve quality replace old techniques. &lt;br /&gt;&lt;br /&gt;Just as species become extinct old software technique die from disuse or replacement.  Old code does not die off as quickly as some of us would like.  It can last forever in our systems if the requirements it fulfils and infrastructure it uses do not shift too markedly.&lt;br /&gt;&lt;br /&gt;Charles Darwin had two theories that he espoused in his books &quot;The Origin of the Species&quot; and &quot;The Descent of Man&quot;.  One could be paraphrased as &#39;survival of the fittest&#39; and the other once was &#39;sexual selection&#39;.  Sexual selection is where a mate is selected because he or she is bigger, is stronger, is darker, has more colourful tail feathers or has less hair and therefore individuals with these characteristics tend to propagate. &lt;br /&gt;&lt;br /&gt;I have briefly explained how the fittest software and development techniques succeed at the cost of inferior versions but it is also true that the sexiest software can be propagated despite any objective superiority.  This can happen through good marketing or the support of a major company.  Software standards are often agreed upon, even though they may not be the best based on an objective measure of quality.  Often the benefit to adopt a standard exceeds the cost of the standard being suboptimal.&lt;br /&gt;&lt;br /&gt;&#39;Survival of the fittest&#39; and &#39;sexual selection&#39; are alive and well in the software industry.  I expect SOA to remain an important part for the genetic makeup of future software development even after the term has lost its currency.&lt;br /&gt; &lt;br /&gt;References&lt;br /&gt;&lt;br /&gt;Dawkins, Richard, A Devil&#39;s Chaplain: Selected Essays, Phoenix 2003&lt;br /&gt;&lt;br /&gt;Darwin, Charles, The Descent of Man, 1871, &lt;a href=&quot;http://www.infidels.org/library/historical/charles_darwin/descent_of_man/&quot;&gt;http://www.infidels.org/library/historical/charles_darwin/descent_of_man/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Darwin, Charles, The Origin of the Species, 1859, &lt;a href=&quot;http://www.infidels.org/library/historical/charles_darwin/origin_of_species/&quot;&gt;http://www.infidels.org/library/historical/charles_darwin/origin_of_species/&lt;/a&gt;</description><link>http://soaevolution.blogspot.com/2008/03/evolution-fittest-and-sexiest.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-3142326317397142732</guid><pubDate>Mon, 10 Mar 2008 07:23:00 +0000</pubDate><atom:updated>2008-03-18T04:13:53.002-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coupling</category><category domain="http://www.blogger.com/atom/ns#">ESB</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><category domain="http://www.blogger.com/atom/ns#">Virtualization</category><category domain="http://www.blogger.com/atom/ns#">Wikipedia</category><title>SOA in a Virtual World</title><description>&lt;a href=&quot;http://en.wikipedia.org/wiki/Virtual_world&quot;&gt;Wikipedia&lt;/a&gt; defines a virtual world as a &lt;a title=&quot;Computer simulation&quot; href=&quot;http://en.wikipedia.org/wiki/Computer_simulation&quot;&gt;computer-based simulated environment&lt;/a&gt; intended for its users to inhabit it. Often a computer application is a business process made virtual by the use of computer technology. We therefore have to be careful when discussing the virtualization of computer environments as this may imply a virtual virtual reality.&lt;br /&gt;&lt;br /&gt;The only example of virtual virtual reality I have seen is in a &lt;a href=&quot;http://www.imdb.com/title/tt0149460/&quot;&gt;Futurama&lt;/a&gt; episode. It displayed an arcade booth with the label &#39;Virtual Reality&#39; complete with a player using stereoscopic goggles and &lt;a href=&quot;http://en.wikipedia.org/wiki/Wired_glove&quot;&gt;wired gloves&lt;/a&gt;. It then displayed another arcade booth with man sitting in a simple chair imaging he was wearing stereoscopic goggles and wired gloves. The caption to this booth was &quot;Virtual Virtual Reality&quot;.&lt;br /&gt;&lt;br /&gt;If we talk about &quot;Virtual SOA&quot; we must be talking about something that is not an SOA at all. Judith Hurwitz comes close to this when she discusses a &quot;Virtualized SOA&quot; in her article &quot;&lt;a href=&quot;http://www.it-director.com/blogs/Judith_Hurwitz/2008/2/is_virtualization_the_foundation_o_.html&quot;&gt;Is virtualization the foundation of SOA?&quot;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Andrew Doble writes about &lt;a href=&quot;http://andrewdoble.blogspot.com/2007/02/building-virtual-soas.html&quot;&gt;building a virtual SOA&lt;/a&gt; without investing in in-house software like an ESB. I would argue that this is in fact legitimate SOA. The only thing &quot;virtual&quot; about Andrew&#39;s suggestion is the ownership of the software tools.&lt;br /&gt;&lt;br /&gt;Virtualization and SOA however do go together. Judith Hurwitz defines Virtualization as&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&quot;a technique for abstracting the physical characteristics of computing resources&lt;br /&gt;in order to more easily leverage hardware systems, applications, operating&lt;br /&gt;systems, networks, graphics, data or storage so they can be repurposed based on&lt;br /&gt;customer need.&quot;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I believe that loose-coupling is the foundation of SOA but virtualization in many cases allows the benefits from this loose-coupling to be realised. The basic examples of virtualization are virtual servers, storage area networks and thin client platforms such as Citrix. These provide infrastructure flexibility for the deployment of SOA software. The design of the software for an application written using SOA is not affected. The SOA discipline should make sure that flexible deployment options can be used.&lt;br /&gt;&lt;br /&gt;Manufacturers such as IBM are &lt;a href=&quot;http://weblog.infoworld.com/virtualization/archives/2007/07/emas_andi_mann.html&quot;&gt;building business around SOA infrastructure&lt;/a&gt;. One thing to remember is that you do not need virtualization to build SOA. An SOA application can be built on a single server if you required, although it should also give you the flexibility to distribute this application and take advantage of virtualization options.&lt;br /&gt;&lt;br /&gt;I agree with Lorraine Lawson in her posting &quot;&lt;a title=&quot;SOA and Virtualization: Complex, Fuzzy Ideas That Go Great Together?&quot; href=&quot;http://www.itbusinessedge.com/blogs/mia/?p=329&quot;&gt;SOA and Virtualization: Complex, Fuzzy Ideas That Go Great Together? &lt;/a&gt;&quot;. These two concepts mix well. However SOA is from the software development world and virtualisation is from the infrastructure world. We should beware of talking in terms of virtualizing our SOA. Our CIOs may consider we are sitting in a corner thinking we have an SOA when this is just a virtual reality.&lt;br /&gt;&lt;br /&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5176012414497431090&quot; style=&quot;DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGd-QlvxVrbj8H9bhP94P7FLEY3lawB05rflih7PgoBC5MzaKRUcHosGUS8T2xrsxVeHn_NSxPA6MbrlztVKg3erCStz_hdBrV7J9nUJNRSdEnjd-rGBa8POefyBfofh0cvE55KVDuuWA/s320/Fry.JPG&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;&lt;div align=&quot;center&quot;&gt;Fry from &quot;Futurama&quot; with a virtual Lucy Liu.&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;© 2001 Twentieth Century Fox. All Rights Reserved&lt;/div&gt;</description><link>http://soaevolution.blogspot.com/2008/03/soa-in-virtual-world.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGd-QlvxVrbj8H9bhP94P7FLEY3lawB05rflih7PgoBC5MzaKRUcHosGUS8T2xrsxVeHn_NSxPA6MbrlztVKg3erCStz_hdBrV7J9nUJNRSdEnjd-rGBa8POefyBfofh0cvE55KVDuuWA/s72-c/Fry.JPG" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-9089129127819285034</guid><pubDate>Sat, 23 Feb 2008 22:28:00 +0000</pubDate><atom:updated>2010-01-02T18:22:51.768-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">IT Personnel</category><category domain="http://www.blogger.com/atom/ns#">IT Skills</category><category domain="http://www.blogger.com/atom/ns#">IT Strategy</category><category domain="http://www.blogger.com/atom/ns#">ITIL</category><title>The Importance of Meta-Projects</title><description>The feature video on &lt;a href=&quot;http://www.iasahome.org/web/home/home&quot;&gt;International Association of Software Architects (IASA)&lt;/a&gt; site last week provided. I wish I could reference the speaker and the name of the video but alas last weeks feature video has been replaced by this weeks feature video.&lt;br /&gt;&lt;br /&gt;The talk was reasonably pragmatic discussion of Architecture by a staff member of delta airlines. What inspired me to write this posting was that a slide that depicted &quot;Business Enablements&quot; things, like agility and collaboration. It also depicted lists for Business strategy and IT strategy. This is nothing new but it reminded me I need to lift my eyes from the day to day IT projects and see what my organisation is doing for software development as a whole.&lt;br /&gt;&lt;br /&gt;This is timely because its time for my branch to put together a plan for next year. Typically this has been very project-focussed. Of course I also hope to put together a good graphic although I doubt whether I can do as well as the delta-airlines chart.&lt;br /&gt;&lt;br /&gt;Each business and each IT department has its projects to achieve some outcome for the business. My focus is on application development projects. Often these projects are part of a bigger business project and commonly involve business process changes and infrastructure changes. Another category of projects do not achieve direct outcomes for the business but allow the business or the IT department to undertake these projects in a more effective manner. For business projects these &#39;meta-projects&#39; is what was referred to as &quot;business enablements&quot; by the IASA speaker. I will not be using the term further as my spell checker says &quot;enablements&quot; is not a real word, and I tend to agree.&lt;br /&gt;&lt;br /&gt;To put these in context see the following table&lt;br /&gt;&lt;br /&gt;&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;Business&lt;/th&gt;&lt;th&gt;IT&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Goals/Objectives&lt;/th&gt;&lt;td&gt;Business Goals. Mission, Vision and Strategy&lt;/td&gt;&lt;td&gt;IT Strategy&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Meta-Projects&lt;/th&gt;&lt;td&gt;Business meta-projects&lt;/td&gt;&lt;td&gt;IT meta-projects&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Projects&lt;/th&gt;&lt;td&gt;Business projects&lt;/td&gt;&lt;td&gt;IT projects&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;There are strong relationships between each cell in the table and its neighbouring cells. The business goals drive the IT strategy and also the business meta-projects. Business meta-projects may drive business projects but also meta-projects may be driven by projects. Neither the meta-project or project is necessarily the driver. This is the same with IT meta-projects and IT projects. IT strategy should drive the IT meta-projects and IT projects.&lt;br /&gt;&lt;br /&gt;The IT Meta-Projects that my IT department is engaged in are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SOA&lt;/li&gt;&lt;li&gt;Enterprise Architecture&lt;/li&gt;&lt;li&gt;Mobility (Supporting mobile computing devices)&lt;/li&gt;&lt;li&gt;Business Intelligence (Data Warehouse and Reporting)&lt;/li&gt;&lt;li&gt;Legacy Transition &lt;/li&gt;&lt;li&gt;Spatial Systems (Geographic Information Systems) &lt;/li&gt;&lt;li&gt;Online Project (Customer-facing IT systems)&lt;/li&gt;&lt;li&gt;Identity Management (Authentication/Privileges/Access Control)&lt;/li&gt;&lt;li&gt;Service Management (ITIL, Request Management, Change Management)&lt;/li&gt;&lt;li&gt;Performance Management (Individual Performance)&lt;/li&gt;&lt;li&gt;Cost Efficiency/Consolidation (ongoing)&lt;/li&gt;&lt;li&gt;Business Alignment (ongoing)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Some of these meta-projects have explicit planning documents explaining the plan. Others are more just acknowledged as the agreed direction of the IT department. Cost efficiency and business alignment are not specific projects but an ongoing focus of attention as they would be in most IT departments.&lt;br /&gt;&lt;br /&gt;Some of these IT meta-projects such as Online Project, Service Management, Performance Management and Costs Efficiency have analogous business meta-projects. Business Alignment parallels the business meta-project of customer alignment.&lt;br /&gt;&lt;br /&gt;This list of IT meta-projects has not previously been written out. It is surprisingly long, especially given the much longer list of specific software development projects that are on our books. Ideally each of these meta-projects should be explicitly planned, prioritised and monitored.&lt;br /&gt;&lt;br /&gt;Meta-projects provide a foundation to the work an IT department does. They could also be referred to as &#39;foundation projects&#39; but they are not necessarily just internal projects as they may be programs of projects that directly affect the business user. The meta-projects help build the look and the feel of the IT department. They establish its competitive advantage and its identity. Accordingly, it is important to get these meta-projects right and to provide them with the attention they deserve over the more day to day concerns of getting software out the door.</description><link>http://soaevolution.blogspot.com/2008/02/importance-of-meta-projects.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-7287461736415703319</guid><pubDate>Sat, 16 Feb 2008 11:20:00 +0000</pubDate><atom:updated>2008-02-16T03:22:39.690-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Enterprise Architecture</category><category domain="http://www.blogger.com/atom/ns#">IT Skills</category><title>Architecture on Valentine&#39;s Day</title><description>I attended the &lt;a href=&quot;http://sa.acs.org.au/it_arch/index.php/Main_Page&quot;&gt;Australian Computer Society (South Australian Branch) Architecture SIG&lt;/a&gt; this week.  It happened that this was on Valentines Day.  This drew a few comments about our dedication to the craft of IT Architecture, as we chose to spend the evening talking about architecture rather than with our chosen partners.&lt;br /&gt;&lt;br /&gt;There were two presentations.  Paul Turner introduced the &lt;a href=&quot;http://www.iasahome.org/web/home/home&quot;&gt;International Association of Software Architects (IASA)&lt;/a&gt; to us.  They have just set up chapter in Adelaide and will associate with our &lt;a href=&quot;http://sa.acs.org.au/it_arch/index.php/Main_Page&quot;&gt;Architecture SIG&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;IASA is an international professional society for Architects.  It provides standards, training, certification and advocacy for Software Architects.  Paul discussed some fundamental questions such as:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What is an architect?&lt;/li&gt;&lt;li&gt;What is software architecture?&lt;/li&gt;&lt;li&gt;How can yo prove you are a software architect?&lt;/li&gt;&lt;/ul&gt;Paul explained how IASA could help answer some of these questions.  The main item of interest for me is that one can now be certified as an Architect.  You pay for training over a number of months and then get grilled by a board which determines whether you have made the grade.  This is an interesting development and will provide some legitimacy to the role and credentials of a software architect.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://adzdavies.blogspot.com/&quot;&gt;Adam Davies&lt;/a&gt; then gave a demonstration of Ruby on Rails.  I had previously heard much about this technology but had not seen it in action.  It was a very competent demonstration and it was amazing how much Adam was able to put together in the course the demonstration without resorting to the &quot;here is some code I prepared earlier&quot; fallback.  Rails is able to set up sensible defaults to field names, column names and object names and create mappings between these without much overhead.  It seemed to be ideal for standalone applications but certainly had some features that would make it valuable in any software development environment.</description><link>http://soaevolution.blogspot.com/2008/02/architecture-on-valentines-day.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-695397106968387362</guid><pubDate>Mon, 28 Jan 2008 07:46:00 +0000</pubDate><atom:updated>2008-01-27T23:55:24.883-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Costs</category><category domain="http://www.blogger.com/atom/ns#">Coupling</category><title>Coupling Calculus</title><description>I have had thread going through this blog on Coupling. Coupling is important because good definitions of SOA are dependent on the concept of &#39;loose coupling&#39; or more precisely, &#39;message coupling&#39;. The thread so far has included the following postings:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/cohesion-coupling-and-soa.html&quot;&gt;Cohesion, Coupling and SOA&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/bragging-rights-on-coupling.html&quot;&gt;Bragging Rights on Coupling&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://soaevolution.blogspot.com/2007/09/aop-worst-form-of-coupling.html&quot;&gt;AOP: The Worst Form of Coupling&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://soaevolution.blogspot.com/2007/10/binding-and-coupling.html&quot;&gt;Binding and Coupling&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://soaevolution.blogspot.com/2007/11/subroutine-call-coupling.html&quot;&gt;Subroutine Call Coupling&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://soaevolution.blogspot.com/2007/12/seven-levels-of-coupling-seven-deadly.html&quot;&gt;Seven Levels of Coupling or Seven Deadly Sins?&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://soaevolution.blogspot.com/2007/12/coupling-with-contracts.html&quot;&gt;Coupling with Contracts&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the &lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/cohesion-coupling-and-soa.html&quot;&gt;first posting of this series&lt;/a&gt; I went back to the origins of the coupling term that was coined by Edward Yourdan to explain good programming practice in terms of subroutines. I then tried to come up with a &lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/bragging-rights-on-coupling.html&quot;&gt;list of coupling types &lt;/a&gt;which would help explain what were good and bad form of coupling.&lt;br /&gt;&lt;br /&gt;This served to clarify the concept in my mind but the list of coupling types is not exhaustive and term &#39;coupling&#39; is still not clearly defined. Coupling is a measure, usually described as &#39;loose&#39; and &#39;tight&#39; which correspond to the value judgement of &#39;bad&#39; and &#39;good&#39; respectively.&lt;br /&gt;&lt;br /&gt;A good measure has numbers that describe it, but this is not yet the case with coupling. I and other authors have attempted to rank coupling types in order of merit with the ranking an implicit measure of coupling.&lt;br /&gt;&lt;br /&gt;There have been attempts to measure coupling by looking at program artefacts like variable names and measuring how many times they are referenced. These attempts seem to miss the point by measuring what can be measured rather measuring coupling properly. Some of these approaches are described in footnote 1.&lt;br /&gt;&lt;br /&gt;In this posting I try to suggest some definitions relating to coupling. This will not come up with useful numbers but it will try to explore the concept of coupling and may be a basis on which more theory can be developed.&lt;br /&gt;&lt;br /&gt;Coupling is about how easy it is to change applications. If one part of an application (module) has to be changed because another part of a program changes then these program parts a tightly coupled. If one module does not have to be changed for changes made to another module then these application modules are loosely coupled. There are a number of programming practices that can be put in place to loosen the coupling between modules. This is good because it reduces the effort required to maintain your code.&lt;br /&gt;&lt;br /&gt;The above would seem to be a fairly elementary description. Definitions however can still be made more precise, so that the concept can be analysed in more detail.&lt;br /&gt;&lt;br /&gt;Lets say we have two modules A and B in a system S. The number of changes that can be made to A can be defined as C(A).&lt;br /&gt;&lt;br /&gt;We can make changes to A because we want system S to do something different, or we can make changes to A for other reasons. We might want S to be produce results more quickly or we just might want A or S to be reorganised to be more easily comprehended. A change to A might not mean any change the output of S.&lt;br /&gt;&lt;br /&gt;In order for A to be changed and the result of S to be changed to a desirable result (which may be an unchanged outcome for S) then in some cases some module B would have to change as well.&lt;br /&gt;&lt;br /&gt;The coupling between A and B is defined as the effort required to make changes to B as a result of these changes A. For change j then there is work (and cost) associated with this change for systems S say Wj(S). The work in module Wj(A) and module be Wj(B).&lt;br /&gt;&lt;br /&gt;Coupling then can be defined in terms of an individual change&lt;br /&gt;Coupling(j) =the work required in B to make change j as a result of the change in Aj.&lt;br /&gt;Coupling(A,B) is the sum of all work require in B for such changes j.&lt;br /&gt;&lt;br /&gt;This leaves the concept of &#39;Coupling Type&#39; to be explained. A system can be organised to reduce coupling between A and B. A coupling type is a way of organising the system. Some ways of organising will mean that a change to A require changes to B. Some ways of organising will mean that B can remain independent of changes in A. Some ways may increase or decrease the work involved in making changes to B when A is changed.&lt;br /&gt;&lt;br /&gt;In general a way of organising a system S is O(S) which is another system which produces the same results. This is a change to the structure of the system rather than a change to the outcomes of the system. If we wanted to measure the coupling of a way of organising O then &#39;all&#39; we have to do is sum all the Coupling(A,B) over all such S, A and B. A coupling type describes a number of ways of organising a system. The coupling associated with a coupling type is therefore the sum of all the Coupling (A,B) over all these ways of organising S.&lt;br /&gt;&lt;br /&gt;To express this succinctly:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Coupling between two modules (A and B) of a system (S) is the work required to make changes to a module (B) as result of changes to another module (A) and still produce the desired outcome of a system (S).&lt;br /&gt;&lt;br /&gt;A coupling type is scheme for organising the system (S). A measure of the coupling of a coupling type is the sum over all A and B for systems S which conform to this coupling type.&lt;/blockquote&gt;&lt;br /&gt;These technical definitions of coupling describe big, practically incomputable numbers. The conclusions we can draw though are&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;There is nothing really special about a coupling type. There could be a very large number of these and they are not confined to simple statements about how to pass parameters between modules. My earlier posting attempting to count these is inherently futile expect to provide common examples.&lt;/li&gt;&lt;li&gt;Coupling is about work relating to a change. I have not defined what I mean by &#39;work&#39; intentionally. We could count lines of code changed or look at whether logic or data is changing. We count the costs of making these changes (eg. Hours of labour). It is meant to be used in its common sense. If it is necessary to trawl through technical documentation to make a change to one line of code this is still consider then the trawling effort should be consider as part of the work expended for this change.&lt;/li&gt;&lt;li&gt;Coupling is about systems in general. It is not just code instructions that are relevant. You might have to change constants, configurations, contracts or XML. These need to be considered in the concept of coupling.&lt;/li&gt;&lt;li&gt;The concept of coupling is relevant to systems theory examples outside of the field of computer science. Systems can also refer to biological or sociological systems (See footnote 2).&lt;/li&gt;&lt;li&gt;A change may not actually change the behaviour of the system at all but it is still relevant for coupling.&lt;/li&gt;&lt;li&gt;Coupling at its most elementary level looks at two particular modules, a particular system and a particular change. Thus it sensible to say A is tightly coupled to B in a system S in relation to change j.&lt;/li&gt;&lt;li&gt;Coupling can aggregated up to the module or level or to the Coupling Type level. Thus we can have A loosely coupled to B. We can talk about a Way of Organisation or a Coupling Type as facilitating loose coupling.&lt;/li&gt;&lt;li&gt;Restriction have not been placed on A and B. Therefore if B=S we can have A tightly coupled with the rest of the system S. A and B could intersect or A could be a sub-module of B.&lt;/li&gt;&lt;/ul&gt;It is still important to describe different coupling types and to determine what types promote loose coupling and what types do not. Good practice will reduce coupling for common programming changes.&lt;br /&gt;&lt;br /&gt;To determine whether one coupling type is better than another the above suggests we need to enumerate all possible changes and work out which type leaves you with less work involved in one module as result of changes in another. This is obviously impractical but the analyst can do a couple of things to determine a good coupling type. A range of typical changes can be investigation or the coupling type can be looked at in relation to a specific type of change. For instance the benefits of message queuing can be looked at in relation to changing the location or speed of hardware.&lt;br /&gt;&lt;br /&gt;This posting has added some precision to the concept of coupling. Counting all the possible ways to change a system is futile, however good and bad coupling will be become evident by looking at coding examples and foreseeing the changes that will be required to any system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Footnote 1:&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;The following web pages describe metrics for coupling. These can be based on a static analysis of code or a dynamic tracing of the execution paths. In both cases the emphasis is counting the reference to a variable or type. This has some value in the task of maintaining code but is not a measure of the work required to change one module based on the need to change another. In some cases there may be some correspondence between the amount of work in changing the use of the variable with the number of times it is reference but not generally.&lt;br /&gt;&lt;br /&gt;Lethbridge, Timothy C. and Anquetil, Nicolas, Experiments with Coupling and Cohesion Metrics in a Large System, April 2000, &lt;a href=&quot;https://www.site.uottawa.ca/~tcl/papers/metrics/ExpWithCouplingCohesion.html&quot;&gt;https://www.site.uottawa.ca/~tcl/papers/metrics/ExpWithCouplingCohesion.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Poshyvanyk, Denys and Marcus, Andrian, The Conceptual Coupling Metrics for Object-Oriented Systems, &lt;a href=&quot;http://www.cs.wayne.edu/~vip/publications/poshyvanyk-ConceptualCoupling.pdf&quot;&gt;http://www.cs.wayne.edu/~vip/publications/poshyvanyk-ConceptualCoupling.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Glover, Andrew, In pursuit of code quality: Code quality for software architects: Use coupling metrics to support your system architecture, April 2006, &lt;a href=&quot;http://www.ibm.com/developerworks/java/library/j-cq04256/&quot;&gt;http://www.ibm.com/developerworks/java/library/j-cq04256/&lt;/a&gt;&lt;br /&gt;FrontEndArt describes one of its products for montoring source code quality include various metrics for coupling, &lt;a href=&quot;http://www.frontendart.com/monitor/help/node22.html&quot;&gt;http://www.frontendart.com/monitor/help/node22.html&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/profile/4123000&quot;&gt;Diederik Krols&lt;/a&gt; provides a blog-site archive which includes the postion &quot;OO-Metrics for Coupling&quot;. This provides a coupling metric based on types shared across a module boundary. &lt;a href=&quot;http://dotbay.blogspot.com/2006_01_01_archive.html&quot;&gt;http://dotbay.blogspot.com/2006_01_01_archive.html&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Footnote 2:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The concept of &quot;structural coupling&quot; in systems theory is used to describe co-evolution in biological and social systems. This is where, if entity A evolves then entity B might need to evolve to compensate. There would seem to be more complicated processes at play here than in a computer application.&lt;br /&gt;&lt;br /&gt;Kay, Robert and Goldspink, Chris, Towards a Complex Non-linear Systems Theory of Organisation, &lt;a href=&quot;http://ftp.informatik.rwth-aachen.de/Publications/CEUR-WS/Vol-72/044%20Kay%20Complex.pdf&quot;&gt;http://ftp.informatik.rwth-aachen.de/Publications/CEUR-WS/Vol-72/044%20Kay%20Complex.pdf&lt;/a&gt;</description><link>http://soaevolution.blogspot.com/2008/01/coupling-calculus.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-5709950360108888825</guid><pubDate>Fri, 18 Jan 2008 01:52:00 +0000</pubDate><atom:updated>2008-01-20T03:47:09.517-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ESB</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><category domain="http://www.blogger.com/atom/ns#">Web Services</category><title>More on ESBs</title><description>One of my for more popular postings has been &quot;&lt;a href=&quot;http://soaevolution.blogspot.com/2007/07/esb-or-not-esb.html&quot;&gt;ESB or not ESB&lt;/a&gt;&quot;. I suspect the only reason was the word &quot;ESB&quot; appeared twice in the title and the Google search engine gave it a high priority when people searched on this acronym.&lt;br /&gt;&lt;br /&gt;This was cited in an Italian language blog posting by &lt;a href=&quot;http://itlab.wordpress.com/2007/11/19/esb-enterprise-service-bus/&quot;&gt;Andrea Gumina&lt;/a&gt; which also cited a good posting by &lt;a href=&quot;http://steve.vinoski.net/blog/2007/10/04/the-esb-question/&quot;&gt;Steve Vinoski&lt;/a&gt; . Steve&#39;s posting is perceptive and has many good comments on it.&lt;br /&gt;&lt;br /&gt;Steve is commenting on an &lt;a href=&quot;http://patricklogan.blogspot.com/2007/09/more-on-esb.html&quot;&gt;earlier posting by Patrick Logan&lt;/a&gt;. Patrick describes the concept of an ESB as a &quot;mangy mutt&quot; because it is a &quot; grab-bag of mechanisms that form no coherent whole&quot;. I agree with this assessment but feel that the ESB concept will mature. The ESB may be a mechanism to provide some plumbing. Many organisations SOA efforts need that plumbing because the system delivery has a number of leaks.&lt;br /&gt;&lt;br /&gt;My organization was galvanized into inaction and has not yet bought an ESB. However we are fairly typical I would guess because we want the vendors products to do &#39;everything&#39; for us. IT is not our core business and we do not want to worry about location or services, security, integration, messaging etc. We want our developers to focus on business logic and data models specific to the business. If the vendor came up with an ESB that really did remove the need to spend time on software infrastructure (and did not charge a fortune for it), then we would be interested.&lt;br /&gt;&lt;br /&gt;I would also like our developers to settle on a &quot;one best way&quot; to develop applications rather than the organization investing in training and support for a multitude of programming languages and technologies. Steve advocates using the right language for the job and not being confined to one language. This is a noble cause but it is hard work learning another language and becoming proficient in it. Most developers I know have the one language that they would prefer to write everything in, just as most people I know don&#39;t communicate in anything but English. If I weren&#39;t so lazy I&#39;d teach myself Italian so I could find out what that Italian site was saying about my blog posting. Similarly I think many developers can&#39;t realistically be expected to be truly multilingual when it comes to programming languages.&lt;br /&gt;&lt;br /&gt;The discussion of &lt;a href=&quot;http://steve.vinoski.net/blog/2007/10/04/the-esb-question/&quot;&gt;Steve&#39;s posting&lt;/a&gt; gets a hijacked by the &lt;a href=&quot;http://www.xlml.com/aehso/2007/10/07/esbs-and-rest/&quot;&gt;REST vs Web Services debate&lt;/a&gt;. This is unfortunate because the ESB discussion should be a separate issue. Using SOAP and Web Services does not require an ESB. ESBs have been conceived to assist with REST such as open source ESBs &lt;a href=&quot;http://wisdomofganesh.blogspot.com/2007/12/no-really-what-is-soap-what-is-bpel.html&quot;&gt;WSO2&lt;/a&gt; and &lt;a href=&quot;http://pzf.fremantle.org/2008/01/mule-launches-registry.html&quot;&gt;Mule&lt;/a&gt;. The more popular arrangements seem to be that Web Services use an ESB and REST does not, but this need not be the case. &lt;a href=&quot;http://www.25hoursaday.com/weblog/CommentView.aspx?guid=63db890f-a559-4a8b-b480-d746607faedc&quot;&gt;The REST vs Web Services argument&lt;/a&gt; is taken up elsewhere and in some people&#39;s minds have already been settled. &lt;a href=&quot;http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1199369,00.html&quot;&gt;Ronald Schmelzer of Zapthink&lt;/a&gt; states:&lt;br /&gt;&lt;blockquote&gt;In many ways, however, the debate about Web services and REST is as pointless as arguing whether a hammer or a screwdriver is a better tool.&lt;/blockquote&gt;In the discussion in &lt;a href=&quot;http://steve.vinoski.net/blog/2007/10/04/the-esb-question/&quot;&gt;Steve Vinoski&#39;s posting&lt;/a&gt; I found myself agreeing with &lt;a href=&quot;http://moveflow.blogspot.com/&quot;&gt;Jonas Ekstrom&lt;/a&gt; and Paul H that the ESB market is not yet mature. Jonas put this eloquently:&lt;br /&gt;&lt;blockquote&gt;Religions give easy answers, but there are no easy answers. Natural selection will strike again and again until we have reached the perfect SOA. &lt;/blockquote&gt;Paul H puts a similar slant on this:&lt;br /&gt;&lt;blockquote&gt;I look forward to the day when we’re in a similar stage of maturity … and there exists generally accepted, standardized, manageable, and self-federating mediation technologies … until then, we’ll all have to suffer through endless arguments along the lines of &#39;should I use a BEA ESB or a Sonic ESB? is an ESB really necessary, or can I get away with REST + Dynamic Languages?&#39;&lt;/blockquote&gt;&lt;br /&gt;I will continue to wait until the need for an ESB (or some part of one) becomes self-evident. While an implementation of SOA can function without and ESB there seems little point in making the investment.</description><link>http://soaevolution.blogspot.com/2008/01/more-on-esbs.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-5600745046488257972</guid><pubDate>Mon, 24 Dec 2007 05:10:00 +0000</pubDate><atom:updated>2007-12-23T21:17:27.875-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coupling</category><category domain="http://www.blogger.com/atom/ns#">Design</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><title>Coupling with Contracts</title><description>I listened to a &lt;a href=&quot;http://www.informit.com/podcasts/episode.aspx?e=895bfcaa-aac0-44d5-bed2-fa5a586923d4&amp;amp;rl=1&quot;&gt;podcast by Thomas Erl&lt;/a&gt; yesterday which gave yet another slant to the subject of coupling in SOA. My &lt;a href=&quot;http://soaevolution.blogspot.com/2007/12/seven-levels-of-coupling-seven-deadly.html&quot;&gt;previous posting about coupling&lt;/a&gt; was inspired by a Zapthink arcticle on &quot;&lt;a href=&quot;http://www.zapthink.com/report.html?id=ZAPFLASH-20071128&quot;&gt;The Seven Levels of Loose Coupling&lt;/a&gt;&quot; seven levels of coupling. The Thomas Erl podcast provides more information on at least three of the seven levels described by Ronald Schmelzer in the Zapthink article. These are&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the coupling between the service consumer and the services implementation,&lt;/li&gt;&lt;li&gt;the coupling between the service consumer and the service contract, and&lt;/li&gt;&lt;li&gt;the coupling between the service consumer and the business process&lt;/li&gt;&lt;/ul&gt;In his podcast Erl asks the listener to refer to a &lt;a href=&quot;http://soaprinciples.com/p7.asp&quot;&gt;diagram on his &quot;SOA Principles&quot; web-site&lt;/a&gt;. The types of coupling he focuses on in the podcast and the diagram are:&lt;br /&gt;&lt;br /&gt;Service consumers are coupled to the service contract&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The service contract can be coupled to a parent business process&lt;/li&gt;&lt;li&gt;The service contract can be coupled to the service logic &lt;/li&gt;&lt;li&gt;The service logic can be coupled to the service contract&lt;/li&gt;&lt;li&gt;The service logic may be coupled to proprietary vendor technology&lt;/li&gt;&lt;li&gt;The service logic may be coupled to multiple services it may need to compose&lt;/li&gt;&lt;li&gt;The service logic may be coupled to various resources that are part of the overall implementation environment &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These coupling relationships broaden the possibilities explained in the Zapthink article. Firstly all the coupling relations are not based around the service consumer and secondly the coupling is not a symmetric relationship. Erl explains that it is good to couple the logic to the contract as this is contract-driven development but poor practice to have the contract tied to the logic of the service.&lt;br /&gt;&lt;br /&gt;The multitude of coupling relationships was referred to in my &lt;a href=&quot;http://soaevolution.blogspot.com/2007/12/seven-levels-of-coupling-seven-deadly.html&quot;&gt;earlier posting&lt;/a&gt;. When discussing coupling, it is important to be clear on what is being coupled when explaining service coupling. Zapthink discusses implementation, contract, policy, business process, data schema, infrastructure and semantic layer. What Erl describes is the service logic is part of what Zapthink describes as the implementation. Erl does not describe policy coupling. The data schema is part of the implementation environment and the infrastructure could be vendor technology.&lt;br /&gt;&lt;br /&gt;I would prefer to keep coupling as a symmetric relationship. In other words if logic is coupled to contract then contract is coupled to logic. Erl is trying to cover methodological issues when he talks about contract-driven development. This is an important &#39;pattern&#39; but it is not about coupling. It is about what a developer does first. The fact is that the contract and the logic are coupled and if this coupling can be made loose then that will provided more flexibility.&lt;br /&gt;&lt;br /&gt;The focus of the Zapthink article is on the coupling with the service consumer. Erl has a twin focus on the contract and the service logic. My &lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/bragging-rights-on-coupling.html&quot;&gt;previous discussions on coupling&lt;/a&gt; tended to focus on coupling between services (or program modules). I tend to think that most important coupling concern in SOA is between the consumer and the service implementation in SOA. The consumer may be a user interface or another service. Contract coupling is important but it is more of a vehicle for loosening the coupling between consumer and provider.&lt;br /&gt;&lt;br /&gt;One strength of the &lt;a href=&quot;http://www.zapthink.com/report.html?id=ZAPFLASH-20071128&quot;&gt;Zapthink article&lt;/a&gt; is that it has enabled me to analyse the Erl model. As is usual for Thomas Erl, his illustrations provide some clarity to a complex interaction of concepts. In this case &lt;a href=&quot;http://soaprinciples.com/p7.asp&quot;&gt;his diagram&lt;/a&gt; should be taken as a sample of the coupling issues rather than a representation of all of the coupling issues relevant to SOA. Also as discussed above I suggest we stick with a symmetric notion of coupling to keep the world of SOA a simpler place. &lt;/p&gt;</description><link>http://soaevolution.blogspot.com/2007/12/coupling-with-contracts.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-8055059996681372614</guid><pubDate>Sat, 22 Dec 2007 11:01:00 +0000</pubDate><atom:updated>2007-12-22T03:17:19.155-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coupling</category><category domain="http://www.blogger.com/atom/ns#">Design</category><category domain="http://www.blogger.com/atom/ns#">IT Governance</category><category domain="http://www.blogger.com/atom/ns#">MEST</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><title>Does normalization apply to Services?</title><description>I was listening to a &lt;a href=&quot;http://www.informit.com/podcasts/episode.aspx?e=d4fc2124-93cf-4273-b49f-1cbe113db1ea&quot;&gt;podcast by Thomas Erl&lt;/a&gt; this week where he was talking about a pattern for normalization of services. This was interesting because there is not much in SOA with the same theoretical rigour as database normalization inspired by the &lt;a href=&quot;http://en.wikipedia.org/wiki/Database_normalization&quot;&gt;work of Edgar Codd&lt;/a&gt; in the 1970s and the &lt;a href=&quot;http://www.cs.sfu.ca/CC/354/zaiane/material/notes/Chapter3/node7.html&quot;&gt;relational algebra&lt;/a&gt; and the Structured Query Language (SQL) that followed it.&lt;br /&gt;&lt;br /&gt;The normalization that Erl talks about is fairly limited. &lt;a href=&quot;http://www.soapatterns.org/service_normalization.asp&quot;&gt;On his website &lt;/a&gt;he summarizes normalization as&lt;br /&gt;&lt;blockquote&gt;&lt;strong&gt;Problem&lt;br /&gt;&lt;/strong&gt;When delivering services as part of a service inventory, there is a constant risk that services will be created with overlapping functional boundaries, making it difficult to enable wide-spread reuse.&lt;br /&gt;&lt;strong&gt;Solution&lt;br /&gt;&lt;/strong&gt;The service inventory needs to be designed with an emphasis on service boundary alignment.&lt;/blockquote&gt;There does not seem to be a lot of science involved in decomposing services to their basic elements so they can have maximum reuse and be easily composed into higher level services. Perhaps more precisely it is a &#39;soft&#39; science that is all about governance, process and aligning with user requirements.&lt;br /&gt;&lt;br /&gt;Normalization of services is not something that has been picked up strongly by other authors however &lt;a href=&quot;http://www.davidchappell.com/HTML_email/Opinari_No11_10_04.html&quot;&gt;David Chappell&lt;/a&gt; has his description of the normalization project which is consistent with Thomas Erl:&lt;br /&gt;&lt;blockquote&gt;An idealized SOA environment provides a cleanly delineated set of services,&lt;br /&gt;with one way to accomplish each function. This kind of normalization makes reuse&lt;br /&gt;self-enforcing, since each service provides access to a specific group of&lt;br /&gt;information in a specific way.&lt;/blockquote&gt;In &lt;a href=&quot;http://www.informit.com/podcasts/episode.aspx?e=d4fc2124-93cf-4273-b49f-1cbe113db1ea&quot;&gt;his podcast&lt;/a&gt; Erl gives an example. If we have a service to get an invoice, then it is redundant to have a service or a method to get an invoice header. To have both is not normalized however there are reasons you may require both and therefore this would be &#39;denormalized&#39;.&lt;br /&gt;&lt;br /&gt;I am a little critical of the use of the term &#39;normalisation&#39; to describe removing service redundancies. The processs of normalization in data modeling (and mathematics such as linear algebra) is a very precise and well developed technique where the concept used by Erl and Chappell while useful, is fairly loose.&lt;br /&gt;&lt;br /&gt;If we wanted to do the equivalent of first normal form in service interfaces we might consider getting rid of the service equivalent of the &quot;repeating groups&quot; that destroys the relational model. If there are many &#39;invoice items&#39; for an invoice, this means you could not accommodate &#39;invoice item&#39; in your &#39;invoice&#39; message. The strength of SOA relies on being able to exchange documents that mean something to the user. This is where attempts to get scientific about normalization fail the cause of SOA.&lt;br /&gt;&lt;br /&gt;I will take this normalization discussion to its absurd ultimate. When I did my final year of my honours degree I simulated hardware that consisted entire of only two elements. They were the &#39;Nand gate&#39; (logical not(and (a,b)) ) and a single binary digit of memory (Flip flop). The computer program that ran on this simulated hardware was simply a wiring diagram. Any computer program that can be represented in normal programming languages can be represented as a combination of these two elements. The sort of programs I ran on this simulation were the full adder, 4 bit timer and 3 bit shift register. Programming at this level is more a level in elementary digital electronics than it is in software development.&lt;br /&gt;&lt;br /&gt;This was a distributed network of &quot;services&quot; at the very elementary level, but it is not very useful as a software development approach. This is a completely elementary normalized distributed application that can not be reduced further. This could be described as the ultimate implementation of reuse. You only have two &#39;services&#39; (Nand and memory) both of which are reused constantly. The challenge is to link them together in meaningful ways. These services however are tightly coupled because of their synchronous nature and therefore this is not an SOA.&lt;br /&gt;&lt;br /&gt;As a programming language this is worse than assembler language. Trying to wire gates together is even more detailed than assembler coding. Even if we could get SOA performing brilliantly at lower levels of granularity we do not want to go to such a low level of granularity that business entities are unrecognizable.&lt;br /&gt;&lt;br /&gt;Beware dogmatic approaches to normalizing or simplifying a service inventory. I suspect the &lt;a href=&quot;http://savas.parastatidis.name/2005/05/26/e8507db9-b6bc-459d-8735-fd524bd8b7a9.aspx&quot;&gt;MEST architectural style&lt;/a&gt; with its focus on removing verbs or methods is heading down this type of reductionist thinking.&lt;br /&gt;&lt;br /&gt;An overriding concern should be to meet business requirements and this might mean implementing redundant services and poorly structured business documents in services. Designing with a focus to eliminate redundancy is a good idea. It is nevertheless useful to seek out redundancies and investigate the option of reducing these if it does not compromise the ability of the services to represent business processes. Too much science in this process can reduce your services to absurd solutions.&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;Kimber, Antony, The General Logic Array: An Abstract Architecture, Honours Report, The University of Adelaide, Department of Computer Science, November 1985.&lt;br /&gt;&lt;br /&gt;This posting may have seemed a flimsy excuse to expose this work to the public domain but I hope it has described a useful anti-pattern for SOA.&lt;br /&gt;&lt;br /&gt;The above project was done around the time Sun were having success introducing their Reduced Instruction Set Computer (RISC) chips which included &lt;a href=&quot;http://cse.stanford.edu/class/sophomore-college/projects-00/risc/risccisc/&quot;&gt;simpler instruction sets&lt;/a&gt; that performed more quickly. Reducing down to a couple of elementary components is the extreme end of this strategy. There was also early interest in &lt;a href=&quot;http://en.wikipedia.org/wiki/Molecular_electronics&quot;&gt;molecular electronics&lt;/a&gt; with the hope that if we could get molecules to behave as electronic components we could produce very small electrical circuits. One of the challenges of the project was working out lattice arrangements that would allow the appropriate connections to the two or more types of elementary components to be made.</description><link>http://soaevolution.blogspot.com/2007/12/does-normalization-apply-to-services.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-2773291038514716489</guid><pubDate>Sun, 16 Dec 2007 04:07:00 +0000</pubDate><atom:updated>2007-12-15T22:26:20.998-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coupling</category><category domain="http://www.blogger.com/atom/ns#">Enterprise Architecture</category><category domain="http://www.blogger.com/atom/ns#">ESB</category><category domain="http://www.blogger.com/atom/ns#">IT Books</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><title>Book Review: Loosely Coupled - The Missing Pieces…</title><description>This is a review of the book &quot;&lt;a href=&quot;http://www.rds.com/books/&quot;&gt;Loosely Coupled: The Missing Piece of Web Services&quot;, by Doug Kaye&lt;/a&gt;. In a &lt;a href=&quot;http://soaevolution.blogspot.com/2007/10/binding-and-coupling.html&quot;&gt;previous posting&lt;/a&gt; I expressed delight that an author had dedicated a book to this important topic. This perhaps is not the definitive book on loose coupling but there is plenty of value for the reader.&lt;br /&gt;&lt;br /&gt;Doug has an easily readable style and sticks to a high level but there is enough technical substance to keep and IT architect or IT manager interested. You will find no code snippets and no programming standard specifications described in this book but there are some good diagrams and deep insights into SOA and how an organization should deliver SOA.&lt;br /&gt;&lt;br /&gt;This book was published in 2003 and I kept expecting the information to be dated. There was no mention of an Enterprise Service Bus (ESB) but Doug Kaye describes a number network models, mediation tools and deployment options which have been incorporated into what vendors now label as an ESB. More importantly some of the missing pieces he describes in 2003 are still missing at the end of 2007. Security, transaction integrity and business semantics still do not have accepted solutions within SOA and these missing pieces are described in this book. The WS-* standards have progressed somewhat since the writing of &quot;Loosely Coupled&quot; but basics of SOAP, WSDL and UDDI were in place and many for the WS standards are foretold.&lt;br /&gt;&lt;br /&gt;Doug has good perspective on what is required in the corporate world. He advises everyone to have your &quot;elevator pitch&quot; ready for that occasion when the CEO gets into the elevator with you and asks something like &quot;So what&#39;s this I keep hearing about web services? What are they and why are they so important&quot; (p27). Doug offers a response that suggests he is either a fast talker or works in a building that is much taller than mine, but the concept of having something ready like this is important if you are going evangelize about web services.&lt;br /&gt;&lt;br /&gt;There is only one chapter dedicated to Loose Coupling and Doug has not tried to say everything there is to say on the subject. This justified in his statement &quot;…loose coupling is a methodology or style, rather than a set of established rules and specifications&quot; (p. 131). Figure 10-1 provides a table describing 10 types of coupling and descriptions of tightly and loosely coupled approaches to each. This is a good approach as it is not easy to describe coupling succinctly. I found this approach in &lt;a href=&quot;http://www.manageability.org/blog/archive/20030628%23principles_of_loosely_coupled_api/view&quot;&gt;another posting&lt;/a&gt; although interestingly the contents are different. I have found that in &lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/bragging-rights-on-coupling.html&quot;&gt;my previous posting&lt;/a&gt; that it is difficult to label types and coupling and the three column approach will enable me to do this more effectively. The book covers late binding, heterogeneity, routing and transformations well.&lt;br /&gt;&lt;br /&gt;It is true to say that this book is more to do about its subtitle &quot;The Missing Pieces of Web Services&quot; than Loose Coupling. Doug makes the bold prediction that when we have solved all the pieces of the puzzle in the future that it will be so commonplace that &quot;Web services won&#39;t be mentioned by the IT trade press, and the topic won&#39;t be tracked by analysts&quot;. The book searches through these missing pieces in most of the chapters. The fact that Web Services is still a strong topic for analysts and vendors is evidence suggesting that we have not yet found all those missing pieces.&lt;br /&gt;&lt;br /&gt;Doug Kaye provides a good description of transaction control although I found the &lt;a href=&quot;http://soaevolution.blogspot.com/search?q=krafzig&quot;&gt;book I read earlier by Krafzig et al&lt;/a&gt; to have more detail in this area. Doug has two strong chapters on the problems of web services security and covers this topic in a thorough and systematic way. A &lt;a href=&quot;http://www.amazon.com/review/product/1881378241/ref=cm_cr_pr_hist_5?%5Fencoding=UTF8&amp;amp;filterBy=addFiveStar&quot;&gt;couple of reviews&lt;/a&gt; have suggested that the &lt;a href=&quot;http://www.amazon.com/Web-Services-Security-Mark-ONeill/dp/0072224711/ref=sr_1_4?ie=UTF8&amp;amp;s=books&amp;amp;qid=1197777776&amp;amp;sr=1-4&quot;&gt;book by Mark O&#39;Neil&lt;/a&gt; also provides good coverage of Web Service security.&lt;br /&gt;&lt;br /&gt;The chapter on deployment option talks about commercial opportunities for third parties in the delivery of services and services infrastructure. This discussed Web Service Networks, Distributed Web Service Networks, Web-Service Delivery Networks and Web Service Providers. Doug takes the service vendor view in his final chapter on providing external services. Both these chapters had little relevance to me. Four years after this book was written I have not been flooded with vendors wanting to sell me services or wanting to host infrastructure for me to operate my web service applications. Perhaps the money is not there, or perhaps it is just easier to use open source products or set up our own infrastructure. I still think Web Services provides some opportunities for commercial intermediaries, but until the vendors are out there and dealing in the government sector it will be difficult for me to get excited about this topic.&lt;br /&gt;&lt;br /&gt;Doug writes a couple of good chapters on the management of simple and complex web services projects. In particular he deals with timing the project around web services approaches that have not yet been delivered. The chapter on Service Level Agreements (SLAs) was an important piece of the completion of the web services picture.&lt;br /&gt;&lt;br /&gt;The book concludes with a number of checklists that anyone embarking on an SOA project should refer to. This should help the SOA project manager get their ducks in line to navigate the difficult road ahead.&lt;br /&gt;&lt;br /&gt;In summary, this was a well written book about the evolving phenomenon of Web Services. There are some valuable insights into Loose Coupling but an exhaustive technical treatment of coupling and the programming patterns that can reduce coupling is out of the scope of this book. There are some important insights to be found, especially on the subjects of security, evangelizing and commercial arrangements. I expect I will refer to this book many times in the future.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/customer-reviews/1881378241/ref=cm_cr_dp_all_top/102-6114044-0955319?ie=UTF8&amp;amp;n=283155&amp;amp;s=books#customerReviews&quot;&gt;Loosely Coupled: The Missing Pieces of Web Services, Doug Kaye ; RDS Press 2003, ISBN 1881378241&lt;/a&gt;</description><link>http://soaevolution.blogspot.com/2007/12/book-review-loosely-coupled-missing.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-354609938095195134</guid><pubDate>Sun, 02 Dec 2007 00:46:00 +0000</pubDate><atom:updated>2007-12-23T21:20:08.362-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coupling</category><category domain="http://www.blogger.com/atom/ns#">Design</category><category domain="http://www.blogger.com/atom/ns#">ESB</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><category domain="http://www.blogger.com/atom/ns#">XML</category><title>Seven Levels of Coupling: Seven Deadly Sins or Seventh Heaven?</title><description>In this posting I discuss the Zapthink article by Ronald Schmelzer, &quot;&lt;a href=&quot;http://www.zapthink.com/report.html?id=ZAPFLASH-20071128&quot;&gt;The Seven Levels of Loose Coupling&lt;/a&gt;&quot;.&lt;br /&gt;&lt;br /&gt;This week I have found two commentators redefining loose coupling. The first is described in the &lt;a href=&quot;http://soaevolution.blogspot.com/2007/11/virtual-endpoints-loose-definition-for.html&quot;&gt;discussion about virtual endpoints&lt;/a&gt; that was the subject of my previous posting and the second was this Zapthink article. I think it is important we clarify our definitions around SOA to avoid the concept being hijacked by commercial interests. So in this posting and the last I have attempted to sort out whether the discussion is adding to our understanding or muddying the waters.&lt;br /&gt;&lt;br /&gt;In a previous posting I have identified &lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/bragging-rights-on-coupling.html&quot;&gt;18 different types of coupling&lt;/a&gt; and I am still finding more. The first thing to realise about the seven levels of coupling is they are looking at a different attribute of coupling than what I refer to as &#39;types of coupling&#39;. The levels refer to the entities that are being coupled. My discussion on coupling types looks at the coupling of two modules of program code. This code could be in calling programs, objects, subroutines or services.&lt;br /&gt;&lt;br /&gt;The following table lists the seven levels. This table makes the distinction between &#39;Levels of Coupling&#39; and &#39;Types of Coupling&#39; clear. The core tenet that &lt;a href=&quot;http://www.zapthink.com/report.html?id=ZAPFLASH-20071128&quot;&gt;Zapthink&lt;/a&gt; is discussing is the &quot;loose coupling of Service consumers and providers&quot;. This has a different meaning than loose coupling between program code in different services. The main difference is that aspects of the service provider, with the exception of the implementation are not program code at all. Another difference is that a service consumer may not be a service either and it also might not contain program code.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:-2;&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;&lt;td&gt;Aspects of the Service Provider&lt;/td&gt;&lt;td&gt;Possible Types of Coupling&lt;/td&gt;&lt;/th&gt;&lt;tr&gt;&lt;td&gt;Loose Coupling the Implementation&lt;/td&gt;&lt;td&gt;The service implementation&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/bragging-rights-on-coupling.html&quot;&gt;18 types and still counting&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Loose Coupling the Service Contract&lt;/td&gt;&lt;td&gt;Service contract&lt;/td&gt;&lt;td&gt;Interface Coupling, Bind-Time Coupling, Service Intermediary Coupling, Infrastructure configuration Coupling&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Loose Coupling the Service Policy&lt;/td&gt;&lt;td&gt;Service policy&lt;/td&gt;&lt;td&gt;Bind-Time Coupling, Service Intermediary Coupling, Infrastructure configuration Coupling&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Loose Coupling the Process&lt;/td&gt;&lt;td&gt;Service-oriented process (Trivial if this is a service)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/bragging-rights-on-coupling.html&quot;&gt;18 types and still counting&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Loose Coupling the Data Schema&lt;/td&gt;&lt;td&gt;Data schema of provider dataset and data schema of interface.&lt;/td&gt;&lt;td&gt;Data Services Layer Coupling, Data Transformation Service Coupling&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Loose Coupling the Infrastructure&lt;/td&gt;&lt;td&gt;Infrastructure of provider&lt;/td&gt;&lt;td&gt;Single-vendor SOA platform Coupling&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Loose Coupling at the Semantic Layer&lt;/td&gt;&lt;td&gt;Meaning of message attributes&lt;/td&gt;&lt;td&gt;Dynamic service definition Coupling&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The seven layers are not as clearly layered as the phrase &#39;Levels&#39; might suggest. Certainly policies could be considered a higher level than contracts and processes considered at higher level to implementation. The other levels could be considered to sit atop the infrastructure level and under the semantic level but normally data and process would sit beside each other with neither the master. I also see contracts sitting beside data and process as equal partners.&lt;br /&gt;&lt;br /&gt;Coupling takes account of the dependency between two entities and the clarity of this dependency. Thus two services exchanging a message are loosely coupled if every dependency is clear from the format of the message. Services have different reasons for being dependent. These reasons are what we mean by &#39;Types of coupling&#39;.&lt;br /&gt;&lt;br /&gt;The types of coupling for the seven levels are described in the third column of table above. The first level describes service to service coupling which I have described earlier. The fourth level is interesting because the solution is almost trivial. The business process should look like a service and therefore all the coupling types for coupling between services also apply for coupling between a consumer service and provider service that is a composition of services used to implement a process. The sort of things that might cause dependencies with contacts, polices, infrastructure, data schemas and semantics are different to the program code dependencies.&lt;br /&gt;&lt;br /&gt;Loose coupling of data schema is partly addressed by &lt;a href=&quot;http://www.zapthink.com/report.html?id=ZAPFLASH-2006103&quot;&gt;another Zapthink article&lt;/a&gt; which advocates the building of data transformation services rather than incorporating transformation logic inside services used to contain business logic.&lt;br /&gt;&lt;br /&gt;Tight coupling between the consumer service and the infrastructure of the provider could be based around a number of proprietary technologies. The ones highlighted by Zapthink are the non-standard ESB and the single vendor SOA platform.&lt;br /&gt;&lt;br /&gt;The types listed in the third column of the above table are those implied in the Zapthink article. I expect that a thorough investigation would uncover other types of coupling as well. The point of listing them in the table is to suggest that each coupling level will have its own types and each level (with the possible exception of the process level) needs to be investigated separately.&lt;br /&gt;&lt;br /&gt;We can find coupling examples everywhere. For example &lt;a href=&quot;http://www.manageability.org/blog/stuff/axis-of-loose-coupled-ness/view&quot;&gt;Carlos Perez&lt;/a&gt; and &lt;a href=&quot;http://weblogs.java.net/blog/dwalend/archive/2004/01/coupling_in_sof.html&quot;&gt;David Walend&lt;/a&gt; discuss whether a DBMS and its application are loosely coupled if the application is accessing the DBMS using SQL. This is interesting but not relevant to SOA. For the point of view of &lt;a href=&quot;http://soaevolution.blogspot.com/2007/09/definitive-soa.html&quot;&gt;defining SOA&lt;/a&gt;, I do not believe the seven levels of loose coupling matter. You can have an SOA as long as the services are loosely coupled. However as a model to assist good practice, I think the seven levels will provide value even if they do overload the &#39;loose coupling&#39; term.&lt;br /&gt;&lt;br /&gt;The concepts discussed in relation to levels of coupling are certainly valid. We do not want service consumers dying or behaving incorrectly due to changes with service provider&#39;s infrastructure, policies or any of the other aspects described in the seven levels. Zapthink continue to guide us on the path to software heaven, however in the process of introducing &#39;levels of coupling&#39; Zapthink commit the sin of causing confusion around the important &#39;loose coupling&#39; term. I recommend the &quot;Seven Levels&quot; article to SOA developers and I suggest developers need to be clear on what is being coupled whenever they use or encounter the term &#39;loose coupling&#39;.&lt;br /&gt;&lt;br /&gt;End Note:&lt;br /&gt;One way to distinguish other levels of coupling from service to service implementation coupling would be to call the different levels something different other than &#39;loose coupling&#39;. The names that occurred to me were &#39;loose buckling&#39; or even &#39;loose zipping&#39; which would be reminiscent of the &lt;a href=&quot;http://www.zapthink.com/report.html?id=ZapFlash-08082003&quot;&gt;zapthink integration zipper&lt;/a&gt;. Unfortunately both these terms have implications of embarrassing failure if the buckling or zipping is too loose. We do not want our metaphorical trousers around our ankles.</description><link>http://soaevolution.blogspot.com/2007/12/seven-levels-of-coupling-seven-deadly.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-6923978891586789283</guid><pubDate>Sat, 01 Dec 2007 02:28:00 +0000</pubDate><atom:updated>2007-11-30T18:52:19.923-08:00</atom:updated><title>Virtual Endpoints:  A Loose Definition for Loose Coupling?</title><description>&lt;p&gt;I listened to a &lt;a href=&quot;http://test.soatube.com/SOAGovCon4/?sponsor=swag&quot;&gt;podcast this week by Miko Matsumura&lt;/a&gt;, Deputy CTO of Software AG. His comments on Governance were interesting especially the concept of hot and cold parts of the architecture. Some things like policies should remain &quot;cool&quot; and not change often. Other parts such as how you combine your services into applications should be relatively &quot;warm&quot; and change more often.&lt;br /&gt;&lt;br /&gt;The point that jumped out at me was his very concise descript of loose coupling &quot;Loose Coupling has virtualized endpoints&quot;. No further definition was given.&lt;br /&gt;&lt;br /&gt;This must be a bit of a Software AG thing. &lt;a href=&quot;http://itko.blogspot.com/2007/08/virtualization-part-3-of-4-virtual.html&quot;&gt;John Michelsen&lt;/a&gt;, also of Software AG says&lt;/p&gt;&lt;blockquote&gt;…virtual endpoints are a great idea as you think about the scalability and the loose coupling we want in a SOA.&lt;/blockquote&gt;&lt;p&gt;This is better explained in John&#39;s posting &quot;&lt;a href=&quot;http://www.webservices.org/weblog/john_michelsen/an_intro_to_soa_and_virtualization&quot;&gt;An Intro to SOA and Virtualization&lt;/a&gt;&quot; but all this virtualisation seems to be is getting rid of hard coded URLs. This does not seem terribly revolutionary and is certainly not synonymous with the concept of loose coupling that is, according to some writers, the whole reason behind the benefits of SOA.&lt;br /&gt;&lt;br /&gt;Before I discount this as an overly narrow vendor view I would like to explore the concept a bit more deeply. If I look down my ever-increasing &lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/bragging-rights-on-coupling.html&quot;&gt;list coupling types&lt;/a&gt; I can see a number of properties of service interfaces. I define and endpoint as being a service interface then we can see an endpoint has having the following properties and we can see some corresponding coupling types:&lt;/p&gt;&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Endpoint Property&lt;/td&gt;&lt;td&gt;Coupling Type (From &lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/bragging-rights-on-coupling.html&quot;&gt;previous posting&lt;/a&gt;)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;URL&lt;/td&gt;&lt;td&gt;Registry Coupling&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Platform&lt;/td&gt;&lt;td&gt;Platform Coupling&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Interface Time&lt;/td&gt;&lt;td&gt;Queue Coupling&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Processor Location&lt;/td&gt;&lt;td&gt;Distributed Coupling&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Data Field Order &amp;amp; Presence&lt;/td&gt;&lt;td&gt;XML Message Payload Coupling&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;The only property that may need some explanation is &quot;Interface Time&quot;. This is the time that a message leaves from or arrives at a service interface. If no queuing is involved then the only delay between the message leaving from a sending service and arriving at the receiving service is some network latency. If a queue is involved then the delay uncouples the sending time from the receiving time.&lt;br /&gt;&lt;br /&gt;The concept of an endpoint does not have much meaning except where messaging is involved. There are some types of coupling in the messaging world that are not covered by the concept of virtualised endpoints. Coupling based on process state (including synchronous coupling) and coupling introduced to manage process control, such as transaction control is not easily expressed in terms of endpoint properties. Logical coupling where service behaviour changes significantly based Boolean or enumerated field values passed in the message also is not covered as an endpoint property.&lt;br /&gt;&lt;br /&gt;The &quot;Virtual Endpoint&quot; concept turns out to be a fairly useful. We have some types of coupling that are only dependant on endpoints (or service interfaces) and others that depend more deeply on the implementation of the services or the interpretation of the messages being passed. Virtual endpoints are not the whole story when it comes to loose coupling but are part of it.</description><link>http://soaevolution.blogspot.com/2007/11/virtual-endpoints-loose-definition-for.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-7666193668340017104</guid><pubDate>Thu, 22 Nov 2007 12:30:00 +0000</pubDate><atom:updated>2007-11-22T04:42:04.080-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Coupling</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><category domain="http://www.blogger.com/atom/ns#">Wikipedia</category><title>Subroutine Call Coupling</title><description>It has been more than a month since I did my &lt;a href=&quot;http://soaevolution.blogspot.com/2007/10/binding-and-coupling.html%20[&quot;&gt;last posting on coupling&lt;/a&gt;. Amazon has delivered my book on &lt;a href=&quot;http://www.amazon.com/gp/product/customer-reviews/1881378241/ref=cm_cr_dp_all_top/102-6114044-0955319?ie=UTF8&amp;amp;n=283155&amp;amp;s=books#customerReviews&quot;&gt;loose coupling by Doug Kaye&lt;/a&gt; and I am finding it valuable. Once I have finished that I hope to revise my &lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/bragging-rights-on-coupling.html&quot;&gt;original list of types of coupling&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In this posting I would like to say something about subroutine call semantics versus message passing and the coupling associated with this. I have discussed before that the &lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/bragging-rights-on-coupling.html&quot;&gt;synchronous approach&lt;/a&gt; which is a requirement of the subroutine call semantics is more tightly coupled than an asynchronous approach. There are two other differences between subroutine calling and message passing. These are&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the management of state of the calling module and the called module; and&lt;/li&gt;&lt;li&gt;the management of the called instance itself.&lt;/li&gt;&lt;/ul&gt;When you invoke a subroutine it starts executing from its beginning. The invoked routine will usually have no state and complete before the invoking routine resumes again. Another form of routine call is the &lt;a href=&quot;http://en.wikipedia.org/wiki/Coroutine&quot;&gt;coroutine&lt;/a&gt; where the state in the called module is maintained from one call to another. The issue of state coupling was covered in my &lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/bragging-rights-on-coupling.html&quot;&gt;earlier posting &lt;/a&gt;and labelled as &#39;Process State Coupling&#39;. This type coupling is intended to cover coroutine behaviour. A coroutine is even more tightly coupled than a normal subroutine call because of the dependency on state.&lt;br /&gt;&lt;br /&gt;In a normal subroutine call state is not preserved in the called module from one call to the next however state is preserved in the calling module. It preserves its state by the simple expedient of suspending execution until the called module returns control.&lt;br /&gt;&lt;br /&gt;Asynchronous message can still involve process state coupling. More loosely coupled messaging has enough information in the message to process without retaining state. This is, in general, better practice but is not always practical.&lt;br /&gt;&lt;br /&gt;There is one other aspect of subroutine call behaviour that is different from message passing behaviour. When a subroutine is invoked it is in effect brought to life at that point. If you have to create an instance of a service in order to use it then this is another form of dependency. A service should be an entity that always &quot;exists&quot; that is ready to serve. In effect messages can wake up receiving services but it should not be the concern of the sending service to create or dispose of an instance of the service. I therefore intend to add &#39;Creation Coupling&#39; to the coupling list when I next publish one. Creation coupling occurs in Java classes when a new object is created using the &#39;New&#39; statement. Methods of that object are then called but the creation of new object (and sometimes its destruction) is often the role of the calling object.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;It is the system&#39;s responsibility to effect and manage the invocation of the service, not that of the calling application. This allows two critical characteristics to be realized: 1) The services are truly independent, and 2) they can be managed. (Anagol-Subbarao)&lt;/blockquote&gt;In the paper &lt;a href=&quot;http://www.allthingsdistributed.com/historical/archives/000343.html&quot;&gt;&quot;Web Servces Are Not Distributed Objects&quot; by Werner Vogels&lt;/a&gt; he draws this distinction clearly. Loosely coupled web services do not have the same behaviour as objects.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;An important notion at the core of distributed object technology is the object life cycle:&lt;br /&gt;· Upon request, a factory instantiates the objects.&lt;br /&gt;· The consumer who requested the instantiation performs various operations on the object instance.&lt;br /&gt;· Sometime later, either the consumer releases the instance or the runtime system garbage-collects it. &lt;/blockquote&gt;It is this point that Werner distinguishes between services and objects and is also this point that makes distributed objects more tightly coupled than web services that are coupled using messages.&lt;br /&gt;&lt;br /&gt;In this posting we have discussed subroutine semantics and discovered that subroutine a tightly coupled to their calling modules because of:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Synchronous Coupling &lt;/li&gt;&lt;li&gt;Process State Couping, and &lt;/li&gt;&lt;li&gt;Creation Coupling &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The use of asynchronous messages is much more loosely coupled as a result.&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;Anagol-Subbarao, Anjali, J2EE Web Services on BEA WebLogic, Prentice Hall, October, 2004&lt;br /&gt;&lt;br /&gt;Vogels, Werner, &quot;Web Services are not Distributed Objects: Common Misconceptions about Service Oriented Architectures&quot; , IEEE Internet Computing, vol. 7, no. 6, pp. 59–66, 2003&lt;br /&gt;&lt;br /&gt;This is also available from Werner&#39;s blog site at&lt;br /&gt;&lt;a href=&quot;http://www.allthingsdistributed.com/historical/archives/000343.html&quot;&gt;http://www.allthingsdistributed.com/historical/archives/000343.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Marlin, Christopher D. Coroutines, Lecture notes in computer science, vol. 95, Springer-Verlag, Berlin, Heidelberg, 1980. ISBN 3 540 10256 6 and ISBN 0 387 10256 6.&lt;br /&gt;&lt;br /&gt;Kaye, Doug, &lt;a href=&quot;http://www.amazon.com/gp/product/customer-reviews/1881378241/ref=cm_cr_dp_all_top/102-6114044-0955319?ie=UTF8&amp;amp;n=283155&amp;amp;s=books#customerReviews&quot;&gt;Loosely Coupled: The Missing Pieces of Web Services; RDS Press 2003, ISBN 1881378241&lt;/a&gt;&lt;/p&gt;</description><link>http://soaevolution.blogspot.com/2007/11/subroutine-call-coupling.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-272217273003537784.post-1720601881970491437</guid><pubDate>Wed, 21 Nov 2007 12:10:00 +0000</pubDate><atom:updated>2007-11-30T20:50:45.827-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Design</category><category domain="http://www.blogger.com/atom/ns#">SOA</category><title>Code Abstractions and Babushka Dolls</title><description>&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaEsY6Ym3sM-vRUtPfe3aJ6u_Zhyphenhyphen9N4TafhzV2fCA3HHJBX6o87bR_ypLVdS9leJrp5_Zumh3_e6F5zazM8FIQdNZ7qlk42msNfQwAoHZeTZGB1MmO9ZZKkA2yWa1A2OUfoKYCXkArQ3o/s1600-h/babushka.jpg&quot;&gt;&lt;img id=&quot;BLOGGER_PHOTO_ID_5135265480278777922&quot; style=&quot;FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaEsY6Ym3sM-vRUtPfe3aJ6u_Zhyphenhyphen9N4TafhzV2fCA3HHJBX6o87bR_ypLVdS9leJrp5_Zumh3_e6F5zazM8FIQdNZ7qlk42msNfQwAoHZeTZGB1MmO9ZZKkA2yWa1A2OUfoKYCXkArQ3o/s320/babushka.jpg&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;There are various ways of encapsulating program code. We encapsulate code so that it can be invoked from some other program code. The encapsulated code can be used in its abbreviated form. I will also refer to it as an abstraction in this posting.&lt;br /&gt;&lt;br /&gt;There are some ways of encapsulating code that encapsulate a small amount of code and are fine grained. There are some ways of encapsulating a large amount of code or other abstractions of code and are coarse grained. I would like to be able to list all the forms of encapsulation from smallest to largest and arrange them like Russian Babushka dolls with a clear scheme for which goes inside which.&lt;br /&gt;&lt;br /&gt;At the finest level of code abstraction I will start with functions, procedures and methods. They are pretty simple. The name &#39;function&#39; has a mathematical significance the pre-dates computers. Procedures, subroutines and methods are all variations on the theme of a group of instructions.&lt;br /&gt;&lt;br /&gt;The next level of abstraction is the &#39;class&#39; or the instance of that class the &#39;object&#39;. Object is an unimaginative name. We may as well have used the synonymous term &#39;thing&#39; but that would have sounded like we just did not know what to call this abstraction of code. &quot;Let&#39;s build a thing to access our database&quot; sounds a lot less specific than &quot;Let&#39;s build an object to access our database&quot;.&lt;br /&gt;&lt;br /&gt;Then we have services. These should be reasonably coarse grained. They may contain classes which may contain methods. I skip java beans in this abstraction discussion that would seem to inhabit the same level in the hierarchy as services.&lt;br /&gt;&lt;br /&gt;My metaphor of the Babushka dolls is already looking a bit shaky. There are methods that can contain methods, classes that contain classes. Recursion does not work very well with Babushka dolls. Also there are abstractions like code libraries and include files that cut-across the above abstractions, but I will press on anyway.&lt;br /&gt;&lt;br /&gt;The level of abstraction I would like to look at is the component as described by the &lt;a href=&quot;http://www.davidchappell.com/articles/Introducing_SCA.pdf&quot;&gt;Service Component Architecture (SCA)&lt;/a&gt;. Component is another synonym for &#39;thing&#39;. Instead of &#39;object&#39; and &#39;component&#39; we may as well have used &lt;a href=&quot;http://thecatinthehatmovie.com/thing-1-and-thing-2.html&quot;&gt;&#39;thing 1&#39; and &#39;thing 2&#39;&lt;/a&gt; and apologized to Dr Seuss for using his naming convention. According to the SCA we should then consider encapsulating our components in &#39;composites&#39; and our &#39;composites&#39; in &#39;domains&#39;.&lt;br /&gt;&lt;br /&gt;&#39;composites&#39; and &#39;domains&#39; at least are getting way from being synonyms of &#39;things&#39;. A composite is just a group of things and a domain is somewhere you find things in, a bit like a container. Of course a &#39;container&#39; is typically seen as more a runtime environment than a way of collecting together code or abstractions.&lt;br /&gt;&lt;br /&gt;&#39;Domain&#39; is a rather overused term in IT at present. Do not try to draw any parallel between an SCA domain, a Domain Name Service (DNS) or &lt;a href=&quot;http://www.infoq.com/presentations/model-to-work-evans&quot;&gt;Domain Driven Design&lt;/a&gt;. There is very little connection.&lt;br /&gt;&lt;br /&gt;I would like to bring the concept of &lt;a href=&quot;http://www.objectwatch.com/newsletters/issue_36.htm&quot;&gt;Roger Sessions&#39; &#39;Software Fortress&#39;&lt;/a&gt; in at this point. At least Roger has come up with an imaginative name for his abstraction. His explanation of the various roles that software plays in relation to the Fortress is also imaginative as these are illustrated by various goblins, fairies and ogres in his documentation.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Definition: Software Fortress&lt;br /&gt;A software fortress is a conglomerate of software systems consisting of potentially many processes running on potentially many machines spread out over a potentially wide geographic area that:&lt;br /&gt;I. Serve a common purpose&lt;br /&gt;II. Are owned by a cohesive group of individuals&lt;br /&gt;III. Work together in a trust relationship.&lt;br /&gt;IV. Are built on a common technology base. &lt;/blockquote&gt;Roger could improve his definition by indicating whether &quot;or&quot; or &quot;and&quot; separated the different lines of his definition. Definition line IV suggests the Fortress is quite similar to the Domain concept from SCA. If we include the other three definition lines we may find that a Fortress has finer granularity than the domain and may be closer to a composite or component.&lt;br /&gt;&lt;br /&gt;The recommendation provided in a couple of presentations I have seen from &lt;a href=&quot;http://soaevolution.blogspot.com/2007/08/zachman-and-soa.html&quot;&gt;Glenn Smyth&lt;/a&gt; is that web services should be built if and only if they are required on the border of a software fortress. The essence for the SCA is that a service appears on the border of all components. Therefore the finer grained interpretation of &#39;Software Fortress&#39; that incorporates an &#39;and&#39; between the last lines of the definition would seem more consistent with this view.&lt;br /&gt;&lt;br /&gt;One difference between ways of encapsulating program logic is the stage in the software development life cycle. At runtime then objects, services and containers encapsulate running logic. At development time classes, include files and functions are relevant. At requirements definition time the domains in domain driven design have relevance and the &quot;common purpose&quot; aspect of a fortress helps define the encapsulation. We therefore would more correctly have three sets of Babushka dolls.&lt;br /&gt;&lt;br /&gt;SCA is all about runtime and development time. There is nothing that suggests what part of the design a component represents. Domain driven design is all about business requirements. There is nothing in this process that advises how you are to encapsulate your code to represent the domain. SOA attempts to span all three stages of the development life cycle both by suggesting business services and then keeping to this granularity in the developed code and the runtime.&lt;br /&gt;&lt;br /&gt;The encapsulation and abstraction of logic is a complicated area. I probably have not made it any simpler with this posting. It is increasingly vital in software. There is not much excitement as there used to be around programming languages but how we bundle together program instructions is still an area of active interest. The point to take away from this is that we have to define our terms clearly and use them in the context of the stage of the software development lifecycle. A consistent approach from design through to runtime would be nice, but at least your software development methodology should identify the mapping between different ways of abstracting business logic thus linking your three or more sets of Babushka dolls.&lt;br /&gt;&lt;br /&gt;References&lt;br /&gt;&lt;br /&gt;David Chappell, &lt;em&gt;Introducing SCA&lt;/em&gt;,&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.davidchappell.com/articles/Introducing_SCA.pdf&quot;&gt;http://www.davidchappell.com/articles/Introducing_SCA.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Eric Evans, &lt;em&gt;Domain Driven Design&lt;/em&gt;,(WebCast)&lt;br /&gt;&lt;a href=&quot;http://www.infoq.com/presentations/model-to-work-evans&quot;&gt;http://www.infoq.com/presentations/model-to-work-evans&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Eric Evans, &lt;em&gt;Domain Drive/Model Driven&lt;/em&gt;&lt;br /&gt;&lt;a href=&quot;http://domaindrivendesign.org/discussion/blog/evans_eric_ddd_and_mdd.html&quot;&gt;http://domaindrivendesign.org/discussion/blog/evans_eric_ddd_and_mdd.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Roger Sessions has book on Software Fortresses which I confess I have not read yet but the following article incorporates and overview of this concept and the newsletter below explains some of its origins.&lt;br /&gt;Roger Sessions, &lt;em&gt;Modeling Software Architectures&lt;br /&gt;&lt;/em&gt;&lt;a href=&quot;http://www.objectwatch.com/PaperAndSpreadsheetVersion1-0.zip&quot;&gt;http://www.objectwatch.com/PaperAndSpreadsheetVersion1-0.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Roger Sessions, &lt;em&gt;The Software Fortress Model; A Next Generation Model for Describing Enterprise Software Architectures&lt;/em&gt;, ObjectWatch Newsletter # 36, November, 2001&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.objectwatch.com/newsletters/issue_36.htm&quot;&gt;http://www.objectwatch.com/newsletters/issue_36.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Glen Smyth&#39;s presentation to the ACS is now available at&lt;br /&gt;&lt;a href=&quot;http://sa.acs.org.au/it_arch/index.php/Presentations_Past%2C_Present_and_Future&quot;&gt;http://sa.acs.org.au/it_arch/index.php/Presentations_Past%2C_Present_and_Future&lt;/a&gt;</description><link>http://soaevolution.blogspot.com/2007/11/code-abstractions-and-babushka-dolls.html</link><author>noreply@blogger.com (Merkel Marmaduke)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaEsY6Ym3sM-vRUtPfe3aJ6u_Zhyphenhyphen9N4TafhzV2fCA3HHJBX6o87bR_ypLVdS9leJrp5_Zumh3_e6F5zazM8FIQdNZ7qlk42msNfQwAoHZeTZGB1MmO9ZZKkA2yWa1A2OUfoKYCXkArQ3o/s72-c/babushka.jpg" height="72" width="72"/><thr:total>0</thr:total></item></channel></rss>