Sem resumo de edição |
Sem resumo de edição |
||
| Linha 1: | Linha 1: | ||
Resumo Design Multi-Camadas | = Resumo Design Multi-Camadas = | ||
* Projeto: | * Projeto: | ||
| Linha 46: | Linha 46: | ||
* Introduziremos abaixo, a Máquina Multi-Nível para tornar mais fácil o entendimento... | * Introduziremos abaixo, a Máquina Multi-Nível para tornar mais fácil o entendimento... | ||
<br> | |||
= Máquina Multi-Nível = | |||
<br> | |||
* Layer ou Level: | |||
** Camada ou nível podem ser utilizados como sinônimos | |||
** Estes são normalmente mostrados num esquema vertical. | |||
<br> | |||
* 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. | |||
<br> | |||
* 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) | |||
<br> | |||
* 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. | |||
<br> | |||
* 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 | |||
<br> | |||
* 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. | |||
* 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. | |||
<br> | |||
= Projetos Multi-Camadas = | |||
<br> | |||
* MVC - Model View Controller | |||
** O grande objetivo do padrão MVC é isolar ao máximo a camada de apresentação. | |||
Edição das 22h32min de 31 de março de 2024
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.