Você está na página 1de 10

CLASP (Comprehensive, Lightweight Application Security Process): metodologia de desenvolvimento seguro

de software orientada a atividades e papéis, que descreve melhores práticas para projetos novos ou em
andamento
● Visão Conceitual
● Visão de Papéis
● Visão de Avaliação de Atividades
● Visão de Implementação
● Visão de Vulnerabilidades

SAST (Static Application Security Testing): aplicação estática para teste de segurança. seu propósito é avaliar
o código fonte e as diversas versões compiladas para buscar identificar brechas de segurança

DAST (Dynamic Application Security Testing) (TESTE DE COMPORTAMENTO): consideramos o software em


operação, verificação de compliance de segurança e padrões internacionais da indústria e release de
evoluções do software após lançamento

Gerenciamento de Produtos de Software.

Métricas:
● Internas: Não dependem da execução de software
● Externas: dependem da execução de software

Gerenciamento de produtos com métodos ágeis: Scrum, Kanban, XP, Lean.

Não seguem um processo formal de gerenciamento de requisitos.


Lean: serve de base para o ágil. Toyota; minimização do desperdício. Princípios:
● Eliminar desperdício: tudo que não é percebido pelo cliente, que não agrega valor
● Amplificar conhecimento
● Fortalecer o time
● Entregas rápidas
● Construir qualidade
● Otimizar o todo
● Adiar decisões

Scrum: Pequeno time de pessoas.


● Três pilares: transparência, inspeção, e adaptação.
● Valores: coragem, foco, comprometimento, respeito e abertura.
● Scrum Team: até 10 pessoas com papéis muito bem definidos, time auto-organizável e multifuncional
○ Desenvolvedores: incrementam o produto pronto ao final de cada sprint. Respondem ao PO. o
PO e o Scrum master podem compor a equipe de devs. Não possuem subtimes. São
responsáveis pelo plano da Sprint e o Backlog da Sprint.
○ Product Owner: única pessoa a gerenciar o Backlog, estabelecendo prioridades. Garante o ROI
○ Scrum Master: garante que Scrum seja entendido e aplicado. Gestão de pessoas, remove
impedimentos, comunica a visão, objetivos e itens do Backlog ao time
● Artefatos:
○ Product Backlog: lista ordenada (por valor, risco, prioridade, etc) de requisitos de
funcionalidade. Gerenciada pelo PO. Em geral, são itens de histórias de usuário, alto nível
■ Meta do produto: objetivo a longo prazo do Scrum Team
○ Sprint Backlog: conjunto de itens selecionados do product backlog + plano para entregar o
incremento. Criada e gerenciada pelos devs, mais o plano para transformá-los em incremento.
Tarefas em baixo nível
○ Increment: resultado da sprint. Soma de todos os itens do product backlog completados
durante a sprint e o valor dos incrementos de todas as sprints anteriores. Só vira incremento se
atende à Definição de Pronto (Definition of Done - DoD). Do contrário, volta do backlog
● Eventos:
○ The Sprint: ciclos de tempo fixo (máx 1 mês), entregam incrementos potencialmente funcionais,
containers para todos os outros eventos.
■ Sprint Planning: reunião de planejamento da sprint (máx 8 horas). Responde o que será
entregue e como.
■ Sprint Goal: meta da sprint definida na Sprint Planning.
○ Daily Scrum: reunião diária (15 min). Cria plano para as próximas 24h. Foco no progresso em
direção à meta da sprint. Discute-se: o que foi feito, o que será feito e obstáculos.
○ Sprint Review: reunião ao final da sprint (máx 4 horas) para inspecionar o incremento e ajustar
o backlog de acordo.
○ Sprint Retrospective: reunião (máx 3 horas). Chance do scrum team inspecionar a si próprio e
criar plano de melhorias para próxima sprint. Scrum master garante que seja produtivo.

