Você está na página 1de 68

Engenharia de Software

Experimental
Ivan Machado Manoel Mendona Rodrigo Rocha
ivanmachado@dcc.ufba.br

PGCOMP UFBA 2017.1


Ivan Machado Manoel Mendona Rodrigo Rocha
ivan.machado@ufba.br manoel.mendonca@ufba.br rodrigo@dcc.ufba.br

Interesses: Interesses: Interesses:


linhas de produtos de software visualizao de software engenharia de software experimental
modularidade de software minerao de dados evoluo de software
testes de software gesto do conhecimento minerao de repositrios
qualidade de software qualidade de software desenvolvimento mobile
evoluo de software mtricas e medio de software desenvolvimento de jogos
engenharia de software experimental engenharia de software experimental
Projeto de reviso sistemtica de literatura
Projeto de estudos experimentais
Anlise de dados e estatstica inferencial
Escrita sobre resultados experimentais
Avaliao de resultados experimentais publicados por
outros
Planejamento e avaliao de sua pesquisa (avaliao no curso
+ planejamento da validao da pesquisa do discente)
AULA DATA DOCENTE CONTEDO
1 11/05/2017 Ivan Apresentao do Curso.
2 18/05/2017 Ivan Reviso de Literatura
3 25/05/2017 Ivan Reviso de Literatura
4 01/06/2017 Ivan Reviso de Literatura
5 08/06/2017 Ivan Reviso de Literatura
- 15/06/2017 - Feriado Nacional: Corpus Christi
6 22/06/2017 Manoel Planej. Experimento
7 29/06/2017 Manoel Planej. Experimento
8 06/07/2017 Manoel Planej. Experimento
9 13/07/2017 Manoel Planej. Experimento
10 20/07/2017 Manoel Planej. Experimento
11 27/07/2017 - Avaliao Individual
12 03/08/2017 Rodrigo Anlise Quanti
13 10/08/2017 Rodrigo Anlise Quanti
14 17/08/2017 Rodrigo Anlise Quanti
15 24/08/2017 Rodrigo Anlise Quanti
16 31/08/2017 Rodrigo Apresentao dos trabalhos
O que
Engenharia de Software?
Engenharia de software
que estuda o
a disciplina

desenvolvimento e a manuteno
de software em escala industrial.
Tcnicas
Metodologias
Processos
Ferramentas
... para gerncia, desenvolvimento, manuteno,
reengenharia, e componentizao de software.
Necessidades fundamentais
da Engenharia de Software
Adotar novas tecnologias
Testar se uma nova tecnologia
til para voc
Avaliar o impacto de uma
tecnologia no seu negcio
E como fazer isso...
na prtica?!
Abordagens que Podem Ser Adotadas
Perguntar a um perito
Pesquisar na literatura
Seguir a prtica da indstria
Fazer um piloto

Pedir para sair e arrumar outro trabalho


menos complicado
SER EXPERIMENTAL

Fazer uma reviso sistemtica


Fazer um levantamento de campo (survey)
Fazer um estudo de caso
Fazer um experimento controlado
Em outras
palavras...
Voc acredita
no que outros
falam ...
Ou toma uma
abordagem cientfica
para engenharia de
software...
Abordagem Cientfica
1. Quais so as suas metas e qual a sua situao?
2. Existe evidncia na literatura e/ou na indstria e
como esta evidncia se aplica a SUA situao?
3. Se no existe evidncia suficiente, que tipo de
avaliao experimental voc deve fazer?
O Uso da abordagem cientfica
para o desenvolvimento,
evoluo e manuteno de
software o que chamamos de

Engenharia de Software Experimental


