SlideShare uma empresa Scribd logo
1 de 67
“Qualidade de Software no século XXI” Bruno Elias Penteado Coordenador de Qualidade de Software MStech Mestre em Ciência da Computação – UNESP Certificações ISTQB CTFL e CTAL-TA, Micosoft Web Apps C# 20/05/2011
Qualidade de Software no século XXI Agradecimentos
Tópicos O que é qualidade? Fazer o que deveria fazer? Como identificar qualidade? Sob que ponto de vista? Usuários, devs, comprador? Quando a qualidade vale a pena. Exemplos: números mega-sena. Qualidade x prejuízos Riscos Piores bugs da história; bugs atuais (PSP e Maps quadrilha Bauru) Tipos de indústrias e os níveis exigidos de qualidade; Ética? Conceitos básicos sobre qualidade Controle de qualidade x testes: diminuição de risco Requisitos funcionais x não-funcionais Mitos sobre qualidade Custa caro; evolução dos custos; prevenção x detecção Requisitos de um tester Futuro Grandes Desafios da Computação Tendências (TaaS, outsourcing, sistemas ubíquos, disponibilidade) Novas plataformas de desenvolvimento
Qualidade de Software no século XXI Tópicos O que é qualidade de software? Abrangência da qualidade de software Mitos da qualidade Piores bugs da história O que nos espera
O que é Qualidade de Software?
O que é Qualidade de Software? Qualidade O que é um software com qualidade? Conformidade às exigências? De quem?  Relativa
O que é Qualidade de Software? Atores na qualidade de software Gerente projeto Programador Testador Usuário Cliente
O que é Qualidade de Software? Ideias sobre qualidade de software Defeito zero é alta qualidade Grande número de funções é alta qualidade Codificação elegante é alta qualidade Alto desempenho é alta qualidade Baixo custo de desenvolvimento é alta qualidade Desenvolvimento rápido é alta qualidade Facilidade para o usuário é alta qualidade
O que é Qualidade de Software? O que é qualidade? Qualidade é valor para alguma pessoa Vale o custo x benefício? Pagarão para ter seus requisitos atendidos?
O que é Qualidade de Software? Efeito “não tão ruim” Todos os softwares têm erro; Satisfação dos usuários; Preferência em relação ao concorrente; Software de qualidade? Vale a pena melhorar?
O que é Qualidade de Software? Qualidade? Caso:  Google Maps SIG com fotos de satélite de alta resolução Determina rotas de trânsito
O que é Qualidade de Software? Qualidade? Caso: Google Maps Usado também para o mal Jornal da Cidade: Bauru, 3/5/2011
Qualidade?
O que é Qualidade de Software? Qualidade Não significa ausência de erros! Muitos erros pode significar menor valor Não garante valor ao software Exemplos?
O que é Qualidade de Software? Qualidade Conformidade com requisitos não é suficiente! Requisito é o meio: fornecer valor para quem? Requisitos identificam as pessoas importantes? Requisitos capturam seus valores?
O que é Qualidade de Software? “Qualidade é valor para alguma pessoa disposta a pagar por seus benefícios”
Abrangência da Qualidade de Software
Abrangência da Qualidade de Software Qualidade Risco Fator que pode resultar em conseqüências negativas futuras; Projeto: relacionado ao gerenciamento e ao controle do projeto; Produto: relacionado ao produto em fabricação
Abrangência da Qualidade de Software Processo  de Qualidade de Software Prevenção: garantia por meio de processos; Treinamento Grupo de SQA Uso de lições aprendidas Melhoria de processo Detecção: controle por meio de testes; Compilação/análise de código Revisão por pares Teste  Auditorias Diminuição de riscos ao longo da produção
Abrangência da Qualidade de Software Testes Até quando testar? Custo x benefício Variação conforme indústria
Abrangência da Qualidade de Software Níveis dos testes Unidade, Integração, Sistema, Aceitação
Abrangência da Qualidade de Software Testes Abordagem para os testes Mostrar que o sistema: Faz o que não deve fazer; Não faz o que deve fazer;
Abrangência da Qualidade de Software Testes Casos de teste Uma funcionalidade pode acarretar em centenas de casos de teste
Abrangência da Qualidade de Software Testes Exemplo de caso de teste
Abrangência da Qualidade de Software Processo - padrões Gerais ISO 9126 – Qualidade de produto de software ISO 12207 – Qualidade do processo de software IEEE 829 – Documentação de testes IEEE 1028 – Revisão de software IEEE 1044 – Classificação de incidentes BS 7925 – Técnicas de teste (...) Específicos por indústria DO-178B – software aviônico FDA 21 – software médico (...)
Abrangência da Qualidade de Software Padrão ISO 9126 Requisitos funcionais e não-funcionais
Abrangência da Qualidade de Software Padrão IEEE 829 Documentação do processo de testes
Abrangência da Qualidade de Software Processo Exemplos de modelos de melhoria de processo Produção de software CMMi – CapabilityMaturityModelintegation MPS.Br – Melhoria do Processo de Software Brasileiro Teste de software TMMi – TestMaturityModelintegration TPI – TestProcessImprovement
Mitos
Mitos Mitos O testador é inimigo do desenvolvedor
Mitos Mitos Testers podem ser desenvolvedores menos qualificados Google: Software Engineer in Test Microsoft: Software DevelopmentEngineer in Test
Mitos Mitos Qualidade custa caro Definição econômica de qualidade: “É sempre mais barato fazer certo na primeira vez!”
Mitos Mitos Qualidade leva muito tempo Nunca se tem tempo para fazer da forma correta Sempre existe tempo para refazer A cada R$ 1,00 em desenvolvimento, de R$ 2,00 a R$ 3,00 são gastos com retrabalho
Bugs históricos
Bugs históricos O que é um bug? Primeiro bug: computador Mark II, na Universidade de Harvard (1945)
Bugs históricos Mariner I – 1962 Missão observar para o planeta Vênus Fórmula matemática foi equivocadamente transcrita para o computador Desviou de seu curso e foi destruída 4 minutos após lançamento Prejuízo: US$ 18,5 mi
Bugs históricos Gasoduto soviético – 1982 Supostamente, a CIA infiltrou um ‘cavalo de Tróia’ no sistema que controlava o gasoduto Transiberiano Maior explosão não-nuclear da história Detectado por satélites americanos
Bugs históricos Therac-25 – 1985/1987 Dispositivo de terapia por radiação sobre células cancerosas falha e libera doses letais de radiação em vários consultórios médicos Condição de disputa no SO 5 mortes, várias pessoas feridas
Bugs históricos Primeiro vírus da Internet – 1987 Estudante americano criou programa que afetou em um dia até 6.000 computadores; SO: Unix Buffer overflow: função getc() da linguagem C, no sistema UNIX, fazia leitura pela rede Permitia acesso não autorizado
Bugs históricos Queda da rede AT&T - 1990 Falha no software dos switches de longa distância ao receber certa mensagem de uma máquina vizinha 114 switches reiniciando a cada 6 segundos 60 mil pessoas ficaram sem ligações à distância por 9h Correção: o software foi mudado para sua versão antiga
Bugs históricos Míssil Patriot – 1991 Dhahran, Iraque Erro de software no relógio do míssil: a cada 100 horas o relógio interno do sistema desviava um terço de segundo Recomendação era rebootar o sistema de tempos em tempos Resultado: 600 metros de erro na distância em uma interceptação 28 soldados americanos mortos
Bugs históricos Divisão de pontos flutuantes nos processadores Pentium da Intel – 1993 Erro em divisões dentro de uma faixa de números (erro ~0,006% no arrendondamento) 3 a 5 milhões de peças com defeito Recall para todos que quiseram trocar Custou à Intel US$ 475 milhões
Bugs históricos Ping da Morte – 1995/96 Primeiras versões do TCP/IP Buffer overflow: mensagem grande (maior que limite de 64KB) Problema na manipulação de erros na remontagem de um pingmal-formado trava SO´s (Windows, Unix, Macintosh, etc.)
Bugs históricos Ariane 5 vôo 501 – 1996 Foguete com código reutilizado do Ariane 4 (outro hardware); O processador primário do foguete sobrecarrega os motores que se desintegraram em 40 segundos; Overflow de inteiro: conversão de floatde 64-bits para inteiro 16-bits com sinal; Não tripulado (sem vítimas); prejuízo de US$ 370 milhões
Bugs históricos Bug do milênio (Y2K) – 2000 Datas com apenas 2 dígitos para o ano Uma das maiores histerias da história Ao virar o ano 2000, a preocupação era que contasse como 1900 Entre US$ 300 e US$ 500 bi no mundo todo Bug de 2038 time_tem C  número de segundos a partir de 1/1/1970. Quando usado 4 bytes = 19/1/2038
Bugs históricos Toyota Prius – 2010 Problema no software do sistema ABS de freios – acelerador fica preso, dificultando desaceleração Recall de 400.000 veículos ~  US$ 2 bilhões de prejuízo, desvalorização de 15% nas ações Fonte: BBC, Computer World UK
Bugs históricos Play Station Network - 2011 Invasão do sistema Dados privados e de cartão de crédito de ~70 mi de pessoas foram roubados Governo japonês não deixou voltar até atingir nível de qualidade
Próximos bugs?
Próximos bugs? Qualidade de software nos dias de hoje Redes Sociais Identidade on-line  Privacidade Protegidos pelas políticas definidas nos Termos de Serviço dos sites E se hackearem sua conta de e-mail em seu celular? Geolocalização
Próximos bugs? Qualidade de software nos dias de hoje Mecanismos de buscas Ex. Google: Informações (computador, browser,  termos) Estatísticas enviadas a 3os,  reusadas por patrocinadores Criação de perfil, com propagandas perseguindo usuário
Próximos bugs? Qualidade de software nos dias de hoje Mecanismos de buscas Ex. Google: Google salva histórico de buscas Podem ser requisitadas legalmente; Espiado por funcionário; Hackeado
Próximos bugs? Qualidade de software nos dias de hoje Mecanismos de buscas Ex. Google: Indexação de conteúdo impróprio Bullying, violação de direitos autorais, etc. Receita: links patrocinados / pageviews Gov. italiano condenou Google Mídia como jornal ou televisão
Próximos bugs? Qualidade de software nos dias de hoje Mecanismos de buscas Ex. Google: StreetView Gov. da Alemanha proibiu Fere privacidade
Próximos bugs? Qualidade de software nos dias de hoje Governo eletrônico	 Como ter um design universal? Transparência dos dados
Próximos bugs? Qualidade de software nos dias de hoje Urna eletrônica Fabricante diz não ser segura Possibilidade de boot pelo disco externo Não tem auditoria independente Usava como SO: VirtuOS, Windows CE e agora Linux
Próximos bugs? Qualidade de software nos dias de hoje Dispositivos móveis iPhone e Android armazenam sua localização
Próximos bugs? Então... software não é confiável? Limitação humana Pessoas não conhecem/dominam tudo; Pessoas tem habilidades, mas não são perfeitas; Pessoas cometem erros Pressões por tempo, custo Especificações incompletas Manutenção em código “Grandes poderes trazem grandes responsabilidades”
O que nos espera
Futuro Futuro Tópicos futuros Quais os assuntos mais promissores dentro da QS nos próximos anos? Novas plataformas Que novos tipos de software serão lançados nos próximos anos?
Futuro Futuro Tópicos de pesquisa Test As A Service Teste baseado em risco Testes ágeis
Futuro Novas plataformas Dispositivos móveis: Tablets, smartphones, e-Readers, ... Interfaces mais naturais  uso em vários domínios Qual o padrão de uso? TV! PaperPhone
Futuro Novas plataformas Carros E se seu carro se conectar à Internet? Sistemas multimídia embutidos de fábrica Windows EmbeddedAutomotive Diferenciação por tecnologia
Futuro Novas plataformas Carros E se seu carro se dirigir sozinho, auto-estacionar? Como testar?
Futuro Novas plataformas Carros E se hackers desabilitarem seu freio? Quais testes são aplicáveis? Padrão AUTOSAR (AUTomotive Open System ARchitecture)
Futuro Novas plataformas SmartGrid Consumo crescente de energia elétrica Risco de interrupção Otimização da distribuição, consumo e cobrança
Futuro Novas plataformas Arquitetura multicore Como os novos softwares tirarão proveito dessa arquitetura? Reescrever SO´s: vale a pena? Como testar?
Futuro Novas plataformas Dispositivos médicos Implantes sofisticados  mini computadores Como se proteger de ataques? Como testar?

