Aula 1 - Arquitetura de Software

A arquitetura de software de um sistema abrange a forma como suas partes são organizadas, incluindo questões como o comportamento dessa estrutura e quais componentes são responsáveis por realizar um conjunto específico de funções. Resumidamente, é um modelo repetível sob o qual um sistema pode ser desenvolvido.

A escolha de uma arquitetura influencia aspectos como a performance, qualidade, facilidade de manutenção e escalabilidade, assim, essa decisão tem grande impacto no sucesso do projeto, principalmente a longo prazo.

Hoje, existem diversos princípios e padrões que são utilizados nos sistemas e normalmente os projetos desenvolvidos não se limitam a um único estilo ou arquitetura. Em vez disso, são uma combinação de padrões que, juntos, formam o sistema completo.

Por que a Arquitetura de Software é Importante?

Conforme um software é desenvolvido, seu tamanho e complexidade crescem, aumentando também o problema de projeto e excedendo as estruturas de dados e algoritmos. Logo, projetar uma arquitetura que facilite a compreensão desses componentes se torna um caminho mais do que necessário.

Entre os aspectos que precisam ser observados nesse processo, estão incluídas questões como os protocolos de comunicação, atribuição de funcionalidades a determinadas partes e a estrutura de controle.

Um exemplo claro pode ser encontrado nos sistemas web, nos quais uma solução precisa contar com diversas camadas para distinguir componentes client-side e server-side, além de possíveis estruturas intermediárias que possam existir, conforme necessário.

Como a Arquitetura é Aplicada nesse Cenário

  1. Camadas: A arquitetura de software divide o sistema em diferentes camadas. Em um sistema web, é comum ter pelo menos duas camadas principais: client-side (lado do cliente) e server-side (lado do servidor).
  2. Camada Client-Side: Esta camada trata da interface do usuário que é exibida no navegador. Ela inclui o design, a interatividade e as ações que o usuário realiza diretamente na página, como clicar em botões ou preencher formulários. Geralmente, utiliza tecnologias como HTML, CSS e JavaScript.
  3. Camada Server-Side: Esta camada é responsável por lidar com os bastidores do sistema. Ela processa as solicitações do cliente, realiza operações no banco de dados, aplica regras de negócios e retorna os dados processados para o cliente. Tecnologias como linguagens de programação do lado do servidor (por exemplo, PHP, Python, Ruby) e bancos de dados são usadas aqui.
  4. Integração: Para que as duas camadas funcionem juntas, há uma comunicação constante entre elas. O cliente faz solicitações para o servidor, que as processa e retorna as respostas apropriadas para o cliente.
  5. Estruturas Intermediárias: Em sistemas mais complexos, podem ser adicionadas estruturas intermediárias, como APIs (Interface de Programação de Aplicativos) que permitem que diferentes partes do sistema se comuniquem de forma eficiente. Por exemplo, uma API pode permitir que um aplicativo móvel se comunique com o servidor da web.

A arquitetura de software nesse cenário ajuda a organizar e separar as diferentes partes do sistema. Isso torna o desenvolvimento mais gerenciável, permitindo que equipes trabalhem em diferentes partes do sistema simultaneamente. Além disso, quando uma alteração é necessária, a arquitetura bem definida torna mais fácil identificar onde a mudança deve ser feita sem afetar outras partes do sistema.

Portanto, o exemplo claro nos sistemas web ilustra como a arquitetura de software permite uma divisão estruturada de funcionalidades, facilitando o desenvolvimento, a manutenção e a escalabilidade de sistemas complexos.

Essa estruturação, apesar de parecer trabalhosa para profissionais não habituados a ela, visa facilitar a organização dos componentes e melhorar a flexibilidade e portabilidade do sistema, gerando muito mais facilidade de manutenção.

Ainda falando em manutenção, um código bem estruturado e organizado facilita a criação de interfaces bem definidas com componentes e funcionalidades já testados, permitindo o reúso de código e melhorando a assistência, já que possíveis alterações tendem a ficar restritas àquele trecho de código.

Clique aqui para assistir ao vídeo.

Um Modelo Geral de Projeto de Arquitetura de Software Derivado de Cinco Abordagens Industriais

Leia o artigo completo aqui.

Diagrama de Arquitetura de Implantação

Diagrama de Arquitetura de Implantação

Aqui está um link para o Draw.io:

Visite o Draw.io