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
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
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
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 (...)
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
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”
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