Aplicação de Pontos por Função em Projetos que Usam Métodos Ágeis

July 5, 2017 | Autor: Eduardo Wanderley | Categoria: Agile software development, Function Points
Share Embed


Descrição do Produto

Aplicação de Pontos por Função em Projetos que Usam Métodos Ágeis Aluno Eduardo Garcia Wanderley Orientador Prof. Dr. Alexandre Marcos Lins Vasconcelos Co-Orientador Prof. Dr. Bruno Tenório Ávila Pós-graduação em Ciência da Computação – Centro de Informática (CIn) Universidade Federal de Pernambuco (UFPE) – Pernambuco, PE – Brasil {egw,amlv,bta}@cin.ufpe.br

Nível: Mestrado Ano de Ingresso: março de 2013 Previsão de Conclusão: março de 2015 Aprovação da Proposta: não há qualificação para mestrado no Cin-UFPE Evento Relacionado: SBES Resumo. Contexto: O desenvolvimento ágil tem se tornado cada vez mais comum no ambiente de desenvolvimento de software, contudo estimativas de tamanho em projetos de software que usam metodologias ágeis são feitas de maneira diferente das realizadas em projetos tradicionais. Objetivo: Este artigo apresenta o progresso de uma análise comparativa entre as diferentes abordagens de aplicação da Análise de Pontos de Função (APF) em projetos de software que fazem uso de alguma metodologia ágil existente no mercado. Método: Através de uma revisão sistemática, serão discutidos, de forma comparativa e funcional, os conceitos de metodologia ágil e de APF e seu trabalho em conjunto para a resolução de problemas em medição de software. Por meio de uma pesquisa experimental, empírica e controlada, as propostas existentes na literatura são avaliadas no intuito de testar sua aplicação e analisar seus resultados. Resultados esperados: Espera-se desta forma, definir os pontos de convergência e de divergências entre as metodologias ágeis e os elementoschave da APF; identificar as possibilidades de aplicação desta integração e apresentar uma análise detalhada sobre as propostas de aplicação da APF em projetos de software com metodologias ágeis existentes na literatura. Palavras-chave. Pontos de Função, Métricas de Software, Metodologias Ágeis, Gerenciamento, Medição.

1. INTRODUÇÃO A demanda por produtos e serviços na área de tecnologia de informação vem crescendo continuamente, contudo os orçamentos e cronogramas estão cada vez mais inflexíveis devido, por exemplo, à necessidade de redução de custos e cumprimentos de prazos cada vez mais curtos. Para isso, aumentar a qualidade e produtividade do desenvolvimento de software é primordial para qualquer organização que lida com projetos de tecnologia da informação [Mens et al., 2001]. Desta forma, o uso de métricas torna-se essencial para o controle desses projetos. Selecionar métricas adequadas para poder mensurar custos e receitas não é uma tarefa fácil, principalmente devido as inúmeras transformações que acontecem constantemente na área de tecnologia da informação. Isso leva a importantes questionamentos: Quanto vamos cobrar ao cliente pelo desenvolvimento de um projeto de software? Quanto vai custar o desenvolvimento desse projeto de software? Como podemos medir o que a fábrica de software contratada fez? Esses questionamentos levaram as organizações a adotar a técnica de Análise de Pontos de Função (APF) [Albrecht, 1979] como critério de mensuração de custos a pagar pelos seus produtos, e seus sistemas de informação. No âmbito da Administração Pública Brasileira, foi criada a lei nº 8.666 [Lei 8666, 1993], que estabelece normas gerais sobre licitações e contratos administrativos, indica que deve-se de forma clara e objetiva mensurar o tamanho do software pedido e esforço de desenvolvimento do mesmo e uma das principais formas de mensuração feita é através da APF. Essa também tornou-se referência para estimativas formais de tamanho funcional de software sendo esta normatizada através da ISO 20926 [ISO 20926, 2009]. No entanto, em projetos de software que utilizam metodologias ágeis, as estimativas são realizadas de maneira distinta das realizadas em projetos tradicionais. Iterações rápidas e curtas, rápido feedback são algumas características diferenciadas de projetos que utilizam metodologias ágeis e, por isso, podem não se adequar às técnicas e métodos mais conhecidos de estimativa de esforço. O primeiro passo do processo de medição em APF, por exemplo, consiste em buscar a documentação disponível sobre o sistema e/ou projeto que será medido. Uma documentação adequada pode incluir requisitos, modelos de dados/objetos, diagramas de classe, diagramas de fluxo de dados, casos de uso, descrições procedurais, layout de relatórios e telas, manuais de usuário e outros artefatos do desenvolvimento de software [IFPUG, 2010]. Nenhum destes documentos é comum em métodos ágeis. Assim, técnicas particulares para metodologias ágeis vêm sendo criadas e utilizadas nos projetos [Fuqua, 2003]. Com a ascensão das metodologias ágeis nos meios empresariais [Abrahamsson et al., 2002], torna-se necessário a detecção de uma forma de relacionar pontos de função com métodos ágeis. Este trabalho está organizado da seguinte forma. A Seção 2 introduz a fundamentação teórica da pesquisa. A Seção 3 discute os objetivos e metas da pesquisa. A Seção 4 explora os métodos de pesquisa utilizados e o estado atual da pesquisa. A Seção 5 expõe os trabalhos relacionados e, na Seção 6, a contribuição esperada é apresentada.

