Já estudamos o que é a arquitetura de software e sua importância. Durante nosso estudo vimos que sistemas de software precisam ser cuidadosamente arquitetados e avaliados a partir de várias perspectivas para abordar adequadamente várias preocupações que afetam a qualidade do produto final.
Durante o processo para definir a arquitetura de um sistema é necessário resolver problemas de design de diferentes naturezas, como problemas que lidam com a estrutura do sistema lógico ou problemas que lidam com o sistema dinâmico, simultaneamente. Em todos os casos, é essencial identificar os componentes necessários, as interfaces e as responsabilidades de cada componente. É importante também modelar interações comportamentais entre eles antes de passar para o projeto detalhado.
A partir desta perspectiva, é importante usar a experiência passada com decomposições lógicas juntamente com suas interfaces ao projetar sistemas de software. Para este fim, os conceitos de estilos arquitetônicos e padrões arquitetônicos surgiram como a principal abordagem para alcançar a reutilização de arquitetura. Estes conceitos são fundamentais para a criação eficiente de arquiteturas de software, fornecendo uma estratégia global para a concepção de famílias de sistemas de software.
Os diferentes estilos fornecem soluções arquitetônicas, genéricos e reutilizáveis de uma forma que possa ser facilmente compreendida e aplicada a novos problemas que exigem características arquitetônicas semelhantes.