Qualidade de Software - downloadportal.sereduc.com · Relatório do Caos Engenharia de Software...
Transcript of Qualidade de Software - downloadportal.sereduc.com · Relatório do Caos Engenharia de Software...
Profª Rafaella Matos
Qualidade de Software
Relatório do Caos
Engenharia de Software [email protected]
Em 1995 o relatório do caos revelou dados
alarmantes sobre investimentos feitos em
softwares
Relatório do Caos
Engenharia de Software
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
Engenharia de Software [email protected]
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?
Engenharia de Software [email protected]
Um "produto", no vocabulário da ISO, pode
significar um objeto físico, ou serviço, ou software.
Em busca de qualidade
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
Objetivo:
Garantir a qualidade do software através da definição
e normatização de processos de desenvolvimento
O que é garantia de qualidade?
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
Objetivo:
Garantir um produto final que satisfaça às
expectativas do cliente, dentro daquilo que foi
acordado inicialmente
CMM
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
Não diz como fazer e sim o que deve ser feito
Portanto:
Não é uma metodologia
CMM
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
Este caminho de melhoria é definido por cinco níveis
de maturidade:
Inicial
Gerenciado
Definido
Gerenciado Quantitativamente
Em Otimização
ISO 9126
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
Métricas internas – Ex: Segurança
Engenharia de Software [email protected]
Métrica de Confiabilidade
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
Métrica de Usabilidade
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
Métricas internas – Ex: Apreensibilidade
Engenharia de Software [email protected]
Métrica de Eficiência
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
Métrica de Manutenibilidade
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
Métrica de Portabilidade
Engenharia de Software [email protected]
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 infra-estrutura (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 internas – Ex: adaptabilidade
Engenharia de Software [email protected]
Conclusão
Engenharia de Software [email protected]
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
Engenharia de Software [email protected]
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.