Escolar Documentos
Profissional Documentos
Cultura Documentos
Qualidade:
● Em uso: Eficácia, produtividade, segurança, satisfação. Ponto de vista do usuário.
● Interna: atributos internos, como tamanho do código
● Externa: conjunto de atributos externos
Detecção de erros de código sem executá-lo. Revisão automática de código. Ex.: Compilador, inspeção.
Prática de encontrar defeitos no código e modelagem.
Analisadores estáticos: ferramentas de software que varrem o código em busca de defeitos e anomalias.
Possibilidade: revisão por pares.
Teste unitário.
Dublê de testes: objetos falsos usados no lugar de verdadeiros. Eliminam dependências (ex.: não precisa
fazer conexão). NÃO SÃO ACONSELHADOS EM TESTES DE INTEGRAÇÃO.
Mocks: imitações ou unidades falsas que simulam o comportamento de unidades reais. Simula o resultado de
funções sem precisar executá-las. Contribuem, portanto, para os testes de unidade.
● Testa se métodos são chamados corretamente
● Testa se os parâmetros passados estão corretos
● Testa quantas vezes o método mockado foi chamado
Teste de integração.
Teste de Integração é uma técnica sistemática para construir a arquitetura de software ao mesmo tempo que
conduz testes para descobrir erros associados com as interfaces.
Definições:
● Testa interface entre componentes.
● Tem por objetivo construir estrutura de programa a partir de componentes já testados.
● Não ocorrem na execução, e sim na junção de componentes.
Integração não incremental: big bang - todos os componentes são combinados com antecedência e o
programa inteiro é testado como um todo. CAOS.
Gestão de configuração.
DevOps, modelo de versionamento, merge, branch, pipeline, CI/CD e database migration.
Infraestrutura.
Resiliência de aplicações.
Monitoração e observabilidade.
ARQUITETURA
Tecnologias de integração.
Workflow.
Web services.
Design de software.
Arquitetura hexagonal
Transações distribuídas.
NUVEM
12 factories.
Orientação a serviço.
TÓPICOS AVANÇADOS
Inteligência artificial.
Aprendizado de máquina.
Técnicas de classificação.
Técnicas de regressão.
Técnicas de agrupamento.
Técnicas de associação.
Sistemas de recomendação.
Visão computacional.
Deep learning.
Ciência de dados.
Big Data.
Captura, gerenciamento e análise de dados que vão além de dados estruturados típicos.
● Dados não-estruturados são maioria
Fundamentos.
● 5Vs: volume, velocidade, variedade (3Vs iniciais)
○ 4º V: veracidade
○ Valor
● Outros Vs:
○ Visibilidade: relevância
○ Variabilidade (e complexidade): variação nas taxas de fluxo; complexidade: múltiplas fontes
○ Visualização: como são apresentados
Incompatibilidade de impedância: série de problemas que representam dados de bando de dados relacionais
em linguagens de programação orientada a objetos.
Modelo de dados:
● Agregado: conjunto de objetos relacionados que desejamos tratar como uma unidade.
● Chave-valor:
○ Trata o agregado como um todo opaco, não sendo possível recuperar partes dele.
○ Conjunto de chaves, as quais estão associadas a um único valor.
○ Ex.: Riak, Redis, Amazon DynamoDB, Oracle BerkleyBD
● Documentos:
○ Permite consultas e seleções parciais no agregado.
○ Documento é objeto com identificador único e conjunto de campos. Estes campos se
assemelham à estrutura chave-valor.
○ Possibilita atualizar a estrutura do documento, com adição de novos campos.
○ Ex.: MongoDB, CouchDB, Azure DocumentDB
● Colunar:
○ Divide o agregado em colunas, permitindo tratá-las como unidades.
○ Dados indexados por (linha, coluna, timestamp), sendo que este último permite diferenciar
versões.
○ Ex.: Hbase, Cassandra, HyperTable, BigTable, Hadoop
● Grafos
○ Registros pequenos com interconexões complexas (modelo oposto ao relacional)
○ Neo4J, Infinite Graph, InfoGrid, Titan
● Timeseries
○ Tempo (timestamp) é indexador chave
○ Fornece performance e armazenamento, por ter menos relações e não requer armazenamento
de um número indefinido de entidades
○ Influxdb
ACID x BASE: na BASE, a consistência não ocorrerá no mesmo instante, gerando uma fila de consistência
(fluxo). Eleva o sistema a níveis de escalabilidade não permitidos no ACID; ganha-se disponibilidade em troca
de consistência
● Basically Available: Disponibilidade garantida, tolerando falhas parciais. Persistência não é efetivada
em tempo real. Se o banco é basicamente disponível, sempre dará conhecimento ao pedido de um
cliente
● Soft State: um banco de dados pode estar em um estado inconsistente quando lido, o que significa
que os dados podem mudar se lidos novamente
● Eventual Consistency: o banco só alcança consistência uma vez as mudanças propagadas para todos
os nós. Permite servir a múltiplos clientes sem latência, embora resultados inconsistentes
Pipeline de dados.
Processamento distribuído.
Armazenamento de Dados.
Sistemas de indexação.
Processamento de Dados.
Processamento MapReduce.