Saturday 20 October 2007

Observations on Software Architecture

The term Service Oriented Architecture has been in vogue over recent years. There is a vague notion of what we may mean by a service, namely some software component that offers some business functionality as a service to one or more clients. There is some understanding of the term Oriented as being a system that is in the vein of. But the term Architecture is one that seems to be less understood.

If you ask 10 people what is meant by Architecture as it applies to the term SOA you will probably get 10 different answers and none of them will be precise. And yet if you ask the same 10 people what does Architecture mean when it is applied to buildings you are likely to get similar responses from all of them and in the main they will be precise enough to test.

So what is Architecture as applied to buildings. One way of explaining this is to understand what an Architect does and more specifically what do they deliver? What tangible artifact do they produce? They produce one or more drawings which outline a building. These plans show how the building will look and give some guidance as to the materials that will be needed in order to achieve that look. Sometimes the materials are chosen to achieve some style and sometimes they are load baring and so meet some mathematically calculated requirements. So an architecture in this sense is a something that is used to guide the construction of a building. The Architect may police the construction every day or may simply come and inspect at the end. In either situation the Architect is visually inspecting the building for conformance to the described architecture or indeed auditing the materials used to ensure that the mathematically calculated requirements have been met.

Where is the A in SOA? What can we use to help us build complex systems of services and is there anything we can do to inspect what is delivered against an architectural description?

There is something we can do to help. WS-CDL as a blueprint for software architectures is a start. What is needed in a addition is process or a methodology.

That I shall leave to another post.

No comments: