CRITÉRIOS CONSIDERADOS PELAS INDÚSTRIAS DE SOFTWARE PARA A AVALIAÇÃO DOS SEUS PROJETOS Gabriela María CAbel Brabarán Paulino Graciano Francischini Universidade de São Paulo - Escola Politécnica E-mail: [email protected] Abstract In this work we identified which are the main approaches adopted by the Industries of Software of the State of São Paulo to evaluate the development of its software projects. The results were obtained of the application of a questionnaire type survey to forty Software industries. The analysis of the obtained results demonstrated that software projects are generally evaluated considering the experience of previous projects and few industries adopt formal programs of measurement. In this way, this work intends to inform the advantages of the adoption of programs of measures based on performance indicators, elaborated in consistency with objectives and competitive strategy of the industries, would allow to establish corrective actions increasing like the performance of their projects. Resumo Neste trabalho identificamos quais são os principais critérios adotados pelas Indústrias de Software do Estado de São Paulo para avaliar o desenvolvimento de seus projetos de software. Para a coleta dos dados, um questionário tipo survey foi aplicado a quarenta Indústrias de Software. A análise dos resultados obtidos demonstraram que projetos de software geralmente são avaliados com base na experiência de projetos anteriores e que poucas são as indústrias que adotam programas formais de medição. Neste sentido, este trabalho pretende informar as vantagens da adoção de programas de medidas baseados em indicadores de desempenho que, se elaborados em consistência com os objetivos e estratégia competitiva das indústrias, permitiriam a tomada de ações corretivas aumentando assim o desempenho dos seus projetos. Keyworks: measurement software, software project, project management . Introdução Desde o início do desenvolvimento do softwares, a Indústria de Software tem sido o exemplo de uma indústria com pobre desempenho. Apesar de ter evoluído e do longo período transcorrido desde a crise do software, ela ainda enfrenta problemas crônicos. As estimativas de prazo e de custo freqüentemente são imprecisas; pouca coisa tem sido feita para melhorar a produtividade das pessoas da área de software; a qualidade do software às vezes é inadequada; o ciclo de desenvolvimento dos projetos é muito longo; prazos de entrega não são cumpridos; os custos de desenvolvimento são altos e há um forte incremento do número de falhas detectadas após a entrega do software. A razão para esta situação é atribuída à falta de processos de desenvolvimento disciplinados e à ausência de medidas aceitas, formalmente e universalmente, para avaliar o desenvolvimento do software (PAULK, 1993). Frente a estas dificuldades e procurando manter o domínio do seu mercado, incrementar sua competitividade e lucratividade, as indústrias de software brasileiras têm sentido a necessidade de melhorar a eficiência de seus processos e controlar adequadamente seus recursos de desenvolvimento. Mas para isto, são necessárias estimativas mais exatas de programação e de custos, produtos de melhor qualidade e alta produtividade. Tudo isto pode ser alcançado através de um gerenciamento de software mais efetivo o qual, por sua vez, pode ser facilitado pelo uso de indicadores de desempenho consistentes a seus objetivos e estratégias competitivas e das métricas de software. (GRADY, 1987; INCE, 1993; PFLEEGER, 1997). Esforços têm sido feitos para aplicar teorias de medição em vários aspectos de avaliação do software, para determinar métricas adequadas às fases de desenvolvimento do ciclo de vida do software. Mas apesar destes esforços, ainda não existe um conjunto de medidas padrão para medir o processo de software. Portanto o panorama das indústrias de desenvolvimento de software não tem mudado muito desde suas características iniciais. O desenvolvimento de projetos de software é muitas vezes realizado de uma maneira ad-hoc (MILLS, 1988; GRADY, 1992; PUTNAM, 1997; FENTON, 1999). Portanto, a relevância deste trabalho justifica-se pela análise de como as indústrias de software estão avaliando seus projetos, se os métodos por elas selecionados realmente proporcionam a informação necessária para alcançar seus objetivos e estratégias competitivas e se as ferramentas e os recursos usados são os mais adequados para o melhor desenvolvimento dos projetos. Medição do software Medição na área de software é um tema discutido há 25 anos. Este tema tem sido tratado principalmente desde dois pontos de vista, desde o ponto de vista dos pesquisadores enfocados na análise da complexidade do software e desde o ponto de vista dos desenvolvedores de software enfocados na busca da melhoria dos processos de desenvolvimento. (GLASS, 1994). Nos últimos anos, frente a este ambiente de competitividade e o crescimento das aplicações de software em tamanho e complexidade, a procura por programas que permitam alcançar melhorias nos processos de desenvolvimento, nas indústrias de software tem-se intensificado. Estudos da medição do software tem se orientado principalmente ao estudo da aplicação de métricas de software dentro de um contexto industrial, é disser métricas que ajudem a estimar e predizer os custos e programas de planejamento dos projetos, assim como também a medir sua qualidade e produtividade. Assim, esta informação servirá para a administração e controle do processo de desenvolvimento e para determinar melhorias alcançadas nos resultados. (PRESSMANN, 1997; FENTON, 1991). No entanto, apesar das métricas de software serem vistas como as ferramentas para a avaliação e predições das diferentes atividades do projeto de software, a situação atual da indústria de software revela que o uso de medidas neste setor tem sido limitado. Poucos estudos indicam como um sistema de medição integrado pode apoiar as decisões de gerenciamento. (PLFEEGER, 1997; PUTNAM e MYERS, 1992; GRADY, 1992). Isto principalmente porque ao tentar adotar um programa de medidas as organizações tem enfrentado certos problemas como: ter que selecionar um número razoável e útil de medidas desde o abundante conjunto de medidas propostas na literatura, motivar as pessoas para acompanhar as atividades de medição, definir os processos que serão avaliados, analisar e documentar os resultados, entre outros. Daí que, o desenvolvimento de projetos de software é muitas vezes realizado de uma maneira ad-hoc, resultando em: − grande imprecisão na estimativa de prazos, recursos humanos e financeiros necessários para o desenvolvimento; − incertezas sobre como e quanto cada um dos muitos métodos hoje divulgados na literatura influem na produtividade e no custo dos desenvolvimento de software, do tipo específico, de interesse de uma determinada empresa, e em seu ambiente de trabalho; − muitas vezes até no abandono dos projetos. Portanto, a medição, apesar de ser considerada a base para o controle dos processos e produtos de desenvolvimento, ainda não é uma ferramenta de apoio para o gerenciamento (FENTON, 1997; GRADY 1992). RUBIN (1983) afirma que práticas de gerenciamento de software são ineficientes pois o desenvolvimento do software é extremamente complexo; muitas vezes não existe uma metodologia padrão para o desenvolvimento dos processos do projeto e existem poucas medidas confiáveis bem definidas para guiar e avaliar o desenvolvimento. Desta maneira, estimativas, planejamento e controle exato e efetivo são quase impossíveis de atingir. INCE (1993) afirma que a falta de penetração das métricas nos projetos de software resulta da falta de ferramentas comerciais e de dados industriais reais, os quais podem fornecer uma evidência das poupanças de custo que devem persuadir a companhia a desenvolver tais ferramentas. O melhoramento do processo de gerenciamento dependerá da capacidade para identificar os métodos e parâmetros essenciais de controle do processo de desenvolvimento. Tudo isto pode ser alcançado através de um gerenciamento de software mais efetivo o qual por sua vez pode ser facilitado pelo uso de métricas de software mais adequadas. Metodologia de pesquisa Para o desenvolvimento deste trabalho foi realizada uma Pesquisa Avaliação que compreendeu a aplicação de um questionário com questões tipo fechadas e estruturado em três seções: (1) Orientada à identificação da indústria, (2) Orientada à identificação do tipo de software que a empresa desenvolve e (3) Orientada à identificação do sistema de medição da indústrias. Elaborado o questionário foi realizado um teste piloto com a finalidade de verificar a consistência e confiabilidade das questões. Este teste piloto foi aplicado a uma amostra de dez indústrias de software, as quais foram escolhidas aleatoriamente. Realizado o teste piloto e feitas as respectivas correções O questionário foi enviado a 197 indústrias via correio eletrônico, das quais 40 responderam. Os resultados obtidos foram avaliados em função da freqüência modal é dizer serão consideradas como válidas as respostas que apresentem a maior freqüência. Os resultados considerados como válidos foram comparadas com hipóteses levantadas no início do trabalho, as quais foram elaboradas com base na literatura pesquisada correspondente ao estudo da medição dos projetos de software. Resultados Os dados coletados mostraram que 63% das Indústrias de Software (pertencentes a nossa amostra) não usam indicadores de desempenho para avaliar o desenvolvimento de seus projetos de software, sendo que só um 8% usam indicadores sistematicamente. 80% 60% 40% 20% 0% Porcentagem Não tem Em estudo Sistemático Eventual 63% 28% 8% 3% Fig. 1- Porcentagem de Indústrias de Software que utilizam Sistemas de Indicadores para avaliar o desempenho do desenvolvimento de seus projetos de software. Como é verificado também na figura 1, existe uma grande porcentagem de Indústrias de Software que não usam indicadores de desempenho para a avaliação de seus projetos. Como é então feita a avaliação dos projetos nestas indústrias?. A figura 2 nos mostra que em média as Indústrias de Software que não possuem indicadores de desempenho, avaliam seus projetos de software em função das sugestões dos gerentes do projeto e da sua experiência profissional. Em geral, tanto as estimativas como a avaliação do progresso do projeto é realizado só quando é solicitado pelo cliente, e/ou quando se apresentam problemas graves na indústria. Não existe uma cultura pelo estabelecimento de indicadores de desempenho próprios da indústria, as indústrias desconhecem que os indicadores não só servem para informar das falhas e erros, mas também do benefícios alcançados e das futuras ações a tomar. 5 4 3 2 1 0 Média Sugestão Gerente Experien. Profiss. Projetos Anteriores Indicador Literatura 4,08 4 3,76 2,52 Fig. 2 – Critérios aplicados pelas indústrias de software que não usam indicadores para avaliar seus projetos. Os dados mostraram também que as Indústrias de Software que usam indicadores para a avaliação de seus projetos não elaboram estes indicadores em consistência com seus fatores críticos de sucesso. Pois ainda que a qualidade tenha sido identificada como a principal estratégia competitiva a ser alcançada por estas indústrias, seus indicadores estão mais orientados à avaliação das áreas de produtividade e custos, e não especificamente à avaliação das áreas que afetam a qualidade. Isto talvez possa ser justificado pela influência que ainda existe das sugestões dadas pelos gerentes do projeto (como fora verificado na figura 2) na avaliação dos projetos, sugestões que muitas vezes são feitas só com base na sua experiência e não seguindo os critérios de desenvolvimento de indicadores. FATORES CRÍTICOS DE SUCESSO ♦ Determinação dos requisitos (68%) ♦ Identificação do problema (55%) ♦ Documentação do projeto ( 35%) ♦ Módulos livres de erro (30%) INDICADORES ♦ Nro. Pontos de Função / hh (40%) ♦ Nro. Módulos projetados / hh (33%) ♦ Nro. Linhas de código / hh (27%) ♦ Faturamento / Nro. Funcionários (27%) Fig. 3 - Fatores Críticos de Sucesso e indicadores de desempenho nas Indústrias de Software. Verificou-se também que 0 40% das Indústrias de Software que possuem indicadores (pertencentes a nossa amostra) não utilizam métricas na elaboração dos seus indicadores. Portanto, não é freqüente nas Indústrias de Software que possuem indicadores o uso de métricas de software. Isto pode ser devido ao fato da falta de conhecimento das diferentes métricas de software por parte das Indústrias de Software. Fato que foi identificado como uma das causas para a ausência de uma sistema de indicadores. 40% 30% 20% 10% 0% Porcentagem Não usa Eventual Sempre Não conhece 40% 33% 20% 7% Fig. 4 – Porcentagem das Indústrias de Software que usam métricas. Com base no 7% das Indústrias de Software que usam métricas, identificamos que a métrica mais usada nestas indústrias é a métrica Pontos de Função (Function Point). O que pode ser confirmado também ao identificar que um dos indicadores mais usados pelas Indústrias de Software que possuem indicadores é aquele que relaciona o número de pontos de função sobre o número de homens-hora, como pode ser observado na figura a seguir. 40% FP / hh MOD / hh 33% TEST / hh 27% LOC / hh 27% LOCD / hh 13% MODD / hh 13% Outros 7% Fig. 5 – Indicadores de Desempenho mais usados pelas Indústrias de Software Ainda que a maioria das Indústrias de Software (pertencentes a nossa amostra) não possuam um programa de medição e portanto um sistema de indicadores de desempenho, verificamos que existe uma forte motivação para a elaboração e implantação de um sistema de indicadores, motivação guiada principalmente pelo desejo e necessidade de desenvolver projetos com melhor qualidade. No entanto, verifica-se também que o uso de indicadores está-se tornando uma necessidade para um melhor desempenho e controle do processo de desenvolvimento dos projetos de software, como é verificado na figura 6. 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% 4XDOL 'HVHP &RQWUR 3URGX 6XEVt $YDOLDU &RQFRU 2XWURV UHQWHV GDGH SHQKR ODU WLYLGDGH GLR 3RUFHQWDJHP Fig. 6 - Principais Razões para a Implantação de um sistema de indicadores Verificada a necessidade por parte das Indústrias de Software da adoção de um sistema de medidas, investigamos a causa da ausência destes sistemas de indicadores de desempenho. Neste sentido, identificamos que existem certos fatores que impedem a implantação e uso destes indicadores. Estes fatores podem ser observados na figura 7. Nesta figura observamos que entre os principais fatores que impedem implantação de um sistema de indicadores., temos: a falta de tempo por parte das Indústrias de Software para a implantação destes indicadores, a falta de uma metodologia dos processo de desenvolvimento do software, falta de conhecimento das métricas de software, entre outros. Como pode-se observar estes fatores, a excepção do primeiro que é o fator tempo, são fatores que deveriam ser de conhecimento das Indústrias de Software, por exemplo uma Indústria deve definir uma metodologia do desenvolvimento de seus projetos, com a finalidade que posteriormente facilite a análise e detecção de erros se for necessário nos diferentes processos de desenvolvimento, mas se não existe uma seqüência ou uma organização dos mesmos fica impossível detectar os erros e falhas. O conhecimento das diferentes métricas é outro fator que deveria ser comum entre as indústrias software, no entanto, apresenta-se como um fator pouco conhecido; isto concorda com o exposto na literatura, onde se disse, são muitas as métricas elaboradas pelos pesquisadores, mas são poucas as usadas pelo setor industrial. 80% 70% 60% 50% 40% 30% 20% 10% 0% P orcentagem F al ta F al ta F al ta F al ta Mu da R es is t Atuali T emp Metod conh e técn ic ambie da tecn ol Impla P roce métr ic ger en organi equ ip 76% 48% 40% 28% 28% 4% 4% F al ta rel ac áreas Outr o 4% 4% Fig. 7 - Principais causas para a ausência de um sistema de indicadores nas indústrias de software Conclusões As conclusões a seguir giram entorno das 40 Indústrias de Software que responderam nosso questionário. Ainda que programas de medição tenham sido identificados como de grande importância para o melhor controle dos processos de desenvolvimento de um projeto de software, existe uma forte tendência das Indústrias de Software do Estado de São Paulo (pertencentes a nossa amostra) a não usar indicadores de desempenho na avaliação do desenvolvimento de seus projetos de software. Geralmente projetos de software são avaliados com base na experi6encia profissional e as sugestões dadas pelos gerentes de projeto. As poucas Indústrias de Software que usam indicadores, não determinam estes indicadores em função dos seus fatores críticos de sucesso. O benefício e aplicação das métricas de software não é muito conhecido pelas Indústrias de Software, existe uma falta de conceito com relação a este termo. No entanto, entre as indústrias que usam indicadores, uma das métricas mais usadas na elaboração de seus indicadores é a métrica Pontos de Função. (Function Point) Uma das principais causas da ausência de um sistema de indicadores nas Indústrias de Software é a falta de tempo para sua implantação, tempo que é considerado longo demais, pois o processo de implantação teria que começar desde a definição e organização dos processos. Como fora verificado também, outras das causas para a ausência de um sistema de indicadores é que as Indústrias de Software não gerenciam o desenvolvimento de seus projetos , daí que, sem processos, sem atividades definidas será muito difícil medir e controlar os projetos. Bibliografia FENTON, N., “Software metrics: A Rigorous and Pratical Approach”, International Thomson Computer Press, PWS Publishing Company, 1991. FENTON, N. and PFLEEGER, S.; “Software metrics: A Practical and Rigorous Approach”, London, UK, Chapman and Hall, 1997. FENTON, N. AND NEIL, M., “Software metrics: successes, failures and new directions”, Journal of Systems and Software, nro.47, 1999, pp.149-157. GRADY, R.; CASWELL and DEBORSH, L., “Software Metrics: Establishing a Company-Wide Program”, Pretince Hall, 1987. GRADY, R., “Practical Software Metrics for Project Management and Process Improvement”,. Pretince Hall, 1992. GLASS, R., “A tabulation of topics where software practice leads software theory”, Journal of Systems Software, nro.25, 1994, pp. 219-222. INCE, D., “Introduction to Software Project management and Quality Assurance”, London, Mc Graw-Hill, 1993. MILLS, E., “Software Metrics”, SEI Curriculum Module SEI-CM-12-1.1, Software Engineering Institute, Pittsburg, PA, USA, 1988. PAULK, M., “Capability Maturity Model for software, version.1.1”, Tech. Report CMU/SEI-93TR24, ESD-93-TR-177, Software Engineering Institute, Carnegie Mellon University, Pittsburgh, 1993. PFLEEGER, S. et al., “Status report on software measurement”, IEEE Software vol.14, nro.2, 1997, pp.33-43. PRESSMANN, R., “Software Engineering: A Practitioners Approach”, McGraw-Hill, New York, 1987. PUTNAM, L. and MYERS, W., “Measures for Excellence: Reliable Software on Time, within Budget”, Englewood Cliffs, N.J.:P.T.R., Pretince Hall, 1992. PUTNAM, L. and MYERS, W., “Industrial Strength Software”, IEEE Computer Soc. Press, Los Alamitos, 1997. RUBIN, H., “Macro-Estimation of Software Development Parameters: The ESTIMACS System”, Proc. SOFTFAIR: A Conference on Software Development Tools, Techniques and Alternatives, New York: IEEE, 1983, pp. 109-118.