Modelos, Experimentao e Aprendizado: um
paradigma experimental
Para entender uma disciplina necessrio a construo de modelos,
no s de produtos mas tambm de processos e domnios de
aplicao;
Para testar se nossa compreenso est correta precisamos testar
estes modelos, isto implica em experimentao;
Ao se analisar resultados experimentais, ns aprendemos e
encapsulamos este conhecimento em modelos mais sofisticados;
Este
paradigma experimental
usado em muitas reas de conhecimento:
fsica - medicina - qumica - manufatura, etc.
O Paradigma Experimental
O Paradigma experimental de uma disciplina evolui pela aplicao do ciclo:
modele, experimente, aprenda;
Normalmente ele comea com a observao e o registro do que
observado, e evolui para a manipulao de variveis controlveis e a
observao do seu efeito em variveis de interesse;
A diferena na aplicao do paradigma experimental nos vrios campos de
conhecimento so ditadas pelos objetos de estudo, as propriedades do
sistemas que os contm, as relaes entre os objetos e o sistema, e a
cultura da disciplina;
O Paradigma Experimental
Isto impacta em:
como modelos so construdos
como experimentao feita.
O Paradigma Experimental em Fsica
Fsica visa entender e predizer o comportamento do universo fsico;
Tem dois grupos bem definidos de pesquisadores, os tericos e os
experimentalistas, e progride a partir do interrelacionamento entre estes
dos grupos;
Tericos constroem modelos para explicar o universo baseados em teorias
sobre variveis essenciais e sua interao determinada em experimentos
anteriores;
Suas teorias predizem o resultado de eventos mensurveis;
Experimentalistas observam, medem, e experimentam para provar ou
refutar uma hiptese ou teoria;
Eles tambm exploram novos domnios.
O Paradigma Experimental em Medicina (1)
Tambm tem dois grupos bem definidos, prticos e os pesquisadores,
existe um claro relacionamento entre eles;
Os pesquisadores visam entender o funcionamento do corpo humano para
predizer os efeitos de procedimentos e drogas;
Os prticos aplicam o conhecimento ganho para definir processos de
tratamento do corpo humano;
Comeou como uma forma de arte e s evoluiu quando comeou com o
ciclo de observao, construo de modelos, experimentao e
aprendizado;
O Paradigma Experimental em Medicina (2)
Dificuldades
Estudos variam de experimentos controlados a estudos de caso
Varincia do ser humano dificulta a interpretao de resultados
trabalho e complexo para se obter dados
Nem por isto a medicina no evoluiu muito no tempo !
O Paradigma Experimental em Engenharia de Software

ES necessita de um ciclo prprio de construo de modelos,


experimentao e aprendizado;
Engenharia de software (tambm) uma disciplina de laboratrio;
Devem existir prticos cujo papel construir cada vez mais barato e
mais rpido sistemas cada vez melhores, utilizando o conhecimento
disponvel;
Devem existir pesquisadores que tentem entender a natureza dos
processos e produtos de software e a da relao entre os dois no
desenvolvimento e manuteno de sistemas;
O Paradigma Experimental em Engenharia de
Software

Engenharia de Software
A relao entre prticos e pesquisadores altamente simbitica:
Pesquisadores precisam de laboratrios para observar e manipular variveis, a indstria

Experimental
o ambiente ideal.
Prticos precisam entender como melhor construir e manter seus sistemas, os
pesquisadores so quem melhor podem auxiliar nesta tarefa.
Natureza da Engenharia de Software
Software desenvolvimento e no produo
A maioria das tecnologias so intensivamente humanas
Software, domnio, e culturas variam muito.
Existem um nmero enorme de variveis envolvidas
Seus efeitos so mal compreendidos e modelados
Existem poucos modelos
Existe pouca compreenso dos limites de
tecnologias
Existe pouca anlise e experimentao
controlada
Paradigmas de
Pesquisa em ES
Paradigma Analtico

