Qualidade de Software Profª Rafaella Matos
Introdução a qualidade de software
Relatório do Caos Em 1995 o relatório do caos revelou dados alarmantes sobre investimentos feitos em softwares
Relatório do Caos 31,1% dos projetos seriam cancelados antes de estarem completos/finalizados 52,7% dos projetos custariam 189% de suas estimativas originais 16,2% dos projetos de software não são completados on-time ou on-budget Nas grandes empresas, apenas 42% dos produtos de software contém as funcionalidades e funções originalmente propostas
Em busca de qualidade Como garantir a qualidade do produto gerado? ISO Organização não-governamental fundada em 1947, em Genebra, e hoje presente em cerca de 189 países. A sua função é a de promover a normatização de produtos e serviços, para que a qualidade dos mesmos seja permanentemente melhorada.
Critérios para normatização Uma organização deve seguir alguns passos e atender a alguns requisitos para serem certificadas. Dentre esses podem-se citar: Padronização de todos os processos-chave da organização, processos que afetam o produto e conseqüentemente o cliente; Monitoramento e medição dos processos de fabricação para assegurar a qualidade do produto/serviço, através de indicadores de performance e desvios;
Critérios para normatização Uma organização deve seguir alguns passos e atender a alguns requisitos para serem certificadas. Dentre esses podem-se citar: Implementar e manter os registros adequados e necessários para garantir a rastreabilidade do processo; Inspeção de qualidade e meios apropriados de ações corretivas quando necessário; e Revisão sistemática dos processos e do sistema da qualidade para garantir sua eficácia.
Quais seriam os produtos? Um "produto", no vocabulário da ISO, pode significar um objeto físico, ou serviço, ou software.
Em busca de qualidade Surgimento de modelos reconhecidos CMM (Capability Maturity Model) Nova forma de desenvolver software Papéis bem definidos Processos e ferramentas de apoio Grandes investimentos feitos pelo mercado Amadurecimento na qualidade de software e abertura do mercado internacional
Modelos de qualidade Modelos de qualidade genérico ISO 9000 Modelos de qualidade de software ISO 9126 ISO 15504 ISO 12207 CMM CMMI MPS.br
Qualidade do produto e do processo A qualidade do produto está diretamente relacionada à qualidade do processo de desenvolvimento Modelos aplicados na garantia da qualidade de software atuam principalmente no processo
Qualidade de software Objetivo: Garantir a qualidade do software através da definição e normatização de processos de desenvolvimento
O que é garantia de qualidade? Garantir a qualidade consiste em utilizar um conjunto de atividades que assegurem que todos os esforços sejam feitos para garantir que os produtos de software tenham a qualidade desejada. Portanto garantia de qualidade consiste na realização de revisões técnicas formais que são aplicadas durante cada fase da engenharia de software.
Modelos de qualidade de software Objetivo: Garantir um produto final que satisfaça às expectativas do cliente, dentro daquilo que foi acordado inicialmente
CMM Capability Maturity Model ou Modelo de Maturidade em Capacitação Consiste em: uma soma de "melhores práticas" para diagnóstico e avaliação de maturidade do desenvolvimento de softwares em uma organização
CMM Não diz como fazer e sim o que deve ser feito Portanto: Não é uma metodologia
CMM Descreve os principais elementos de um processo de desenvolvimento de software. Ou seja, descreve os estágios de maturidade por que passam as organizações enquanto evoluem no seu ciclo de desenvolvimento de software, através de avaliação contínua, identificação de problemas e ações corretivas, dentro de uma estratégia de melhoria dos processos.
CMM Este caminho de melhoria é definido por cinco níveis de maturidade: Inicial Gerenciado Definido Gerenciado Quantitativamente Em Otimização
ISO 9000 ISO 9126 ISO 15504 ISO 12207
ISO 9126 Conjunto de normas que tratam da qualidade do software no âmbito da ISO. Estabelece um modelo de qualidade com os seguintes componentes: Processo de desenvolvimento, cuja qualidade afeta a qualidade do produto de software gerado e é influenciado pela natureza do produto desenvolvido;
ISO 9126 Produto, compreendendo os atributos de qualidade do produto (sistema) de software. Estes atributos de qualidade podem ser divididos entre atributos internos e externos. Se diferenciam pela forma como são aferidos (interna ou externamente ao produto de software) e em conjunto compõem a qualidade do produto de software em si;
ISO 9126 Qualidade em uso que consiste na aferição da qualidade do software em cada contexto específico de usuário. Esta é, também, a qualidade percebida pelo usuário.
A norma ISO 9126: Estrutura ISO/IEC 9126-1: Modelo de Qualidade ISO/IEC 9126-2: Métricas Externas ISO/IEC 9126-3: Métricas Internas ISO/IEC 9126-4: Métricas de Qualidade em Uso
ISO/IEC 9126-1: Modelo de Qualidade Documento composto basicamente de definições para as características de qualidade
Modelo de Qualidade Interna e Externa da Norma ISO 9126-1 A norma 9126 se foca na qualidade do produto de software, propondo Atributos de Qualidade Distribuídos em seis características principais, com cada uma delas divididas em sub-características
Modelo de Qualidade para qualidade em uso Visão de qualidade do usuário
Medição do Produto de Software: ISO 9126-2..4 Definições Atributo: Uma propriedade mensurável, física ou abstrata, de uma entidade. Atributos podem ser internos ou externos. Medição: O uso de uma métrica para atribuir um valor (o qual pode ser um número ou uma categoria), obtido a partir de uma escala, a um atributo de uma entidade. Métrica: O método e a escala de medição definidos.
Métricas externas Define indicadores e métricas externas para avaliar um produto de software. Referem-se a medições indiretas de um produto de software a partir do comportamento do Sistema Computacional ou do seu efeito no ambiente, quando da execução de seus programas
Métricas externas Devem ser usadas para: avaliar o comportamento do software quando usado em situações específicas; predizer a qualidade real no uso; avaliar e indicar se o produto satisfaz as verdadeiras necessidades durante a operação real pelo usuário. Exemplo: Característica: Funcionalidade Sub-característica: Adequação quantidade de funções atendidas, que poderão ser subdivididas em desejáveis e obrigatórias.
Métricas internas Define indicadores e métricas internas para avaliar um produto de software Métricas internas referem-se a medições de um produto de software a partir de suas próprias características internas, sem a necessidade de execução dos programas. Exemplos: número de linhas de código, número de erros encontrados em revisões, etc.
Métricas internas As métricas internas oferecem a possibilidade de medir a qualidade dos artefatos intermediários e de prever a qualidade do produto final Isto permite que sejam identificados problemas de qualidade e se inicie a ação corretiva assim que possível no ciclo de vida do desenvolvimento.
Métrica de Funcionalidade
Funcionalidade A capacidade de um software prover funcionalidades que satisfaçam o usuário em suas necessidades declaradas e implícitas, dentro de um determinado contexto de uso. Suas sub-características são: Adequação, que mede o quanto o conjunto de funcionalidades é adequado às necessidades do usuário; Acurácia (ou precisão) representa a capacidade do software de fornecer resultados precisos ou com a precisão dentro do que foi acordado/solicitado;
Funcionalidade Segurança mede a capacidade do sistema de proteger as informações do usuário e fornecê-las apenas (e sempre) às pessoas autorizadas Segurança também pode estar dirigida em, processar gerar e armazenar as informações. Conformidade trata da padronização, politicas e normas de um projeto.
Métricas externas Ex: Adequação
Métricas internas Ex: Segurança
Métrica de Confiabilidade
Confiabilidade O produto se mantém no nível de desempenho nas condições estabelecidas. Suas sub-características são: Maturidade, entendida como sendo a capacidade do software em evitar falhas decorrentes de defeitos no software;
Confiabilidade Tolerância a Falhas representando a capacidade do software em manter o funcionamento adequado mesmo quando ocorrem defeitos nele ou nas suas interfaces externas; Recuperabilidade que foca na capacidade de um software se recuperar após uma falha, restabelecendo seus níveis de desempenho e recuperando os seus dados;
Métricas externas Ex: Maturidade
Métricas internas Ex: Tolerância a falhas
Métrica de Usabilidade
Usabilidade A capacidade do produto de software ser compreendido, seu funcionamento aprendido, ser operado e ser atraente ao usuário. Este conceito é bastante abrangente e se aplica mesmo a programas que não possuem uma interface para o usuário final Suas sub-características são:
Usabilidade Inteligibilidade que representa a facilidade com que o usuário pode compreender as suas funcionalidades e avaliar se o mesmo pode ser usado para satisfazer as suas necessidades específicas; Apreensibilidade identifica a facilidade de aprendizado do sistema para os seus potenciais usuários; Operacionalidade é como o produto facilita a sua operação por parte do usuário, incluindo a maneira como ele tolera erros de operação; Atratividade envolve características que possam atrair um potencial usuário para o sistema, o que pode incluir desde a adequação das informações prestadas para o usuário até os requintes visuais utilizados na sua interface gráfica;
Métricas externas Ex: Inteligibilidade
Métricas internas Ex: Apreensibilidade
Métrica de Eficiência
Eficiência O tempo de execução e os recursos envolvidos são compatíveis com o nível de desempenho do software. Suas sub-características são: Comportamento em Relação ao Tempo que avalia se os tempos de resposta (ou de processamento) estão dentro das especificações; Utilização de Recursos que mede tanto os recursos consumidos quanto a capacidade do sistema em utilizar os recursos disponíveis;
Métricas externas Ex: Comportamento em relação ao uso de recursos
Métricas internas Ex: utilização dos recursos
Métrica de Manutenibilidade
Manutenibilidade A capacidade (ou facilidade) do produto de software ser modificado, incluindo tanto as melhorias ou extensões de funcionalidade quanto as correções de defeitos, falhas ou erros. Suas sub-características são: Analisabilidade identifica a facilidade em se diagnosticar eventuais problemas e identificar as causas das deficiências ou falhas;
Manutenibilidade Modificabilidade caracteriza a facilidade com que o comportamento do software pode ser modificado; Estabilidade avalia a capacidade do software de evitar efeitos colaterais decorrentes de modificações introduzidas; Testabilidade representa a capacidade de se testar o sistema modificado, tanto quanto as novas funcionalidades quanto as não afetadas diretamente pela modificação;
Métricas externas Ex: Modificabilidade
Métricas internas Ex: custo de mudança
Métrica de Portabilidade
Portabilidade A capacidade do sistema ser transferido de um ambiente para outro. Como "ambiente", devemos considerar todo os fatores de adaptação, tais como diferentes condições de infraestrutura (sistemas operacionais, versões de bancos de dados, etc.), diferentes tipos e recursos de hardware (tal como aproveitar um número maior de processadores ou memória). Além destes, fatores como idioma ou a facilidade para se criar ambientes de testes devem ser considerados como características de portabilidade.
Portabilidade Adaptabilidade, representando a capacidade do software se a adaptar a diferentes ambientes sem a necessidade de ações adicionais (configurações); Capacidade para ser Instalado identifica a facilidade com que pode se instalar o sistema em um novo ambiente; Coexistência mede o quão facilmente um software convive com outros instalados no mesmo ambiente; Capacidade para Substituir representa a capacidade que o sistema tem de substituir outro sistema especificado, em um contexto de uso e ambiente específicos. Este atributo interage tanto com adaptabilidade quanto com a capacidade para ser instalado;
Métricas externas Ex: Capacidade para ser instalado
Métricas internas Ex: adaptabilidade
Conclusão Produzir software de qualidade é uma tarefa difícil, porém possível. O processo de avaliação de produtos de software complementa o processo de desenvolvimento
Conclusão São vários os benefícios alcançados decorrentes da avaliação de produtos de software: O produtor poderá assegurar a qualidade do produto final; Redução nos custos com a manutenção do software; O usuário ficará mais satisfeito, pois estará adquirindo um produto de qualidade; O vendedor poderá usar como argumento de venda a qualidade assegurada do produto que está vendendo; Organizações poderão exigir critérios de qualificação com propósitos específicos.