MINISTÉRIO DA AERONÁUTICA
DEPARTAMENTO DE PESQUISAS E DESENVOLVIMENTO
CENTRO TÉCNICO AEROESPACIAL
Instituto Tecnológico de Aeronáutica
Programa de Pós-Graduação em
Engenharia Eletrônica e Computação - Informática
Proposta de Pesquisa em nível de Mestrado
Análise empírica da variação de qualidade de produtos de software
desenvolvidos por métodos tradicionais e ágeis
Roberto Pepato Mellado
Bacharel em Ciência da Computação
Prof. Dr. Adilson Marques da Cunha
Orientador Proposto
Índice
1
Introdução ... 2
2
Contexto ... 2
3
Objetivo da Proposta de Pesquisa ... 4
4
Redução do Escopo ... 4
5
Especificação de Requisitos ... 4
6
Calendário Proposto ... 5
7
Teste de Hipótese ... 5
8
Referências Bibliográficas ... 6
8.1
Trabalhos Científicos Publicados ... 7
Lista de Siglas
XP - Extreme Programming TDD - Test Driven Development FDD - Feature Driven Development
1 Introdução
As metodologias ágeis para desenvolvimento de software vêm obtendo grande adoção por parte da indústria [1][2][3]. Este assunto tem chamado também a atenção da área acadêmica, que tem produzido numerosos estudos sobre o tema[4].
As técnicas utilizadas nas metodologias ágeis surgem de uma combinação de metodologias já existentes com ideias e práticas do campo da engenharia de software[5].
Estudos recentes[6] apontam a flexibilidade dos modelos de design e a capacidade de rápida resposta à mudanças como o terceiro maior benefício percebido por praticantes de métodos ágeis. A melhora na qualidade é apontada como o quinto maior benefício percebido.
Essa proposta de pesquisa tem por objetivo principal entender os impactos na qualidade interna e externa de produtos de software, através de aplicação de métodos ágeis com ênfase em boas práticas da engenharia de software.
2 Contexto
Dentre os benefícios alcançados através da adoção de métodos ágeis estão a alta satisfação dos clientes, baixos índices de defeito nos produtos de software, alta usabilidade e uma solução para o problema de requisitos instáveis[2].
Diversos princípios regem as metodologias ágeis. O Agile Manifesto[8], documento de grande expressividade no contexto de metodologias ágeis e da comunidade de desenvolvimento que a suporta,
software em curtos períodos e com valor agregado. Para que essa prioridade seja atingida, uma série de outros princípios são descritos, entre eles, a atenção contínua à excelência técnica. Abordagens feitas por metodologias ágeis dão ênfase na qualidade dos modelos de design, pois essa é uma característica essencial para a manutenção da agilidade.
XP, uma das metodologias ágeis de maior relevância na indústria, descreve com grande ênfase[9] a
utilização de boas práticas de engenharia de software como a realização de integração contínua de código, a realização de revisões através da programação em pares, entregas em curto espaço de tempo, desenvolvimento dos testes antes do desenvolvimento do código, refactoring, etc[10]. Outras metodologias ágeis populares e que seguem os mesmos princípios de XP são: Scrum, Crystal Methods e
FDD.
Uma atividade chave encontrada na maioria das metodologias ágeis é a realização de refactoring[1].
Refactoring é uma técnica de mudança do design e do código-fonte do sistema sem alterar a
funcionalidade ou comportamento externo do software[9]. Os principais objetivos da aplicação desta técnica são manter a simplicidade do código fonte e garantir que o mesmo possua atributos que evidenciem sua qualidade[11].
A realização de testes automatizados ocupa um papel de destaque nas metodologias ágeis[9]. A realização de ciclos de testes automatizados oferece um rápido retorno sobre a assertividade do código da aplicação produzida, além de segurança adicional para que os desenvolvedores de software possam realizar atividades de refactoring. A utilização de práticas como TDD, que prescrevem a construção de testes automatizados antes mesmo da criação do código da aplicação oferecem alguns benefícios para a qualidade interna e externa do software como por exemplo: alta cobertura de testes, melhor detecção de defeitos e baixa complexidade do código fonte [12].
A utilização desses métodos ganha destaque sobre o desenvolvimento de software tradicional pela capacidade de acomodar mudanças frequentes de requisitos em cronogramas de curto período de tempo. Estudos apontam a geração de produtos de software de qualidade por organizações que fazem uso desses métodos[2].
As características que definem a qualidade de um produto de software podem ser divididas em dois conjuntos: qualidade interna e qualidade externa[13]. As métricas da qualidade interna focam em atributos que podem ser medidos puramente em termos do produto de software examinando o produto alvo da medição. Alguns exemplos de métricas da qualidade interna são: complexidade ciclomática, número de linhas de código e percentual de linhas de código cobertas por testes automatizados [13].
As métricas da qualidade externa indicam o grau de qualidade referente ao comportamento do sistema percebido pelo usuário. Alguns exemplos desse tipo de métrica são: usabilidade, desempenho e interface com o usuário.
A extração de métricas internas da qualidade pode ser realizada de forma automatizada[14], sistematicamente e com baixo custo[13].
A extração de métricas externas da qualidade pode ser realizada através de avaliação heurística por especialistas, medidas de desempenho e também pela percepção do usuário do software em relação as métricas avaliadas.
Esse trabalho busca investigar quais são as características e dimensões da qualidade interna e externa em produtos de software construídos utilizando metodologias ágeis, que são impactadas positiva ou negativamente quando comparadas a outras abordagens para desenvolvimento de software.
3 Objetivo da Proposta de Pesquisa
Investigar métricas de qualidade interna e externa de produtos de software construídos com a utilização de metodologias e práticas tradicionais e ágeis, visando determinar a potencialidade de aplicação de determinadas metodologias aos processos de construção de software para obtenção de produtos de maior qualidade interna e externa.
4 Redução do Escopo
A adoção de uma determinada metodologia ou a mudança de uma metodologia em uso para uma nova metodologia pode provocar impactos em diversos aspectos organizacionais. Do ponto de vista da qualidade, a adoção de uma nova metodologia pode provocar impactos na qualidade de processos, de projetos e de produto. Este trabalho pretende analisar os aspectos relativos à qualidade interna e externa de produtos de software, após a implementação de uma metodologia ágil.
5 Especificação de Requisitos
Este trabalho de pesquisa deverá ser capaz de propiciar:
Um conjunto de métricas adequado para suportar a comparação de atributos de qualidade para produtos de software gerados por metodologias distintas;
Amostras de métricas da indústria para conclusões sobre os impactos gerados na qualidade interna e externa de produtos de software gerados através da utilização de metodologias ágeis; e Investigação sobre os impactos na qualidade externa através de melhoria nas métricas da
6 Calendário Proposto
Atividade
Início
Fim
Domínio de Métodologias Ágeis para Desenvolvimento de Software
ago/10
out/10
Definição das Questões-Chave para Avaliação de Impcatos na Qualidade
out/10
fev/11
Definição das Métricas da Qualidade
out/10
fev/11
Obtenção de métricas de projetos desenvolvidos usando metodologias ágeis
fev/11
jan/12
Obtenção de métricas de projetos desenvolvidos usando metodologias tradicionais
fev/11
jan/12
Análise dos Resultados
jan/12
mar/12
Formalização e defesa de tese de mestrado
mar/12
nov/12
7 Teste de Hipótese
Este trabalho busca, além dos objetivos descritos no item três deste documento, validar a hipótese, considerando:
Hipótese Nula ou H0: Aspectos indicativos de boa qualidade interna e externa de software estão
relacionados à utilização de métodos e modelos prescritivos de desenvolvimento;
Hipótese Alternativa ou H1: Software construído através de métodos e modelos empíricos, com ênfase
em inspeção e adaptação, possui maior qualidade interna e externa quando comparado a software produzido através de métodos e modelos prescritivos.
8 Referências Bibliográficas
[1] DUMKE R. R., SCHMIETENDORF A., KUNZ M., GORGIEVA K., “Software metrics for agile software
development”, Software Engineering Group, University of Magdeburg, Disponível em: http://www.smlab.de/DumkeSQSpaper09.pdf, Acesso em: Julho de 2010.
[2] BHALERAO S., PUNTAMBEKAR D., INGLE M., “Generalizing agile software development life cycle ”, Acropolis Institute of Technology and Research, Disponível em: http://www.enggjournals.com/ijcse/doc/IJCSE09-01-03-19.pdf, Acesso em: Julho de 2010.
[3] WEST D., GRANT T., “Agile development: Mainstream adoption has changed agility”, Disponível em: http://www.ca.com/files/IndustryAnalystReports/agile_development_mainstream_232616.pdf, Acesso em: Julho de 2010.
[4] GOLDMAN A., KATAYAMA E., “Retrato da comunidade acadêmica de métodos ágeis no Brasil ”, Disponível em: http://www.agilcoop.org.br/files/pesquisadores.de_.metodos.ageis_.pdf, Acesso em: Julho de 2010.
[5] STRODE D., HUFF S., TRETIAKOV A., “The impact of organizational culture on agile methods use”, 42nd Hawaii International Conference on System Sciences – 2009, Disponível em: csdl2.computer.org/comp/proceedings/hicss/2009/3450/00/10-01-02.pdf, Acesso em: Julho de 2010. [6] BEGEL A., NAGAPPAN N., “Usage perceptions of agile software development in an industrial context:
an exploratory study”, Microsoft Research, Disponível em: http://research.microsoft.com/pubs/56015/AgileDevatMS-ESEM07.pdf, Acesso em: Julho de 2010.
[8] FOWLER M., HIGHSMITH J.., “The agile manifesto”, Disponível em: http://www.drdobbs.com/184414755, Acesso em: Julho de 2010.
[9] BECK K., “Extreme programming explained: embrace change”, Addison-Wesley, 2004.
[10] LIVERMORE J., “Factors that significantly impact the implementation of an agile software
development methodology”, Journal Of Software, Vol. 3, No. 4, Abril de 2008, Disponível em:
http://www.academypublisher.com/ojs/index.php/jsw/article/viewFile/03043136/972, Acesso em: Julho de 2010.
[11] FOWLER M., “Refactoring: improving the design of existing code”, Addison-Wesley, 2000.
[12] GUERRA E., SILVEIRA F., FERNANDES C., “ClassMock: a testing tool for reflective classes which
consume code annotations”, ITA – Instituto Tecnológico de Aeronáutica, Conferência Brasileira Sobre
Métodos Ágeis de Desenvolvimento de Software, 22-25 de Junho, 2010, Porto Alegre.
[13] STAVRINOUDIS D., XENOS M., “Comparing internal and external software quality measurements”, Proccedings of the 8th Joint Conference on Knowledge-Based Software Engineering, IOS Press, pp. 115-124, Piraeus, Greece, August 25-28, 2008, Disponível em:
http://quality.eap.gr/Publications/XM/Conferences%20English/C53%20-%20Comparing%20Int%20and%20Ext%20Sw%20Q%20Measurements.pdf, Acesso em: Julho de 2010. [14] MOREIRA G. S. P., Mellado R. P., Montini D. A., Dias L. A. V., CUNHA A. M.,“Software product
measurement and analysis in a continuous integration environment ”, Information Technology: New
Generations, Third International Conference on, pp. 1177-1182, 2010 Seventh International Conference on Information Technology, 2010, Disponível em: http://www.computer.org/portal/web/csdl/doi/10.1109/ITNG.2010.85, Acesso em: Julho de 2010.
8.1 Trabalhos Científicos Publicados
O autor desta proposta de pesquisa vêm atuando em pesquisa e produção de trabalhos científicos, envolvendo as Etapas de Pesquisa, objetivando produzir uma base de conhecimento sólida para desenvolvimento de dissertação de Mestrado..
[14] MOREIRA G. S. P., MELLADO R. P., MONTINI D. A., DIAS L. A. V., CUNHA A. M.,“Software product
measurement and analysis in a continuous integration environment ”, Information Technology: New
Generations, Third International Conference on, pp. 1177-1182, 2010 Seventh International Conference on Information Technology, 2010.