SlideShare uma empresa Scribd logo
1 de 96
Baixar para ler offline
Princípios e práticas para
incorporar requisitos não-
funcionais no desenvolvimento
de software
Danilo Sato
@dtsato - www.dtsato.com
Thursday, 27 June 13
Danilo Sato
@dtsato - www.dtsato.com
Desenvolvedor,Arquiteto,Coach,DevOps,Treinador
Thursday, 27 June 13
Thursday, 27 June 13
Estamos contratando!
join.thoughtworks.com
Thursday, 27 June 13
Princípios e práticas para
incorporar requisitos não-
funcionais no desenvolvimento
de software
Thursday, 27 June 13
HTTP://WWW.FLICKR.COM/PHOTOS/15436597@N05/2087454556
HEIN?
Thursday, 27 June 13
Princípios e práticas para
incorporar requisitos não-
funcionais no desenvolvimento
de software
Thursday, 27 June 13
Princípios e práticas para
incorporar requisitos não-
funcionais no desenvolvimento
de software
Thursday, 27 June 13
Princípios e práticas para
incorporar requisitos não-
funcionais no desenvolvimento
de software
Thursday, 27 June 13
Requisitos funcionais
Thursday, 27 June 13
Requisitos funcionais
Comportamento esperado do sistema
Funcionalidades
“O que o sistema faz”
Thursday, 27 June 13
Requisitos não-funcionais
Comportamento não esperado do sistema?
Desfuncionalidades?
“O que o sistema não faz”?
Thursday, 27 June 13
Requisitos não-funcionais
Comportamento não esperado do sistema?
Desfuncionalidades?
“O que o sistema não faz”?
Thursday, 27 June 13
Requisitos transversais
Thursday, 27 June 13
Requisitos transversais
Comportamentos transversais do sistema
Restrições
Atributos de qualidade
“Como o sistema deve operar”
Thursday, 27 June 13
NFR
Thursday, 27 June 13
NFR
CFR
XFR
Thursday, 27 June 13
acessibilidade
segurança
disponibilidade
performance
escalabilidade
localização
configurabilidade
Exemplos:
Thursday, 27 June 13
acessibilidade
segurança
disponibilidade
performance
escalabilidade
localização
configurabilidade
Exemplos:
Thursday, 27 June 13
acessibilidade
segurança
disponibilidade
performance
escalabilidade
localização
configurabilidade
Exemplos:
Thursday, 27 June 13
Como (não) lidar com
requisitos transversais?
Thursday, 27 June 13
ESTRATÉGIA COMUM #1
ESQUECIMENTO
HTTP://WWW.FLICKR.COM/PHOTOS/LASH9420/7004634470
Thursday, 27 June 13
ESTRATÉGIA COMUM #2
EXAGERO
HTTP://WWW.FLICKR.COM/PHOTOS/ANDISAWSPARKS/8069817816
Thursday, 27 June 13
ESTRATÉGIA COMUM #3
CAPTURAR E DOCUMENTAR
HTTP://WWW.FLICKR.COM/PHOTOS/VIDEOLUX/2390152100
Thursday, 27 June 13
HTTP://WWW.FLICKR.COM/PHOTOS/MANDYLEH/6365813847
PQ É TÃO DIFÍCIL?
Thursday, 27 June 13
Por que é tão difícil?
Difícil de visualizar
Difícil de mensurar custos
Não só transversais no sistema, mas também
entre papéis na equipe:
Desenvolvedores, Arquitetos, QAs, DevOps,
Ops, BAs
Thursday, 27 June 13
Soa familiar?
“Arquitetura é tudo aquilo que
é difícil de mudar depois”
Thursday, 27 June 13
Soa familiar?
“Arquitetura é tudo aquilo que
é difícil de mudar depois”
Thursday, 27 June 13
Requisitos transversais
são difíceis de mudar/
introduzir depois!
Thursday, 27 June 13
Requisitos transversais
influenciam a arquitetura
do sistema
Thursday, 27 June 13
Design emergente
vs.
Arquitetura evolutiva
Thursday, 27 June 13
Requisitos transversais
restringem a evolução da
arquitetura
Thursday, 27 June 13
Como definir?
Thursday, 27 June 13
Diferentes ângulos
Thursday, 27 June 13
Diferentes ângulos
Coisas que viram histórias
Thursday, 27 June 13
Diferentes ângulos
Coisas que viram histórias
Coisas que viram padrões
Thursday, 27 June 13
Diferentes ângulos
Coisas que viram histórias
Coisas que viram padrões
Coisas que geram mudanças operacionais
Thursday, 27 June 13
Diferentes ângulos
Coisas que viram histórias
Coisas que viram padrões
Coisas que geram mudanças operacionais
Coisas que influenciam o processo de entrega
Thursday, 27 June 13
Exemplo: Segurança
Coisas que viram histórias:
Processo de autenticação de usuário
Criptografia de senha
Armazenagem criptografada de dados sensíveis
Thursday, 27 June 13
Exemplo: Segurança
Coisas que viram padrões:
Autorização por funcionalidade
Definição de quais dados são sensíveis
Não salvar/comitar senhas em texto puro
Thursday, 27 June 13
Exemplo: Segurança
Coisas que geram mudanças operacionais:
Obter um certificado SSL
Configuração do firewall
Rotação de chaves SSH
Thursday, 27 June 13
Exemplo: Segurança
Coisas que influenciam o processo de entrega:
Testes de penetração
Gerenciamento de configuração para senhas
Validar assinatura de pacotes
Thursday, 27 June 13
Quais tipos?
Thursday, 27 June 13
Thursday, 27 June 13
35+
Thursday, 27 June 13
Thursday, 27 June 13
acessibilidade
Thursday, 27 June 13
acessibilidade
retenção
Thursday, 27 June 13
acessibilidade
retenção
audição
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
integridade de
dados
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
integridade de
dados
localicação
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
integridade de
dados
localicação
ajuda
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
integridade de
dados
localicação
ajuda
legal
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
integridade de
dados
localicação
ajuda
legal
localização
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
integridade de
dados
localicação
ajuda
legal
localização
performance
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
integridade de
dados
localicação
ajuda
legal
localização
performance
escalabilidade
Thursday, 27 June 13
acessibilidade
retenção
audição
segurança
disponibilidade
continuidade
personalização
tolerância a falha
confiabilidade
integridade de
dados
localicação
ajuda
legal
localização
performance
escalabilidade
usabilidade
Thursday, 27 June 13
É MUITA COISA!
HTTP://WWW.FLICKR.COM/PHOTOS/JMW125/4630264860
Thursday, 27 June 13
Como incorporar?
Thursday, 27 June 13
É mais difícil lidar de uma
só vez ao invés de pagar
pouco a pouco
Thursday, 27 June 13
Início Durante Depois
Thursday, 27 June 13
Início Durante Depois
Decida com a equipe e o
cliente quais os principais
Thursday, 27 June 13
Início Durante Depois
Thursday, 27 June 13
Início Durante Depois
Thursday, 27 June 13
Início Durante Depois
Escalabilidade
Performance
Segurança
Thursday, 27 June 13
Início Durante Depois
Risco?
Impacto?
Nível de entendimento?
Thursday, 27 June 13
Início Durante Depois
Thursday, 27 June 13
Início Durante Depois
Decida com a equipe e o
cliente como acompanhar
Thursday, 27 June 13
Início Durante Depois
Capture e priorize histórias
com base no risco e impacto
Thursday, 27 June 13
Início Durante Depois
Avalie padrões como
critérios de aceitação por
história
Thursday, 27 June 13
Início Durante Depois
Use métricas de
acompanhamento
Thursday, 27 June 13
Início Durante Depois
Tempo de resposta ideal: < 20ms
Exemplo:
Thursday, 27 June 13
Início Durante Depois
Tempo de resposta ideal: < 20ms
Média? Mediana?
Exemplo:
Thursday, 27 June 13
Início Durante Depois
Tempo de resposta ideal: < 20ms
Média? Mediana? 99 percentil
Exemplo:
Thursday, 27 June 13
Início Durante Depois
Tempo de resposta ideal: < 20ms
Média? Mediana?
Para tudo?
99 percentil
Exemplo:
Thursday, 27 June 13
Início Durante Depois
Tempo de resposta ideal: < 20ms
Média? Mediana?
Para tudo?
99 percentil
Pro que importa
Exemplo:
Thursday, 27 June 13
Início Durante Depois
Tempo de resposta ideal: < 20ms
Média? Mediana?
Para tudo?
Quanto custa se passar?
99 percentil
Pro que importa
Exemplo:
Thursday, 27 June 13
Início Durante Depois
Inclua testes automatizados
na pipeline de entrega
Thursday, 27 June 13
Início Durante Depois
Exemplos:
Thursday, 27 June 13
Início Durante Depois
Testes de Performance
Exemplos:
Thursday, 27 June 13
Início Durante Depois
Testes de Performance
Testes de Carga
Exemplos:
Thursday, 27 June 13
Início Durante Depois
Testes de Performance
Testes de Carga
Testes de Stress
Exemplos:
Thursday, 27 June 13
Início Durante Depois
Testes de Performance
Testes de Carga
Testes de Stress
Exemplos:
Testes de Usabilidade
Thursday, 27 June 13
Início Durante Depois
Testes de Performance
Testes de Carga
Testes de Stress
Exemplos:
Testes de Usabilidade
Teste de Longevidade
Thursday, 27 June 13
Início Durante Depois
Incorpore feedback e
aprendizado de produção
Thursday, 27 June 13
Início Durante Depois
Monitore, monitore, monitore
Thursday, 27 June 13
Início Durante Depois
Ensaie cenários esperados
Thursday, 27 June 13
E quando não fiz isso?
Thursday, 27 June 13
HTTP://BIT.LY/MANAGE-TECH-DEBT
Thursday, 27 June 13
Perguntas?
Danilo Sato
@dtsato - www.dtsato.com
Thursday, 27 June 13

