What is Software Architecture? It starts with properly organized code that divides along lines of responsibilities and roles. It uses re-usable components with clearly defined interfaces. Implementation addresses proven patterns of development that are inherently efficient. These patterns provide entry points for future functionality with minimal impact to current functionality.
Why is good architecture needed? First and foremost it facilitates efficiency of Development. The reuse of code allows developers to focus on implementing new features rather than re-implementing standard features. Furthermore good architecture enables future enhancements. It allows for entry points to add features. A system that is logically architected is easier for developers to understand and maintain.
Also, by reusing code that has previously been tested the architecture process contributes to a more reliable system. We are clearly defining an approach to architecture that properly assigns roles and functions which prevents roles getting left undefined and thus unimplemented. Lastly, good architecture provides high impact areas to focus on for optimization and thus enhancing performance.
The primary benefits of good architecture are:
Architecture is written once (usually by the most skilled programmers) and used many times which gives it the advantage of being testing frequently and under a wide array of scenarios.
By establishing solid design patterns an architecture can grow over time and therefore achieve a high level of reuse.
Each time a new system utilized a pre-existing architecture it needs to handle the worse case scenarios across a variety and ever changing set of conditions. Over time, a good architecture evolves and improves to handle these changes.
This is one of the most important benefits given that applications are rarely static. The true test of an architecture and the quality of the code is how easily the software can be enhanced.
Security should not be taken lightly and small errors can introduce large security holes. A tight control over architecture design and rigorous testing positions security-sensitive code to be designed into the architecture.
Object oriented (OO) design is a pattern that Amadeus Consulting used to build out its architecture. We use standards based community design patterns which allow for all developers to communicate under a predefined common language.