Baseado em matemtica
Prope uma teoria formal ou um conjunto de axiomas
Deriva matematicamente um conjunto de resultados
Est no cerne da cincia da computao e expe a herana
matemtica de nossa rea
Paradigma Experimental
Observa o mundo ou solues existentes;
Prope um modelo de comportamento ou soluo melhor;
Mede e analisa modelo experimentalmente
Valida (ou refuta) hipteses e modelo
Repete o processo para evoluir o conhecimento
O Qu o Paradigma Experimental Envolve?

Observao
Projeto experimental
Coleta de dados
Anlise qualitativa ou quantitativa
Avaliao do processo e produtos sendo estudados
Anlise Qualitativa
Anlise Quantitativa Observao naturalstica
Medio controlada (normalmente no intrusiva)
(normalmente intrusiva) Entrevistas e questionrios
Objetiva (normalmente intrusivas)

Orientada Verificao Subjetiva

Orientada descoberta
Tipos de Estudos em ESE
Um estudo o ato de descobrir algo desconhecido ou de testar uma
hiptese, pode incluir todos os tipos de anlise quantitativa e
qualitativa.
Tipos de Estudos em ESE
Estudos Experimentais
Voltado ao teste de hipteses geralmente quantitativos
Experimento controlados, quasi-experimentos, ou estudos pilotos
Estudos Observacionais
Voltado compreenso e descoberta geralmente so mais
qualitativos que quantitativos
Pesquisa qualitativa ou semi-qualitativa, entrevistas e
levantamentos
O Estado da
Disciplina
Experimental em ES
http://www.springer.com/computer/swe/journal/10664
http://www.journals.elsevier.com/information-and-software-technology
O Estado da Disciplina Experimental em ES
Uso de Modelos
Modelos empricos de custo e ocorrncia de defeitos
Modelos de processos
Modelos de produtos (uso intensivo de modelos matemticos)
Pouca Experimentao
Tericos e prticos vm seus modelos com auto-evidentes que no precisam
ser testados
Para qualquer modelo e tecnologia precisa-se testar as condies em que
eles funcionam adequadamente.
Duas Questes a Serem Respondidas
O qu estamos estudando e por que estamos estudando ?
Estudos de fatores humanos
Estudos de projetos e produtos
Mtodos e tcnicas
Estudos da organizao e processos
Qual o tipo e as caractersticas do estudo experimental ?
Estudos In Vivo
Estudos in Vitro
Estudos in Virtuo e in Silico
Tipos de Estudo Experimentais
In Vivo
Envolve pessoas no seu prprio ambiente de trabalho em condies realistas de
trabalho
In Vitro
Realizado em condies controladas tais como em um laboratrio ou um grupo
fechado
In Virtuo
Realizado em condies controladas onde os participantes interagem com modelos
computacionais da realidade (simuladores)
In Silico
Participantes e o mundo real so descritos por modelos computacionais (dinmica
de sistemas)
Definindo o que Vai se Estudar
Qual o objeto de estudo Qual o foco
O qu ser estudado: um processo, um produto, Quais aspectos e variveis do objeto de estudo
um modelo ? so de meu interesse ?

Qual finalidade do estudo Qual a perspectiva


Caracterizar (o qu est acontecendo?); Quais grupos de pessoas esto interessadas no
estudo ?
Avaliar ( bom?);
Predizer (posso estimar seu comportamento
futuro?);
Controlar (posso manipular eventos e
situaes?);
Melhorar (posso melhorar eventos e situaes?)
O Paradigma Experimental em Engenharia de
Software

Definindo o tipo de
A relao entre prticos e pesquisadores altamente simbitica:
Pesquisadores precisam de laboratrios para observar e manipular variveis, a indstria
o ambiente ideal.

estudo experimental
Prticos precisam entender como melhor construir e manter seus sistemas, os
pesquisadores so quem melhor podem auxiliar nesta tarefa.
Comece com o Objetivo

O que voc quer investigar e porque voc quer investigar?

Exemplo: Avaliar se o mtodo de projeto XYZ produz