Lean inception: remove tudo que não se relaciona ao produto da inception (reunião da equipe do projeto por
algumas semanas, passando por muitas atividades antes de iniciar o trabalho de entrega):
● Duração menor da inception
● Não trata de arquitetura ou projeto na inception
● Compreensão do MVP

Kanban: método de gestão de mudanças, foco na visualização do trabalho em progresso (work in progress -
WIP).
● Fluxo de entregas contínuo. Não há iterações como no Scrum.
● Cartaz ou placa visual com post-its. Ex.: Trello.
● Pode ser usado com outros processos, mesmo tradicionais.
● Limitar o WIP: princípio e prática do Kanban. Ajuda no foco ao reduzir a quantidade de tarefas em
certa etapa.

Extreme Programming (XP): Leva boas práticas ao extremo: teste, iteração e integração. Equipes pequenas,
coesas, multidisciplinares para projetos com requisitos vagos e em constante mudança.
● Requisitos expressos como cenários (histórias de usuários)
○ Devem ser decompostos caso não caibam em uma iteração
● Programadores trabalham em pares
● Testes são desenvolvidos para cada tarefa antes do código
● Práticas:
○ Planejamento incremental: requisitos são cartões de histórias
○ Pequenos releases: desenvolvimento incremental. Começa pelo conjunto mínimo útil de
funcionalidade que agrega valor ao negócio.
○ Projeto simples: projeto atende aos requisitos atuais e nada mais.
○ Desenvolvimento test-first: Primeiro se escreve o teste, depois é feita a implementação
○ Refatoração: aprimora estrutura interna do código sem alterar comportamento externo
○ Programação em pares: um verifica enquanto o outro programa, mesmo mouse, teclado e
monitor
○ Propriedade coletiva: os pares de desenvolvimento atuam em todas as partes do sistema, de
modo que não se formem ilhas de conhecimento
○ Integração contínua: tão logo uma tarefa é concluída, é integrada ao sistema como um todo.
Todos os testes unitários são realizados.
○ Ritmo sustentável: recomenda-se 40 horas semanais de trabalho, sem recorrer a horas extras,
pois reduzem qualidade da entrega e produtividade.
○ Metáforas: comunicação sobre o desenvolvimento por meio de metáforas.
○ Client on-site: cliente é membro da equipe de desenvolvimento
○ Reuniões em pé: para que não se perca o foco
○ Time coeso: pessoas com habilidades para diversas áreas do projeto.
○ Jogo do planejamento: planejamento da iteração conta com o cliente, que estabelece a
prioridade, enquanto os desenvolvedores avaliam.
● Processo:
○ Planejamento:
■ criadas histórias de usuário
■ cliente atribui valor (prioridade)
■ devs estimam semanas de desenvolvimento. Se mais de 3, subdivide história
○ Projeto
■ KIS: keep it simple
■ cartões CRC (Classe - responsabilidade - colaborador): mecanismo para pensar sobre
o software em contexto orientado a objetos
○ Codificação
■ Primeiro são escritos os testes para cada história a ser inclusa
■ O foco é em aprovar o teste (KIS)
■ 2 pessoas trabalham no código: revisão instantânea e resolução rápida de problemas
○ Teste
■ Devem ser criados com metodologia que os capacite a ser automatizados
● 5 Valores:
○ Comunicação
○ Simplicidade
○ Feedback
○ Coragem
○ Respeito
DICA: Cor Sim ComFeRe
● 5 Princípios:
○ Feedback rápido
○ Abraçar mudanças
○ Presumir simplicidade
○ Mudanças incrementais
○ Trabalho de qualidade
Gerenciamento de serviços (ITIL V4).

ITIL (Information Technology Infrastructure Library): guia de melhores práticas para gerenciamento de
serviços de TI, focado na entrega de valor na forma de serviço. Baseado em Sistema de Valor de Serviços
(SVS), Modelo Quatro Dimensões, Princípios Orientadores e 34 Práticas de Gerenciamento.