Mais conteúdo relacionado

Destaque

Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de SoftwareIgor Takenami
 
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De ProcessoUma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processocrc1404
 
[GUTS-RS] Testes em Projetos de Implantação de ERP
[GUTS-RS] Testes em Projetos de Implantação de ERP[GUTS-RS] Testes em Projetos de Implantação de ERP
[GUTS-RS] Testes em Projetos de Implantação de ERPGUTS-RS
 
Homologação requisitos para validar sistemas erp
Homologação   requisitos para validar sistemas erpHomologação   requisitos para validar sistemas erp
Homologação requisitos para validar sistemas erpSérgio Caldeira
 
[GUTS-RS] Performance Engineering
[GUTS-RS] Performance Engineering[GUTS-RS] Performance Engineering
[GUTS-RS] Performance EngineeringGUTS-RS
 
Desenvolvimento para iOS
Desenvolvimento para iOSDesenvolvimento para iOS
Desenvolvimento para iOSIgor Takenami
 
Lean para potencializar a qualidade no software
Lean para potencializar a qualidade no softwareLean para potencializar a qualidade no software
Lean para potencializar a qualidade no softwareDionatan default
 
Introdução a Qualidade de Software
Introdução a Qualidade de SoftwareIntrodução a Qualidade de Software
Introdução a Qualidade de SoftwareIgor Takenami
 
Papéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwarePapéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwareCamilo Ribeiro
 
Conceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareConceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareRonney Moreira de Castro
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidaderzauza
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geralpaulo peres
 
Qualidade de Software - Introdução
Qualidade de Software - Introdução Qualidade de Software - Introdução
Qualidade de Software - Introdução Elaine Cecília Gatto
 

Destaque (13)

Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de Software
 
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De ProcessoUma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
 
[GUTS-RS] Testes em Projetos de Implantação de ERP
[GUTS-RS] Testes em Projetos de Implantação de ERP[GUTS-RS] Testes em Projetos de Implantação de ERP
[GUTS-RS] Testes em Projetos de Implantação de ERP
 
Homologação requisitos para validar sistemas erp
Homologação   requisitos para validar sistemas erpHomologação   requisitos para validar sistemas erp
Homologação requisitos para validar sistemas erp
 
[GUTS-RS] Performance Engineering
[GUTS-RS] Performance Engineering[GUTS-RS] Performance Engineering
[GUTS-RS] Performance Engineering
 
Desenvolvimento para iOS
Desenvolvimento para iOSDesenvolvimento para iOS
Desenvolvimento para iOS
 
Lean para potencializar a qualidade no software
Lean para potencializar a qualidade no softwareLean para potencializar a qualidade no software
Lean para potencializar a qualidade no software
 
