Arquiteturas de SW PDF
Document Details
Uploaded by HearteningFuturism
2024
Nuno Pina
Tags
Summary
This document provides an overview of software architectures. It details different styles, and their importance to software development, evolution and maintenance. The document focuses on various architectural approaches.
Full Transcript
Arquiteturas de SW Arquiteturas de SW Desempenham um papel Arquiteturas de software são fundamental no processo de um conjunto de decisões engenharia de software...
Arquiteturas de SW Arquiteturas de SW Desempenham um papel Arquiteturas de software são fundamental no processo de um conjunto de decisões engenharia de software, estruturais e organizacionais funcionando como um plano que definem o design e a que guia o desenvolvimento, a operação de um sistema de evolução e a manutenção de software. um sistema. © Nuno Pina 2024 2 A arquitetura de software é a estrutura de um sistema, composta pelos elementos do software, suas interações e as Definição de propriedades que eles exibem. Arquitetura de Software É uma representação de alto nível que considera não apenas aspetos técnicos, mas também requisitos funcionais e não funcionais, como desempenho, escalabilidade, segurança e manutenibilidade. © Nuno Pina 2024 3 Componentes (ou Módulos): São as partes independentes do sistema que realizam funções específicas. Podem ser bibliotecas, serviços, Componentes classes ou outros elementos de software. Principais da Conexões (ou Conectores): Representam as Arquitetura de interações entre os componentes, como Software chamadas de funções, APIs, mensagens ou eventos. Restrições e Regras: Conjunto de diretrizes que definem como os componentes e conectores devem interagir, assegurando que o sistema atenda aos requisitos desejados. © Nuno Pina 2024 4 Visões Arquiteturais: A arquitetura pode ser representada sob diferentes perspetivas, como: 1. Visão lógica: Foca no Componentes comportamento e funcionalidades do sistema. Principais da 2. Visão física: Descreve a infraestrutura de hardware onde o software será Arquitetura de executado. 3. Visão de Software desenvolvimento: Mostra como o software será organizado para facilitar a construção e a manutenção. 4. Visão de processos: Aborda aspetos relacionados à execução do sistema, como concorrência e comunicação. © Nuno Pina 2024 5 Base para Tomada de Decisões: Ajuda a tomar decisões sobre tecnologias, frameworks, linguagens de programação e padrões de design. Importância Facilidade de Evolução e Manutenção: Uma boa arquitetura facilita a adição de novas funcionalidades, a correção de erros e da Arquitetura a adaptação a mudanças. de Software Comunicação Entre as Partes Interessadas: Serve como um modelo comum para desenvolvedores, gerentes, clientes e outros stakeholders, facilitando o entendimento e a colaboração. Garantia de Qualidade: Ajuda a atender requisitos de qualidade, como desempenho, escalabilidade, confiabilidade e segurança. © Nuno Pina 2024 6 Escolha de Estilos Entendimento dos Requisitos: Arquiteturais: Estilos como Requisitos funcionais e não cliente-servidor, microservices, funcionais são obtidos e monolítico, orientado a analisados para guiar as eventos, entre outros, são Processo de decisões arquiteturais. avaliados e selecionados. Criação da Arquitetura de Modelação: A arquitetura é representada por diagramas e Avaliação: Técnicas como ATAM (Architecture Tradeoff Analysis Method) são usadas Software documentos que explicam sua para avaliar a eficácia da estrutura e comportamento. arquitetura proposta. Documentação e Comunicação: A arquitetura é documentada e apresentada para garantir que todos os envolvidos entendam o plano e possam contribuir. © Nuno Pina 2024 7 Na engenharia de software, a arquitetura é a base que conecta todas as etapas do ciclo de vida do desenvolvimento. Ela influencia: Análise de requisitos: Relação com Vincula necessidades ao design técnico. a Engenharia Design e implementação: Guia de Software a estruturação do código e a escolha de padrões. Testes: Define pontos de controle e critérios de qualidade. Manutenção: Oferece uma base consistente para atualizar o sistema. © Nuno Pina 2024 8 Os estilos arquiteturais de engenharia de software são padrões de design amplamente reconhecidos que guiam a organização e a interação dos Estilos componentes de um sistema. arquiteturais Cada estilo é projetado para atender a diferentes necessidades e restrições de sistemas e é escolhido com base nos requisitos funcionais e não funcionais. © Nuno Pina 2024 9 Descrição: Organiza o sistema em camadas empilhadas, onde cada camada fornece serviços à camada acima e consome serviços da camada abaixo. Arquitetura Geralmente inclui camadas como apresentação, lógica de negócios e acesso a dados. em Camadas Vantagens: Separação de responsabilidades: Facilita (Layered a manutenção e a compreensão. Facilidade de teste: As camadas podem ser Architecture) testadas individualmente. Reutilização: Componentes de camadas podem ser reutilizados em outros sistemas. Desvantagens: Desempenho: A comunicação entre camadas pode adicionar sobrecarga. Dependência rígida: Alterações numa camada podem exigir mudanças em outras. © Nuno Pina 2024 10 Descrição: Divide o sistema em dois componentes principais: Servidor: Processa dados e fornece serviços. Cliente: Consome os Arquitetura serviços do servidor. Vantagens: Distribuição: Permite a Cliente- interação entre dispositivos distintos. Servidor Escalabilidade: É possível adicionar mais clientes sem alterar o servidor. Desvantagens: Dependência da rede: O sistema depende de uma ligação estável. Manutenção: O servidor pode se tornar um ponto único de falha. © Nuno Pina 2024 11 Descrição: O sistema é desenvolvido como um único bloco de código, onde todos os componentes estão integrados. Vantagens: Simplicidade: Fácil de desenvolver e implantar em Arquitetura sistemas pequenos. Desempenho: Não Monolítica há sobrecarga de comunicação entre serviços. Desvantagens: Manutenção: Torna- se difícil escalar e atualizar à medida que cresce. Confiabilidade: Um erro pode afetar todo o sistema. © Nuno Pina 2024 12 Descrição: Divide o sistema em pequenos serviços independentes, cada um com sua própria lógica e banco de dados, comunicando-se via APIs. Vantagens: Escalabilidade: Serviços podem ser Arquitetura de escalados de forma independente. Manutenção: Microserviços Alterações em um serviço não afetam outros. Desvantagens: Complexidade: Gerir muitos serviços pode ser desafiador. Comunicação: A comunicação entre serviços pode adicionar latência. © Nuno Pina 2024 13 Descrição: Componentes do sistema Arquitetura comunicam-se através de eventos assíncronos. Um evento é gerado por um Baseada em produtor e consumido por um ou mais consumidores. Vantagens: Eventos Desempenho: Pode lidar com altos (Event-Driven volumes de dados em tempo real. Flexibilidade: Architecture) Permite desacoplamento entre componentes. Desvantagens: Depuração: Difícil rastrear o fluxo de dados. Complexidade: Requer um mecanismo eficiente de fila ou barramento. © Nuno Pina 2024 14 © Nuno Pina 2024 15 Descrição: Arquitetura O sistema é composto por serviços reutilizáveis e Orientada a independentes que se comunicam via protocolos Serviços padronizados, como SOAP ou REST. Vantagens: (Service- Reutilização: Serviços podem ser Oriented usados em diferentes aplicações. Architecture - Interoperabilidade: Integração com SOA) diferentes plataformas. Desvantagens: Sobrecarga: A comunicação pode ser lenta devido ao uso de protocolos complexos. Manutenção: A gestão de contratos de serviços pode ser difícil. © Nuno Pina 2024 16 Arquitetura de Descrição: Todos os componentes Repositório compartilham um repositório de dados centralizado, como um Compartilhado banco de dados. Vantagens: (Shared Consistência: Todos os componentes Repository acedem a dados atualizados. Architecture) Facilidade de integração: Os dados são centralizados. Desvantagens: Confiabilidade: O repositório é um ponto único de falha. Desempenho: O acesso simultâneo pode causar gargalos. © Nuno Pina 2024 17 Descrição: O sistema é composto por Arquitetura de filtros que processam dados e passam os resultados para o próximo Pipeline e filtro em um pipeline. Vantagens: Filtros (Pipe- Modularidade: Filtros são componentes independentes. and-Filter Reutilização: Filtros podem ser Architecture) reaproveitados em diferentes pipelines. Desvantagens: Desempenho: Processamento sequencial pode ser lento. Flexibilidade: Difícil alterar a ordem dos filtros sem fazer refatoring. © Nuno Pina 2024 18 Descrição: O sistema é composto por componentes modulares que podem ser desenvolvidos e implementados independentemente. Vantagens: Arquitetura Reutilização: Componentes podem ser compartilhados Orientada a entre sistemas. Manutenção: Componentes Alterações em um componente não afetam o restante. Desvantagens: Complexidade: Integração e comunicação entre componentes podem ser difíceis. Sobrecarga: A gestão de dependências pode ser trabalhosa. © Nuno Pina 2024 19 Descrição: Os serviços e recursos do sistema são fornecidos por meio de plataformas de computação em nuvem. Vantagens: Arquitetura de Escalabilidade: Recursos podem ser ajustados conforme a Computação procura. Custo-benefício: em Nuvem Reduz custos iniciais de infraestrutura. Desvantagens: Dependência de provedores: Risco de lock-in com fornecedores. Segurança: Dados sensíveis podem estar expostos. © Nuno Pina 2024 20 Computação em Nuvem (Cloud Computing) Descrição: Localização: Centros de dados centralizados. Função: Oferece recursos de computação escaláveis e sob demanda, como armazenamento, processamento e serviços analíticos. Vantagens: Alta escalabilidade e elasticidade. Custos reduzidos devido ao modelo de pagamento conforme o uso. Ampla disponibilidade de recursos computacionais avançados. Limitações: Alta latência em sistemas que dependem de tempo real. Consome maior largura de banda devido à transferência de grandes volumes de dados. © Nuno Pina 2024 21 Descrição: Localização: Dispositivos mais próximos do utilizador final ou do dispositivo IoT. Função: Fornece capacidade de processamento, Computação armazenamento e rede para reduzir a latência e o tráfego em direção à nuvem. em Névoa Vantagens: Baixa latência e rápida (Fog resposta. Reduz o tráfego de dados para a nuvem. Computing) Melhor suporte para aplicações em tempo real. Limitações: Menor capacidade de processamento e armazenamento em comparação com a nuvem. Maior complexidade para gerir dispositivos distribuídos. © Nuno Pina 2024 22 Cloud and Fog-based Architecture é um modelo que combina computação em nuvem (cloud computing) e computação Cloud and em névoa (fog computing) para distribuir recursos e Fog-based capacidades de processamento. Architecture Esse modelo é amplamente utilizado em sistemas que precisam de escalabilidade, baixa latência e suporte a dispositivos distribuídos, como em aplicações da Internet das Coisas (IoT), smart cities e sistemas industriais. © Nuno Pina 2024 23 Este modelo utiliza os melhores recursos de Arquitetura cada paradigma, permitindo que tarefas sejam distribuídas entre a nuvem e a névoa, dependendo das necessidades da aplicação. Combinada: Componentes Principais: Dispositivos Periféricos (Edge Devices): Cloud and Sensores, atuadores e dispositivos IoT que coletam dados. Fog Exemplos: câmaras de segurança, sensores industriais, smartphones. Camada de Névoa (Fog Layer): Gateways e dispositivos intermediários que processam os dados localmente. Exemplos: routers inteligentes, hubs IoT, servidores locais. Camada de Nuvem (Cloud Layer): Grandes data centers que realizam armazenamento massivo, análise avançada e machine learning. © Nuno Pina 2024 24 Recolha de Dados: Os dispositivos periféricos capturam dados brutos. Processamento Local (Fog): Parte dos dados é Fluxo de processada localmente para aplicações em tempo real. Dados numa Decisões rápidas são tomadas sem necessidade Arquitetura de enviar dados para a nuvem. Envio à Nuvem: Cloud-Fog Dados processados ou menos urgentes são enviados para a nuvem para análises mais profundas ou armazenamento. Distribuição de Resultados: Resultados processados pela nuvem são enviados de volta para a camada de névoa ou dispositivos periféricos. © Nuno Pina 2024 25 Veículos Autónomos: Névoa: Processa dados de sensores em tempo real para evitar colisões. Nuvem: Analisa padrões de tráfego e melhora algoritmos de navegação. Smart Cities: Névoa: Gere dados de Casos de Uso sensores locais para otimização de semáforos. Nuvem: Armazena dados históricos para planeamento urbano. Indústria 4.0: Névoa: Monitora máquinas em tempo real para prever falhas. Nuvem: Realiza análises detalhadas e fornece insights de longo prazo. © Nuno Pina 2024 26 Baixa Latência: A camada de névoa reduz atrasos ao processar informações Vantagens da localmente. Eficiência no Uso de Rede: Arquitetura Minimiza o envio desnecessário de dados Cloud-Fog para a nuvem. Escalabilidade: A nuvem oferece capacidade praticamente ilimitada para lidar com picos de procura. Resiliência: Em caso de falha na conexão com a nuvem, a camada de névoa pode continuar a operar de forma independente. © Nuno Pina 2024 27 Desafios Segurança e Privacidade: Maior número de dispositivos e camadas exige políticas rigorosas de segurança. Gestão de Recursos: Coordenar tarefas entre névoa e nuvem pode ser complexo. Interoperabilidade: Dispositivos e plataformas diferentes precisam funcionar de forma integrada. © Nuno Pina 2024 28