Introduction While “architecture” is likely one of the least definable terms in software development, it is unavoidably a topic which has one of the greatest impacts on the extensibility and maintainability of an application.  Indeed, a frequent cause of an application re-write is due to the architectural decisions that were made early in the project, […]