2. FUNDAMENTAÇÃO TEÓRICA 2.1 Metodologias Ágeis As metodologias ágeis são abordagens para desenvolvimento de software baseadas no desenvolvimento iterativo e incremental, no envolvimento direto do cliente no processo, na entrega rápida de features de maior valor de negócio e em respostas rápidas às mudanças [Sommerville, 2011]. Elas compartilham princípios comuns entre si, definidos em fevereiro de 2001 por profissionais da comunidade ágil que sentiram a necessidade de diferenciar essa abordagem da tradicional, sintetizando seus pilares no Manifesto Ágil [Agile Manifest, 2001], o qual afirma: Estamos descobrindo melhores maneiras de desenvolver software, fazendo-o e ajudando os outros fazê-lo. Através deste trabalho devemos valorizar: indivíduos e interações sobre processos e ferramentas; software desenvolvido sobre documentação abrangente; a colaboração do cliente sobre negociação de contratos; respondendo a mudanças mais que seguir um plano; ou seja, enquanto há valor nos itens à direita, nós valorizamos os itens mais à esquerda. (Agile Manifest, 2001)

As metodologias ágeis são abordagens atuais para criação de software baseada na colaboração com o cliente, trabalho em equipe, desenvolvimento iterativo e incremental, e com respostas rápidas às mudanças. Essas metodologias estão se tornando alternativas ao desenvolvimento de software tradicional, pois eliminam a dependência em realizar um extenso planejamento inicial e documentação dos requisitos do sistema, dando ênfase na flexibilidade, comunicação informal e código funcionando. Cockburn e Highsmith [Cockburn et al., 2001], afirmam que as metodologias ágeis enfatizam talentos e habilidades inerentes aos indivíduos, moldando o processo as pessoas e equipes específicas. Portanto, para uma metodologia se enquadrar na categoria de metodologias ágeis, segundo Abrahamsson [Abrahamsson et al., 2002], deve utilizar o desenvolvimento iterativo e incremental, valorizar a colaboração e comunicação entre cliente e toda a equipe, e ser adaptativa, com capacidade de responder às mudanças. Em projetos ágeis, os requisitos a serem desenvolvidos são expressos na forma de estórias feitas por usuários [Leffingwell et al., 2009]. E um dos métodos mais populares de dimensionamento destas estórias é uso de Story Points, que são unidades subjetivas de estimativa obtida por equipes ágeis. Neste método, uma equipe se compara a estória do usuário a uma ou mais estórias semelhantes e dá à estória um tamanho em termos de Story Points ou "dia ideal de trabalho". O número de Story Points associados com uma estória representa o tamanho global da estória. Não há uma fórmula definida para definir o tamanho de uma estória [Santana et al., 2011]. Cada equipe pode definir Story Points como quiser. Assim, com base nas metodologias ágeis, diversos metodologias têm sido propostas, tais como: Adaptative Software Development, Crystal, Dynamic Systems Development, eXtreme Programming (XP), Feature Driven Development e Scrum. 2.2 Análise de Pontos por Função (APF) Análise de pontos por função é uma técnica que permite medir a funcionalidade de um software ou aplicativo sob a visão do usuário e a partir da descrição dos requisitos do usuário.