Introdução a Qualidade de Software
Introdução a Qualidade de SoftwareIntrodução a Qualidade de Software
Introdução a Qualidade de Software
 
Papéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwarePapéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de Software
 
Conceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareConceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de software
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidade
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
 
Qualidade de Software - Introdução
Qualidade de Software - Introdução Qualidade de Software - Introdução
Qualidade de Software - Introdução
 

Semelhante a Qualidade de Software no século XXI

Qualidade - Porque testar seu software?
Qualidade - Porque testar seu software?Qualidade - Porque testar seu software?
Qualidade - Porque testar seu software?Adriano Bertucci
 
Software de impressão segura por biometria - Thiarlei - Impressão Gerenciada
Software de impressão segura por biometria - Thiarlei - Impressão GerenciadaSoftware de impressão segura por biometria - Thiarlei - Impressão Gerenciada
Software de impressão segura por biometria - Thiarlei - Impressão GerenciadaThiarlei Macedo
 
Contr avali engenharia de software-introdução
Contr avali   engenharia de software-introduçãoContr avali   engenharia de software-introdução
Contr avali engenharia de software-introduçãoFelipe Lyra
 
Qualidade de software e sua influência no sucesso do projeto
Qualidade de software e sua influência no sucesso do projetoQualidade de software e sua influência no sucesso do projeto
Qualidade de software e sua influência no sucesso do projetoValquíria Duarte D'Amato
 
Tema 10 Automação Da Engenharia
Tema 10   Automação Da EngenhariaTema 10   Automação Da Engenharia
Tema 10 Automação Da Engenhariabruno2003sp
 
Segurança no Desenvolvimento WEB - Técnicas Profissionais
Segurança no Desenvolvimento WEB - Técnicas ProfissionaisSegurança no Desenvolvimento WEB - Técnicas Profissionais
Segurança no Desenvolvimento WEB - Técnicas ProfissionaisRubens Guimarães - MTAC MVP
 
Big Data e oportunidades de negócios
Big Data e oportunidades de negóciosBig Data e oportunidades de negócios
Big Data e oportunidades de negóciosLaboratorium
 
O computador - Apresentação Final
O computador  - Apresentação FinalO computador  - Apresentação Final
O computador - Apresentação Finalleolacerdac
 
