REDES DE COMPUTADORES
Modelo OSI (Open Systems Interconnection)
Uma estrutura de 7 camadas que organiza como dados são transmitidos em uma
rede.
1. Camada Física (1ª):
o Transmite os dados como sinais elétricos, ópticos ou de rádio.
o Hardware envolvido: cabos, switches e hubs.
o Exemplos: Ethernet, USB.
2. Camada de Enlace de Dados (2ª):
o Garante que os dados sejam enviados sem erros dentro da mesma
rede.
o Divide-se em:
MAC (Media Access Control): Controle de acesso ao meio
físico.
LLC (Logical Link Control): Controle de fluxo e detecção de
erros.
o Protocolos: Ethernet, Wi-Fi (802.11).
3. Camada de Rede (3ª):
o Responsável pelo roteamento de pacotes entre redes diferentes.
o Trabalha com endereços lógicos (IP).
o Protocolos: IPv4, IPv6, ICMP.
4. Camada de Transporte (4ª):
o Garante entrega confiável e ordenada dos dados.
o Protocolos:
TCP: Conexão confiável, com controle de erros.
UDP: Rápido, mas sem garantia de entrega.
5. Camada de Sessão (5ª):
o Estabelece, gerencia e encerra sessões de comunicação.
o Exemplo: Conexões remotas via SSH.
6. Camada de Apresentação (6ª):
o Traduz os dados para o formato compreensível pelo aplicativo.
o Responsável pela compressão, criptografia e conversão de formatos.
o Exemplo: Criptografia SSL/TLS.
7. Camada de Aplicação (7ª):
o Interage diretamente com os aplicativos do usuário.
o Protocolos: HTTP, FTP, SMTP.
Modelo TCP/IP (Transmission Control Protocol/Internet Protocol)
Mais prático que o OSI, com 4 camadas:
1. Camada de Acesso à Rede:
o Equivale às camadas Física e Enlace do OSI.
o Lida com hardware e protocolos de enlace (Ethernet, Wi-Fi).
2. Camada de Internet:
o Equivale à camada de Rede do OSI.
o Roteia pacotes de dados entre redes.
o Protocolos: IPv4, IPv6, ICMP.
3. Camada de Transporte:
o Equivale à camada de Transporte do OSI.
o Protocolos:
TCP: Controla erros, fragmentação e reordenação.
UDP: Para transmissões rápidas, como streaming.
4. Camada de Aplicação:
o Combina as camadas de Sessão, Apresentação e Aplicação do OSI.
o Protocolos: HTTP, SMTP, FTP, DNS.
Endereçamento IP
IPv4: Endereços de 32 bits (ex.: [Link]).
IPv6: Endereços de 128 bits para suportar mais dispositivos (ex.:
[Link]).
IPs públicos são usados na internet, enquanto IPs privados (ex.: 192.168.x.x)
são usados em redes internas.
Topologias de Rede
1. Barramento:
o Todos os dispositivos conectados ao mesmo cabo principal.
o Econômica, mas com baixa resiliência: um cabo rompido pode
derrubar a rede.
2. Estrela:
o Cada dispositivo conecta-se a um switch ou roteador central.
o Vantagens: fácil de isolar falhas.
o Desvantagem: dependência do dispositivo central.
3. Anel:
o Dados fluem em um círculo fechado.
o Vantagens: simples para redes pequenas.
o Desvantagem: falha em um ponto interrompe toda a comunicação.
4. Malha:
o Todos os dispositivos possuem conexões redundantes.
o Vantagem: altamente confiável.
o Desvantagem: custo elevado.
5. Árvore (Híbrida):
o Combinação de várias topologias, geralmente barramento e estrela.
o Usada em grandes redes corporativas.
Protocolos Importantes
1. DNS (Domain Name System):
o Converte nomes de domínio (ex.: [Link]) para endereços IP.
o Funciona como a "agenda telefônica" da internet.
2. HTTP/HTTPS:
o HTTP: protocolo usado para transferir páginas web.
o HTTPS: versão segura com criptografia via SSL/TLS.
3. ARP:
o Traduz endereços IP para endereços MAC.
o Exemplo: Um dispositivo quer falar com outro, mas só conhece o IP. O
ARP encontra o MAC correspondente.
4. ICMP:
o Usado para diagnóstico de rede, como no comando ping.
Modulação de Sinais
1. AM (Amplitude Modulation):
o Informação é transmitida variando a amplitude do sinal.
o Usado em transmissões de rádio AM.
2. FM (Frequency Modulation):
o Informação transmitida variando a frequência do sinal.
o Usado em rádio FM e transmissões de áudio.
3. QAM (Quadrature Amplitude Modulation):
o Combina amplitude e fase para aumentar a eficiência.
o Utilizado em redes Wi-Fi e 4G.
Equipamentos de Rede
1. Roteador:
o Conecta diferentes redes, escolhendo o melhor caminho para os
dados.
2. Switch:
o Conecta dispositivos dentro de uma mesma rede local (LAN).
o Envia dados apenas ao destino correto, usando endereços MAC.
3. Hub:
o Simples, retransmite dados para todos os dispositivos conectados.
o Ineficiente comparado a switches.
4. Firewall:
o Monitora e filtra o tráfego de entrada e saída com base em regras.
o Protege contra ataques externos.
ANÁLISE E PROJETO DE SISTEMAS
1. Metodologias de Desenvolvimento de Software
Tradicionais:
1. Cascata:
o Modelo Sequencial:
O modelo em cascata é linear, ou seja, uma fase
depende da conclusão da anterior. Ideal para projetos
com requisitos bem definidos e pouca chance de
alteração.
Fases:
Requisitos: Levantamento de todos os requisitos
do sistema.
Design: Arquitetura e design detalhado do
sistema.
Implementação: Programação e
desenvolvimento.
Testes: Testes unitários e integração do sistema.
Manutenção: Correções e ajustes pós-
implantação.
Vantagens: Previsibilidade, controle rigoroso.
Desvantagens: Difícil adaptação a mudanças após o
início do projeto.
2. Prototipação:
o Modelo Iterativo:
O foco é construir protótipos (versões iniciais e
funcionais do sistema) para capturar os requisitos e
obter feedback rápido de usuários.
Fases:
Desenvolvimento de protótipos: Criação de
versões iniciais do sistema com funcionalidades
básicas.
Elicitação de requisitos: O protótipo é avaliado
pelos usuários para ajustar os requisitos.
Aperfeiçoamento: Ajustes contínuos nos
protótipos conforme feedback.
Vantagens: Identificação precoce de problemas, maior
alinhamento com os usuários.
Desvantagens: Pode resultar em foco excessivo nas
funcionalidades e não no design geral do sistema.
3. RAD (Rapid Application Development):
o Desenvolvimento Acelerado:
Usado para criar sistemas em um tempo reduzido com a
utilização de protótipos e ferramentas de
desenvolvimento rápido.
Fases:
Planejamento inicial: Definição do escopo
básico e equipe.
Prototipagem: Desenvolvimento de protótipos
rápidos.
Revisão do protótipo e melhorias: Feedback e
ajustes rápidos.
Desenvolvimento final: Aperfeiçoamento e
implementação das versões finais.
Vantagens: Tempo reduzido de desenvolvimento,
flexibilidade.
Desvantagens: Risco de falta de controle sobre a
qualidade, dependência de ferramentas específicas.
Ágeis:
1. SCRUM:
o Framework Ágil:
SCRUM é um framework que segue práticas ágeis, onde
o trabalho é realizado em sprints (ciclos curtos de
desenvolvimento). Foca na entrega incremental de
software.
Papéis:
Scrum Master: Facilita o processo, ajuda a
remover impedimentos e garante que a equipe
siga as práticas do SCRUM.
Product Owner (PO): Representa o cliente ou as
partes interessadas e prioriza o trabalho a ser
feito, mantendo o backlog de produto.
Desenvolvedores: A equipe responsável pela
entrega do incremento de software.
Eventos:
Sprint: Ciclo de desenvolvimento com duração
fixa (geralmente 2-4 semanas).
Planejamento da Sprint: Definição dos itens do
backlog a serem entregues na sprint.
Reuniões Diárias: Check-in diário de 15 minutos
para alinhamento.
Revisão da Sprint: Apresentação das
funcionalidades desenvolvidas.
Retrospectiva: Reflexão sobre o processo da
sprint e identificação de melhorias.
Artefatos:
Backlog do Produto: Lista ordenada de tudo o
que precisa ser feito no projeto.
Backlog da Sprint: Itens selecionados do
backlog do produto para a sprint.
Incremento: A versão do sistema com as
funcionalidades desenvolvidas na sprint.
Vantagens: Flexibilidade, colaboração constante com o
cliente, entrega contínua de valor.
Desvantagens: Requer disciplina e comprometimento,
pode ser difícil de aplicar em grandes equipes.
2. Scrumban:
o Combinando Scrum e Kanban:
Uma adaptação onde o time usa a estrutura do Scrum,
mas com um fluxo contínuo de trabalho inspirado no
Kanban.
Características:
Não há planejamento rígido de Sprints, mas o time
mantém um backlog com prioridades.
O trabalho é "puxado" conforme a capacidade do
time, sem restrição de tempo para sprints.
Vantagens: Flexibilidade no planejamento, adaptação
rápida a mudanças.
Desvantagens: Pode perder a estrutura de
planejamento a longo prazo.
2. Prática de Planejamento e Projeto de Software
1. Planejamento:
o Estudo de Viabilidade: Análise técnica, econômica e
operacional para verificar se o projeto é possível.
o Escopo: Definição detalhada do que será incluído e o que não
será no projeto para evitar ambiguidade.
o Cronograma: Definição das atividades necessárias, suas
durações e como elas se relacionam.
o Definição de Equipe: Identificação de responsabilidades e
formação de grupos para tarefas específicas.
2. Ferramentas:
o Diagramas UML (Unified Modeling Language):
Diagrama de Classes: Representa as classes e seus
relacionamentos.
Diagrama de Sequência: Detalha a interação entre os
objetos em um processo.
Diagrama de Comunicação: Foca na comunicação
entre os objetos.
Diagrama de Estado: Mostra os estados de um objeto
durante o ciclo de vida.
Diagrama de Atividade: Representa o fluxo de
trabalho e decisões dentro do sistema.
3. Requisitos:
o Funcionais: Descrevem o comportamento do sistema
(exemplo: “O sistema deve permitir login de usuários”).
o Não funcionais: Relacionados a qualidade, desempenho e
restrições (exemplo: “O sistema deve processar 1.000
requisições por segundo”).
3. Implementação e Implantação
1. Escolha de Tecnologias:
o Definir ferramentas, linguagens de programação, frameworks e
sistemas necessários para o desenvolvimento.
o Considerações incluem a compatibilidade com os requisitos do
sistema e a escalabilidade.
2. Testes:
o Testes Unitários: Validam pequenas partes do sistema
(funções, métodos).
o Testes de Integração: Verificam a integração de diferentes
módulos do sistema.
o Homologação: Teste final com os usuários para garantir que o
sistema atenda aos requisitos.
3. Documentação e Treinamento:
o Criar guias e manuais de usuário, além de treinar a equipe para
a utilização do sistema.
4. UML (Unified Modeling Language)
Objetivo:
o Visualizar, especificar, construir e documentar artefatos de
software.
Categorias de Diagramas UML:
1. Estruturais:
Diagramas de Classes e Objetos para definir a
estrutura de dados do sistema.
2. Comportamentais:
Diagramas de Casos de Uso, Atividades e Máquinas
de Estado para representar o comportamento do
sistema.
3. Interação:
Diagramas de Sequência e Comunicação para
modelar a interação entre componentes.
5. Engenharia de Requisitos
1. Elicitação de Requisitos:
o Técnicas como entrevistas, observações e protótipos para
capturar os requisitos de todos os stakeholders.
o Fontes: Stakeholders, documentação existente e sistemas
similares.
2. Validação de Requisitos:
o Objetivos:
Consistência: Verificar se não há conflitos entre os
requisitos.
Realismo: Verificar se os requisitos podem ser
implementados com as tecnologias disponíveis.
Completude: Garantir que todos os aspectos do
sistema foram abordados.
6. Princípios de Projeto e Desenvolvimento
1. Coesão:
o Alta coesão: Cada módulo deve realizar uma única tarefa de
forma eficiente.
o Baixa coesão: Módulos que tentam realizar muitas tarefas
tornam o código mais difícil de entender e manter.
2. Acoplamento:
o Baixo acoplamento: Módulos independentes, facilitando a
manutenção e modificação do sistema.
o Alto acoplamento: Módulos fortemente dependentes,
tornando o sistema mais rígido e difícil de modificar.
3. Boas Práticas:
o SOLID: Padrões de design para sistemas orientados a objetos
(ex: Princípio da Responsabilidade Única, Princípio
Aberto/Fechado).
o DRY (Don't Repeat Yourself): Evitar duplicação de código.
o KISS (Keep It Simple, Stupid): Manter a simplicidade no
design e implementação.
7. Processos e Ferramentas
1. Controle de Versão:
o Git: Sistema de versionamento distribuído para controlar e
colaborar no código-fonte.
Comandos principais:
git init: Inicializa um repositório Git.
git commit: Registra mudanças no repositório.
git branch: Cria e gerencia branches.
git merge: Mescla mudanças de diferentes
branches.
2. IDE (Integrated Development Environment):
o Ferramentas que integram editores de código, compiladores e
depuradores, facilitando o processo de desenvolvimento.
8. Frameworks e Bibliotecas
1. Frameworks:
o Frontend: React, Angular (para desenvolvimento de interfaces
de usuário).
o Backend: Spring Boot, Django (para lógica de negócios e
acesso a banco de dados).
o Mobile: React Native, Flutter (para desenvolvimento
multiplataforma).
2. Bibliotecas:
o Python: Pandas e NumPy (para análise de dados).
o JavaScript: Lodash (para manipulação de arrays e objetos).
9. Kanban e Scrum
1. Scrum:
o Times autogerenciáveis: Foco em entregas incrementais
com sprints.
o Artefatos: Backlog do produto, backlog da sprint e incremento
de software.
2. Kanban:
o Fluxo contínuo: Utiliza quadros visuais para organizar o
trabalho, com foco na limitação de tarefas em andamento
(WIP).
Programação para Dispositivos Mobiles
Ferramentas e Tecnologias Utilizadas
1. VSCode (Visual Studio Code)
o Um editor de código poderoso e leve, com suporte para várias
linguagens e extensões que otimizam o desenvolvimento.
o Principais características:
Depurador integrado.
Suporte para controle de versão.
Personalização por meio de extensões.
2. [Link]
o Ambiente de execução JavaScript do lado do servidor.
o Permite criar aplicações escaláveis e eficientes.
o Inclui o npm (Node Package Manager), que gerencia
bibliotecas e dependências.
3. Expo
o Conjunto de ferramentas para desenvolvimento rápido de
aplicativos React Native.
o Recursos principais:
Testes em dispositivos reais ou emuladores.
Publicação e compartilhamento de aplicativos
facilmente.
4. Yarn
o Alternativa ao npm para gerenciar pacotes e dependências,
focado em velocidade e segurança.
5. Axios
o Biblioteca que facilita a realização de requisições HTTP.
o Suporta métodos como GET, POST, PUT e DELETE.
o Possui uma API simples para configurar cabeçalhos e tratar
erros.
6. Android Studio
o IDE para desenvolvimento Android.
o Inclui o AVD Manager para criar e gerenciar emuladores
Android.
7. Postman
o Ferramenta para testar APIs.
o Permite enviar requisições, configurar parâmetros e visualizar
respostas de forma organizada.
Arquitetura Cliente-Servidor
Modelo Cliente-Servidor:
o O cliente (navegador ou app) envia solicitações ao servidor,
que processa e retorna respostas.
Protocolo HTTP:
o Define como clientes e servidores se comunicam.
o Métodos principais:
GET: Solicita dados.
POST: Envia dados para criar recursos.
PUT: Atualiza ou cria recursos.
DELETE: Remove recursos.
Estrutura da Requisição HTTP:
o URL: Identifica o servidor e o recurso.
o Método HTTP: Define a ação desejada.
o Headers: Informações adicionais, como tipo de conteúdo.
o Body: Dados enviados, principalmente em POST e PUT.
JSON (JavaScript Object Notation)
Definição:
o Formato leve para representação e troca de dados.
o É fácil de ler e escrever, tanto por humanos quanto por
máquinas.
Estrutura:
o Objetos: Coleções de pares chave-valor.
o Arrays: Listas ordenadas de valores.
o Valores: Strings, números, booleanos, null.
Utilização:
o Armazenamento de dados em bancos NoSQL.
o Comunicação entre cliente e servidor via APIs.
React Native e Expo
React Native:
o Framework que permite criar aplicativos móveis nativos usando
JavaScript.
o Componentes:
Blocos reutilizáveis que formam a interface do usuário.
Exemplo: Text, View, Button.
Babel: configurações pra transpilar o código, pra que
garanta compatibilidade com dispositivos mais antigos.
Hook: Possui o useState e o useEffect.
useState gerencia estados locais. (componentes q
podem mudar durante o ciclo de vida de um
componente)
Expo:
o Facilita o desenvolvimento com React Native.
o Principais vantagens:
Oferece uma plataforma de emulação para testar
rapidamente.
Permite iniciar projetos com configurações mínimas.
Hooks do React
1. useState:
o Permite gerenciar estados em componentes funcionais.
o Utilizado para armazenar e atualizar informações dinâmicas.
2. useEffect:
o Executa efeitos colaterais em componentes funcionais, como
chamadas a APIs.
o Pode ser configurado para rodar após a renderização inicial ou
em atualizações específicas.
Axios e Requisições HTTP
Axios:
o Simplifica a comunicação com servidores por meio de
requisições HTTP.
o Recursos principais:
Suporte para promessas.
Configuração simples de cabeçalhos.
Tratamento automático de erros.
Requisições Comuns:
o GET: Solicita dados.
o POST: Envia dados para criação de recursos.
o PUT: Atualiza recursos existentes.
o DELETE: Remove recursos.
Estrutura de Projetos React Native
1. Arquivos Principais:
o [Link]: Ponto de entrada do aplicativo. Contém a lógica
principal da aplicação.
o [Link]: Define metadados do projeto, como
dependências, scripts e versão.
o [Link]: Configurações para transpilar código
moderno JavaScript.
o assets/: Pasta para recursos estáticos como imagens.
2. Outros Arquivos:
o node_modules/: Contém pacotes instalados via npm ou yarn.
o [Link]: Define configurações e metadados do aplicativo.
Modelo de Desenvolvimento Mobile
Estilos:
o Criados usando o StyleSheet para definir a aparência dos
componentes.
Ciclo de Vida:
o Envolve o carregamento inicial, atualização de estados e
comunicação com APIs externas.
Performance:
o A estrutura do React Native, combinada com ferramentas como
Expo e Axios, oferece uma experiência fluida para o usuário
final.