resultados melhores que o mtodo ABC
Finalidade: Testar se os dados que voc vai coletar confirmaro
ou refutaro a hiptese
Escolhendo a Abordagem de Pesquisa (1)

Levantamento de Campo (Survey)


Trabalho de campo de levantamento de opinio de vrias pessoas
(caracterizando o universo consultado)
Estudo de caso
Aplicao do objeto de estudo em um pequeno nmero de casos
(caracterizando o ambiente de aplicao)
Pesquisa Ao
Aplicao do objeto de estudo em um pequeno nmero de casos
(caracterizando o ambiente de aplicao)
Todavia o objeto de estudo tambm estar sendo desenvolvido, adaptado, ou
evoludo durante o estudo
Escolhendo a Abordagem de Pesquisa (2)

Experimento Controlado
Aplicao do objeto de estudo e do tratamento de controle em vrios casos
sob condies fortemente controladas
Reviso Sistemtica ou Mapeamento Sistemtico
Sintetizar a evidncia, identificando, avaliando e interpretando todas
pesquisas disponveis em relao a uma questo especfica
Defina Hipteses em Termos Quantitativos

Em vez de: Avaliar se o mtodo de projeto XYZ produz resultados


melhores que o mtodo ABC
Defina algo do tipo: O cdigo produzido pelo mtodo XYZ produz um
menor nmero de defeitos por milhares de linhas de cdigo fonte
que o mtodo ABC Defina a relao entre conceitos e medidas
Defina Hipteses em Termos Quantitativos

No exemplo anterior ns queremos medir qualidade e estamos


usando nmero de defeitos para isto.
Esta relao entre o que se quer e o que se mede deve ser
documentado, e as vezes explicitado em modelos de relacionamento.
Identifique Seu Controle Sobre Variveis (1)

Que outras variveis podem afetar a varivel sendo avaliada


Varivel dependente: nmero de defeitos por milhares de linhas de cdigo
Variveis de estado: experincia do projetista com o mtodo, experincia em
projeto, tipo do sistema
Identifique Seu Controle Sobre Variveis (2)
Determine quanto controle voc tm sobre estas variveis
Se voc est coletando informao depois do fato e no tem nenhum controle
ento voc ir usar um survey;
Se voc est coletando informao enquanto desenvolvimento e manuteno est
acontecendo, mas no tem controle bsico sobre variveis comportamentais ento
voc ir fazer um estudo de caso;
Se o seu objeto de anlise estiver sendo evoludo ento voc ir fazer uma
pesquisa ao;
Se voc tem controle sobre a maioria das variveis e controle sobre os participantes
voc pode fazer um experimento controlado.
Identifique Seu Controle Sobre Variveis (3)

Uma varivel de contexto uma varivel de estado que assume um


nico valor sobre todos os meus estudos experimentais
Exemplo

Suponha que voc est avaliando o efeito de um mtodo de


projeto sobre a qualidade do software resultante
Se voc no tem controle sobre quem est usando qual mtodo,
ento voc usa um estudo de caso para documentar os
resultados;
Se voc pode controlar quem usa cada mtodo, quando e como
estes mtodos so usados, ento voc pode fazer um
experimento controlado.
Experimentos in-vivo x in-vitro

Experimentos in-vivo so feitos no mundo real e monitorados


medida em que o uso do objeto de estudo realmente ocorre;
Experimentos in-vitro so feitos em laboratrios simulando a forma
que eles aconteceriam no mundo real;
Em engenharia de software, normalmente experimento controlados
so feitos in-vitro e estudos de caso so feitos in-vivo.
Outros pontos importantes

Em experimentos controlados voc amostra sobre as variveis de


estado
Se experincia importante voc pode incluir pessoas com experincias bem
distribudas.
Em estudos de caso voc amostra das variveis de estado
Se experincia importante voc escolhe para avaliao as pessoas com a
experincia caracterstica mdia de sua organizao.
Em experimentos controlados voc pode facilmente definir a varivel
experimental, a de controle, e as variveis de estado.
As variveis de estados no devem variar ou devem ter variaes igualmente
distribudas entre os tratamentos (controle e experimental)
Fatores a considerar

