Escolar Documentos
Profissional Documentos
Cultura Documentos
Resumo: Este artigo introduz o papel do Empirismo de uma forma geral, partindo do conceito, importância e
aplicabilidade do mesmo em Engenharia de software, a fim de despertar a busca para a melhoria da situação
atual, criar melhores estudos empíricos e tirar interpretações mais sólidas para o futuro. Tem como objetivo
apresentar uma estrutura geral para aplicação dos estudos empíricos em software e os passos concretos para
aplicar melhores estudos nos projetos, a coleta de dados mais efetiva, a importância do trabalho em grupo e o
envolvimento de outros pesquisadores das mais variadas áreas. Exemplifica o tema através de três estudos de
casos. O primeiro caso é um projeto de pesquisa que avalia a efetividade da arquitetura de groupware através
de um experimento controlado, comparando o desempenho dos grupos “cara a cara” com os grupos
distribuídos, baseando-se na qualidade dos perfis de hipótese, desenvolvidos por ambos os tipos de grupo. O
segundo caso é uma avaliação da influência da aplicação de técnicas ágeis, notadamente XP e SCRUM, no
processo de desenvolvimento de software sob os aspectos do uso da comunicação. O terceiro estudo de caso
destaca o uso dos métodos empíricos de forma a permitir que as pesquisas possuam resultados válidos e críveis.
Analisa a relação entre as preferências e as percepções sobre o clima em uma equipe e a relação entre o clima
desejado-percebido e a qualidade no desenvolvimento de um software utilizando-se uma variação de XP.
Abstract: This article introduces the role of Empiricism in general, based on the concept, importance and
applicability of it in engineering software in order to awaken the quest to improve the current situation, create
better empirical studies and interpretations get stronger for the future. Aims at presenting a framework for
applying the empirical studies in software and concrete steps to implement best studies on the projects, the data
collection more effective, the importance of working in groups and the involvement of other researchers from
many different areas. Exemplifies the theme through three case studies. The first case is a research project that
evaluates the effectiveness of the architecture of the groupware through a controlled experiment, comparing the
performance of groups "face to face" with the groups distributed based on the quality of profiles of hypothesis,
developed by both the type of group. The second case is an evaluation of the effects of applying agile techniques,
especially XP and Scrum in the software development process under the aspects of the use of the communication.
The third case study highlights the use of empirical methods to enable the research results are valid and
credible. Examines the relationship between preferences and perceptions about the climate in a team and the
relationship between climate and the perceived quality-liked in the development of software using a variation of
XP.
1. INTRODUÇÃO
Os estudos empíricos são apenas testes que comparam o que acreditamos ao que
vemos. Porém, se tais testes, forem sabiamente construídos, executados e utilizados para
apoiar o método científico, os mesmos passam a ter um papel fundamental na ciência
moderna. Especificamente, eles nos ajudam a entender como e por que as coisas funcionam, e
nos permitem usar esta compreensão para alterar nosso mundo materialmente. Entretanto,
observa-se que nas pesquisas de Engenharia de Software, os métodos empíricos não tiveram
tanto êxito, comparado ao seu amplo uso nas outras ciências.
Possuem, de modo geral, planejamentos estatísticos pobres, não fazem a diferença dos
grandes sistemas e são administrados em um curto espaço de tempo (FENTON, PFLEEGER e
GLASS, 1994).
Segundo BASILI (1996), as muitas diferenças entre projetos de software individuais
causam uma difícil comparação. Seguramente, estes e muitos outros fatores afetam o uso de
estudos empíricos. Porém, acreditamos que, mesmo se eliminássemos as dificuldades
encontradas nos estudos empíricos, ainda não teríamos o mesmo resultado verificado em
outras áreas. Isto porque há um distanciamento entre os estudos empíricos realizados e as
metas que queremos alcançar com esses estudos.
Com isso, necessitamos refletir nas experiências e como elas podem ser usadas para
melhorar efetivamente o desenvolvimento de software. Acreditar que este problema é o maior
desafio que está à frente dos pesquisadores empíricos.
Mais percebemos que não existe apenas os fatores negativos, podemos encontrar
alguns pontos positivos neste Apesar de todos os problemas até então já citados, poderemos
mencionar alguns pontos fortes da Engenharia empírica de software. Como o seu
amadurecido ao longo dos últimos 10-20 anos, tendo a validação empírica considerada
normal em alguns sub-domínios da engenharia.
Há um aumento crescente na média da qualidade destes estudos, e pela quantidade de
artigos e publicações sobre o tema, pelo fato dos pesquisadores estarem mais educadores na
condução dos estudos empíricos, sensibilizados pela proposta de eficácia dos estudos.
Agências financiadoras estão reconhecendo o valor dos estudos empíricos, como a
National Science Foundation (NSF-EUA), que programa suas pesquisas baseadas em
atividades experimentais. Vários são os eventos, workshop, conferências e outros sobre o
tema da estatística e engenharia de software.
Antes que possamos melhorar a utilização dos estudos empíricos, temos que eliminar
algumas problemáticas práticas e crenças.
Verifica-se na Engenharia de Software, que os pesquisadores não validam suas
pesquisas e idéias, tornando seus trabalhos com pequena visibilidade.
Nos encontros do projeto de software, discute-se muito sobre o número de testes
estatísticos usados ou se não teria sido melhor se tivesse feito uma coisa ou outra. E no final,
o que é mais importante do estudo é saber se a pesquisa e suas conclusões são fundamentadas
e acreditável.
Muitos estudos empíricos estudam o óbvio, onde o ideal seria investigar e refletir
sobre as questões mais difíceis que estamos estudando empiricamente.
4
Existem muitos documentos cujo único ponto de venda é o banco de dados. Nossos
dados devem ser utilizados para responder a perguntas, e não para encher gráficos.
Concretamente, faltam-lhes as hipóteses. Assim, no final do estudo, o pesquisador só pode
apresentar observações sobre os dados. Todo estudo, até estudo de caso, deve ser concebido
para responder perguntas, dar resultados.
Para PERRY, PORTER e VOTTA (2000), se quiser que estudos empíricos melhorem
a investigação e as práticas de Engenharia de Software, tem-se que criar melhores estudos e
acreditar em suas conclusões.
Será um meio de desenvolver esses estudos para que tenham mais chance de dirigir a
investigação. Para isso, os estudos empíricos têm que ter objetivos claros, projetá-los mais
eficazmente, maximizar a informação resultante, resolver questões importantes.
Nossos estudos devem esforçar-se por estabelecer princípios que sejam causal,
acionável e geral. Quando temos uma relação causal, sabemos por que algo acontece. Se o
agente for acionável, então temos um botão que pode ser girado para controlar o resultado. Se
for geral, será útil para uma vasta gama de pessoas em um amplo conjunto de contextos.
Estudos individuais não demonstram clareza, surgindo diversos estudos para resolver
grandes problemas, às vezes, até com aspectos complementares. Como são normalmente
caros e demorados, tem-se que encontrar formas de se obter a informação desejada a um
baixo custo, tomando alguns atalhos em nossos experimentos ou tentando resolver problemas
menores de maneira mais focalizada. Os estudos empíricos ganham credibilidade quando são
refeitos e reverificados. Precisamos encontrar maneiras de ajudar os outros a reproduzir os
nossos resultados.
Com tudo isso, podemos concluir que o estudo não é perfeito e que o verdadeiro
desafio é a criação, concepção e condução de alto impacto dos estudos acreditáveis. Isto
envolve a gestão de “trade-offs” de tal maneira que maximizamos a precisão de interpretação
5
(os resultados que vemos não sejam resultados de influência desconhecida), a relevância (tais
resultados são importantes sobre Engenharia de Software), o impacto (os resultados afetam a
prática da pesquisa em Engenharia de Software). Submetido às limitações de recursos:
estudos são caros, temos de trabalhar dentro de limitações dos recursos; e de risco (estudos,
especialmente os feitos na indústria, podem prejudicar ou pôr em risco os parceiros
industriais; temos que minimizar estes problemas).
Todos os estudos incidem sobre um problema. Esta seção une as metas de estudo ao
que é atualmente compreendido sobre o problema. Esta seção tem duas partes: a definição do
problema e a revisão de pesquisa (descreve o contexto histórico em torno do problema, o que
sabemos, o que foi feito anteriormente, as perguntas sem respostas e questões centrais do
problema).
6.2 Hipóteses
Depois de análise dos dados temos que dar sentido aos mesmos. Temos de tentar
compreender e explicar as limitações do estudo. Que conclusões se podem tirar? Que
influências tivemos nos resultados? O que os dados realmente dizem? Há ambigüidades na
nossa interpretação? Podemos dar outras explicações para os dados que vemos? Nossos
resultados são realmente críveis?
Qual o significado prático dos resultados? Se esses resultados se revelaram gerais e o
que os técnicos ou desenvolvedores podem fazer com eles? Certifique-se de ter dado
informações suficientes para outras pessoas para ajudá-las a repetir o estudo, se quiserem.
7. PASSOS CONCRETOS
Uma das coisas mais importantes que os pesquisadores podem fazer é elaborar
perguntas compreensíveis, limitadas, criteriosas, para torná-las mais precisas, e assim chegar
às respostas importantes. Como exemplo, os estudos de KNIGHT and LEVESON (1986)
sobre a programação N-Version é um bom exemplo de uma questão compreensiva. A
programação N-Version refere-se a redundância em software utilizando as esperanças de
alcançar elevada confiabilidade. Esses estudiosos notaram que esta esperança depende
fortemente do pressuposto que módulos redundantes fracassam de forma independente. Se
eles não fizessem, então a confiança do sistema global não seria tão alto quanto esperado.
Assim, eles estudaram se os módulos desenvolvidos realmente falham de forma
independentemente. A conclusão foi que, em vez disso, as falhas do módulo não eram
independentes e que, portanto, a programação N-Version não cumpriu sua promessa de alta
7
confiabilidade. Isto provocou uma grande discussão, o que levanta dúvidas sobre a validade
do próprio estudo, o efeito exato de falhas dependentes na confiança dos cálculos, e se o
insucesso da dependência poderia ser evitado. Isto é exatamente o que um bom estudo pode
fazer.
Cada pergunta não se presta a um único estudo empírico. Para muitas questões temos
que fazer muitos estudos. Nestes casos, criamos e não apenas realizamos um estudo, mas uma
família de estudos. Aqui temos de pensar em toda a gama de questões, o que vamos perguntar
e projetar nos estudos individuais para apoiar os objetivos gerais. Pode ser possível levantar
mais perguntas do que possamos responder e por isso precisam atender uma família
seqüencial de estudos para resolver essas questões relacionadas à medida que forem surgindo.
A chave fundamental aqui é que a observação. Podemos projetar e administrar uma
série de estudos que, em conjunto, vão nos ajudar a responder a uma pergunta maior.
Esses tipos de experiências sugeridos serão difíceis para uma só pessoa. Logo, a
sugestão é a criação de parcerias. É colocar os estudantes em ambientes industriais, onde
poderá administrar e controlar o estudo, aprender sobre a prática da engenharia de software,
desenvolver contatos profissionais, controlar alguma documentação de um estudo.
Também criar equipes de pesquisa interdisciplinar, com pessoas de áreas diversas, é
outra grande idéia. A equipe do projeto inclui pesquisadores em Estatística, Experimentação,
teoria organizacional, linguagens de programação, Engenharia de Software e Visualização.
Outro problema importante é saber quando parar o estudo. Estudos utilizando
desenvolvedores profissionais que criam produtos profissionais têm validade muito forte, mas
pode colocar em risco o projeto participante. Uma solução é parar qualquer tratamento
problemático se há observações suficientes para se convencer que nada "de azar" tenha
acontecido. Isso irá exigir um modelo estatístico e vai, certamente, exigir acompanhamento de
perto do estudo.
Muitos estudos buscam os seus dados através de medição sujeitos à medida que
executam tarefas pré-determinadas. Deveríamos explorar outros métodos para adquirir dados.
alunos realizam experiências, recolhem e analisam dados e testam hipóteses, como parte da
sua graduação nos cursos de engenharia de software, pode ser uma sugestão.
Estes módulos poderão ser adaptados na forma de ensino laboratoriais de estudos
empíricos. Os exercícios em laboratórios educacionais são uma parte normal das ciências
físicas. Nestes laboratórios os alunos necessitam aprender e aplicar o método científico,
analisar os princípios físicos. Enquanto administrando um laboratório o aluno monitora o
processo físico, recolhe e analisa dados sobre o processo, e usa os dados para testar hipóteses,
o que muitas vezes desafia a sua intuição.
classificação indicada para aquele perfil hipotético baseado na sua comparação com um perfil
hipotético de referência construído a partir de todas as hipóteses únicas encontradas num
perfil hipotético recodificado criado para um sistema particular.
Já que a construção do perfil hipotético de referência depende do julgamento subjetivo
e conhecimento de um indivíduo, dois pesquisadores recodificaram perfis hipotéticos e
construíram dois perfis hipotéticos de referência independentemente. A confiabilidade da
codificação foi calculada comparando os perfis hipotéticos de referência, construídos pelos
dois pesquisadores, que checaram e discutiram ajustes léxicos para ser feitos nos perfis
hipotéticos para a construção do perfil hipotético de referência e o cálculo de valores para
cada perfil hipotético.
Nos últimos anos, cresceu o uso das técnicas ágeis de desenvolvimento, como forma
da empresa ajustar-se às dinâmicas do mercado, às exigências dos novos clientes e inovações
tecnológicas.
Continuando as análises práticas sobre o tema de Métodos Empíricos em Engenharia
de Software, será analisado outro caso cujo título traduzido é “O impacto de práticas ágeis na
comunicação no processo de desenvolvimento de software.”
O objetivo desse estudo é avaliar a influência da aplicação de técnicas ágeis,
notadamente XP (eXtreme Programming) e SCRUM, no processo de desenvolvimento de
software, no que tange ao uso da comunicação. A base para o estudo em tela foi um estudo de
um caso de uma empresa finlandesa (F-Secure), na qual foram aplicados e medidos o uso das
técnicas ágeis em dois processos de desenvolvimento.
gerentes e clientes). Por isso, um bom processo de comunicação pode ser considerado como
um dos fatores de sucesso de um projeto de desenvolvimento de software.
Em desenvolvimento de software, comunicação implica em que diferentes pessoas
trabalham em um mesmo projeto, tem a mesma idéia do que eles estão construindo e
compartilham informações sobre esse projeto. Logo, a questão central dessa pesquisa foi:
como o uso de práticas ágeis afeta a comunicação nas equipes desenvolvedoras de software e
a organização em si?
Importante destacar que a metodologia de desenvolvimento de software escolhida para
o estudo, ou seja, o uso de técnicas ágeis, não tem em sua essência o objetivo de primar pelo
uso da comunicação formal durante o projeto, enfatizando muito mais a troca tácita de
conhecimento entre os membros do grupo. É claro que a comunicação formal vai existir, tal
como códigos fonte, testes de caso e um mínimo de documentação. Mas essa não é a essência
do uso de técnicas ágeis.
Outro ponto bastante interessante abordado no estudo, foi a alocação dos analistas e
programadores de cada projeto em um mesmo espaço físico (cada projeto em um mesmo
espaço físico e não os dois no mesmo ambiente). Os desenvolvedores do projeto 1 avaliaram
com muita positividade trabalhar em um mesmo espaço físico, inobstante tenha havido
aqueles que destacaram que isso também é um ponto negativo, pois dificulta a concentração
dos desenvolvedores, conforme exemplificado por um analista do projeto 1, o qual relatou ter
dificuldades de concentração no ambiente, pois enquanto uns programavam, os outros
estavam em reuniões naquele mesmo ambiente.
Os analistas do projeto 2 foram mais alem. Durante o curso do projeto, decidiram
realocar todos em salas separadas (maneira tradicional), em virtude do grande número de
reclamações de dificuldade de concentração por parte dos desenvolvedores. Entretanto, ao
final do projeto, os mesmos analistas ressaltaram que trabalhar em salas separadas prejudica a
colaboração e a sensação de conjunto da equipe.
9.6 Conclusões
10.1 Conceitos
- Projeto Experimental
Aqui serão mostrados os aspectos mais importantes sobre o projeto exerimental, i.e.,
aquilo que é relevante no planejamento de forma geral em pesquisas que utilizam métodos
empíricos. Ressalta-se que alguns itens serão suprimidos em troca de, principalmente, clareza
na explicação. Dessa maneira, é recomendável, para um total entendimento sobre o processo
utilizado pelas autoras, a leitura do próprio texto que aqui é exposto de forma mais sintética.
Tipo de pesquisa: Como o próprio título já expõe, fora escolhida a pesquisa quase-
experimental;
Objetivos: Analisar a relação entre as preferências e as percepções sobre o clima em
uma equipe; Analisar a relação entre o clima desejado-percebido e a qualidade no
desenvolvimento de um software utilizando-se uma variação de XP.
15
Hipóteses nulas1: H01: O clima da equipe não tem relação com a qualidade do
software produzido.
H02: A diferença entre clima desejado-percebido não tem relação com a qualidade do
software produzido.
Obs.: Não serão mostradas aqui as hipóteses alternativas pelo motivo exposto logo no
início desta parte do trabalho.
Variáveis:
Independentes:
Clima de equipe;
Diferença entre clima desejado e percebido;
Dependente:
Qualidade de software;
Sujeitos: 105 estudantes do segundo ano do curso de Computação da Higher
Techinical School da Universidad Autónoma de Madrid;
Instrumentos:
TSI – Team Selection Inventory: para medir as preferências sobre o clima da equipe;
TCI – Team Climate Inventory: para medir as percepções sobre o clima da equipe;
Obs.: Como os instrumentos foram aplicados individualmente foi preciso utilizar a
média aritmética para agrupá-los num time. Isso ocorreu após a verificação de possibilidade
feita por análise de variância.
Algumas variáveis poderiam causar influência no quase-experimento (ameaças) e
foram devidamente tratadas pelas autoras de forma a, na medida do possível, terem seu efeito
anulado atribuindo-se a máxima constância às mesmas. As variáveis em questão, assim como
os tratamentos a elas dispensados são os seguintes:
A experiência dos participantes: esta é uma variável que poderia influenciar na
qualidade do software produzido. Este aspecto possui dois lados. O primeiro é a experiência
no projeto de softwares e o segundo a experiência no tipo de programação utilizado. Para este
possível problema, a seleção aleatória dos componentes foi entendida como suficiente para
dissolvê-la entre as diversas equipes.
O projeto a ser desenvolvidos (funcionalidades que os sujeitos devem implementar
durante o experimento): o sistema a ser desenvolvido poderia, por sua variação, impossibilitar
a comparação entre as diversas equipes, além de influenciar na qualidade do software
produzido. O efeito desta variável fora cancelado pelo fato de todos os times terem produzido
exatamente o mesmo projeto de software.
Conhecimento sobre o método para construção de software a ser utilizado: a
produtividade poderia ser influenciada pelo conhecimento prévio do método utilizado para a
construção do software, assim, para anular este possível efeito, as autoras buscaram equilibrar
o conhecimento sobre o método ao desenvolver um método (baseado no XP, mas não o
próprio) e também fazendo um curso de nivelamento sobre o assunto.
11. SÍNTESE
Com tudo isto aqui mencionado, pudemos verificar uma visão geral do estado atual
dos estudos empíricos e pontuamos os seus pontos fortes e fracos. E como sugestão, se faz
necessário o cuidado para se melhorar a pesquisa empírica, através de melhores projetos
empíricos, rigorosos e acreditáveis, para engenharia de software.
É preciso buscar modelar, no futuro, uma estrutura geral para softwares através dos
estudos empíricos. Como sugestões concretas, percebemos a necessidade de se: criar
melhores estudos, tendo cuidado na aquisição dos dados e envolvendo os outros nesses
estudos e práticas empíricas.
A formação dos nossos alunos também é fato imprescindível para a busca dessa
melhoria para um futuro não tão distante, onde a prática laboratorial se faz real.
Enquanto estamos ainda relativamente imaturos como uma disciplina empírica
comparada com outras ciências e disciplinas de engenharia, têm sido feitos progressos e
estamos otimistas de que podemos e alcançaremos o rigor necessário para o desenvolvimento
dos entendimentos profundos de engenharia de software.
17
12. REFERÊNCIAS
ACUÑA, ST; GOMEZ, M; JURISTO, N. (2008). Towards understanding the relationship between team climate
and software quality - a quasi-experimental study. Empirical Software Engineering 13 (4): 401-434.
ALI-BABAR. M., ZHU, L., JEFFERY, R. (2004) A Framework for Classifying and Comparing Software Archi-
tecture Evaluation Methods. In: Proceedings of the 15th Australian Software Engineering Conference,
Melbourne, 13–16 April 2004
ALI BABAR, M., KITCHENHAM, B. A., JEFFERY, D. J. (2008). Comparing distributed and face-to-face
meetings for software architecture evaluation: A controlled experiment. Empirical Software Engineering 13(1):
39-62.
BASILI, V., Editorial. Empirical Software Engineering Journal, 1996. 1(2).
BASS, L., CLEMENTS, P., KAZMAN, R. (2003) Software architecture in practice. Addison-Wesley, Reading
BENGTSSON, P. (2002) Architecture-level modifiability analysis. Ph.D. Thesis, Blekinge Institute of Techno-
logy
CHAUÍ, M. Convite a Filosofia. São Paulo: Ática, 2003.
CLEMENTS, P., KAZMAN, R., KLEIN, M. (2002) Evaluating software architectures: methods and case studi-
es. Addison-Wesley, Reading
FENTON, N., S.L. PFLEEGER, and R. GLASS, Science and Substance: A Challenge to Software Engineers.
IEEE Software, 1994. 11(4): p. 86-95.
GLASSER, B. and STRAUSS, A. The discovery of grounded theory: Strategies for qualitative research. 1977,
Chicago: Aldine Publishing.
KAZMAN R, BASS L (2002) Making architecture reviews work in the real world. IEEE Softw 19(1):67–73
KNIGHT, J. and LEVESON, N. An Experimental Evaluation of the Assumption of Independence in Multi-
Version Programming. IEEE Transactions on Software Engineering, 1986. SE-12(1): p. 96-109.
MARANZANO, J. F., ROZSYPAL, S.A., ZIMMERMAN, G.H., WARNKEN, G.W., WIRTH, P.E., WEISS,
D.M. (2005) Architecture reviews: practice and experience. IEEE Softw 22(2):34–43
PERRY, Dewayne E., PORTER, Adam A., VOTTA, Lawrence G., Empirical Studies of Software Engineering:
A Roadmap. ICSE 2000
PIKKARAINEN, M. HAIKARA, J. SALO, O., ABRAHAMSSON, P. And STILL, J. (2008). The Impact of
Agile Practices on Communication in Software Development. Empirical Software Engineering. 13, 3, 303-337.