Métricas
de software como ferramenta de apoio ao gerenciamento de
projetos
Os
principais problemas que um Gerente de Projetos de Software
enfrenta, estão relacionados aos processos
de estimativa dos prazos de entrega dos projetos.
Influenciando estes prazos, e suas estimativas, temos
ainda a composição da equipe de projeto e desenvolvimento e
o acompanhamento das etapas efetuadas pela mesma. Soma-se a
isso, as crescentes mudanças no mercado e as novas
tecnologias disponíveis para se projetar e desenvolver
softwares, e temos um cenário competitivo extremamente dinâmico
no qual as empresas desenvolvedoras de software devem se
adaptar para continuarem competitivas e principalmente
manterem sua fatia de mercado, duramente conquistadas. O
Gerente de Projetos de Software torna-se, portanto,
fundamental na sobrevivência e crescimento destas empresas no
mercado.
A
busca pela melhoria na qualidade do processo de
desenvolvimento de software através de padrões, normas e
ferramentas, está fazendo com que a empresa que tenha
estabelecido e cumpridos prazos de entrega, e os mesmos sejam
reduzidos, mantendo a qualidade do software, obtenham
vantagens consideráveis sobre suas concorrentes.
Porém
estimar o tempo de projeto e desenvolvimento de um software e
a data de entrega do mesmo para o cliente é um processo
delicado o qual envolve muita sensibilidade do Gerente de
Projetos de Software e, principalmente, uma excelente
capacidade de estimativa. É um cenário comum dentro das
empresas desenvolvedoras de software. Ocasionando um aumento
na responsabilidade dos Gerentes de Projetos de Software, que
só podem contar com sua experiência profissional como
ferramenta.
Mas
por maior que seja a experiência do profissional atuando como
Gerente de Projetos de Software, ele fatalmente irá
deparar-se com projetos de software que ainda não trabalhou,
mesmo com algo similar, e pior ainda, iniciar trabalhos com
uma equipe, onde ele não conhece os seus membros e nem suas
capacidade.
A
Engenharia de Software fornece como ferramentas possíveis de
auxilio, as métricas de software e métricas para projetos,
ferramentas capazes de gerar dados para serem analisados e
utilizados como apoio pelos Gerentes de Projetos de Software.
O
primeiro obstáculo a ser superado para que tais ferramentas
sejam utilizadas é a efetiva implementação das métricas
nas empresas desenvolvedoras de software para poderem gerar os
dados necessários e essenciais.
O
segundo é a obtenção de uma ferramenta que auxilie o
Gerente de Projetos de Software na compilação e analise dos
dados gerados, que não seriam poucos.
Seria impossível tudo isso se não existissem métricas de
software e métricas para o projeto pelo meio qual o software
é desenvolvido.
Basicamente,
as métricas mostram dois indicadores básicos muito
importantes:
•
Produtividade:
A produtividade depende de inúmeros fatores como a dimensão
e complexidade dos sistemas a desenvolver, as linguagens de
programação, o grau de reutilização ou a experiência e
motivação dos participantes no processo de desenvolvimento.
Para constatar uma variação de produtividade resultante da
influência desses fatores é necessário medir e quantificar
a produtividade.
•
Qualidade:
A qualidade dos produtos de software é traduzida através de
características como a correção, eficiência,
confiabilidade, portabilidade ou facilidade de manutenção. A
obtenção desses dados quantitativos relativos a essas
características é assim fundamental para introduzir
melhorias no processo de desenvolvimento.
A
métrica de software vem ganhando espaço e sendo implantada
nas empresas de desenvolvimento de software com freqüência
cada vez maior.
“...
Por essa razão o software é medido por diversas formas:
indicar a qualidade do produto; avaliar a produtividade das
pessoas que produzem o produto; formar uma linha básica para
estimativas; ajudar a justificar os pedidos de novas
ferramentas ou treinamento adicional.” [PRESS95].
Além
dessas razões citadas por Pressman, pode ser citada ainda a
melhoria das estimativas e planejamento dos projetos de
software; avaliação da influência da linguagem de programação
e do ambiente utilizado na produtividade e qualidade dos
sistemas desenvolvidos; avaliação da eficácia(e eficiência)
da introdução de novas ferramentas; maior facilidade na
comprovação da melhoria da proficiência conseguida.
Lord
Kelvin, em suas palavras mostra como é importante medir e
quantificar, em nosso caso, um projeto: “... Quando se pode
medir aquilo sobre o qual se está falando e expressá-lo em números,
sabe-se alguma coisa sobre o mesmo; mas quando não se pode
medi-lo, quando não se pode expressá-lo em números, o
conhecimento que se tem é de um tipo inadequado e insatisfatório;
este pode ser o começo do conhecimento, mas dificilmente alguém
terá avançado em suas idéias para o estágio de ciência.”
[PRESS95].
Isto
mostra realmente a importância do uso de indicadores na gerência
de projetos de software, onde são mostrados números reais
obtidos de medições feitas em projetos e apresentados de uma
forma clara e que todos possam entender, seja com os próprios
números apresentando em forma de comparações, estatísticas
ou gráficos.
Já
uma desvantagem é que a métrica de software não oferece cem
por cento de confiança em seus resultados. A métrica serve
de base para o conhecimento no campo da medição na gestão
de projetos, com ajuda de projetos que já foram concluídos
no passado, e não uma base de dados a qual se pode confiar e
fazer estimativas que futuramente não serão aceitas e tomarão
boa parte do tempo tentando adivinhar quanto tempo irá se
gastar para produzir tal produto ou refazendo todo o trabalho.
Existem
diversas metodologias de métricas como: Métricas orientadas
a seres humanos, Métricas orientadas a função, Métricas
orientadas ao tamanho, Métricas de produtividade, Métricas
de qualidade, Métricas técnicas, etc.
Como
opções, hoje temos uma vasta quantidade de ferramentas como
Visual C++, CBuilder, Jbuilder, Delphi, Forte(SUN), Visual
Basic e plataformas como .NET(Microsoft) e J2EE, que são as
ferramentas e plataformas, respectivamente, mais usadas no
mercado de empresas desenvolvedoras de software.
Mas
como então usar a técnica, a métrica correta com a
plataforma e ferramenta escolhida para se desenvolver
programas ou medir o projeto em questão? A metodologia de
medição escolhida é a mais adequada para aquele tipo de
projeto? Existem projetos passados, os quais podemos extrair
informações para as medições atuais? As pessoas envolvidas
têm experiência com medições? Perguntas desse tipo são
alguns exemplos das variáveis implicadas na hora de escolher
a métrica que irá ser aplicada.
É
correto afirmar que a métrica é independente da linguagem de
programação ou plataforma! Porém quando se aplica à métrica
correta, o tempo de medição e os resultados serão mais
satisfatórios. Um exemplo disso é a medição de um software
que foi produzido com classes e usa todas técnicas de orientação
a objeto(polimorfismo, herança e encapsulamento). Um software
com estas características, não poderá ser medido com LOC(Lines
Of Code). Isso porque para orientação a objetos, existe a métrica
para sistemas orientados a objetos, o qual neste caso, seria
mais viável.
Outro
fator a ser considerado é que não existe nenhuma métrica
que tenha sido projetada com as novas ferramentas RAD(Rapid
Application Development – Desenvolvimento Rápido de Aplicações).
As primeiras ferramentas RAD surgiram com grande peso por
volta de 1995, como ponto focal.
Portanto,
o Gerente de Projetos de Software fica com mais um dilema em
suas mãos quando necessita escolher uma métrica e todo o seu
trabalho e de sua equipe são baseados nas ferramentas RAD.
Quando
falamos de métricas, então, temos que ter em mente que se
trata de dados(números) quantitativos que irão mostrar em
forma de indicadores o estado atual de um determinado projeto.
A busca pela qualidade utilizando métricas de software, deve
ser aplicada tanto às pessoas que produzem o produto, quanto
para o processo em que se desenvolve o mesmo produto. Com métricas
podemos estimar prazos de entregas finais e ter uma visão
global do projeto. É muito importante que os gerentes de
projetos de software tenham o hábito de sempre estar medindo
seus projetos para saberem como o mesmo está evoluindo e
apresentar de forma clara os resultados obtidos para as
pessoas envolvidas.
A
medição, sendo tão importante assim, deveria ser aplicada
em todas as fases do ciclo de vida do projeto, e não somente
na fase de desenvolvimento, o que é mais comum. Isso fará
com que a própria equipe do projeto fique mais confiante
diante dos resultados obtidos e melhore cada vez mais o
processo pelo qual o projeto é desenvolvido, evoluindo sempre
para a qualidade do processo e do produto.
A
medição tem seu papel muito importante dentro da engenharia
de software, especialmente na gerência de projetos de
software, seja qual for à metodologia a ser utilizada. A medição
é analisada por Gerentes de Projetos de Software e coletada
pelos engenheiros de software. Sem as métricas, então, temos
dados subjetivos os quais não serão de grande importância,
pois como vimos anteriormente, as métricas são expressas de
forma quantitativa, ou seja,
em números. As
métricas são feitas então em três fases: coleta de dados,
cálculo dos dados e análise dos dados. É importante saber
escolher a metodologia que melhor se encaixa no projeto,
trazendo resultados mais precisos, sejam eles bons ou ruins.
Tendo
então realizada a medição, poderá ser então feitas
estimativas de custos e prazos de término do projeto ou
entrega do produto final. O mais importante a ser ressaltado
é que as métricas devem ser muitas bem feitas pelos gerentes
de projetos e que devem ser mostradas de uma forma clara e que
todos possam entender os resultados gerados. Feito isso, o
resultado que se tem é um conjunto de dados que darão a idéia
do processo e um entendimento do projeto. Permitirá aos
Gerentes de Projetos de Software aperfeiçoar e melhorar o
processo de desenvolvimento do produto e avaliar a qualidade
do produto que está sendo produzido.
Mas
o mais importante é que sem existir uma ferramenta que
auxilie os Gerentes de Projetos de Software na analise dos
dados coletados através das métricas podemos cair novamente
em um dilema: existem métricas adequadas, mas os dados
coletados são tantos e a analise dos mesmos complicada e
demorada que os Gerentes de Projetos de Software não as
utilizam.
Deve
ser lembrado que os Gerentes de Projetos de Software devem
buscar maior produtividade, identificação das fases do ciclo
de vida, definidas no processo de desenvolvimento adotado,
onde um maior investimento em melhorias provocará uma maior
rentabilidade; identificações mais precoces de problemas,
permitindo ações corretivas em tempo útil, com menor
impacto nos prazos globais do projeto. Sem a obtenção desses
dados quantitativos torna-se difícil, senão impossível
estabelecer de uma forma inteligente condições para os
prazos e orçamentos, tomar decisões de atribuição de
recursos humanos e financeiros, ou tentar atingir os
objetivos.
|