Baixe o app para aproveitar ainda mais
Prévia do material em texto
Qualidade de Software Eduardo Kinder Almentero ekalmentero@gmail.com Ementa 1. Introdução 1.1 O que é Qualidade de Software 1.2 Qualidade de Produto de Software 1.3 Qualidade do Processo de Software 1.4 Qualidade x Produtividade 1.5 Normas e Organismos Normativos 2. Qualidade de Processo de Software 2.1 Definição de Processos de Software 2.2 Modelos de Ciclo de Vida (Modelos de Processo) 2.3 Normas e Modelos de Apoio à Definição de Processos de Software 2.3.1 Série ISO 9000 2.3.2 ISO/IEC 12207 2.3.3 CMMI 2.3.4 ISO/IEC 15504 2.3.5 MR MPS.BR 05/09/2014 Prof. Eduardo Kinder Almentero 2 3. Qualidade de Produto de Software 3.1 Modelo de Qualidade de Produto 3.2 Normas de Qualidade de Produto 3.2.1 ISO/IEC 9126 3.2.2 ISO/IEC 14598 3.2.3 ISO/IEC 12119 4. Medição de Software 4.1 O Processo de Medição de Software 4.2 GQM 4.3 Definição de Medidas de Software 4.4 O Plano de Medição 5. Verificação e Validação 5.1 Revisões Técnicas e Inspeções 5.2 Estratégias e Técnicas de Testes 5.3 Processo de Teste 5.4 Tipos de Testes 6. Métodos Ágeis e a Qualidade de Software 6.1 Métodos Ágeis 6.2 SCRUM 6.3 Qualidade de Software nos Métodos Ágeis Avaliação • (P1 + P2 + Trabalho)/3 • Trabalho – Consistirá na divisão da turma em grupos para a aplicação prática de conceitos de Qualidade de Software. • Provas – Provas discursivas sobre os conceitos debatidos em sala de aula. • Datas serão definidas ao longo do curso. 05/09/2014 Prof. Eduardo Kinder Almentero 3 Introdução • Contexto atual – Dependência crescente de sistemas computacionais (hardware + software). – Sistemas computacionais dependem cada vez mais do software. – Aumento da complexidade do software. – Falhas em software podem ter custos enormes. 05/09/2014 Prof. Eduardo Kinder Almentero 4 Introdução • Passado – Pelo menos 5 mortes causadas por erro no software do Therac- 25. – Bug do milênio • Necessidade de economia de memória e espaço. – Pelo menos 89 mortes causadas por erro no controle eletrônico do acelerador da Toyota. – Erro no software de orientação do foguete Ariane 5 (voo 501) fez com que o protótipo, que custou 1 bilhão, fosse destruído 40 segundos após o lançamento. – A espaçonave Mars Climate Orbiter foi destruída durante entrada na atmosfera de marte, pois o software em terra enviava comandos em libra-força (lbf) e a espaçonave esperava comandos em newtons (n). 05/09/2014 Prof. Eduardo Kinder Almentero 5 Introdução • Futuro • E se ocorrerem falhas em software de: – Bancos – Aviões – Telecomunicações – ... • Quais as consequências? 05/09/2014 Prof. Eduardo Kinder Almentero 6 Introdução • Evolução da qualidade na indústria (em geral): – 1900 - Inspeção pós-produção - avalia o produto final. – 1940 - Controle estatístico da produção. – 1950 - Avaliação do procedimento de produção. – 1960 - Treinamento/educação das pessoas. – 1970 - Otimização dos processos. – 1980 - Projeto robusto - avaliação do processo. – 1990 - Engenharia Simultânea - avalia a própria concepção do produto. – Atualmente - normas, modelos, qualidade no aspecto individual e corporativo, aplicada a software como busca de excelência na produção a atendimento ao usuário. 05/09/2014 Prof. Eduardo Kinder Almentero 7 Introdução • Para entender o significado de qualidade em termos práticos, é necessário conhecer os cinco principais erros cometidos por gerentes e saber como eles devem ser tratados. • De acordo com Crosby: • E1 - Qualidade significa “ótimo‟, ou “luxo‟, ou “brilhante‟, ou “de grande valor‟. – S1 - A palavra “qualidade‟, muitas vezes, é usada em expressões do tipo: “boa qualidade‟, “má qualidade‟ e até “qualidade de vida‟. Mas, cada um que a ouve atribui um significado para o que seja “qualidade de vida‟. É preciso definir “qualidade de vida‟ em termos específicos, tais como: renda familiar; saúde; controle de poluição; programas políticos e quaisquer outros itens que possam ser medidos. 05/09/2014 Prof. Eduardo Kinder Almentero 8 Introdução • E2 - Qualidade é intangível, portanto não mensurável. – S2 - A qualidade é precisamente mensurável por meio da mais antiga e respeitada medida, o dinheiro. Ignorar esse fato tem levado gerentes a perder muito dinheiro. A qualidade é medida pelo “custo da qualidade‟, que é a despesa, ou custo da “não conformidade‟, que é o custo de fazer coisas erradas. 05/09/2014 Prof. Eduardo Kinder Almentero 9 • E3 - As desculpas dos gerentes para não fazer nada, em relação à qualidade de seus produtos, é que seu negócio é diferente‟ e que a “ciência‟ da qualidade não os ajudaria a fazer o que já fazem, e de forma ainda melhor. – S3 - Eles ainda não compreenderam o real significado de “qualidade‟ e continuam acreditando que ela significa “luxo‟. Nesses casos, é importante explicar o real significado de “qualidade‟ e que é sempre mais barato fazer certo na primeira vez. • E4 - Os problemas de qualidade são originados por trabalhadores, principalmente aqueles que trabalham diretamente na área de produção. – S4 - Os funcionários da produção de uma fábrica são acusados de provocar os problemas. Na realidade eles pouco contribuem para a prevenção, ou não, de defeitos, pois todo planejamento e criação foram definidos previamente, e eles são apenas seus executores. 05/09/2014 Prof. Eduardo Kinder Almentero 10 Introdução • E5 - Qualidade é responsabilidade do departamento da qualidade. – S5 - O departamento da qualidade tem como atribuição: medir a conformidade de acordo com o que foi previamente determinado; reportar os resultados das medidas de forma clara e objetiva; liderar uma atitude positiva da empresa, na busca da melhoria da qualidade; prover e capacitar os funcionários com ferramentas que podem auxiliar na melhoria da qualidade. Porém, o departamento da qualidade „não deve‟ executar o trabalho, pois, caso o faça, a empresa nunca mudará sua conduta. 05/09/2014 Prof. Eduardo Kinder Almentero 11 Introdução • Mito “Criar programas é uma arte que não pode seguir regras, normas ou padrões.” 05/09/2014 Prof. Eduardo Kinder Almentero 12 Qualidade não é um fator de vantagem no mercado. É uma necessidade para garantia da competitividade. Introdução • Perspectiva Histórica da Engenharia de Software: – anos 60 - Era Funcional – anos 70 - Era do Método – anos 80 - Era do Custo – anos 90 e depois - Era da Qualidade, distinção de processos e produtos 05/09/2014 Prof. Eduardo Kinder Almentero 13 Introdução 05/09/2014 Prof. Eduardo Kinder Almentero 14 Realidade das empresas ainda nos dias atuais Acúmulo de trabalho 05/09/2014 Prof. Eduardo Kinder Almentero 15 Produto às vezes funciona, mas prazo e custo são maiores Abandono de planos e procedimentos Sucesso depende muito do esforço heroico das pessoas Pouca repetibilidade Clientes e funcionários insatisfeitos Introdução • Quadro geral e Desafios nas empresas – A ausência de guias, da mesma forma que existe nas demais engenharias, de métodos testados e comprovados sobre como desenvolver e fazer manutenção de software. Boas práticas estão sendo utilizadas, mas são pouco disseminadas; – A maioria dos problemas nas organizações de software é de natureza gerencial, e não técnica. A tecnologia e a capacitação dos profissionais que essas organizações já possuem, poderiam gerar melhor qualidade; – A alta velocidade de mudanças tecnológicas envolvidas, como o próprio hardware; – O baixo estímulo à participação do usuário no processo de software, o que conduz a uma especificação incompleta de suas necessidades; – A crescente demanda por novos processos de automação e pelamanutenção dos já desenvolvidos acarreta problemas; – A falta de conhecimento sobre como mudar essa realidade e a dificuldade em aplicar os princípios da qualidade ao software. 05/09/2014 Prof. Eduardo Kinder Almentero 16 Introdução • O termo qualidade pode ser definido de várias formas, o que causa mal-entendido. – O termo não tem um único sentido. – Para cada conceito, existem diversos níveis de abstração. – Por ser um requisito não funcional (qualidade) é subjetivo. – Visão popular pode ser diferente do seu uso profissional. • Na atual conjuntura, qualidade é um dos principais objetivos da Engenharia de Software. • Muitos métodos, técnicas e ferramentas são desenvolvidas para amparar o desenvolvimento com qualidade. • Tem-se dado uma importância grande ao processo como meio de se garantir um software de melhor qualidade. 05/09/2014 Prof. Eduardo Kinder Almentero 17 Definições de Qualidade • Visão popular – Não pode ser definida; – Pode ser sentida, discutida, julgada, mas não pode ser medida; – Luxo, classe e elegância. Produtos caros, complexos e extravagantes tem melhor qualidade. – Confiabilidade e número de reparos efetuados não são considerados. • Definição Simples – Qualidade é: • estar em conformidade (atender) com os requisitos do cliente; • antecipar e satisfazer os requisitos dos clientes; • escrever tudo o que se deve fazer e fazer tudo o que foi escrito. 05/09/2014 Prof. Eduardo Kinder Almentero 18 Definições de Qualidade • “Conformidade com requisitos” (Crosby) – Requisitos devem ser claramente definidos e não podem ser ambíguos – Não conformidade implicaria na ausência de qualidade • “Conveniência para uso” (Juran) – Considera os requisitos e a expectativa do cliente; – Um produtos deve ter elementos que satisfaçam as diversas maneiras com que os clientes o utilizarão; – Parâmetros da conveniência para uso: Qualidade de Projeto e de Conformidade • Ambas definições estão corretas, embora a segunda dê ênfase maior as expectativas do usuário. 05/09/2014 Prof. Eduardo Kinder Almentero 19 Definições de Qualidade • Ana R. C. Rocha (2001) “Conjunto de características que devem ser alcançadas em um determinado grau para que o produto atenda às necessidades de seus usuários.” • Norma NBR ISO 1994 “Totalidade de características de uma entidade que lhe confere a capacidade de satisfazer a necessidades explícitas e implícitas “ • Pressman – Conformidade a: • Requisitos funcionais e de desempenho. • Padrões e convenções de desenvolvimento pré-estabelecidos, • Atributos implícitos que todo software desenvolvido profissionalmente deve possuir. 05/09/2014 Prof. Eduardo Kinder Almentero 20 Definições de Qualidade • Conceito mais abrangente do que “atender aos requisitos do usuário”, pois envolve a qualidade de padrões que são inerentes a fábrica. “Conformidade aos requisitos de desempenho e de funcionalidade que foram explicitamente definidos, aos padrões de desenvolvimento explicitamente documentados e às características implícitas que são esperadas por todo software desenvolvido por profissionais” 05/09/2014 Prof. Eduardo Kinder Almentero 21 Definições de Qualidade • SWEBOK (Software Engineering Body Of Knowledge (IEEE)) – Corpo de Conhecimento de Engenharia de Software • Em relação à qualidade, o SWEBOK fez uma distinção entre técnicas estáticas e dinâmicas. • Técnicas estáticas aparecem sob a área de conhecimento Qualidade, enquanto as dinâmicas figuram na área de Testes. • A norma internacional ISO/IEC 25000 SQuaRE, que trata da qualidade de produtos de software, abrange esses dois tópicos. 05/09/2014 Prof. Eduardo Kinder Almentero 22 Qualidade SWEBOK 05/09/2014 Prof. Eduardo Kinder Almentero 23 Qualidade de Software Fundamentos de Qualidade de SW Cultura e ética de ES Valor e Custo da Qualidade Modelos e Características de Qualidade Melhoria de Qualidade Processos de Gerência de Qualidade de SW Considerações Práticas Garantia de Qualidade de SW Verificações e Validações Requisitos de Qualidade do Software Caracterização de Defeitos Técnicas de Gerenciamento de Qualidade de SW Medição de Qualidade de Software Revisões e Auditoria Aspectos da qualidade 05/09/2014 Prof. Eduardo Kinder Almentero 24 • Dois aspectos: Produto Processos Propriedades Produto x Serviço • Intangibilidade – Normalmente, produtos possuem elementos palpáveis. • Variabilidade – Marcante na prestação de serviço. – Atividades realizadas pelo homem (e não máquina) estão mais propensas a variar. • Produção e consumo – Acontece de forma simultânea na prestação de serviços. – Frequentemente, o cliente deve estar presente e vivência o resultado do processo. • Ex: Consulta médica • Perecibilidade – Serviços não podem ser estocado, trocados (literalmente) ou revendido da mesma maneira. • Ex: Corte de cabelo 05/09/2014 Prof. Eduardo Kinder Almentero 25 Qualidade do Produto • Software é um produto ou um serviço? – Software “pronto” (prateleira) – Software é o mesmo para todos os que compram/adquirem (mesmo núcleo) • Produto – Software personalizado de acordo com as solicitações do seu cliente • Serviço – Software “nas nuvens”: redes sociais, aplicações na internet, blogs, etc. • Serviço – Atualizações, suporte, manutenção • Serviço! 05/09/2014 Prof. Eduardo Kinder Almentero 26 Qualidade do Produto • Podemos comparar o software a um produto tradicional (carro, geladeira, etc.)? – Como produto físico/manufaturado, não! • Software como produto – É complexo – É invisível e intangível – Produzido sob medida – Não se desgasta com o uso (operação) – Não tem prazo de validade (contanto que o ambiente se mantenha estável) – Seu custo final é o custo do projeto de desenvolvimento, além da manutenção. – É o único produto que quando apresenta erro, o cliente paga para corrigir, respeitando o contrato estabelecidos. 05/09/2014 Prof. Eduardo Kinder Almentero 27 Qualidade do Produto • Características do software como produto – Complexidade • Muitas regras a serem cumpridas; • Muitas linhas de código a serem implementadas; • Muitos desenvolvedores envolvidos, com ideias diferentes e, algumas vezes, divergentes, que podem levar a mesma solução. – Invisibilidade e intangibilidade • É invisível para o usuário. O que se vê são as consequências de sua execução; • Os próprios desenvolvedores necessitam de modelos para representá-lo; • Estas características causam grandes dificuldades de comunicação; 05/09/2014 Prof. Eduardo Kinder Almentero 28 Qualidade do Produto • Características do software como produto (cont.) – Conformidade e modificabilidade • O software interage com diversos elementos do ambiente onde é implantado (sensores, hardware, equipamento, outros software, usuários, cultura organizacional, etc.). • Como é o componente mais maleável, é constantemente alvo de adaptações para adequá-lo a estes elementos. – Produção sob medida • Para software não existe produção em série. • Cada usuário é um cliente, que usa o software à sua maneira, com ênfase em partes diferentes. 05/09/2014 Prof. Eduardo Kinder Almentero 29 Qualidade do Produto • Características do software como produto (cont.) – Não se desgasta com o uso (operação) • Seus componentes lógicos são duráveis; • A falha é resultado de erro de projeto ou implementação; • Os defeitos permanecem no sistema até serem percebidos e corrigidos; • Os defeitos provocam grande número de falhas no início do projeto, mas tendem a se comportar de maneira estável até sua obsolescência; • O não desgaste diferencia o software da grande maioria dos produtos modernos;• Musica e cinema (vídeo) são dois exemplos de produtos que se aproximam do software sob este aspecto. 05/09/2014 Prof. Eduardo Kinder Almentero 30 Qualidade do Produto • Características do software como produto (cont.) – Não tem prazo de validade • Não é sensível a problemas ambientais e nem sofre qualquer tipo de defeito devido a efeito cumulativo de seu uso; • Se torna obsoleto devido a evolução do hardware (tecnologia) e mudança nas necessidades dos clientes. • Empresas produtoras de software tendem a planejar a obsolescência de seus produtos, afim de otimizar suas vendas. 05/09/2014 Prof. Eduardo Kinder Almentero 31 Qualidade do Produto • Características do software como produto (cont.) – Seu custo final é basicamente o custo do projeto de desenvolvimento • Cópias do software podem ser reproduzidas em segundos e distribuídas a vários clientes. • Custo de copiar é distribuir é muito baixo. 05/09/2014 Prof. Eduardo Kinder Almentero 32 Qualidade do Produto • Reforçando conceitos vistos anteriormente: – Software e Engenharia • A engenharia de software foi criada com o intuito de estabelecer o uso de princípios básicos da engenharia clássica na construção de software, ou seja, tornar um produto invisível, intangível e complexo em um produto confiável e eficiente. – Ponto de vista da qualidade do produto: • Funcionalidade, confiabilidade, usabilidade, eficiência, manutenabilidade e portabilidade (Segundo normas ISO 9126 – internacional – e NBR 13596 – nacional) • As normas listam um conjunto de características que devem ser verificadas em um software para que ele seja considerado um software com boa qualidade. 05/09/2014 Prof. Eduardo Kinder Almentero 33 Qualidade do Produto (normas ISO 9126 e NBR 13596) • Característica: Funcionalidade – O software satisfaz às necessidades explícitas e implícitas do usuário? • Subcaracterísticas: – Adequação • Propõe-se a fazer o que é apropriado? – Acurácia • Gera resultados corretos ou conforme acordado? – Interoperabilidade • É capaz de interagir com os sistemas especificados? – Conformidade • Está de acordo com normas e convenções previstas em leis, normas e descrições similares? – Segurança de acesso • Evita acesso não autorizado, acidental ou deliberado, a programa e dados? 05/09/2014 Prof. Eduardo Kinder Almentero 34 Qualidade do Produto (normas ISO 9126 e NBR 13596) • Característica: Confiabilidade – O software, durante um período de tempo, funciona de acordo com as condições pré-estabelecidas? • Subcaracterísticas: – Maturidade • Com que frequência apresenta falhas? – Tolerância a falhas • Ocorrendo falhas, como ele reage? – Recuperabilidade • É capaz de recuperar dados e estado após uma falha? 05/09/2014 Prof. Eduardo Kinder Almentero 35 Qualidade do Produto (normas ISO 9126 e NBR 13596) • Característica: Usabilidade – O software é fácil de usar? • Subcaracterísticas: – Inteligibilidade • É fácil entender os conceitos (metáforas) utilizados? – Apreensibilidade • É fácil aprender a usar? – Operacionalidade • É fácil de operar e controlar a operação? 05/09/2014 Prof. Eduardo Kinder Almentero 36 Qualidade do Produto (normas ISO 9126 e NBR 13596) • Característica: Eficiência – O software não desperdiça recursos? • Subcaracterísticas: – Comportamento em relação ao tempo • Qual é o tempo de resposta e de processamento? – Comportamento em relação aos recursos • Quantos recursos utiliza? • Durante quanto tempo? 05/09/2014 Prof. Eduardo Kinder Almentero 37 Qualidade do Produto (normas ISO 9126 e NBR 13596) • Característica: Manutenabilidade – O software é fácil de alterar? • Subcaracterísticas: – Analisabilidade • É fácil encontrar um erro quando ocorre? – Modificabilidade • É fácil modificar e remover erros? – Estabilidade • Há grandes riscos de erros quando se faz alterações? – Testabilidade • É fácil testar quando se faz alterações? 05/09/2014 Prof. Eduardo Kinder Almentero 38 Qualidade do Produto (normas ISO 9126 e NBR 13596) • Característica: Portabilidade – O software é facilmente adaptável a diferentes plataformas? • Subcaracterísticas: – Adaptabilidade • É fácil adaptar a outras plataformas sem aplicar outras ações ou meios além dos fornecidos para esta finalidade no software considerado? – Capacidade para instalar • É fácil instalar em outros ambientes (plataformas)? – Capacidade para substituir • É fácil substituir por outro software? – Conformidade • Está de acordo com padrões e convenções de portabilidade? 05/09/2014 Prof. Eduardo Kinder Almentero 39 Qualidade do Produto • Cada tipo de software tem seu próprio requisito de qualidade • A importância de cada característica depende do tipo de software 05/09/2014 Prof. Eduardo Kinder Almentero 40 Sistema para controle de estoque Sistema embarcado para satélite Modelo de Qualidade de McCall McCall et al. 1977 • Organiza os critérios de qualidade em três pontos de vista – Operação • Características relativas ao uso do produto – Revisão • Capacidade do produto ser modificado e evoluído – Transição • Adaptabilidade a novos e diferentes ambientes • Critérios de qualidade elencados em cada ponto de vista: 05/09/2014 Prof. Eduardo Kinder Almentero 41 Operação Revisão Transição Correção Manutenabilidade Portabilidade Confiabilidade Flexibilidade Reusabilidade Eficiência Testabilidade Interoperabilidade Integridade Usabilidade Qualidade do Produto • Com relação a seu uso (características operacionais): – Correção • o quanto um programa satisfaz a sua especificação e cumpre os objetivos visados pelo cliente. – Confiabilidade • o quanto um programa executa a função pretendida com a precisão exigida. – Eficiência • a quantidade de recursos computacionais e de código exigida para que um programa execute sua função. – Integridade • o quanto o acesso ao software ou aos dados por pessoas não autorizadas pode ser controlado. 05/09/2014 Prof. Eduardo Kinder Almentero 42 Qualidade do Produto • Com relação a seu uso (características operacionais) (Cont.): – Usabilidade • o quanto de esforço é necessário para aprender, preparar a entrada e interpretar a saída de um programa. – Manutenibilidade • o quanto de esforço é necessário para localizar e eliminar erros em um programa. – Flexibilidade • o quanto de esforço é necessário para modificar um programa. – Testabilidade • o quanto de esforço é necessário para testar um programa a fim de garantir que ele execute a função pretendida. 05/09/2014 Prof. Eduardo Kinder Almentero 43 Qualidade do Processo • Dos requisitos à entrega do software, existe um processo de desenvolvimento complexo, dividido em fases, que pode comprometer a qualidade do software (produto). • O processo influencia nas características finais do software 05/09/2014 Prof. Eduardo Kinder Almentero 44 Pessoas Ferramentas Fatores de Qualidade • Procedimentos que descrevem o método escolhido • Ferramentas de suporte ao trabalho • Pessoas treinadas, que compreendam e usam o processo. Métodos, Procedimentos, Padrões e Técnicas Qualidade do Processo • Macro visão 05/09/2014 Prof. Eduardo Kinder Almentero 45 RUP Qualidade do Processo • Macro e micro visão 05/09/2014 Prof. Eduardo Kinder Almentero 46 Qualidade do Processo • Micro visão 05/09/2014 Prof. Eduardo Kinder Almentero 47 Modelo baseado em BPMn a partir da ferramenta Bizagi Fonte: http://www.sisp.gov.br/pswsisp/Concepcao%20e%20Alinhamento%20Estrategico.htm Qualidade do Processo • Micro visão – Modelo baseado em SPEM a partir de ferramenta EPF Composer 05/09/2014Prof. Eduardo Kinder Almentero 48 Qualidade do Processo • Processo de software pode ser definido como: – um conjunto de atividades, métodos, práticas e transformações empregados com o intuito de desenvolver e manter software e os produtos associados. • Especificação de requisitos, gerência de configuração, desenvolvimento de software são exemplos de processos que podem ser formalizados e documentados para desenvolver um produto. 05/09/2014 Prof. Eduardo Kinder Almentero 49 Fonte: http://www.mct.gov.br/index.php/content/view/306537.html Material de apoio • Bibliografia básica – KOSCIANSKI, A. Qualidade de software. 2. ed. São Paulo: Novatec, 2007 – SOMMERVILLE, I. Engenharia de software. 8. ed. São Paulo: Addison Wesley, 2007. • Bibliografia complementar – PFLEEGER, S.L., et al, “Software Engineering”, Prentice Hall, 2005, 3rd edition. – Guide to the Software Engineering Body of Knowledge, IEEE Computer Society, 2004. Disponível em http://swebok.org. 05/09/2014 Prof. Eduardo Kinder Almentero 50
Compartilhar