AM2D Software Systems Consulting

Go to content

Main menu:

What is Software Architecture?

A software architecture defines structure, as stated in the SEI book "Software Architecture In Practice" [ref:] software architecture is:

 "The set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both".

Why do we need an architecture for a software system? ... isn't the code enough?

At AM2D we firmly believe that architecture is a fundamental requirement for all software projects.
Without a structured well maintained architecture a project will become inconsistent, unmanageable, flounder ...


 ... and possibly fail to deliver its intended purpose.

Software architecture is the primary carrier of system qualities and functionality: e.g. performance, modifiability, availability, etc:

  • It is an artifact for early system analysis which will ensure that the design yields the envisaged project functionality, performance and user required services.
  • It is the conceptual adhesive that will bind every phase of the project together for all stakeholders.

To place the importance of architecture into context consider this question: 

'would a tower block, a bridge, or a hospital be built without an architectural plan?'

Obviously the answer is NO! ...

Then why should software development be any different?

Placing Model Driven Development and Structured Software Architecture (Architecture-Centric) in context ...

An architecture does not have to auto-generate code from its model in order to operate as a "Model Driven Architecture" or a "Model Driven Development" project ... an architecturally-centric approach can also be "Model-Driven" ...

AM2D does not rigidly stipulate that in order for a project to be defined as MDD/MDA it has to auto-generate code from the architectural model. We believe that MDD/MDA is an architecture-centric design concept/philosphy that can be adapted to a clients particular project requirements.

AM2D's approach to software architectural development:

AM2D adopts an architecture-centric approach, which embodies MDD/MDA principles to provide an architecture that delivers the required system, and is compatible with your enterprise goals.
This may entail adopting a fully integrated MDD/MDA approach (involving full auto-generation of code from model) or a more "relaxed" approach where an architecture is defined as a stand-alone model, and code is hand crafted using the model as the design reference source: Note that the model is still the definitive design driving source; and whilst it is possible for developers to modify the code directly, it is strongly recommended that code is never modified in isolation of the model: the direction of design modification flow is always from the model to the code, not code to model.  Consequently the project will remain architecture-centric, and model driven.
Call or e-mail to discuss your system's software architecture requirements ... 
Back to content | Back to main menu