De acordo com a técnica de APF, uma aplicação de software, vista sob a ótica do usuário, é um conjunto de funções ou atividades do negócio que o beneficiam na realização de suas tarefas [IFPUG, 2010]. Desde a sua criação em 1986, a International Function Point Users Group (IFPUG) vem continuamente, aprimorando o método de dimensionamento de software. A versão atual (4.3.1) da IFPUG sobre o método está publicada no The Counting Practices Manual. Este manual classifica os seguintes tipos de elementos funcionais: 1. Entrada Externa – EI (External Input) – transações lógicas onde dados entram na aplicação e mantêm dados internos; 2. Saída Externa – EO (External Output) – transações lógicas onde dados saem da aplicação para fornecer informações para usuários da aplicação; 3. Consulta Externa – EQ (External Query) – transações lógicas onde uma entrada solicita uma resposta da aplicação; 4. Arquivos Lógicos Internos – ILF (Internal Logical File) – grupo lógico de dados mantido pela aplicação; 5. Arquivos de Interface Externa – EIF (External Logical File) – grupo lógico de dados referenciado pela aplicação, mas mantido por outra aplicação. A complexidade das transações é baseada utilizando dois dados: 1. O número de Arquivos Referenciados – FTR (File Types Referenced); 2. O número de Itens de Dados Referenciados – DET (Data Element Type). Os elementos identificados são totalizados para calcular os pontos por função nãoajustados. Em seguida, o fator de ajuste é calculado a partir de 14 características gerais dos projetos que permitem uma avaliação geral da funcionalidade da aplicação. A cada característica é atribuída um peso variando de 0 até 5, de acordo com o nível de influência na aplicação. O nível de influência geral é obtido pelo somatório do nível de influência de cada característica e o fator de ajuste é obtido pela expressão: Fator de Ajuste = 0,65 + Nível de Influência Geral × 0,01. O total de pontos por função da aplicação será encontrado mediante a multiplicação do número de pontos por função não ajustados pelo fator de ajuste.

3. PROPOSTA DA PESQUISA A pesquisa se propõe a apresentar uma análise comparativa entre as diferentes abordagens de aplicação da APF em projetos de software que fazem uso de alguma metodologia ágil existente na literatura. As abordagens, escolhidas através da revisão sistemática, serão aplicadas em projetos reais de uma empresa pública municipal e analisadas sobre vários pontos de vista: facilidade do uso, facilidade de aprendizagem, grau de precisão da medição e tempo gasto para se fazer a medição. Após aplicação e análise das abordagens, será feito um relatório contendo o resultado do experimento, os pontos fortes e fracos de cada abordagem e uma recomendação de quando usar uma determinada abordagem e a sua justificativa.

4. METODOLOGIA E PROGRESSO Antes da definição do método de pesquisa, Easterbrook [Easterbrook et al., 2008] recomendam que seja definido o posicionamento filosófico a ser seguido pela pesquisa, podendo ser: positivista, construtivista, teoria crítica ou pragmático. O posicionamento filosófico escolhido foi o pragmático, pois o mesmo considera o conhecimento prático, e o uso de métodos de pesquisa mista. O posicionamento

Pragmático acredita que todo conhecimento é aproximado e incompleto, e seu valor depende dos métodos pelos quais foi obtido, sendo portanto, a verdade relativa ao observador [Easterbrook et al., 2008]. A abordagem escolhida foi a indutiva, caracterizada por partir de um conjunto de dados particulares, suficientemente constatados (amostra), inferindo-se uma verdade universal, não contida nas partes examinadas (população) [Marconi et al., 2008]. O escopo da pesquisa envolveu dois métodos de pesquisa: revisão sistemática da literatura [Kitchenham et al., 2007], como forma de analisar e interpretar um conjunto de dados obtidos na literatura existente sobre uma questão de investigação particular, área temática ou fenômeno de interesse, baseando-se em evidências; e a partir dos estudos escolhidos na revisão, um experimento controlado [Juristo et al., 2010], como forma de analisar as abordagens existente e a partir desta análise avaliar qual a melhor forma de utilizar pontos de função em projetos que utilizam metodologias ágeis para o desenvolvimento de software. A análise do experimento será feita levado em consideração os valores obtidos sobre os aspectos da precisão do valor estimado e do tempo gasto para se chegar ao valor estimado. Com relação ao progresso da pesquisa, a revisão sistemática já foi realizada e as abordagens existentes já foram escolhidas: Extending Function Point Analysis [Banerjee et al., 2012], Function Point Analysis and Cost Estimation in An Agile Development Environment [Alexander, 2009] e Agile Estimation Using Functional Metrics [Cagley, 2009]. O planejamento do experimento controlado está na fase de validação. A Tabela 1 mostrar o cronograma da pesquisa. Tabela 1. Cronograma da pesquisa. Atividade/Período

2013.1

2013.2

2014.1

2014.2

1. Estudo Inicial e Créditos do Mestrado 2. Revisão Sistemática e Planejamento do Experimento 3. Execução do Experimento e Análise dos Resultados 4. Escrita da Dissertação