Mais conteúdo relacionado

Mais de Danilo Sato

Revisitando as Práticas de Engenharia Ágil
Revisitando as Práticas de Engenharia ÁgilRevisitando as Práticas de Engenharia Ágil
Revisitando as Práticas de Engenharia ÁgilDanilo Sato
 
O que você NÃO aprendeu sobre Programação Orientada a Objetos
O que você NÃO aprendeu sobre Programação Orientada a ObjetosO que você NÃO aprendeu sobre Programação Orientada a Objetos
O que você NÃO aprendeu sobre Programação Orientada a ObjetosDanilo Sato
 
Estratégias de Refatoração: além do be-a-bá
Estratégias de Refatoração: além do be-a-báEstratégias de Refatoração: além do be-a-bá
Estratégias de Refatoração: além do be-a-báDanilo Sato
 
Coding Dojo Introduction
Coding Dojo IntroductionCoding Dojo Introduction
Coding Dojo IntroductionDanilo Sato
 
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...Danilo Sato
 
Refactoring at Large
Refactoring at LargeRefactoring at Large
Refactoring at LargeDanilo Sato
 
Refatoração em Larga Escala
Refatoração em Larga EscalaRefatoração em Larga Escala
Refatoração em Larga EscalaDanilo Sato
 
Managing your technical debt - AgileBrazil 2011
Managing your technical debt - AgileBrazil 2011Managing your technical debt - AgileBrazil 2011
Managing your technical debt - AgileBrazil 2011Danilo Sato
 

