Gerência - Qualidade e TestesFeed de artigos deste autor

Métricas de Software Como Ferramenta de Apoio ao Gerenciamento de Projetos de Software.

Os principais problemas que um Gerente de Projetos de Software enfrenta, estão relacionados aos processos de estimativa dos prazos de entrega dos projetos...

por Fábio Martinho Campos



Orientador: Denny Paulista Azevedo Filho

"A Medição é uma atividade que faz parte de qualquer disciplina de engenharia"
Roger Pressman[PRESS95]

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.

*Fábio Martinho Campos, tem 22 anos e é aluno do último ano do curso de Bacharelado em Computação da UNITAU(Universidade de Taubaté). Foi professor de inglês na escola Yázigi Intenexus de Lorena-SP, onde estudou por 10 anos. Trabalhou por dois anos como estagiário na INTRANET do INPE (Instituto Nacional de Pesquisas Espaciais - MCT) tendo como principal função o desenvolvimento WEB. Atualmente trabalha na empresa Liebherr Brasil Guindastes e Máquinas Operatrizes desenvolvendo projetos junto a INTRANET. O Trabalho de Conclusão de Curso está sendo feito na área de engenharia de software, especificamente métricas de software e métricas de projeto, orientado pelos professores Denny Paulista Azevedo Filho e Luis Fernando de Almeida.

Fábio Martinho Campos

Fábio Martinho Campos - Bacharel em Computação pela UNITAU (Universidade de Taubaté), MBA em Gestão de Projetos pelo IPT (Instituto de Pesquisas Tecnológicas-USP). Trabalhou no INPE-MCT (Instituto Nacional de Pesquisas Espaciais) em São José dos Campos como analista de sistemas e desenvolvedor web da Intranet e Internet por dois anos. Trabalhou na empresa alemã Liebherr Guindastes e Máquinas Operatrizes como analista de sistemas e desenvolvedor web, atuando também como analista de processos para o projeto de GED (Gerenciamento Eletrônico de Documentos) da empresa. Na IBM Brasil trabalhou por um ano como analista de teste no GTO (Global Test Organization) e SEA&T (System Engineer Architecture and Test) no projeto internacional Blue Horizon Configurator. Ainda na IBM trabalhou no Projeto CADU e SCFI do Banco Bradesco. Possui as certificações CBTS (Certificação Brasileira de Teste de Software), CQA (Certified Quality Assurance), CST (Certified Software Testing), COBIT(ISACA), ISTQB/ISEB(CTFL) e IBM Certified Specialist – Software Quality. É palestrante da disciplina de Teste de Software e Qualidade de Software, contribui para o crescimento do mercado de Teste de Software no Brasil através de palestras e eventos em universidades.