Thursday, August 27, 2009

What is Architecture?

A good architecture is more than just a high level design of a system. It is one that facilitates the job of the low level designers and the developers by providing a set of design rules that aids reduce complexity and guides the development and verification of the system. However, traditional architectures are different from software architecture. The author makes the point that contemporary architects may have a set of characteristics that a system must satisfy, while it is nearly impossible to guaranty all these rules in complex software systems because improving one aspect might impact the other. Software architects constantly play with trade-offs and the characteristics that are important depend on the system that is being built.

Architecture is commonly considered as the structure of a system. The author supports that idea and presents the advantage of looking at a system as a set of interacting components. This approach is intended to deal with the complexity of systems because it allows the architect to understand and satisfy a particular concern before moving to the next one. The author presents beautiful architectures as the ones with well defined use structures to enable iterative and incremental construction, well-defined testable modules and interfaces between them. I found it interesting because iterative and incremental development is an essential part of the agile software development process. Does this imply that beautiful architectures are the ones that facilitate the use of an agile development process?

No comments:

Post a Comment