Estudos de
Fator Experimentos Survey
Caso
Nvel de Controle Alto Baixo Baixo
Dificuldade de Controle Alto Mdio Mdio
Facilidade de Replicao Alto Baixo Alta
Alto (in-vivo) Baixo
Custo de Execuo Mdio
Mdio (in-vitro) Mdio
Riscos validade Baixo (in-vivo) Baixo
Mdio
Mdio (in-vitro) Mdio
Bibliografia bsica
Juristo, N. and Moreno, A. Basics of Software Engineering Experimentation,
Kluwer Academic Publishers, 2000.
Shull, F., Singer, J. and Sjberg, D. I. K. Guide to Advanced Empirical Software
Engineering. Springer, 2008.
Wohlin, C. et al. Experimentation in Software Engineering. Springer, 2012.
Bibliografia complementar
Basili, V., Evolving and Packaging Reading Technologies. Journal of Systems and Software, 1997. 38(1): p. 3-
12.
Basili, V., F. Shull, and F. Lanubile. Building Knowledge through Families of Experiments. IEEE Transactions
on Software Engineering, 1999. 25(4): p. 456-473.
Basili, V., R. Selby, D. Hutchens, Experimentation in Software Engineering. IEEE Transactions in Software
Engineering, 1986. 12 (7), 733743.
Biolchini, J., P. Mian, A. Natali, and G. Travassos, Systematic Review in Software Engineering. Technical
Report ES 679/05, PESC, Federal University of Rio de Janeiro, 2005. Available at
http://cronos.cos.ufrj.br/publicacoes/reltec/es67905.pdf
Brooks, A., M. Roper, M. Wood, J. Daly and J. Miller, Replication of Software Engineering Experiments.
Empirical Foundation of Computer Science Technical Report, EFoCS-51-2003, 2003. Available at
http://www.cis.strath.ac.uk/~efocs/home/Research-Reports/EFoCS-51-2003.pdf
Curtis, B., Measurement and experimentation in software engineering. Proceedings of the IEEE, 1990 68(9)
11441157.
Bibliografia complementar
Daly, J. Replication and a Multi-Method Approach to Empirical Software Engineering research. PhD Thesis,
Department of Computer Science, University of Strathclyde, 1996.
Glass, R., I. Vessey, and V. Ramesh, Research in Software Engineering: An Analysis of the Literature, J.
Information and Software Technology, vol. 44, no. 8, pp. 491-506, June 2002.
Jedlitschka, A. and Ciolkowski, M. Towards Evidence in Software Engineering. Proceedings of the 2004
International Symposium on Empirical Software Engineering (ISESE04), Redondo Beach, California, pp. 261-
270, 2004.
Jedlitschka, A. and Pfahl, D. Reporting Guidelines for Controlled Experiments in Software Engineering.
International Software Engineering Network Technical Report, ISERN-55-01, 2005.
Kamsties, E., Lott, C. An empirical evaluation of three defect detection techniques. International Software
Engineering Network Technical Report, ISERN-95-02, 1995.
Kitchenham, B. and Charters, S. Guidelines for performing Systematic Literature Reviews in Software
Engineering. Technical Report EBSE 2007-001, Keele University and Durham University Joint Report.
Kitchenham, B. A., Dyb, T., Jrgensen, M. Evidence-based Software Engineering. Proceedings of the 26th
International Conference on Software Engineering (ICSE04), 2004.
Kitchenham, B., Pfleeger, S., Pikard, L., Jones, P. Hoaglin, D., El Emam, K and Rosenberg, J. Preliminary
Guidelines for Empirical Research in Software Engineering. IEEE Transactions on Software Engineering,
2002. 28(8): p. 721-734.
Bibliografia complementar
Lott, C., H. Rombach, Repeatable Software Engineering Experiments for Comparing Defect-detection
Techniques. Journal of Empirical Software Engineering, 1(3) 1997, 241277.
Machado, I. C., McGregor, J. D., Cavalcanti, Y. C., Almeida, E. S. On strategies for testing software product
lines: A systematic literature review. Information & Software Technology 56(10): 1183-1199 (2014)
Maldonado, J., J. Carver, F. Shull, S. Fabbri, E. Dria, L. Martimiano, M. Mendona, and V. Basili. Perspective-
Based Reading: A Replicated Experiment Focused on Individual Reviewer Effectiveness. Empirical Software
Engineering - An International Journal, 11(1).
Marcus Ciolkowski, Oliver Laitenberger, Sira Vegas, and Stefan Biffl. Practical Experiences in the Design and
Conduct of Surveys in Empirical Software Engineering, In. R. Conradi and A.I. Wang (Eds.): ESERNET 2001-
2003, LNCS 2765, pp. 104128, 2003.
Miller, J. Applying meta-analytical procedures to software engineering experiments. Journal of Systems and
Software. 54(1), 2004, pp. 29-39.
Miller, J. Replicating Software Engineering Experiments: A Poisoned Chalice or the Holy Grail. Information
and Software Technology. 47(4), 2005, pp. 233-244.
Shull F., Cruzes D., Basili V. R., and Mendonca M., Simulating Families of Studies to Build Confidence in
Defect Hypotheses, Information and Software Technology, 47(15), pp. 1019-1032, 2005.
Bibliografia complementar
Shull, F., J. Carver, G. Travassos, J. Maldonado, R. Conradi, and V. Basili, Replicated Studies: Building a Body of
Knowledge about Software Reading Techniques, in Lecture Notes on Empirical Software Engineering, N.
Juristo and A. Moreno, Editors. 2003, World Scientific.
Shull, F., M. Mendonca, V. Basili, J. Carver, J. Maldonado, S. Fabbri, G. Travassos, and M. Ferreira,
Knowledge-sharing Issues in Experimental Software Engineering. Empirical Software Engineering - An
International Journal, 2004. 9(1): p. 111-137.
Shull, F., V. Basili, J. Carver, J. Maldonado, G. Travassos, M. Mendonca, and S. Fabbri. Replicating Software
Engineering Experiments: Addressing the Tacit Knowledge Problem. Proceedings of International
Symposium on Empirical Software Engineering (ISESE'02). 2002. Nara, Japan, 7-16.
Sjberg, D., J. Hannay, O. Hansen, V. Kampenes, A. Karahasanovi, N. Liborg, A. Rekdal, A Survey of
Controlled Experiments in Software Engineering. IEEE Transactions on Software Engineering, 2006. 31(9): p.
733-753.
Tichy, W. Should Computer Scientists Experiment More?, IEEE Computer, May 1998.
Tichy, W., P. Lukowicz, L. Prechelt, and E.A. Heinz, Experimental Evaluation in Computer Science: A
Quantitative Study, J. Systems and Software, vol. 28, no. 1, pp. 9-18, Jan. 1995.
Wohlin C., Runeson P., Silveira-Neto, P. A. M., Engstrm E., Machado, I. C., Almeida, E. S. On the reliability of
mapping studies in software engineering. Journal of Systems and Software 86(10): 2594-2610 (2013)
Bibliografia complementar
Wood, M., J. Daly, J. Miller, M. Roper, Multi-method research: an empirical investigation of object-oriented
technology. Journal of Systems and Software 48(1) 1326, 1999.
Zelkowitz, M. and Wallace, D. Experimental Models for Validating Technology?, IEEE Computer, May 1998.
Zendler, A. A Preliminary Software Engineering Theory as Investigated by Published Experiments, Empirical
Software Eng., vol. 6, no. 2, pp. 161-180, 2001.

Você também pode gostar