O que é Middleware? E o que isso tem a ver com SOA?
O que é Middleware? E o que isso tem a ver com SOA?O que é Middleware? E o que isso tem a ver com SOA?
O que é Middleware? E o que isso tem a ver com SOA?paxtecnologia
 
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1Renato Leal
 
Android: História, Mercado e Possibilidades (FLISOL - Indaiatuba - 2011)
Android: História, Mercado e Possibilidades (FLISOL - Indaiatuba - 2011)Android: História, Mercado e Possibilidades (FLISOL - Indaiatuba - 2011)
Android: História, Mercado e Possibilidades (FLISOL - Indaiatuba - 2011)Santhyago Gallao
 
02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentais02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentaisWaldemar Roberti
 

Semelhante a Qualidade de Software no século XXI (20)

Dba Testes Gerentes B2
Dba Testes Gerentes B2Dba Testes Gerentes B2
Dba Testes Gerentes B2
 
Qualidade - Porque testar seu software?
Qualidade - Porque testar seu software?Qualidade - Porque testar seu software?
Qualidade - Porque testar seu software?
 
Aula 6 - Qualidade de Software
Aula 6 - Qualidade de SoftwareAula 6 - Qualidade de Software
Aula 6 - Qualidade de Software
 
Software de impressão segura por biometria - Thiarlei - Impressão Gerenciada
Software de impressão segura por biometria - Thiarlei - Impressão GerenciadaSoftware de impressão segura por biometria - Thiarlei - Impressão Gerenciada
Software de impressão segura por biometria - Thiarlei - Impressão Gerenciada
 
Contr avali engenharia de software-introdução
Contr avali   engenharia de software-introduçãoContr avali   engenharia de software-introdução
Contr avali engenharia de software-introdução
 
Qualidade de software e sua influência no sucesso do projeto
Qualidade de software e sua influência no sucesso do projetoQualidade de software e sua influência no sucesso do projeto
Qualidade de software e sua influência no sucesso do projeto
 
Tema 10 Automação Da Engenharia
Tema 10   Automação Da EngenhariaTema 10   Automação Da Engenharia
Tema 10 Automação Da Engenharia
 
Segurança no Desenvolvimento WEB - Técnicas Profissionais
Segurança no Desenvolvimento WEB - Técnicas ProfissionaisSegurança no Desenvolvimento WEB - Técnicas Profissionais
Segurança no Desenvolvimento WEB - Técnicas Profissionais
 
Big Data e oportunidades de negócios
Big Data e oportunidades de negóciosBig Data e oportunidades de negócios
Big Data e oportunidades de negócios
 
Engenharia de software
Engenharia de software Engenharia de software
Engenharia de software
 
O computador - Apresentação Final
O computador  - Apresentação FinalO computador  - Apresentação Final
O computador - Apresentação Final
 
QA Ninja Conference 2017
QA Ninja Conference 2017QA Ninja Conference 2017
QA Ninja Conference 2017
 
O que é Middleware? E o que isso tem a ver com SOA?
O que é Middleware? E o que isso tem a ver com SOA?O que é Middleware? E o que isso tem a ver com SOA?
O que é Middleware? E o que isso tem a ver com SOA?
 
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de software
 
Apps tecnologias e usos
Apps   tecnologias e usosApps   tecnologias e usos
Apps tecnologias e usos
 
Android: História, Mercado e Possibilidades (FLISOL - Indaiatuba - 2011)
Android: História, Mercado e Possibilidades (FLISOL - Indaiatuba - 2011)Android: História, Mercado e Possibilidades (FLISOL - Indaiatuba - 2011)
Android: História, Mercado e Possibilidades (FLISOL - Indaiatuba - 2011)
 
02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentais02 Introdução à engenharia de software - conceitos fundamentais
02 Introdução à engenharia de software - conceitos fundamentais
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Teste de software
Teste de software Teste de software
Teste de software
 

