Métricas para Qualidade de Software Carlos Augusto Felipe Dias Hugo Cardoso Maylle Lo Feudo O que será apresentado: 1. 2. 3. 4. 5. Qualidade de Software Métricas de Software Métricas de Qualidade de Software Medidas.
Download ReportTranscript Métricas para Qualidade de Software Carlos Augusto Felipe Dias Hugo Cardoso Maylle Lo Feudo O que será apresentado: 1. 2. 3. 4. 5. Qualidade de Software Métricas de Software Métricas de Qualidade de Software Medidas.
Slide 1
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 2
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 3
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 4
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 5
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 6
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 7
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 8
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 9
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 10
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 11
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 12
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 13
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 14
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 15
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 16
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 17
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 18
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 19
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 20
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 21
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 22
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 23
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 24
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 25
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 26
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 27
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 28
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 29
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 30
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 31
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 32
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 33
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 34
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 35
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 36
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 37
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 38
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 39
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 2
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 3
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 4
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 5
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 6
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 7
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 8
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 9
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 10
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 11
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 12
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 13
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 14
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 15
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 16
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 17
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 18
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 19
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 20
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 21
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 22
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 23
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 24
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 25
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 26
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 27
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 28
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 29
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 30
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 31
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 32
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 33
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 34
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 35
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 36
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 37
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 38
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho
Slide 39
Métricas para
Qualidade de Software
Carlos Augusto
Felipe Dias
Hugo Cardoso
Maylle Lo Feudo
O que será apresentado:
1.
2.
3.
4.
5.
Qualidade de Software
Métricas de Software
Métricas de Qualidade de Software
Medidas de Qualidade de Software
Métricas para Manutenção de Software
1. Qualidade de Software
“O que é Qualidade de Software?”
“Conformidade com requisitos funcionais e
de desempenho explicitamente
declarados, padrões de desenvolvimento
explicitamente documentados e
características implícitas, que são
esperadas em todo software desenvolvido
profissionalmente”. (Pressman)
Qualidade de Software
Segundo Philip Crosby, o problema é o que elas pensam
que sabem. Nesse sentido, a qualidade tem muito a ver
com sexo:
Todo mundo é a favor (sob certas circunstâncias, certamente).
Todo mundo se considera um entendido no assunto (mesmo que
não queiram explicá-lo).
Todo mundo pensa que a execução é apenas uma questão de
seguir as inclinações naturais (apesar de tudo, seguimos de
alguma forma).
E, certamente, a maioria das pessoas acha que problemas
nessas áreas são causados pelos outros (se apenas pudessem
usar o tempo para fazer as coisas direito).”
Qualidade de Software
Importâncias durante um o processo:
Definir explicitamente o que quer dizer “qualidade
de software”;
Criar um conjunto de atividades que ajudarão a
garantir que todo produto de trabalho de
engenharia de software exibe alta qualidade;
Realizar atividades de garantia de qualidade em
todo o projeto de software;
Usar métricas para desenvolver estratégias para
aperfeiçoar seu processo de software e, como
conseqüência, a qualidade do produto final.
Qualidade de Software
A qualidade é responsabilidade de todos
os envolvidos no processo de engenharia
de software. Se a qualidade de software
for enfatizada, diminui-se a quantidade de
trabalho que tem que ser refeito,
resultando em menores custos e melhor
definição de prazo para colocação no
mercado.
Qualidade de Software
Pesquisa de Capers Jones, onde foram estudados 6700
projetos e 500 empresas. Projetos de sucessos são
eficazes em:
planejamento de projetos
estimativa de custo
acompanhamento de projetos
uso de métricas
controle de qualidade
gerência de alterações
metodologia de desenvolvimento
gerentes de projetos qualificados
pessoal técnico qualificado e especializado
reuso de material
Qualidade de Software
Ao fazermos Análise de Risco em projetos de
software, constatamos os seguintes critérios que
influenciam no sucesso do projeto:
Prazo – O cronograma será mantido e o produto
entregue no prazo?
Custo – O orçamento vai ser mantido?
Qualidade – O produto vai atender seu objetivo?
Suporte – O produto poderá ser facilmente
modificado, adaptado e aprimorado?
Qualidade de Software
Para haver uma avaliação contínua da
qualidade do software durante todas as
etapas de desenvolvimento, devemos
estabelecer métricas.
2. Métricas de Software
A atividade de medir ajuda os gerentes e
componentes da equipe a melhorar o
processo de desenvolvimento de software.
Métricas de Software
Medições de atributos específicos do
processo, projeto e produto são utilizados
para calcular as métricas. Medição ocorre
como resultado da coleta de um ou mais
pontos, fornecendo indicações
quantitativas (como de extensão,
quantidade, dimensão).
Ex: quantidade de erros encontrados em um
único módulo
Métricas de Software
Métrica é definida como “medida
quantitativa do grau em que um sistema,
componente ou processo possui
determinado atributo” [IEEE]. Uma
métrica de software relaciona as medidas
individuais de alguma forma.
Ex: número médio de erros encontrados por
revisão
Métricas de Software
Um engenheiro de software realiza
medidas e desenvolve métricas de modo a
obter indicadores, que são métricas ou
combinação de métricas que fornecem
compreensão de um processo, produto ou
projeto de software, fornecendo a
compreensão necessária ao gerente de
projeto ou ao engenheiro de software para
fazer os ajustes necessários de modo a
aumentar a qualidade.
Métricas de Software
A métrica fornecesse compreensão ao
gerente, levando a uma tomada de
decisão bem informada.
Métricas de Software
Ex.: quatro equipes de um grande projeto irão realizar
revisões de projeto, podendo cada equipe escolher o tipo
de revisão que irá usar. Utilizando a métrica “erros
encontrados por pessoa-hora empregada”, nota-se que
duas equipes, que estão utilizando métodos mais formais
de revisão, tiveram um valor para “erros encontrados por
pessoa-hora empregada” 40% maior que o valor das
demais equipes. Considerando as condições iguais entre
as equipes, esse resultado para o gerente do projeto é
um indicador de que utilizar métodos mais formais pode
fornecer um retorno maior do investimento de pessoas
em tempo do que outros métodos menos formais. Com
essa métrica, o gerente pode então ter base para decidir
qual método utilizar por todas as equipes.
2.1. Métricas de Processo
O desenvolvimento
de medidas e
métricas de
processo requer o
domínio e
entendimento do
processo de
software.
Métricas de Processo
As métricas são originas a partir das
saídas que são derivadas do processo.
Essas saídas diversas medidas, como erros
descobertos antes da entrega do software,
defeitos relatados pelos usuários, esforço
humano despendido, cumprimento do
cronograma.
Métricas de Processo
Para a geração de métricas, Grady sugere uma
etiqueta de métrica de software:
Use bom senso e sensibilidade ao interpretar
resultados de métricas
Não deixe parar a coleta de resultados de métricas
Não avalie nem ameace indivíduos por métricas
Estabeleça objetivos e metas bem definidos para que
as métricas possam ajudar a alcançar esses objetivos
e essa metas
Não fique obcecado com uma métrica quando houver
diversas outras em análise
Métricas são apenas criar indicadores, de forma a
estudar melhorias para o processo.
2.2. Métricas de Projeto
São usadas pelo gerente de projeto e pela
equipe de software com finalidade
estratégica, para adaptar o fluxo do
trabalho e as atividades técnicas do
projeto.
Métricas de Projeto
Estimativa: métricas de projetos anteriores
Comparação com valores atuais e valores
anteriores de métricas
Controle e monitoramento do progresso
Métricas de Projeto
Objetivos:
minimizar o cronograma de desenvolvimento
avaliar a qualidade do produto durante sua
evolução e modificar abordagem técnica para
aperfeiçoar a qualidade
Métricas de Projeto
Maior qualidade
menos defeitos
redução de retrabalho
menor custo do projeto
menor risco
3. Métricas de Qualidade de
Software
Através de métricas bem definidas e
calculadas, podemos ter a noção numérica
sobre o desempenho da criação software,
que ajuda a saber se está havendo
melhora.
4. Medidas de Qualidade de
Software
Dentre várias medidas de qualidade de
software, temos algumas que fornecem
indicadores úteis à equipe de software.
4.1. Correção
Um programa é correto se ele satisfaz sua
especificação e satisfaz aos interesses do
cliente. Correção é o grau em que um
software desempenha sua função.
Ex.: “defeitos por KLOC”. Como defeito é um
erro de software encontrado pelo usuário,
então o programa apresenta falhas em
relação aos requisitos funcionais, gerando
então problemas de correção de software.
4.2. Manutenibilidade
Manutenção de software é a atividade que mais
consome esforço em Engenharia de Software. A
manutenibilidade pode ser definida como a
facilidade de se corrigir um programa, após
algum evento como erros encontrados, mudança
de requisitos.
Ex.: a métrica “tempo médio para modificação”
(mean-time-to-change, MTTC), que é o tempo gasto
para analisar o pedido da modificação, projetá-la
adequadamente, implementá-la, testá-la e distribuí-la.
aos usuários.
4.3. Integridade
Ataques acidentais, ou não, podem ser
feitos aos seguintes componentes de
software: programas, dados e
documentos. A integridade mede a
capacidade de o sistema resistir a esses
ataques.
Integridade = ∑ [ (1 – ameaça) x (1 – segurança)]
4.4. Usabilidade
Possui várias definições:
A capacidade do software ser entendido, aprendido,
usado e atrativo ao usuário sobre certas condições
especificas. (ISO/IEC 9126-1, 2000)
A extensão que um produto pode ser utilizado por
usuários específicos para atingir objetivos
especificados com eficácia, eficiência e satisfação
num contexto de uso especificado. (ISO 9241-11,
1998)
A facilidade com que um usuário pode aprender a
operar, preparar entradas para, e interpretar saídas
de um sistemas ou componente. (IEEE Std.610.121990)
Usabilidade
Os critérios usados para medí-la dependem da
abordagem:
Uma mais orientada ao produto, mede usabilidade em
termos de atributos ergonômicos do produto.
Um enfoque voltado ao usuário, realiza a medição
através do esforço mental e atitudes do usuário.
Medições da interação do usuário com o produto com
ênfase em facilidade de uso ou aceitabilidade,
seguem uma visão voltada na performance do
usuário.
Há uma orientado ao contexto, onde usabilidade é
função do usuários em particular, suas atividades e do
ambiente.
5. Métricas para Manutenção de
Software
O número de defeitos ou problemas que surgem
são amplamente determinados pelo processo de
desenvolvimento antes da fase de manutenção.
Não se pode fazer muito para alterar a qualidade
do produto durante essa fase.
O que poderia ser feito durante a fase de
manutenção, seria reparar os defeitos com
excelente qualidade e o mais rápido possível.
Algumas ações, apesar de ainda não está
disponível para melhorar a taxa de erro dos
produtos, podem melhorar a satisfação do
consumidor em grande parte.
Métricas para Manutenção de
Software
Métricas importantes
Evitar “backlog”
Consertar tempo de resposta
Percentual de reparos graves
Número de defeito reparados
5.1 Evitar “backlog”
Coleção de trabalho inacabado – Definição
do Dicionário
É uma forma de carga de trabalho para
manutenção de software.
Está relacionado com taxa de chegada de
defeito e a taxa em que reparos para
problemas informados se tornem
disponíveis
6. Eficiência na Remoção de Defeitos
(DRE)
“A DRE é uma medida da capacidade de filtragem
das atividades de controle e garantia de qualidade
de software, à medida que são aplicadas às
atividades de arcabouço de processo” [Pressman]
Eficiência na Remoção de Defeitos (DRE)
Quando considerada para o projeto todo:
DRE = E / ( E + D )
E é a quantidade de erros encontrados antes da
entrega do software ao usuário final
D é a quantidade de defeitos encontrados após a
entrega.
Eficiência na Remoção de Defeitos (DRE)
Quando usada no projeto para avaliar a capacidade de uma
equipe encontrar erros antes que eles sejam
repassados para a próxima tarefa de engenharia de
software :
DREi = Ei / ( Ei + Ei+1 )
Ei é o número de erros encontrados durante a atividade de
engenharia de software
Ei+1 é a quantidade de erros encontrados durante a atividade
de engenharia de software i+1, que são atribuíveis a erros
que não foram descobertos na atividade de engenharia de
software i.
Eficiência na Remoção de Defeitos (DRE)
Eficiência na Remoção de Defeitos (DRE)
Exemplo:
High-Level Design Inspection Effectiveness; IE (I0)
IE(I0) = 730 / (122 + 859) = 74%
__________________________________________________
Low-Level Design Inspection Effectiveness; IE (I1)
IE(I1) = 729 / ( 251 + 939 ) = 61%
_________________________________________________
Code Inspection Effectiveness; IE(I2)
IE(I2) = 1095 / ( 461 + 1537 ) = 0,55 ou 55%
_________________________________________________
Unit Test Effectiveness; TE(UT)
TE(UT) = 332 / 903 + 2 = 0,37 ou 37%
_________________________________________________
Eficiência na Remoção de Defeitos no Processo (DRE):
DRE = ( 1 – 81 / 3465 ) = 97.7%
“O quanto antes pudermos detectar
erros, melhor”.
isto é, quanto mais cedo o erro for descoberto menor será o esforço
dispendido na sua remoção e no retrabalho