Projeto Arquitetura

Projeto de Arquitetura

O projeto de arquitetura define a estrutura geral de um sistema de software, organizando seus componentes e suas interações para atender requisitos funcionais e não funcionais. É fundamental para garantir escalabilidade, manutenibilidade e desempenho.

O que é Projeto de Arquitetura?

O projeto de arquitetura visa compreender como um sistema deve ser organizado, decompondo-o em componentes que se comunicam. Pode ser abordado em dois níveis:

  • Arquitetura em pequena escala: Foca na estrutura interna de um programa individual.
  • Arquitetura em grande escala: Lida com sistemas corporativos complexos, integrando múltiplos subsistemas.

Decisões de Projeto de Arquitetura

Arquitetos devem tomar decisões críticas baseadas em requisitos do sistema, como:

  • Distribuição do sistema em processadores;
  • Estilos arquiteturais (MVC, Camadas, Cliente-Servidor);
  • Estratégias de controle de componentes;
  • Balanceamento entre requisitos como desempenho, segurança e disponibilidade.
"A escolha da arquitetura impacta diretamente a capacidade do sistema de atender a requisitos não funcionais, como segurança e manutenibilidade."

Padrões de Arquitetura

Padrões arquiteturais oferecem templates para organizar sistemas. Os principais incluem:

  • MVC (Model-View-Controller): Separa dados (Modelo), interface (Visão) e lógica (Controlador). Ideal para aplicações web.
  • Arquitetura em Camadas: Divide o sistema em camadas (ex: UI, lógica de negócio, banco de dados).
  • Cliente-Servidor: Organiza serviços em servidores acessados por clientes via rede.
  • Duto e Filtro: Processa dados em etapas sequenciais (filtros) conectados por fluxos (dutos).

Visões Arquiteturais

Diferentes perspectivas para analisar a arquitetura:

  • Visão Lógica: Mostra classes e objetos do sistema.
  • Visão de Processo: Foca em interações em tempo de execução.
  • Visão de Desenvolvimento: Organiza componentes para a equipe de desenvolvimento.
  • Visão Física: Mapeia software para hardware (ex: servidores, processadores).

Exemplo Prático: Arquitetura MVC

Em um sistema web de comércio eletrônico:

  • Modelo: Gerenciamento de produtos e pedidos no banco de dados.
  • Visão: Páginas HTML exibindo catálogo e carrinho.
  • Controlador: Processa ações do usuário (ex: adicionar ao carrinho).
// Exemplo simplificado em Python (Flask):
@app.route('/add_to_cart', methods=['POST'])
def add_to_cart():
    product_id = request.form['product_id']  # Controlador
    product = Product.query.get(product_id)  # Modelo
    return render_template('cart.html', item=product)  # Visão

Arquitetura e Requisitos Não Funcionais

Como a arquitetura atende a requisitos críticos:

  • Desempenho: Componentes críticos agrupados em um único servidor.
  • Segurança: Camadas de proteção (ex: firewall, autenticação em duas etapas).
  • Disponibilidade: Redundância de servidores e balanceamento de carga.