No dia 01/12/2017 (sexta-feira), às 8 horas na sala E423 do Centro de Informática ocorreu a defesa de doutorado de Waldemar Pires Ferraira Neto, cujo o tema tratava da construção de uma ferramenta CASE para auxiliar na execução de experimentos envolvendo codificação ne Engenharia de Software. Durante a leitura da tese de Nto, me deparei com um breve resumo, ou melhor, uma suscinta explicação sobre os principais métodos, por assim dizer, da Engenharia da Software Experimental.
A pesquisa em Engenharia de Software (ES) investiga eventos do mundo real para promover o desenvolvimento de novos mecanismos (como tecnologias, processos, métodos, técnicas e ferramentas) para apoiar suas atividades. Visa melhorar a qualidade dos produtos de software e aumentar a produtividade do processo de desenvolvimento (WEYUKER, 2011). Resumidamente, a pesquisa em engenharia de software está preocupada em investigar como funcionam os mecanismos, entender seus limites e propor soluções. Neste contexto, os métodos empíricos fornecem uma maneira consistente para validar o fenômeno da ES, gerando evidências mais precisas e facilitando a transferência de tecnologia para a indústria (SJOBERG; DYBA; JORGENSEN, 2007). Por outro lado, a ES é fortemente influenciada por fatores humanos (da mesma forma que ciências como as ciências sociais e comportamentais). Portanto, os fatores humanos têm um impacto significativo no processo de desenvolvimento de software e na qualidade do software produzido. Além disso, apesar dos esforços de atividades relacionadas à produção de software, a ES ainda depende da influência humana (ROBSON, 2016). Como resultado, a SE e os estudos empíricos enfrentaram várias dificuldades relacionadas a fatores humanos.
Conforme foi bem pontuado por Neto em sua tese, os fatores humanos têm uma importância fundamental na ES. Portanto, os métodos empíricos mais apropriados são aqueles de disciplinas relacionadas ao estudo do comportamento humano, como a psicologia (quanto ao nível individual do comportamento humano) ou a sociologia (em relação à equipe e aos níveis organizacionais). Métodos adaptados para essas disciplinas têm falhas conhecidas, e cada uma só pode fornecer evidências limitadas e qualificadas sobre os fenômenos em estudo. No entanto, cada método é falho de forma diferente, e as estratégias de pesquisa viáveis usam métodos múltiplos, escolhidos de forma tal que o uso de métodos complementares abordem as fraquezas de cada método (EASTERBROOK et al., 2008). A seguir, Neto fez um resumo de cada um dos métodos, para esclarecer onde cada um atua e suas princiais características.
Experimentos
Um experimento (ou experimento controlado) é uma pesquisa sobre uma hipótese testável onde uma ou mais variáveis são gerenciadas para medir seu efeito em uma ou mais variáveis dependentes. Uma condição prévia para a experimentação é uma hipótese clara. A hipótese (e qualquer teoria a partir da qual ela é desenhada) conduzem todas as etapas do projeto experimental, incluindo decidir quais variáveis devem ser cobertas e como mensurá-las.
Estudos de Caso
Yin (2013) define estudo de caso como “uma pesquisa empírica que investiga um fenômeno contemporâneo em seu contexto da vida real, especialmente quando os limites entre fenômeno e contexto não são evidentes”. Além disso, estudos de caso oferecem uma compreensão aprofundada de como e por que ocorrem certos fenômenos. Uma condição prévia para realizar um estudo de caso é uma pergunta de pesquisa clara relacionada com a forma ou por que certos fenômenos ocorrem.
Survey
Survey é usado para identificar características de uma grande população. Está mais intimamente ligado aos questionários para a coleta de dados. No entanto, surveys também podem usar entrevistas estruturadas ou técnicas de registro de dados. As principais características de uma pesquisa por survey são (i) a seleção de uma amostra representativa de uma população, e (ii) as técnicas de análise de dados utilizadas para generalizar os resultados da amostra para a sua população. Uma condição prévia para a realização de um survey é uma questão de pesquisa clara que exige informações sobre a natureza de uma população alvo específica.
Etnorafias
A etnografia é uma estratégia empírica concentrada na sociologia do significado através da observação de campo. O objetivo é investigar uma comunidade de pessoas para entender como seus membros interagem. Na ES, a etnografia geralmente é adotada para examinar como as comunidades técnicas desenvolvem uma cultura de práticas e estratégias de comunicação que lhes permitem executar uma tarefa de forma colaborativa. As condições prévias para um estudo etnográfico incluem questões de pesquisa focadas em aspectos culturais de uma determinada comunidade ou acesso a membros dessa comunidade.
Pesquisa-ação
Na pesquisa-ação, os pesquisadores tentam resolver um problema do mundo real enquanto investigam simultaneamente a experiência de resolver esse problema. Embora a maioria dos métodos de pesquisa empírica procure observar o mundo tal como existe atualmente. Os pesquisadores de ação buscam interceder em situações estudadas com o propósito explícito de melhorar a situação. Uma condição prévia para a pesquisa-ação de um problema, é que as pessoas envolvidas tenham vontade de colaborar para identificar um problema e resolvê-lo seguindo uma abordagem empírica.
Métodos combinados
Além dos métodos anteriormente mencionados, Easterbrook et al. (2008) citam outra abordagem combinando esses métodos. A escolha de cada método depende de pré-requisitos de investigação, objetivo da pesquisa, recursos disponíveis e como os dados devem ser coletados e analisados. Easterbrook et al. (2008) apresenta mais detalhes sobre essa abordagem.
Não obstante as perspectivas associadas à Engenharia de Software Empírica, estudos obtiveram uma baixa avaliação empírica na ES, dificultando seu progresso como ciência e adiando a adoção de novas tecnologias (TICHY, 1998; JURISTO; VEGAS, 2009; SJØBERG et al., 2005; FALCAO , 2016). Além disso, Juristo & Moreno (2013) apresenta alguns argumentos citados contra o uso de métodos empíricos: falta de treinamento nesses métodos do lado dos profissionais, dificuldades em entender e analisar dados empíricos; estudos empíricos realizados para verificar idéias de outros não são frequentemente publicados. Neste contexto, SJØBERG et al. (2005) identificaram uma discrepância entre o número de experiências e o número de novas tecnologias que surgem na ES. Wohlin & Aurum (2015) cita outros fatores que se tornam pesquisas empíricas em ES especialmente desafiadoras. Por exemplo, além de estudar o uso da tecnologia, também é necessário investigar os processos sociais e cognitivos associados às atividades humanas. Neste contexto, os pesquisadores devem ter uma base sólida ao escolher métodos e diretrizes para realizar um estudo empírico (WOHLIN; AURUM, 2015).
References
- Easterbrook S., Singer J., Storey MA., Damian D. (2008) Selecting Empirical Methods for Software Engineering Research. In: Shull F., Singer J., Sjøberg D.I.K. (eds) Guide to Advanced Empirical Software Engineering. Springer, London
- FALCÃO, L. C. T. Analysis of Human-Centric Software Engineering Experiments: a systematic mapping study. 2016. Dissertação (Mestrado em Ciência da Computação) — Center of Informatics - Federal University of Pernambuco, Recife - Brazil.
- Natalia Juristo and Sira Vegas. 2009. Using differences among replications of software engineering experiments to gain knowledge. In Proceedings of the 2009 3rd International Symposium on Empirical Software Engineering and Measurement (ESEM ‘09). IEEE Computer Society, Washington, DC, USA, 356-366. doi: 10.1109/ESEM.2009.5314236
- Natalia Juristo & Ana M. Moreno. Basics of software engineering experimentation. [S.l.]: Springer Science & Business Media, 2013.
- Colin Robson, K. Real world research. [S.l.]: John Wiley & Sons, 2016.
- D. I. K. Sjoeberg et al., “A survey of controlled experiments in software engineering,” in IEEE Transactions on Software Engineering, vol. 31, no. 9, pp. 733-753, Sept. 2005. doi: 10.1109/TSE.2005.97
- D. I. K. Sjoberg, T. Dyba and M. Jorgensen, “The Future of Empirical Methods in Software Engineering Research,” Future of Software Engineering, 2007. FOSE ‘07, Minneapolis, MN, 2007, pp. 358-378. doi: 10.1109/FOSE.2007.30
- W. F. Tichy, “Should computer scientists experiment more?,” in Computer, vol. 31, no. 5, pp. 32-40, May 1998. doi: 10.1109/2.675631
- E. J. Weyuker, “Empirical Software Engineering Research - The Good, The Bad, The Ugly,” 2011 International Symposium on Empirical Software Engineering and Measurement, Banff, AB, 2011, pp. 1-9. doi: 10.1109/ESEM.2011.66
- Wohlin, C. & Aurum, A. Empir Software Eng (2015) 20: 1427. https://doi.org/10.1007/s10664-014-9319-7
- Robert K. Yin. Case study research: design and methods. [S.l.]: Sage publications, 2013.
Artigo originalmente publicado em Estudos Empíricos na Engenharia de Software :: viniciusgarcia.me