Modelo Quatro Dimensões: suporta abordagem holística. ITIL define 4 dimensões críticas para gerenciamento
de serviços:
● Organizações e Pessoas: fatores políticos
● Informação e Tecnologia: fator econômico
● Parceiros e Fornecedores: fator legal
● Fluxos de Valor e Processos: fator tecnológico
● Fatores entre dimensões:
○ fatores ambientes (entre políticos e legais)
○ fatores sociais (entre fatores tecnológicos e econômicos)

Sistema de Valor de Serviços (SVS): modelo que representa o modo como todos os componentes e
atividades de uma organização funcionam em conjunto para facilitar a criação de valor - descritos como
entradas, componentes e saídas.

DECORAR:

● Oportunidade/Demanda: acionam atividades dentro da SVS. Nem todas são exploradas/atendidas


○ Oportunidade: possibilidade de gerar valor ou melhorar a organização
○ Demanda: necessidade ou desejo por produtos e serviços por clientes (internos ou externos)
● Valor: Benefícios, utilidade ou importância percebidos em algo.
● Princípios orientadores:
○ Princípios universais e duradouros
○ Recomendações que podem orientar uma organização em todas as circunstâncias
○ 7 princípios
■ Foco no valor: quem determina o valor é o consumidor
■ Começar de onde você está: não partir do zero
■ Progredir iterativamente com feedback: cultura ágil dentro da ITIL
■ Colaborar e promover visibilidade: transparência, comunicação e parceria (ágil)
■ Pensar e trabalhar holisticamente: considere serviço como um todo, integre tecnologias,
informações, parceiros, pessoas, acordos
■ Manter de forma simples e prática: menor número de passos para completar tarefa.
■ Otimizar e automatizar: elimine desperdício de recursos, use tecnologia sempre que
possível
● Governança:
○ Meio pelo qual uma organização é dirigida e controlada.
■ Avaliar: onde estamos? diagnóstico
■ Dirigir: para onde queremos ir? estratégias, prioridades, investimento
■ Monitorar: chegamos lá? monitoramento do desempenho
● Cadeia de valor de serviço (CVS) ITIL:
○ Modelo operacional para provedores de serviço
○ Abrange todas as principais atividades necessárias ao gerenciamento eficaz de produtos e
serviços.
○ 6 atividades-chave
■ Engajar: prover entendimento sobre necessidades de stakeholders, transparência
■ Planejar: garantir entendimento da visão, estado atual e direcionamento para produtos
■ Projeto e Transição: garantir que especificações de produtos e serviços atendam
expectativas de prazos/custos/qualidade
■ Obter/Construir: Produzir componentes dos serviços, desenvolver software etc
■ Entregar e Suportar: Garantir que serviços estão sendo entregues ao usuário de acordo
com níveis acordados
■ Melhorar: Garantir melhoria contínua dos serviços e descobrir oportunidades por meio
de medições
● Práticas: ITIL apresenta 34
○ Conjunto de recursos organizacionais destinado a executar um trabalho ou atingir um objetivo.
○ 3 grupos:
■ Praticas de Gerenciamento Geral: toda a administração
■ Gerenciamento de Serviços: gestão de serviços
■ Gerenciamento Técnico: aspectos tecnológicos
● Melhoria Contínua:
○ Identificação e da melhoria contínuas de todos os elementos envolvidos no gerenciamento
efetivo de produtos e serviços
○ Alinha as práticas e os serviços de uma organização com as necessidades de negócio em
constante mudança

TECNOLOGIA