Qualidade de Software no século XXI

  • 1. “Qualidade de Software no século XXI” Bruno Elias Penteado Coordenador de Qualidade de Software MStech Mestre em Ciência da Computação – UNESP Certificações ISTQB CTFL e CTAL-TA, Micosoft Web Apps C# 20/05/2011
  • 2. Qualidade de Software no século XXI Agradecimentos
  • 3. Tópicos O que é qualidade? Fazer o que deveria fazer? Como identificar qualidade? Sob que ponto de vista? Usuários, devs, comprador? Quando a qualidade vale a pena. Exemplos: números mega-sena. Qualidade x prejuízos Riscos Piores bugs da história; bugs atuais (PSP e Maps quadrilha Bauru) Tipos de indústrias e os níveis exigidos de qualidade; Ética? Conceitos básicos sobre qualidade Controle de qualidade x testes: diminuição de risco Requisitos funcionais x não-funcionais Mitos sobre qualidade Custa caro; evolução dos custos; prevenção x detecção Requisitos de um tester Futuro Grandes Desafios da Computação Tendências (TaaS, outsourcing, sistemas ubíquos, disponibilidade) Novas plataformas de desenvolvimento
  • 4. Qualidade de Software no século XXI Tópicos O que é qualidade de software? Abrangência da qualidade de software Mitos da qualidade Piores bugs da história O que nos espera
  • 5. O que é Qualidade de Software?
  • 6. O que é Qualidade de Software? Qualidade O que é um software com qualidade? Conformidade às exigências? De quem? Relativa
  • 7. O que é Qualidade de Software? Atores na qualidade de software Gerente projeto Programador Testador Usuário Cliente
  • 8. O que é Qualidade de Software? Ideias sobre qualidade de software Defeito zero é alta qualidade Grande número de funções é alta qualidade Codificação elegante é alta qualidade Alto desempenho é alta qualidade Baixo custo de desenvolvimento é alta qualidade Desenvolvimento rápido é alta qualidade Facilidade para o usuário é alta qualidade
  • 9. O que é Qualidade de Software? O que é qualidade? Qualidade é valor para alguma pessoa Vale o custo x benefício? Pagarão para ter seus requisitos atendidos?
  • 10. O que é Qualidade de Software? Efeito “não tão ruim” Todos os softwares têm erro; Satisfação dos usuários; Preferência em relação ao concorrente; Software de qualidade? Vale a pena melhorar?
  • 11. O que é Qualidade de Software? Qualidade? Caso: Google Maps SIG com fotos de satélite de alta resolução Determina rotas de trânsito
  • 12. O que é Qualidade de Software? Qualidade? Caso: Google Maps Usado também para o mal Jornal da Cidade: Bauru, 3/5/2011
  • 14. O que é Qualidade de Software? Qualidade Não significa ausência de erros! Muitos erros pode significar menor valor Não garante valor ao software Exemplos?
  • 15. O que é Qualidade de Software? Qualidade Conformidade com requisitos não é suficiente! Requisito é o meio: fornecer valor para quem? Requisitos identificam as pessoas importantes? Requisitos capturam seus valores?
  • 16. O que é Qualidade de Software? “Qualidade é valor para alguma pessoa disposta a pagar por seus benefícios”
  • 18. Abrangência da Qualidade de Software Qualidade Risco Fator que pode resultar em conseqüências negativas futuras; Projeto: relacionado ao gerenciamento e ao controle do projeto; Produto: relacionado ao produto em fabricação
  • 19. Abrangência da Qualidade de Software Processo de Qualidade de Software Prevenção: garantia por meio de processos; Treinamento Grupo de SQA Uso de lições aprendidas Melhoria de processo Detecção: controle por meio de testes; Compilação/análise de código Revisão por pares Teste Auditorias Diminuição de riscos ao longo da produção
  • 20. Abrangência da Qualidade de Software Testes Até quando testar? Custo x benefício Variação conforme indústria
  • 21. Abrangência da Qualidade de Software Níveis dos testes Unidade, Integração, Sistema, Aceitação
  • 22. Abrangência da Qualidade de Software Testes Abordagem para os testes Mostrar que o sistema: Faz o que não deve fazer; Não faz o que deve fazer;
  • 23. Abrangência da Qualidade de Software Testes Casos de teste Uma funcionalidade pode acarretar em centenas de casos de teste
  • 24. Abrangência da Qualidade de Software Testes Exemplo de caso de teste
  • 25. Abrangência da Qualidade de Software Processo - padrões Gerais ISO 9126 – Qualidade de produto de software ISO 12207 – Qualidade do processo de software IEEE 829 – Documentação de testes IEEE 1028 – Revisão de software IEEE 1044 – Classificação de incidentes BS 7925 – Técnicas de teste (...) Específicos por indústria DO-178B – software aviônico FDA 21 – software médico (...)
  • 26. Abrangência da Qualidade de Software Padrão ISO 9126 Requisitos funcionais e não-funcionais
  • 27. Abrangência da Qualidade de Software Padrão IEEE 829 Documentação do processo de testes
  • 28. Abrangência da Qualidade de Software Processo Exemplos de modelos de melhoria de processo Produção de software CMMi – CapabilityMaturityModelintegation MPS.Br – Melhoria do Processo de Software Brasileiro Teste de software TMMi – TestMaturityModelintegration TPI – TestProcessImprovement
  • 29. Mitos
  • 30. Mitos Mitos O testador é inimigo do desenvolvedor
  • 31. Mitos Mitos Testers podem ser desenvolvedores menos qualificados Google: Software Engineer in Test Microsoft: Software DevelopmentEngineer in Test
  • 32. Mitos Mitos Qualidade custa caro Definição econômica de qualidade: “É sempre mais barato fazer certo na primeira vez!”
  • 33. Mitos Mitos Qualidade leva muito tempo Nunca se tem tempo para fazer da forma correta Sempre existe tempo para refazer A cada R$ 1,00 em desenvolvimento, de R$ 2,00 a R$ 3,00 são gastos com retrabalho
  • 35. Bugs históricos O que é um bug? Primeiro bug: computador Mark II, na Universidade de Harvard (1945)
  • 36. Bugs históricos Mariner I – 1962 Missão observar para o planeta Vênus Fórmula matemática foi equivocadamente transcrita para o computador Desviou de seu curso e foi destruída 4 minutos após lançamento Prejuízo: US$ 18,5 mi
  • 37. Bugs históricos Gasoduto soviético – 1982 Supostamente, a CIA infiltrou um ‘cavalo de Tróia’ no sistema que controlava o gasoduto Transiberiano Maior explosão não-nuclear da história Detectado por satélites americanos
  • 38. Bugs históricos Therac-25 – 1985/1987 Dispositivo de terapia por radiação sobre células cancerosas falha e libera doses letais de radiação em vários consultórios médicos Condição de disputa no SO 5 mortes, várias pessoas feridas
  • 39. Bugs históricos Primeiro vírus da Internet – 1987 Estudante americano criou programa que afetou em um dia até 6.000 computadores; SO: Unix Buffer overflow: função getc() da linguagem C, no sistema UNIX, fazia leitura pela rede Permitia acesso não autorizado
  • 40. Bugs históricos Queda da rede AT&T - 1990 Falha no software dos switches de longa distância ao receber certa mensagem de uma máquina vizinha 114 switches reiniciando a cada 6 segundos 60 mil pessoas ficaram sem ligações à distância por 9h Correção: o software foi mudado para sua versão antiga
  • 41. Bugs históricos Míssil Patriot – 1991 Dhahran, Iraque Erro de software no relógio do míssil: a cada 100 horas o relógio interno do sistema desviava um terço de segundo Recomendação era rebootar o sistema de tempos em tempos Resultado: 600 metros de erro na distância em uma interceptação 28 soldados americanos mortos
  • 42. Bugs históricos Divisão de pontos flutuantes nos processadores Pentium da Intel – 1993 Erro em divisões dentro de uma faixa de números (erro ~0,006% no arrendondamento) 3 a 5 milhões de peças com defeito Recall para todos que quiseram trocar Custou à Intel US$ 475 milhões
  • 43. Bugs históricos Ping da Morte – 1995/96 Primeiras versões do TCP/IP Buffer overflow: mensagem grande (maior que limite de 64KB) Problema na manipulação de erros na remontagem de um pingmal-formado trava SO´s (Windows, Unix, Macintosh, etc.)
  • 44. Bugs históricos Ariane 5 vôo 501 – 1996 Foguete com código reutilizado do Ariane 4 (outro hardware); O processador primário do foguete sobrecarrega os motores que se desintegraram em 40 segundos; Overflow de inteiro: conversão de floatde 64-bits para inteiro 16-bits com sinal; Não tripulado (sem vítimas); prejuízo de US$ 370 milhões
  • 45. Bugs históricos Bug do milênio (Y2K) – 2000 Datas com apenas 2 dígitos para o ano Uma das maiores histerias da história Ao virar o ano 2000, a preocupação era que contasse como 1900 Entre US$ 300 e US$ 500 bi no mundo todo Bug de 2038 time_tem C  número de segundos a partir de 1/1/1970. Quando usado 4 bytes = 19/1/2038
  • 46. Bugs históricos Toyota Prius – 2010 Problema no software do sistema ABS de freios – acelerador fica preso, dificultando desaceleração Recall de 400.000 veículos ~ US$ 2 bilhões de prejuízo, desvalorização de 15% nas ações Fonte: BBC, Computer World UK
  • 47. Bugs históricos Play Station Network - 2011 Invasão do sistema Dados privados e de cartão de crédito de ~70 mi de pessoas foram roubados Governo japonês não deixou voltar até atingir nível de qualidade
  • 49. Próximos bugs? Qualidade de software nos dias de hoje Redes Sociais Identidade on-line  Privacidade Protegidos pelas políticas definidas nos Termos de Serviço dos sites E se hackearem sua conta de e-mail em seu celular? Geolocalização
  • 50. Próximos bugs? Qualidade de software nos dias de hoje Mecanismos de buscas Ex. Google: Informações (computador, browser, termos) Estatísticas enviadas a 3os, reusadas por patrocinadores Criação de perfil, com propagandas perseguindo usuário
  • 51. Próximos bugs? Qualidade de software nos dias de hoje Mecanismos de buscas Ex. Google: Google salva histórico de buscas Podem ser requisitadas legalmente; Espiado por funcionário; Hackeado
  • 52. Próximos bugs? Qualidade de software nos dias de hoje Mecanismos de buscas Ex. Google: Indexação de conteúdo impróprio Bullying, violação de direitos autorais, etc. Receita: links patrocinados / pageviews Gov. italiano condenou Google Mídia como jornal ou televisão
  • 53. Próximos bugs? Qualidade de software nos dias de hoje Mecanismos de buscas Ex. Google: StreetView Gov. da Alemanha proibiu Fere privacidade
  • 54. Próximos bugs? Qualidade de software nos dias de hoje Governo eletrônico Como ter um design universal? Transparência dos dados
  • 55. Próximos bugs? Qualidade de software nos dias de hoje Urna eletrônica Fabricante diz não ser segura Possibilidade de boot pelo disco externo Não tem auditoria independente Usava como SO: VirtuOS, Windows CE e agora Linux
  • 56. Próximos bugs? Qualidade de software nos dias de hoje Dispositivos móveis iPhone e Android armazenam sua localização
  • 57. Próximos bugs? Então... software não é confiável? Limitação humana Pessoas não conhecem/dominam tudo; Pessoas tem habilidades, mas não são perfeitas; Pessoas cometem erros Pressões por tempo, custo Especificações incompletas Manutenção em código “Grandes poderes trazem grandes responsabilidades”
  • 58. O que nos espera
  • 59. Futuro Futuro Tópicos futuros Quais os assuntos mais promissores dentro da QS nos próximos anos? Novas plataformas Que novos tipos de software serão lançados nos próximos anos?
  • 60. Futuro Futuro Tópicos de pesquisa Test As A Service Teste baseado em risco Testes ágeis
  • 61. Futuro Novas plataformas Dispositivos móveis: Tablets, smartphones, e-Readers, ... Interfaces mais naturais  uso em vários domínios Qual o padrão de uso? TV! PaperPhone
  • 62. Futuro Novas plataformas Carros E se seu carro se conectar à Internet? Sistemas multimídia embutidos de fábrica Windows EmbeddedAutomotive Diferenciação por tecnologia
  • 63. Futuro Novas plataformas Carros E se seu carro se dirigir sozinho, auto-estacionar? Como testar?
  • 64. Futuro Novas plataformas Carros E se hackers desabilitarem seu freio? Quais testes são aplicáveis? Padrão AUTOSAR (AUTomotive Open System ARchitecture)
  • 65. Futuro Novas plataformas SmartGrid Consumo crescente de energia elétrica Risco de interrupção Otimização da distribuição, consumo e cobrança
  • 66. Futuro Novas plataformas Arquitetura multicore Como os novos softwares tirarão proveito dessa arquitetura? Reescrever SO´s: vale a pena? Como testar?
  • 67. Futuro Novas plataformas Dispositivos médicos Implantes sofisticados  mini computadores Como se proteger de ataques? Como testar?
  • 68. Recapitulando... O que é qualidade de software? Abrangência da qualidade de software Mitos da qualidade Piores bugs da história O que nos espera
  • 69. Obrigado! “Qualidade de Software no século XXI” Bruno Elias Penteado bruno.penteado@mstech.com.br Twitter: @brunopenteado Estamos contratando! curriculum@mstech.com.br Twitter: @_MStech