Mais de Danilo Sato (9)

Revisitando as Práticas de Engenharia Ágil
Revisitando as Práticas de Engenharia ÁgilRevisitando as Práticas de Engenharia Ágil
Revisitando as Práticas de Engenharia Ágil
 
O que você NÃO aprendeu sobre Programação Orientada a Objetos
O que você NÃO aprendeu sobre Programação Orientada a ObjetosO que você NÃO aprendeu sobre Programação Orientada a Objetos
O que você NÃO aprendeu sobre Programação Orientada a Objetos
 
Estratégias de Refatoração: além do be-a-bá
Estratégias de Refatoração: além do be-a-báEstratégias de Refatoração: além do be-a-bá
Estratégias de Refatoração: além do be-a-bá
 
Coding Dojo Introduction
Coding Dojo IntroductionCoding Dojo Introduction
Coding Dojo Introduction
 
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
 
Refactoring at Large
Refactoring at LargeRefactoring at Large
Refactoring at Large
 
Refatoração em Larga Escala
Refatoração em Larga EscalaRefatoração em Larga Escala
Refatoração em Larga Escala
 
Managing your technical debt - AgileBrazil 2011
Managing your technical debt - AgileBrazil 2011Managing your technical debt - AgileBrazil 2011
Managing your technical debt - AgileBrazil 2011
 
Lean Lego Game
Lean Lego GameLean Lego Game
Lean Lego Game
 

Incorporar requisitos não-funcionais no desenvolvimento de software