- MS thesis defense
Chris Jones, Software Architecture Patterns
Abstract
Software architecture is an essential element of
any software system no matter how simple or complex. It governs the low-level
characteristics, or capabilities, of all software that uses that architecture
as its foundation. Nevertheless there has hitherto been no comprehensive method
for ensuring that an architecture has met all of the non-functional requirements
of a given application, thereby leading to architectures that were either
under- or over-defined. This can result in applications that fail to exhibit
characteristics that we now consider to be signs of sound software engineering
principles such as extensibility, maintainability, security, and performance.
Often, system architects fall back on approaches
and techniques that they have successfully implemented before to solve similar
problems. This is where experience and expertise come into play. However,
these common approaches have not yet been documented and codified into a
set of architectural patterns. Such patterns, similar to those described in
the "Gang of Four," would be invaluable in helping to arrive at architectural
solutions with predictable characteristics and capabilities. This thesis attempts
to begin providing this codification by taking common architectural themes
and elements and to document them in such a way that they can be reused independently
of any specific problem domain. These patterns provide architects and other
decision makers with sets of predictable characteristics on which informed
decisions can be based.