Architecture, Architecture Pattern e Design Pattern

Lucas Oliveira
March 13th, 2020 · 1 min read

Com certeza você já se deparou com algum ou todos esses termos em livros de engenharia de software. São termos de grande importância e que a compreensão com certeza não vai lhe fazer mal. Nesse artigo vamos passar pelos quatro termos e trazer características que facilitem a compreensão.

Arquitetura

Arquitetura é nada mais que a forma que um sistema recebeu de seus criadores. Seu objetivo primário (senão único) é fazer com que a evolução da aplicação seja fácil.

“O termo arquitetura envolve a noção dos principais elementos do sistema, as peças que são difíceis de mudar. Uma fundação na qual o resto precisa ser construído.” - Martin Fowler

Estilo de Arquitetura

Estilo de arquitetura (Architecture Style/Architecture Design) tem foco na organização do código, divisão de responsabilidade e como as várias camadas se comunicam entre si. Exemplos de estilo de arquitetura:

  • Event driven
  • Publish/subscribe

Padrão de Arquitetura

Padrão de arquitetura (ou Architecture Pattern), assim como os design patterns, são formas de resolver problemas que um sistema pode ter. Entretanto, por resolver um problema de mais alto nível tem um carater mais abrangente. Exemplos de padrão de arquitetura:

  • Model-View-Controller
  • 3-Tier

Padrão de Design

Padrões de design (ou Design Patterns) são formas de resolver problemas usuais. De forma geral é um modelo de implementação que resolve um problema específico. Portanto é comum uma aplicação possuir vários patterns espalhados. Exemplos:

  • Um objeto necessita acompanhar a mudança de estado de outro objeto. Para esse problema podemos utilizar o padrão observer.
  • Necessidade de adicionar funcionalidades a um objeto em tempo de execução. Para esse problema podemos utilizar o padrão decorator.
  • Necessidade de certificar que uma classe tenha somente uma instância e um ponto de acesso único a suas propriedades. Para esse problema podemos utilizar o padrão singleton.

Finalizando

Acredito que esse visão geral seja o suficiente para entender as suas diferenças. Para quem tiver interesse em saber mais sobre as particularidades dos temas, recomendo a leitura dos seguintes livros e artigos:

  • “Introdução à Arquitetura e Design de Software” - Paulo Silveira, Guilherme Silveira, Sérgio Lopes, Guilherme Moreira, Nico Steppat e Fábio Kung (a introdução e capítulo 6, para ser mais exato)
  • “Clean Architecture” - Robert C. Martin (capítulo 15)
  • “Is Design Dead?” - Martin Fowler (capítulo Growing an Architecture)

More articles from Lucas Oliveira

[feedback] É férias que fala, né?

Aqui vou escrever um pouco sobre o que espero estudar e fazer durante as férias.

May 20th, 2020 · 2 min read

Clojure: funções [parte 1]

Aqui vou escrever um pouco sobre o que espero estudar e fazer durante as férias.

May 1st, 2020 · 1 min read