Banco de dados.
● Superchave: conjunto de um ou mais atributos que, tomado coletivamente, permite-nos identificar de
forma inequívoca (de forma única) um tupla no meio de uma relação. Ou seja, é um conjunto de
atributos que identificam apenas um linha em uma tabela.
● Chave candidata: São superchaves de tamanho mínimo. São chamadas de chaves candidatas por
serem candidatas à chave primária da relação. Portanto, uma chave candidata é um atributo (ou
conjunto de atributos) que identificam uma tupla de forma única. A chave candidata não pode ter seu
tamanho reduzido sem que se perca a qualidade de identificação única.
● Propriedades que uma transação no BD deve seguir de modo a garantir sua validade (ACID):
○ atomicidade: sendo a transação composta por diversas afirmações (statements, que no SQL
são separados por “;”), ou todos são bem-sucedidos ou todos falham inteiramente
○ consistência (corretude): uma transação só pode levar o BD de um ponto válido a outro,
portanto mantendo suas invariâncias, respeitando restrições, etc
○ isolamento: transações comumente ocorrem de forma concorrente. Esta propriedade garante
que as transações levem o banco de dados a um estado que seria o mesmo caso as
transações ocorressem sequencialmente
○ durabilidade: garante que uma vez a transação concluída, ela continua mesmo após falha do
sistema. Isto significa gravá-la em memória não volátil

Arquitetura de banco de dados: relacional (PostgreSQL, Oracle, SqlServer), não relacional


(orientado a documento, chave-valor, grafo, colunar, time series).

Definições:
● Esquema: definição da estrutura do modelo
● Instância: dados armazenados em um esquema em um momento do tempo
● Campo: menor unidade de dados armazenado
● Registro: coleção de campos armazenados e relacionados entre si
● Arquivo armazenado: conjunto de todas as ocorrências de um único tipo de registro.

Arquitetura em 3 níveis:
● Interno: estrutura física; informações detalhadas sobre como os dados são armazenados no hardware,
definições das estruturas, índices, caminhos de acesso
● Conceitual: é descrita a estrutura do banco de dados para uma comunidade de usuários. Esse
esquema não traz detalhes físicos, o foco é descrever quais dados do banco são armazenados, como
eles se relacionam e as restrições existentes.
● Externo: nesse nível existem uma série de esquemas externos ou visões do usuário. Cada uma
dessas visões descreve uma parte do banco que interessa a um determinado usuário (ou grupo de
usuários), ocultando todo o restante dos dados.
● Independência lógica de dados: capacidade de alterar o esquema conceitual sem ter de alterar os
esquemas externos ou os aplicativos
● Independência física de dados - a capacidade de alterar o esquema interno sem ter de alterar o
esquema conceitual.

NoSQL: refere-se ao armazenamento de dados que não usam SQL para consulta.
● Bancos de dados NoSQL oferecem alternativa mais flexível, escalável e menos dispendiosa se
comparados aos bancos de dados relacionais
● Um banco de dados NoSQL é horizontalmente escalável, permitindo muito mais tráfego por
particionamento de dados

Bancos de dados não relacionais usam um modelo de armazenamento otimizado para os requisitos
específicos do tipo de dados que está sendo armazenado. Vide capítulo sobre Big Data.

Modelagem de banco de dados: físico, lógico e conceitual.

● Modelo Conceitual: mais alto nível. Ex.: entidade relacionamento

● Modelo Lógico: criado a partir do conceitual. Descreve como são armazenados os dados e seus
relacionamentos
○ Formato: Pessoa(id_pessoa, nome, idade)
○ Algumas regras gerais:
■ Toda entidade vira uma relação
■ Atributo identificador se torna chave primária na relação
■ Atributos simples se tornam colunas (campos)
■ Atributos compostos tornam-se atributos simples, mapeados em colunas, uma coluna
para cada atributo
■ Atributos derivados não são mapeados
■ Atributos multivalorados podem ser mapeados de duas formas
● Como n colunas, onde n é o número máximo de valores do atributo
● Criando-se uma nova relação

● Modelo Físico: implementação do lógico em alguma linguagem. Escolhe-se aqui o SGBD

Álgebra relacional, SQL/ANSI e linguagens procedurais embarcadas.

● DSL: sublinguagem de dados. É dividida em pelo menos 2 sublinguagens


