Olá Pessoal !
Um assunto muito interessante dentro da Engenharia de Software é o de métricas de software. Neste artigo vamos explicar o que são, bem como os principais aspectos para entender sua relevância, analisando algumas questões para entender como esse assunto costuma ser cobrado pelas bancas.
O Instituto de Engenheiros Elétricos e Eletrônicos – do inglês Institute of Electrical and Electronic Engineers (IEEE) define métricas como “uma medida quantitativa do grau em que um sistema, componente ou processo possui um determinado atributo”. O objetivo das métricas de software é controlar e identificar eficientemente os parâmetros essenciais que afetam o desenvolvimento de software.
O termo “métrica de software” inclui muitas atividades, que envolvem algum grau de medição de software e tem relação com uma série de conceitos que embasam a adoção de métricas. Algumas dessas atividades são listadas a seguir:
- modelos e medidas de estimativa de custo e esforço
- coleta de dados
- modelos e medidas de qualidade
- modelos de confiabilidade
- métricas de segurança
- métricas estruturais e de complexidade
- avaliação da maturidade da capacidade
- gerenciamento por métricas
- Avaliação de métodos e ferramentas
A importância do tema também está no Corpo de Conhecimento em Gerenciamento de Projetos – do inglês Project Management Body of Knowledge (PMBOK). O PMBOK relata vários processos para a gestão profissional de um projeto, e o controle das atividades está baseado nas métricas obtidas nas diversas fases de um projeto ou processo. Por isso, métricas são importantes para a gestão, até mesmo na tomada de decisão de forma preditiva.
As métricas de software podem ser usadas para obter uma ampla variedade de informações sobre a qualidade do produto entregue ao cliente, o progresso de um projeto de software, estimativa de custos e o tamanho/complexidade de um sistema de software. As medições precisam ser monitoradas de perto quando os requisitos de um sistema de software mudam com frequência.
A engenharia de software evoluiu e a construção de aplicações com qualidade está ligada intrinsecamente à avaliação de resultados, de modo que o uso de métricas é tão comum nessa área. A medição de projetos de desenvolvimento de software e a qualidade dos produtos de trabalho são fatores importantes para a garantia da entrega. Isso evidencia uma melhor compreensão do progresso de um projeto e auxilia no seu gerenciamento.
As métricas são indicadores importantes para melhorar os processos e produtos em todas as organizações. Elas definem linhas de base de qualidade e produtividade e permitem comparações com médias industriais que ajudam na identificação de oportunidades de melhoria. Além disso, o projeto e análise de métricas de software são importantes atividades no ciclo de vida do desenvolvimento de software. As métricas de software desempenham um papel vital no custo, na qualidade, na programação, na confiabilidade e na manutenção do software. Existem vários métodos para decidir quais métricas devem ser usadas para quais propósitos.
Outra definição interessante é que definem métricas de software como “a medida quantitativa de produtos de software e processo de produção de software”. É importante enfatizar que existem métricas para a avaliação de produtos e processos, uma vez que na construção de software o fator custo é primordial. Outros objetivos do uso de métricas de software estão listados abaixo:
- tamanho do software quantitativamente;
- nível de complexidade envolvido;
- força do módulo por meio da medição do acoplamento;
- técnicas de teste;
- especificando quando parar de testar;
- determinando a data de lançamento do software;
- estimativa do custo dos recursos e do cronograma do projeto.
Nessa temática, também merece destaque o conceito de medida, ou seja, a quantificação de uma característica. A medida é algo comum no mundo da engenharia, todavia, a engenharia de software está longe de desenvolver uma medida padrão amplamente aceita com resultados sem fatores subjetivos Na Engenharia de Software, não há consenso sobre o que medir e como avaliar o resultado obtido das medições.
A complexidade das aplicações de software está aumentando a cada dia tornando as ferramentas e os métodos tradicionais insuficientes para o desenvolvimento de software. Como resultado, há uma diminuição na qualidade final. Assim a medição se torna um trabalho fundamental para a garantia da qualidade. Conforme demonstrado na 1, a qualidade é o elemento basilar da engenharia de software, que está fundamentada em ferramentas, métodos e processo.
Figura 1. Camadas da engenharia de software
Fonte: Pressman (2016)
Para Sommerville (2011), a medição de software preocupa-se com a derivação de um valor numérico ou o perfil para um atributo de um componente de software, sistema ou processo. Comparando esses valores entre si e com os padrões que se aplicam a toda a organização, pode-se ser capaz de tirar conclusões sobre a qualidade do software ou avaliar a eficácia dos métodos, das ferramentas e dos processos de software. Por isso, a medição de software é forma de avaliar a qualidade. Processos e modelos de qualidade são fortemente embasados em métricas e indicadores que são parametrizados para automatizar a coleta de dados para controle e previsão.
A Figura 2 apresenta o Modelo de Qualidade de Software apresentado por Fenton e Bieman (2014), classificando a operação do produto e a revisão do produto. Essas características do software acabam por ser derivadas em itens de qualidade, alguns conhecidos como requisitos não-funcionais. Além disso, no final, “Métricas” podem ser construídas para avaliação desses itens.
Figura 2. Modelo de Qualidade de Software
Fonte: adaptado de Fenton e Bieman (2014, p.19)
E ainda de acordo com Sommerville (2011), estimativas são utilizadas para responder duas questões quando se fala no desenvolvimento ou manutenção de um software: quanto tempo será gasto para a conclusão e quanto o projeto vai custar. Variáveis de tempo e custo, que são base para qualquer projeto. Por isso, a utilização de métricas tem tomado proporções avassaladoras no mercado de desenvolvimento de software.
A métrica que é muito utilizada e que já foi tema de artigo aqui no blog do Gran Cursos Online é a de Pontos de Função, mais detalhes revisitem o artigo já que o foco hoje é conceituar melhor o tema de métricas em todos seus aspectos. Vamos agora analisar algumas questões sobre esses conceitos !!!
Questão 1 – Ano: 2018 Banca: COMPERVE Órgão: UFRN Prova: COMPERVE – 2018 – UFRN – Analista de Tecnologia da Informação – 104
Existem, na literatura, diversas abordagens para se realizar estimativas de esforço/duração de um projeto. Acerca dessas abordagens, é correto afirmar:
A ) para se estimar a duração de uma tarefa, não é necessário saber o tamanho ou experiência da equipe.
B ) o uso do método top-down é mais apropriado que o bottom-up para projetos completamente novos e com informações detalhadas de suas partes.
C ) alguns modelos são baseados em fórmulas e trabalham com métricas como pontos de função, linhas de código, experiência da equipe, etc.
D ) esforço e duração de atividades representam o mesmo conceito.
Questão 2 Ano: 2018 Banca: CESPE / CEBRASPE Órgão: EBSERH Prova: CESPE – 2018 – EBSERH – Analista de Tecnologia da Informação
A respeito de engenharia de software, julgue o próximo item.
Normalmente, as técnicas de decomposição usadas para estimativas de software baseiam-se na aplicação de fórmulas matemáticas derivadas em experimentos para prever esforço como uma função do tamanho do software.
Certo
Errado
OBS: O gabarito pode ser consultado no final desse artigo.
Para Pensar !!!
Um dos problemas para os concurseiros nesse tema é a quantidade de métricas existentes, no Gran Cursos Online temos diversas aulas para explicar quando se deve dar atenção a cada uma delas, pois as diversas bancas examinadoras cobram esse assunto de diversas maneiras.
Dessa forma encerro esse artigo com essa breve introdução sobre o assunto ! Até mais !
GABARITO
- QUESTÃO 1 – LETRA C. Um dos principais problemas na engenharia de software é estimar o esforço/duração de um projeto, e várias métricas utilizam diversas abordagens para estimativa. No mais com a leitura desse artigo se eliminaria os demais itens, o único item mais complexo é o item B, mas em projetos novos com a descrição clara das partes não teria diferença a abordagem se top-down ou bottom-up, em cenários de incerteza a abordagem bottom-up seria mais adequada.
- QUESTÃO 2 – ERRADO. A medição funcional que é amplamente discutida nas referências desse artigo, avaliam o tamanho funcional e não o esforço diretamente, e a partir do tamanho levando em consideração a produtividade de um time pode se derivar o esforço envolvido na construção de um software.
Referências
[1] Artigo adaptado do Livro Análise sobre Métricas em Contratos de Fábricas de Software no âmbito da Administração Pública de autoria do Prof. Washington Almeida e Felipe Furtado. Pode ser adquirido nas melhores livrarias (Saraiva, Amazon, Google Books, Mac Store)
[2] FENTON, N., e Bieman, J. Software metrics: a rigorous and practical approach. Boca Raton: CRC Press, 2014.
[3] PRESSMAN, R. S. Software engineering : a practitioner’s approach (9ª ed.). New York: Higher Education, 2016.
[4] SOMMERVILLE, I. Software Engineering (Vol. 9). Pearson, 2011.
Professor MSC, Washington Almeida
Doutorando e mestre em Engenharia de Software pelo Centro de Estudos e Sistemas Avançados do Recife – C.E.S.A.R. Atualmente é Analista Judiciário na Justiça Federal (TRF1), Professor no Gran Cursos Online e na Universidade de Brasília – UNB.
Participe da conversa