Princípios e Práticas para lidar com requisitos não-funcionais em desenvolvimento de software

Post on 22-Dec-2014

3.642 views 0 download

description

Slides of my Agile Brazil 2013 presentation on "Principles and practices to deal with non-functional requirements in software development"

Transcript of Princípios e Práticas para lidar com requisitos não-funcionais em desenvolvimento de software

Princípios e práticas para incorporar requisitos não-funcionais no desenvolvimento de softwareDanilo 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 CFRXFR

Thursday, 27 June 13

acessibilidadesegurança

disponibilidadeperformance

escalabilidadelocalização

configurabilidade

Exemplos:

Thursday, 27 June 13

acessibilidadesegurança

disponibilidadeperformance

escalabilidadelocalização

configurabilidade

Exemplos:

Thursday, 27 June 13

acessibilidadesegurança

disponibilidadeperformance

escalabilidadelocalização

configurabilidade

Exemplos:

Thursday, 27 June 13

Como (não) lidar com requisitos transversais?

Thursday, 27 June 13

ESTRATÉGIA COMUM #1ESQUECIMENTO

HTTP://WWW.FLICKR.COM/PHOTOS/LASH9420/7004634470

Thursday, 27 June 13

ESTRATÉGIA COMUM #2EXAGERO

HTTP://WWW.FLICKR.COM/PHOTOS/ANDISAWSPARKS/8069817816

Thursday, 27 June 13

ESTRATÉGIA COMUM #3CAPTURAR 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 emergentevs.

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

acessibilidaderetenção

Thursday, 27 June 13

acessibilidaderetençãoaudição

Thursday, 27 June 13

acessibilidaderetençãoaudiçãosegurança

Thursday, 27 June 13

acessibilidaderetençãoaudiçãosegurançadisponibilidade

Thursday, 27 June 13

acessibilidaderetençãoaudiçãosegurançadisponibilidadecontinuidade

Thursday, 27 June 13

acessibilidaderetençãoaudiçãosegurançadisponibilidadecontinuidadepersonalização

Thursday, 27 June 13

acessibilidaderetençãoaudiçãosegurançadisponibilidadecontinuidadepersonalizaçãotolerância a falha

Thursday, 27 June 13

acessibilidaderetençãoaudiçãosegurançadisponibilidadecontinuidadepersonalizaçãotolerância a falhaconfiabilidade

Thursday, 27 June 13

acessibilidaderetençãoaudiçãosegurançadisponibilidadecontinuidadepersonalizaçãotolerância a falhaconfiabilidade

integridade de dados

Thursday, 27 June 13

acessibilidaderetençãoaudiçãosegurançadisponibilidadecontinuidadepersonalizaçãotolerância a falhaconfiabilidade

integridade de dados

localicação

Thursday, 27 June 13

acessibilidaderetençãoaudiçãosegurançadisponibilidadecontinuidadepersonalizaçãotolerância a falhaconfiabilidade

integridade de dados

localicaçãoajuda

Thursday, 27 June 13

acessibilidaderetençãoaudiçãosegurançadisponibilidadecontinuidadepersonalizaçãotolerância a falhaconfiabilidade

integridade de dados

localicaçãoajudalegal

Thursday, 27 June 13

acessibilidaderetençãoaudiçãosegurançadisponibilidadecontinuidadepersonalizaçãotolerância a falhaconfiabilidade

integridade de dados

localicaçãoajudalegal

localização

Thursday, 27 June 13

acessibilidaderetençãoaudiçãosegurançadisponibilidadecontinuidadepersonalizaçãotolerância a falhaconfiabilidade

integridade de dados

localicaçãoajudalegal

localizaçãoperformance

Thursday, 27 June 13

acessibilidaderetençãoaudiçãosegurançadisponibilidadecontinuidadepersonalizaçãotolerância a falhaconfiabilidade

integridade de dados

localicaçãoajudalegal

localizaçãoperformance

escalabilidade

Thursday, 27 June 13

acessibilidaderetençãoaudiçãosegurançadisponibilidadecontinuidadepersonalizaçãotolerância a falhaconfiabilidade

integridade de dados

localicaçãoajudalegal

localizaçãoperformance

escalabilidadeusabilidade

Thursday, 27 June 13

É MUITA COISA!

HTTP://WWW.FLICKR.COM/PHOTOS/JMW125/4630264860Thursday, 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: < 20msExemplo:

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-DEBTThursday, 27 June 13

Perguntas?Danilo Sato@dtsato - www.dtsato.com

Thursday, 27 June 13