○ linguagem de definição de dados (DDL)
■ CREATE DATABASE/SCHEMA

■ DROP DATABASE/SCHEMA
■ CREATE/DROP VIEW (tabela derivada)
■ ALTER TABLE: adiciona restrições
○ linguagem de manipulação de dado (DML)
■ SELECT
■ INSERT
■ UPDATE
■ DELETE

Linguagens procedurais: funções definidas pelo usuário sejam escritas em outras linguagens além de SQL

Gestão de banco de dados.

Sistema de Gerenciamento de Banco de Dados (SGBD) é um conjunto de programas que permitem


armazenar, modificar e extrair informações de um banco de dados. Seu principal objetivo é proporcionar um
ambiente tanto conveniente quanto eficiente para a recuperação e armazenamento das informações do banco
de dados

Controle de acesso, usuário, cálculo volumétrico, replicação, cluster, particionamento e esquemas.

RAID (Redundant Array of Independent Disks). Conceitos: stripping (segmentar logicamente dado sequencial
para aumentar velocidade de escrita e leitura; cada arquivo é segmentado em todos os discos),
espelhamento (replicação de volumes de discos lógicos), paridade (forma simples de detecção de erro,
onde um bit representa a quantidade de 1s na sequência)
● RAID 0: faz stripping, mas não paridade ou espelhamento. Não há dado redundante, então está
completamente vulnerável a falha, sendo que a falha de qualquer disco causa a falha de todos os
arquivos.
● RAID 1: espelhamento, sem paridade ou stripping. Dado espelhado em 2 discos idênticos. A escrita é
sempre mais lenta, pois todos os discos precisam ser atualizados.
● RAID 2: stripping ao nível de bit (cada bit num disco separado) e ao menos um disco de paridade.
● RAID 3: stripping ao nível de byte e paridade dedicada.
● RAID 4: stripping ao nível de bloco com paridade dedicada. Diferente dos RAID 2 e 3, operações de
leitura não precisam de todos os drives, permitindo leituras paralelas.
● RAID 5: stripping ao nível de bloco com paridade distribuída. Requer ao menos 3 discos. A informação
de paridade é distribuída ao longo dos discos.

● RAID 6: stripping ao nível de bloco com dupla paridade distribuída. Requer ao menos 4 discos.

RAID híbridos: o valor mais a direita é chamado top e é o mais acima no desenho de discos. Exemplo: RAID
1+0. Temos ao nível mais alto RAID 0 (stripping, sem espelhamento ou paridade) e, em cada stripe, RAID 1
(espelhamento).
● RAID 0+1: dois stripes espelhados.
● RAID 1+0: série de duplicações.
Servidores web e de aplicação.

Servidores web: software que aceita pedidos em HTTP de clientes


● Pedidos feitos normalmente por navegadores
● Respostas em HTTP, incluindo opcionalmente dados
● Geralmente a resposta é uma página em HTML
○ Página estática: vem diretamente de um ficheiro no servidor
○ Página dinâmica: Gerada dinamicamente por programas

Servidor de aplicação (middleware): disponibiliza ambiente para a instalação e execução de aplicações

Wildfly, IIS, Apache, Nginx.

Servidores web:
● IIS: Internet Information Services da Microsoft
○ Servidor web da Microsoft
○ Gera HTML dinâmicas
○ Tecnologia ASP (Active Server Pages): estrutura de bibliotecas básicas (e não uma linguagem)
para processamento de linguagens de script no lado servidor para geração de conteúdo
dinâmico na Web
○ Também hospeda aplicações
● Servidor HTTP Apache: software livre (acesso do usuário ao código fonte)
○ Mais popular e mais usado no mundo
● Nginx: Mais leve que Apache pois é baseado em eventos
○ Usado pela wikipedia
● Wildfly: servidor de aplicação web escrito em Java

Linguagens de programação.

Java, JavaScript, TypeScript, Python, PHP, C# e Go.

Você também pode gostar