Resumo Design Multi-Camadas
- Projeto:
- Em portugues:
- 1. Especificação da modelagem e arquitetura do sistema a ser construído => Design
- 2. Gestão do escopo, do custo, do tempo e das atividades na construção de algo => Project
- Em portugues:
- Em Engenharia de Software é comum adotar os Padrões de Projeto para problemas comuns no design de software
- Padrões de projeto:
- Não são códigos e sim, especificações de como lidar com problemas e projetar soluções
- Essas soluções estão no nível de design para problemas recorrentes que engenheiros de software encontram com frequência
- Categorias:
- Padrão de projeto criacional
- Lidam com mecanismos de instanciação de objetos de maneira adequada à situação
- Padrão de projeto estrutural
- Se preocupam em melhor organizar a estrutura das classes e relacionamentos entre classes e objetos
- O objetivo principal destes padrões é aumentar a funcionalidades das classes envolvidas sem alterar muito sua composição
- Padrão de projeto comportamental
- Identificam padrões de comunicação comuns entre objetos, aumentando a flexibilididade da comunicação entre os objetos relacionados levando em conta a forma como uma classe se comunica com a outra.
- Padrão de projeto criacional
- Padrões de projeto:
- Exemplos de padrões de projeto:
- Camadas
- Cliente-Servidor
- MVC (Model-View-Controller)
- Micro-serviços
- PF (Pipes & Filters)
- P2P (Peer-To-Peer)
- SOA (Service Oriented Architecture)
- P/S (Publish-Subscribe)
- Foco: Layer ou Level (Camadas)
- Quebra o problema em problemas menores
- Cada um desses problemas menores é uma camada onde se pode construir
- concetos, ferramentas, tecnologias, infraestruturas, linguagens independentes de outras camadas do projeto.
- Reflexões para modelagem:
- Problemas podem ser catregorizados pela natureza do problema que se quer resolver:
- Matemático: foco na capacidade do sistema computacional, em que aspectos como IHC (Interface Humano-Computador) ou Armazenamento embora importantes não são a essência do que se quer resolver
- Engenharia: onde o foco está no suporte que o sistema oferece a áreas de aplicação como é o caso de CAD (Computer Aided Design), CAE (Computer Aided Engineering), CAM (Computer Aided Maintenance), por exemplo
- Negócios: onde o foco está em processos como BPM (Business Processing Modelling) e CRM (Customer Relationship Management) e na cadeia de suprimentos
- Indústria: o interesse está em células de manufatura, automação, indústria 4.0 e outras.
- Considera-se também Verticais de Negócio como Energia, Governo, Transporte, Saúde, Finanças, Segurança, etc.
- Problemas podem ser catregorizados pela natureza do problema que se quer resolver:
- Introduziremos abaixo, a Máquina Multi-Nível para tornar mais fácil o entendimento...
Máquina Multi-Nível
- Layer ou Level:
- Camada ou nível podem ser utilizados como sinônimos
- Estes são normalmente mostrados num esquema vertical.
- Tier:
- Um 'nível (layer)' refere-se a uma divisão funcional do software, mas uma camada (tier) refere-se a uma divisão funcional do software que é executada em infraestrutura separada das outras divisões.
- Cliente-Servidor:
- Frontend é implementado no cliente (requisita) e a parte lógica no Servidor (responde) e independentes uma da outra
- Cliente-Servidor é considerado como 2-Tiers.
- Perfis de profissionais podem ser específicos em cada tier. Ex: UX/UI para frontend, backend para desempenho, escalabidilidade, tolerância a falhas, etc e DBA para camada de persistência.
- As interações devem ser claramente definidas para que os Tiers possam ser definidos.
- Máquina de Turing
- Alan Turing, provou – ao final dos anos 30… ser possível usar uma…”máquina simples” – para executar uma extensa variedade de ‘tarefas complexas’. Nesse período ocorreu uma mudança geral na percepção do computador; que passou de “instrumento matemático” à uma “máquina universal de processamento de informação”.
- Constatou que programação ao nível de 1s e 0s era complexa
- Usava cordão de bits (Bitstring)
- Máquian de dois níveis:
- Turing imaginou um computador com duas camadas, sendo uma caixa, a camada inferior ou a primeira, constituída de circuitos básicos, e uma camada superior, que ele denominou de Máquina Hipotética, que seria capaz de receber instruções de mais alto nível e converter numa sequência de bits que programaria a camada inferior.
- Interface entre níveis da máquina:
- Máquina Hipotética: ler instruções de uma linguagem L1 e traduzir as instruções da linguagem L1, mais simples, para instruções, da linguagem L0
- Uma instrução de L1 poderia corresponder a mais de uma instrução de L0, o que tornaria a vida dos programadores mais fácil
- Aparece a necessidade de compiladores considerando que a tradução pode ser complexa
- Interpretação: faz a conversão por meio de máquinas virtuais, como o Java
- Compilação: tradução como no C, C++ e outras
- Organização Multi-Camadas:
- Organização: Consiste em especificar o conjunto de camadas que comporão o produto final, isto é, o sistema sendo projetado
- Em computadores, descreve a estrutura de camadas
- Arquitetura: especifica a estrutura de camadas, descrevendo:
- Interface: modo como se relaciona com outras camadas
- Entidades: muito comumente referenciadas como componentes, objetos, classes ou método
- Relacionamentos internos à camada.
- Organização: Consiste em especificar o conjunto de camadas que comporão o produto final, isto é, o sistema sendo projetado
- Todo projeto deve começar analisando a quantidade de tiers aplicáveis. Feito isso, passa para a definição da organização de cada tier.
Projetos Multi-Camadas
- MVC - Model View Controller
- O grande objetivo do padrão MVC é isolar ao máximo a camada de apresentação.