5. TRABALHOS RELACIONADOS Não foi encontrado nenhum estudo de comparação semelhante ao proposto. No entanto, foram encontrados trabalhos específicos sobre o uso de APF em métodos ágeis. Santana [Santana et al., 2011] realizou uma pesquisa sobre o relacionamento entre Pontos de Função e o valor inicial de Story Points descobertos após o planning poker de SCRUM. Cong e Cao [Cong et al., 2013] fizeram uma revisão sistemática sobre formas de medição de software existentes. Banerjee [Banerjee et al., 2012] observou que existe uma correlação linear entre o esforço consumido e o tamanho estimado de cada iteração.

6. CONTRIBUIÇÃO ESPERADA E TRABALHOS FUTUROS A proposta desta pesquisa é examinar as soluções existentes no uso de pontos por função em projetos de software que utilizam metodologias ágeis e determinar a melhor abordagem. O principal desafio deste trabalho é encontrar uma proposta de uso que seja de fácil utilização e que realmente faça o relacionamento entre as metodologias de forma correta e concisa. Como contribuição, espera-se que a partir da análise feita pelo estudo das diferentes soluções, as empresas que precisem realizar este tipo de medição possam

usar o estudo como base para a escolha de qual solução lhe atende melhor e, assim, escolher a que mais lhe satisfizer. Considerando que o experimento possui um número limitado de propostas e projetos, é interessante que o estudo seja ampliado para que os resultados possam ser generalizados e aproveitados por empresas de diferentes perfis.

REFERÊNCIAS Abrahamsson P.; Salo, O.; Ronkainen J.; Warsta J., 2002; “Agile software development methods Review and analysis”. VTT Publications, Finland. Agile Manifest, 2001; Disponível em http://agilemanifesto.org. Albrecht A. J., 1979; Measuring Application Development Productivity. In Proc. IBM Applications Development Symposium. GUIDE Intl. and Share Inc., IBM Corp., Monterey, pp. 83. Alexander A. J., 2011; Case Study: Function Point Analysis and Cost Estimation in An Agile Development Environment. Disponível em http://www.devdaily.com/fpa/fpa-louisville-agile/. Banerjee A. U.; Narayanan B. K.; Mahadevan P C., 2012; Estimating Agile Iterations by Extending Function Point Analysis. In: WORLDCOMP’12. Cagley T., 2009; Agile Estimation Using Functional Metrics. The IFPUG Guide to IT and Software Measurement IFPUG CRC Press. Cockburn, A.; Highsmith, J., 2001; “Agile Software Development: The Business of Innovation” Journal Computer archive Volume 34 Issue 9, September 2001 Page 120-122. Cong D. N.; Cao D. T., 2013; A Review of Effort Estimation Studies in Agile, Iterative and Incremental Software Development. 2013 IEEE RIVF Intl. Conf. on Computing & Communication Technologies Research, Innovation, and Vision for the Future (RIVF). Easterbrook, S., Singer, J., Storey, M. A., & Damian, D. (2008). Selecting empirical methods for software engineering research. In Guide to advanced empirical software engineering (pp. 285-311). Springer London. Fuqua, A. M., 2003; “Using Function Points in XP-Considerations”. In: Extreme Programming and Agile Processes in Software Engineering, LNCS vol. 2675/2003, pp. 1013. IFPUG, 2010: Function Point Counting Practices Manual, v4.3.1. Disponível em http://www.ifpug.org ISO 20926, 2009: Disponível em http://www.iso.org/iso/iso_catalogue/catalogue_tc/ catalogue_detail .htm?csnumber=35582. Juristo N., Moreno A. M.: 2010; Basics of software engineering experimentation. Kluwer Academic Publishers. Kitchenham, B.; Charters, S. 2007; Guidelines for performing systematic literature reviews in software engineering, Technical Report EBSE-2007-01, School of Computer Science and Mathematics, Keele University. Leffingwell D., Behrens P. 2009; A User Story Primer, Leffingwell, LLC. Lei 8666, 1993: Disponível em http://www.planalto.gov.br/ccivil_03/leis/l8666cons.htm. Marconi, M. A.; Lakatos, E. M., 2008; Metodologia Científica. 6a. ed. São Paulo: Atlas. Mens, T.; Demeyer, S., 2001; Future Trends in Software Evolution Metrics. IWPSE '01 Proceedings of the 4th International Workshop on Principles of Software Evolution, pp. 83-86. Santana, C. A. ; Leoneo, F. S. ; Gusmão, C. M. G. ; Vasconcelos, A. M. L. , 2011; Using Function Points in Agile Projects. 12 Int. Conf. Agile Processes and eXtreme Programming in Software Engineering. Sommerville, I., 2011; Engenharia de Software. Editora Addison-Wesley.

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.