qualidade de software no século xxi - v2
DESCRIPTION
Nestes slides o conceito de qualidade de software é abordado, e como ele é atacado pela disciplina de Qualidade de software em relação às visões dos atores que participam do processo de criação e distribuição do software.Em seguida, são mostrados defeitos famosos tendo como origem falhas no software, desde a década de 60 até os dias atuais.Ao final, são apresentadas novas plataformas esperadas para emergirem na próxima década, 2010-2020, como a Internet das Coisas, Big Data, automóveis e o próprio corpo humano e os respectivos desafios de qualidade no software subjacente.TRANSCRIPT
“Qualidade de Software no século XXI”Bruno Elias Penteado
Coordenador de Qualidade de Software MStechMestre em Ciência da Computação – UNESP
Certificações: CBTS, ISTQB CTFL, CTAL-TA e CTAL-TM,
Micosoft Web Apps C#21/09/2011
Qualidade de Software no século XXI Agradecimentos
Qualidade de Software no século XXI Tópicos
O que é qualidade de software? Piores bugs da história Novas plataformas Vale a pena conhecer mais e investir em
qualidade de software?Automóveis
Corpo humano
Internet das coisas
Big Data
O que é Qualidade de Software?
O que é Qualidade de Software? Qualidade
Dependência crescente em sistemas computacionais
O que é um software com qualidade? Conformidade às exigências? De quem?
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? 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
O que é Qualidade de Software? Qualidade
Não significa ausência de erros! Não garante valor ao software Muitos erros pode significar menor valor 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”
Qualidade de Software
Qualidade de Software Cenário
The National Institute of Standards and Technology (NIST) attributed a hefty price tag to the problem claiming software bugs are costing the US economy $US 59.5 billion yearly
NIST, 2002
A disciplina de Qualidade de Software tenta lidar com todos os atores envolvidos, tendo como objetivo final um software com as características de qualidade relevantes a
cada um deles.
Qualidade de Software Processo de Qualidade de Software
Prevenção: garantia por meio de processos;
Detecção: controle por meio de testes;
Qualidade de Software Processo
Sequência de procedimentos + atores + artefatos
Objetivo: previsibilidade de qualidade ao produto final
Modelos de melhoria de processo Produção de software
CMMi – Capability Maturity Model integation MPS.Br – Melhoria do Processo de Software Brasileiro
Qualidade de Software Padrões de qualidade
Gerais ISO 9126 – Qualidade de produto de software ISO 12207 – Qualidade do processo de software ISO 27000 – Segurança da informação 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 (...)
Qualidade de Software Padrão ISO 9126
Requisitos funcionais e não-funcionais
É fácil de modificar?É rápido e enxuto?É fácil de usar?É imune a falhas?Satisfaz as necessidades? Executa em outro
ambiente?
Qualidade de Software Padrão ISO 9126
A importância depende do tipo de software
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;
Qualidade de Software Quem testa o software?
Testers podem ser desenvolvedores menos qualificados Google: Software Engineer in Test Microsoft: Software Development Engineer in Test
Qualidade de Software Qualidade custa caro?
Definição econômica de qualidade: “É sempre mais barato fazer certo na primeira vez!”
Qualidade de Software 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
Qualidade de Software Vale a pena investir?
Custo com qualidade: Prevenção + detecção + falhas internas Treinamentos, testes, bugs corrigidos antes de
release
Custo com falhas (externas): Custo da falha em produção, com o usuário Pode ser vidas.
Custo com qualidade < custos das falhas
Qualidade de Software Testes
Até quando testar? Variação conforme indústria
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ído 4 minutos após lançamento
Prejuízo: US$ 18,5 mi
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
Míssil Patriot – 1991 Míssil de defesa Dhahran, Arábia Saudita 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
Ariane 5 vôo 501 – 1996 Foguete com código reutilizado do
Ariane 4 (outro hardware); Overflow de inteiro: conversão de
float de 64-bits para inteiro 16-bits com sinal;
O processador primário do foguete sobrecarrega os motores que se desintegraram em 40 segundos;
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_t em 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
Problemas atuais?
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 Integração no smartphone. E se roubarem? Geolocalização
Próximos bugs? Qualidade de software nos dias de hoje
Google Street View Gov. da Alemanha proibiu Fere privacidade
Próximos bugs? Apps Móveis
Malwares disponibilizados como aplicações
+50.000 usuários afetados Apple Store, Market
Próximos bugs? Qualidade de software nos dias de hoje
Urna eletrônica Fabricante diz não ser segura Não tem auditoria independente
Próximos bugs? “Pentágono diz que responderá a cyber
ataques com força militar”
O que nos espera
Futuro Novas plataformas e seus desafios de
qualidade
AutomóveisCorpo
humanoInternet das
coisasBig Data
Futuro Novas plataformas e seus desafios de
qualidade
AutomóveisCorpo
humanoInternet das
coisasBig Data
Futuro – novas plataformas Internet of Things
RFID, sensores wireless Monitoramento contínuo Integração inteligente
Futuro – novas plataformas Internet of Things
Mais “coisas” conectadas do que pessoas PCs, tablets, smartphones
Futuro – novas plataformas Internet of Things
~2020: ~50 bilhões de “coisas” na Internet (nosso corpo, carro, relógio, gado)
Futuro – novas plataformas Desafios de qualidade?
Confiabilidade: disponibilidade das informações; Segurança: privacidade, interceptação de informação; Interoperabilidade: padronização;
Futuro Novas plataformas e seus desafios de
qualidade
AutomóveisCorpo
humanoInternet das
coisasBig Data
Futuro – novas plataformas Big Data
Dados gerados em grande escala (terabytes, petabytes);
Percepção de padrões; Novas formas de trabalhar;
Processamento paralelo; Bases de dados não convencionais;
Futuro – novas plataformas Big Data
Capacidade de criação excede de longe a de armazenamento;
Redes sociais, registros médicos, vídeos, dados astronômicos, sensores...
*: Giga < Tera < Peta < Exa < Zetta
Futuro – novas plataformas Big Data
Fontes: rastreamento das deslocamentos, atualidades sociais, dados médicos, hábitos e preferências
Personalização de conteúdo
Futuro – novas plataformas Big Data
Apple, Google, Twitter processados por usar dados indevidamente;
Futuro – novas plataformas Big Data
Desafios de qualidade? Acurácia: precisão dos dados; Interoperabilidade: formatos e estruturas de dados; Eficiência: tempo de execução e espaço consumido; Segurança: privacidade, vazamento de informação; Usabilidade: visualização dos dados;
Futuro Novas plataformas e seus desafios de
qualidade
AutomóveisCorpo
humanoInternet das
coisasBig Data
Futuro – novas plataformas Automóveis
Carros E se seu carro se conectar à Internet? Diferenciação por tecnologia
Futuro – novas plataformas Automóveis
Carros Sistemas multimídia embutidos de fábrica Windows Embedded Automotive Padrão AUTOSAR (AUTomotive Open System
ARchitecture)
Futuro – novas plataformas Automóveis
Carros E se seu carro se dirigir sozinho, auto-estacionar?
Futuro – novas plataformas Automóveis
Carros E se hackers desabilitarem seu freio?
Futuro – novas plataformas Automóveis
Recalls frequentes
Futuro – novas plataformas Automóveis
Desafios de qualidade? Confiabilidade: recuperação em caso de erros; Segurança: ataques ao software; Eficiência: consumo de energia; Usabilidade: muitos dados para o motorista;
Futuro Novas plataformas e seus desafios de
qualidade
AutomóveisCorpo
humanoInternet das
coisasBig Data
Futuro – novas plataformas Corpo humano
Dispositivos médicos Wearable computing Biometria
Futuro – novas plataformas Corpo humano
Monitoramento de saúde: batimento cardíaco, temperatura...;
Integração com smartphones;
Futuro – novas plataformas Corpo humano
Monitoramento de desempenho de atletas;
Futuro – novas plataformas Corpo humano
Dispositivos médicos Implantes sofisticados mini computadores
Futuro – novas plataformas Corpo humano
Dispositivos médicos Como se proteger de ataques?
Futuro – novas plataformas Corpo humano
Desafios de qualidade? Segurança: privacidade, ataques; Confiabilidade: tolerância a falhas; Eficiência: consumo de energia;
Recapitulando... O que é qualidade de software? Piores bugs da história Novas plataformas para o século XXI
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”
Recapitulando...
Vale a pena conhecer mais e investir em qualidade de software?
Obrigado!
“Qualidade de Software no século XXI”Bruno Elias Penteado
[email protected]: @brunopenteado
Estamos [email protected]
Twitter: @_MStech