HomeProducts
 

 

   
25th February, 2003 
Service-oriented architectures: something old, something new

The latest buzz-phrase in the industry seems to be SOA or service-oriented architectures. There are a lot of people getting excited about the concept of independent components with a published contract for interconnection and communication.  
  
However, the service architecture is simply another implementation of the fundamental goals of good software design. The design principles we were given are:
  • Abstraction
  • Modularity
Abstraction is about functional decomposition and layered design in a top-down manner. It is the principle that guides us in the discovery of that which must be done. Modularity is about containing a portion of that which must be done into a single-minded function with the simplest interface for communication. It is embodied by two underlying measures:
  • Cohesion
  • Coupling
Cohesion is a measure of the single-mindedness of the module. High cohesion is desirable as it dispels confusion as to the purpose of the module. There is no ambiguity in its use.

Coupling is a measure of the functional independence of the module. It defines the interconnection between modules and relates to the interfacing and complexity of interconnection of modules. Lower coupling between system modules reduces a module’s resistance to change, reduces the complexity of the interconnection and therefore makes a module easier to test comprehensively.

Structured programming languages and then object-oriented languages allowed us to actively implement these principles. The domain of operation for modules was restricted to the run-time environment of the compiled program. The modules located and interconnected with each other through mechanisms provided in the run-time environment.

Enterprise Java Bean (EJB) and .NET technologies give us the means to distribute modules across the network. The mechanisms for location and interconnection are supplied by the respective frameworks – the run-time environments for the modules. CORBA technology preceded EJB and .NET but provided a framework for modules of different run-time environments to interconnect.

The SOA is the next extension, allowing discovery of a module’s interface and, location of the module and interconnection with it. In all other respects, the guiding principles of software engineering remain the same. These principles make no claim upon the mechanism for modules to communicate and are therefore not diminished in their importance by the emergence of SOA.

Inversely, SOA remains firmly in the same universe as the preceding software architectures, and is subject to the same forces including those of chaos and entropy. The principles of software design are still applicable to SOA, despite any claims to the contrary.