Padrões e Estilos de Arquitetura de Software

Arquitetura é um conjunto de partes que compõem o sistema e o ambiente em que está inserido, suas responsabilidades e seus relacionamentos.

Estilos e Padrões Arquiteturais de Software

Os sistemas seguem um estilo de organização estrutural, ou seja,…


This content originally appeared on DEV Community and was authored by DEV Community

Arquitetura é um conjunto de partes que compõem o sistema e o ambiente em que está inserido, suas responsabilidades e seus relacionamentos.

Image description

Estilos e Padrões Arquiteturais de Software

Os sistemas seguem um estilo de organização estrutural, ou seja, são como "templates" para arquiteturas concretas que expressam uma organização estrutural, apresentando um conjunto pré-definidos de subsistemas e suas responsabilidades.

Um padrão arquitetural é uma solução que já foi estudada, testada e documentada de um problema recorrente. O modelo ajuda na tomada de decisões do projeto de software, como qual será sua utilidade e as funções e relacionamentos de cada subsistema, ou seja, é quem define a estrutura fundamental do programa.

Segue um resumo dos principais estilos e padrões de arquitetura de software:

  • Camadas: estrutura aplicações que podem ser decompostas em grupos de subtarefas hierarquicamente. Cada camada oferece serviço à camada acima dela, e serve como cliente da camada inferior. Suas vantagens são: permite particionar problemas complexos em uma sequência de passos incrementais; mudanças em uma camada afetam, no máximo, duas camadas adjacentes; permite projetos baseados em níveis crescentes de abstrações; suas desvantagens são: é difícil encontrar níveis corretos de abstração; nem todos os sistemas são facilmente estruturas em forma de camadas. Exemplo: Modelo OSI;

  • Cliente-Servidor: é baseado em programas servidores (aguarda mensagens, executa serviços e retorna resultados) e programas clientes (estabelece conexão, envia mensagens para servidor, aguarda mensagens de resposta). Vantagens: utilização dos recursos do servidor; escalabilidade; aumentando a capacidade computacional do servidor; Desvantagens: aumenta a complexidade e os custos de comunicação;

  • Tubos e filtros: divide a tarefa entre várias etapas de processamento sequencial, pois a saída de uma etapa é a entrada da etapa seguinte. Cada etapa de processamento é implementada pelo filtro, que consome e entrega os dados de forma incremental, em vez de todos os dados de uma só vez. O fluxo de dados é implementado pelos tubos. Exemplo: compilador; Vantagens: flexibilidade na troca de filtros e recombinação; eficiência em processamento em paralelo; vários filtros consumindo e produzindo dados em paralelos. Desvantagens: gerenciamento de erros e ausência de um estado global compartilhado;

  • Micro serviços: refere-se a um estilo de arquitetura para construção de software que decompõe o domínio de negócio em pequenos blocos, transaccionalmente consistentes e com contexto próprio;

  • Publish-Subscriber: é um modelo de comunicação assíncrono e fracamente acoplado, no qual uma aplicação gera eventos que serão processados por outras aplicações que tiverem interesse nele;

  • Representational State Transfer (REST): é um estilo de arquitetura utilizado para fornecer padrões entre sistemas de computador na web, facilitando a comunicação entre os mesmos. Neste estilo, a implementação do cliente e do servidor pode ser feita de forma independente, sem que um conheça o outro. A grande vantagem é que isso permite que o código de um dos lados pode ser alterado sem afetar o outro;

  • Arquitetura Orientada a Serviços (SOA): é um tipo de design de software que torna os componentes reutilizáveis, utilizando interfaces de serviços como uma linguagem de comunicação em uma rede. Ou seja, o SOA integra os componentes de software que foram implementados e são mantidos separadamente, permitindo que eles se comuniquem e trabalhem juntos para formar aplicações que funcionam em sistemas diferentes;

  • Model-View-Controller: neste estilo a aplicação é dividida em 3 camadas - Model (contém as funcionalidades principais e os dados), View (camada de exibição dos dados aos usuários), Controller (liga a model e a view, trafegando os dados entre as camadas). Vantagens: organização clara das abstrações, permite múltiplas views em um mesmo modelo e as views são sincronizadas. Desvantagens: aumenta a complexidade;

  • Broker: estrutura sistemas distribuídos que precisam interagir através de invocação remota de serviços (desacopla servidores de clientes e coordena a comunicação entre componentes). Exemplo: serviços de busca. Vantagens: transparência de localização dos serviços, flexibilidade, portabilidade. Desvantagens: sobrecarga de processamento;

  • Arquitetura Orientada a Eventos: é um método de desenvolvimento de software para criar aplicações que se comunicam ou se integram de forma assíncrona com outras aplicações e sistemas através de eventos. Ela é composta por produtores de eventos (enviam as mensagens), canais de eventos e seus consumidores (consomem as mensagens). A utilização de canais de eventos como intermediário permite que os produtores sejam dissociados dos consumidores, permitindo assim, que eles possam agir independentemente uns dos outros (o que possibilita maior escalabilidade e tolerância a falhas). Além disso, a organização de aplicações envolvendo eventos também permite que o código seja executado de forma assíncrona e automática, sem interação do usuário;

  • CQRS (Comand and Query Responsibility Segregation): este padrão é sobre separar a responsabilidade e escrita e leitura de seus dados. A ideia é segregar as responsabilidades da aplicação em Command (operações que modificam o estado dos dados na aplicação) e Query (operações que recuperam informações dos dados na aplicação);


This content originally appeared on DEV Community and was authored by DEV Community


Print Share Comment Cite Upload Translate Updates
APA

DEV Community | Sciencx (2022-02-23T22:54:03+00:00) Padrões e Estilos de Arquitetura de Software. Retrieved from https://www.scien.cx/2022/02/23/padroes-e-estilos-de-arquitetura-de-software/

MLA
" » Padrões e Estilos de Arquitetura de Software." DEV Community | Sciencx - Wednesday February 23, 2022, https://www.scien.cx/2022/02/23/padroes-e-estilos-de-arquitetura-de-software/
HARVARD
DEV Community | Sciencx Wednesday February 23, 2022 » Padrões e Estilos de Arquitetura de Software., viewed ,<https://www.scien.cx/2022/02/23/padroes-e-estilos-de-arquitetura-de-software/>
VANCOUVER
DEV Community | Sciencx - » Padrões e Estilos de Arquitetura de Software. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/02/23/padroes-e-estilos-de-arquitetura-de-software/
CHICAGO
" » Padrões e Estilos de Arquitetura de Software." DEV Community | Sciencx - Accessed . https://www.scien.cx/2022/02/23/padroes-e-estilos-de-arquitetura-de-software/
IEEE
" » Padrões e Estilos de Arquitetura de Software." DEV Community | Sciencx [Online]. Available: https://www.scien.cx/2022/02/23/padroes-e-estilos-de-arquitetura-de-software/. [Accessed: ]
rf:citation
» Padrões e Estilos de Arquitetura de Software | DEV Community | Sciencx | https://www.scien.cx/2022/02/23/padroes-e-estilos-de-arquitetura-de-software/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.