Vous êtes sur la page 1sur 46

Engenharia de Software

Experimental
Profa. Mariela I. Cortés
2018
Principais referencias
• Wohlin Claes et al. Experimentation in Software
Engineering. Springer. 2012.
• Malhotra Ruchika. Empirical Research in Software
Engineering. Concepts, analysis, and applications.
CRC Press. 2016.
• Travassos G. e Gurgel do Amaral E. Introdução à
Engenharia de Software Experimental. Relatório técnico
Coppe/UFRJ. 2002.
Engenharia de Software
• Engenharia de software envolve a aplicação de uma
abordagem sistemática, disciplinada e quantificável para
desenvolver, operar e manter software. (IEEE, 1984)
▫ Disciplina que utiliza um conjunto de métodos, técnicas e
ferramentas para analisar, projetar e gerenciar o
desenvolvimento e manutenção de software, visando
produzir e manter software dentro de prazos, custos e
qualidade estimados.
▫ Aplicação prática de conhecimento científico ao projeto e
construção de software.

• Objetivo: Melhorar a qualidade do software e aumentar a


produtividade e satisfação, tanto dos clientes quanto dos
profissionais e engenheiros de software envolvidos.
Engenharia de Software
• No cenário atual ainda muitos projetos de
software fracassam...
▫ Alta competitividade.
▫ Adoção de novas tecnologias sem provar sua
utilidade prática.
• É necessário uma abordagem para eleger entre
alternativas viáveis e predizer ou simular o
comportamento de processos/produtos.
▫ Através de estudos empíricos
• Estudos empíricos jogam um role fundamental e
contribuem para tornar a ES. mais científica.
• A experimentação prove uma forma
sistemática, disciplinada e quantificável
de avaliar atividades baseadas em pessoas
(human-based).
Engenharia de Software
• Pesquisas em ES. devem atender às orientações
seguidas em outros tipos de engenharia.
▫ As engenharias se baseiam no uso de pesquisa
científica para construir produtos e serviços
economicamente viáveis.
• Assim, além das propostas de inovações
técnicas, as pesquisas devem incluir avaliação
dos resultados atingidos pela aplicação destas
inovações.
Porém...
• Poucas teorias na Ciência da Computação têm sido
comprovadas empiricamente.
▫ Crise do software?
▫ Confiabilidade dos produtos da engenharia tradicional
é maior que a dos obtidos pela engenharia de
software?
▫ Programação funcional, OO e métodos formais
melhoram a produtividade do programador, a
qualidade dos programas ou ambos.
▫ Uma organização no nível de maturidade n+1 produz
software melhor que outra no nível n.
Pesquisas mostram que...
• Estudos com foco em jornais OO
▫ 30% dos artigos não possui validação experimental,
e 10% seguem uma abordagem formal (Zelkowitz,
1998).
▫ Somente 8% incluem avaliação quantitativa, porém
nenhuma conduzida formalmente (Tichy, 1993).
• Estudos com foco em ES
• 40% dos artigos sem validação experimental (Tichy,
1995).
• Somente 1,9% dos artigos apresentam experimentos
controlados (Sjoberg, 2005).
Engenharia de Software Empírica ou
Experimental (ESE)
• Campo de estudo que enfatiza o uso de estudos
empíricos para acumular conhecimento acerca
de métodos, processos, ferramentas e teorias da
Engenharia de Software.
▫ ESE se tornou parte importante da pesquisa
teórica e prática nos últimos anos.
▫ A experimentação é uma parte importante do
método científico para desenvolver, operar e
manter sistemas de software.
Experimentação em ES. Dificuldades
• Desenvolvedores não estão instruídos na
importância do método científico, baseado em
confrontar ideias e realidade.
• Deficiência em conhecimentos sobre estatística
dos desenvolvedores para entender e analisar os
dados do experimento.
• Grande influencia do fator humano que dificulta
a generalização dos resultados.
• Imenso número de variáveis que influenciam o
desenvolvimento do software.
Experimentação em ES. Justificativas.
• Método científico tradicional • Para entender o processo da
não é aplicável. informação é preciso observar
fenômenos e formular e provar
teorias.
• O nível de experimentação • Validação insuficiente se
atual é suficiente. comparado a outras ciências.
• Experimentos são caros. • Experimentos significativos com
pressupostos menores.
• Demonstrações ilustram o
• Demonstrações são potencial mas não demostram.
suficientes.
• Experimentação demora o • Agiliza o entendimento.
progresso. • Se a questão se torna irrelevante
• Tecnologia muda rápido. rápido pode não estar bem
definida.
Objetivos e benefícios da
experimentação
• Pesquisadores devem observar o fenômeno,
encontrar explicação, formular a teoria e verificá-la
para compreender a natureza dos processos de
informação.
▫ Permite explorar relacionamentos e provar conceitos
teóricos.
▫ Permite avaliar a eficácia de modelos, ferramentas e
técnicas com vistas a sua melhoria.
▫ Ajuda a construir uma base de conhecimentos
confiável e tornar a área uma ciência madura.
▫ Pode abrir novas áreas de introspecção.
▫ Acelerar o processo eliminando abordagens inúteis.
Métodos de avaliação para pesquisas
• Método científico: paradigma indutivo que se baseia na
observação do mundo e na construção de um modelo baseado
nestas observações, que explique um fenômeno. Por exemplo
uma simulação.
▫ Abordagem para construção de modelos.
▫ Mede, analisa e verifica hipóteses do modelo.
▫ Utilizado para entender o produto, processo ou ambiente e criar
um modelo que o represente.
• Método analítico (ou matemático): uma teoria formal é
proposta, resultados são derivados e comparados com
observações empíricas (do mundo real).
▫ Método dedutivo.
▫ Fornece uma base analítica.
▫ Exemplo: teoria formal sobre o crescimento da complexidade do
software.
Variações do Método Científico
• Método de engenharia: soluções existentes são
analisadas identificando fraquezas. Inovações ou
melhorias são propostas e comparadas.
▫ Mede, analisa e repete.
▫ Orientada a melhoria evolutiva.
▫ Exemplo: Analisar diversas ferramentas para selecionar a mais
adequada para um contexto.

• Método experimental ou empírico: um modelo para o


mundo real é proposto e avaliado através de estudos
experimentais, por exemplo estudos de caso ou
experimentos.
▫ Mede, analisa e valida o modelo através de métodos qualitativos
/quantitativos, e repete o processo.
• Os métodos de engenharia e empíricos podem ser vistos
como variações do método científico.
Escopos de avaliação

# Projetos

Um Mais de Um

Projeto Simples Variação multi-


Um (Estudo de caso) projeto
# Equipes por
Projeto Agrupado por
Projeto
Mais de Um projetos e
Replicado participantes
Engenharia de Software Experimental
• Métodos experimentais são realizados buscando
responder uma ou mais questões de pesquisa.
• A abordagem mais apropriado na engenharia de
software baseia-se nos métodos do tipo
experimental.
▫ Contribui para a obtenção de evidências sobre o
modelo/teoria propostos.
▫ Também chamada engenharia de software
baseada em evidência, é inspirada no processo
adotado em outras ciências.
Tipos de Estudos Experimentais
Primários
• Visam a caracterização de uma determinada
tecnologia em uso em um contexto específico.
• No contexto da evidência, são estudos
experimentais que investigam uma questão de
pesquisa específica.
• Exemplos: experimento, estudo de caso, survey.
Tipos de Estudos Experimentais
Secundários
• São estudos que revisam todos os estudos primários
a uma questão de pesquisa com o objetivo de
integração/síntese de evidências relacionadas a uma
questão de pesquisa específica.
• Visam à identificação e interpretação de todos os
resultados relevantes de um determinado tópico de
pesquisa, fenômeno de interesse ou questão de
pesquisa.
• Exemplo: revisão sistemática e meta-análise.
Tipos de Estudos Experimentais
Terciários
• Também chamados de revisões terciárias.
• São revisões de estudos secundários relacionados a
uma mesma questão de pesquisa.
• Uma revisão terciária é uma revisão sistemática de
revisões sistemáticas para responder uma questão
mais ampla.
• Usa a mesma metodologia das revisões sistemáticas
padrão, mas dependem da existência de revisões
sistemáticas suficientes e com alto grau de
qualidade.
Tipos de Estudos Experimentais
• Quantitativos. Aplica métodos matemáticos ou
estatísticos para derivar conclusões e provar ou
refutar uma hipótese.
• Qualitativos. São usados para analisar e
interpretar o significado dos resultados
produzidos por pesquisas quantitativas.
Tipos de Estudos Experimentais
• Mais comumente utilizados:
▫ Survey
▫ Estudo de caso
▫ Experimento e semi-Experimento
▫ Revisão sistemática
• O tipo mais apropriado depende dos objetivos do
estudo, propriedades do processo de software usado
durante a experimentação, ou dos resultados
esperados.
• Mais de um processo pode ser usado ao longo do
desenvolvimento de uma pesquisa.
Survey
• Coleta de informação de forma sistemática e consistente para
descrever, comparar, predizer ou explicar um fenómeno
(conhecimento ou comportamento).
• Tipicamente realizado através da aplicação de questionários e
entrevistas para coletar dados quantitativos ou qualitativos acerca
de uma questão de pesquisa.
▫ As questões no questionário devem ser não ambíguas. Problema:
quantidade de respondentes!
▫ A coleta de dados é feita em uma amostra representativa da
população sob estudo. Amostra randômica pode não resolver...
▫ Resultados são analisados de forma a extrair conclusões que
possam ser generalizadas.
Survey
• Frequentemente usado em conjunto com outro
método empírico, como estudo de caso.
• Natureza
▫ Executada em retrospectiva com objetivo de identificar
as características de uma população de indivíduos.
▫ Normalmente Explanatória. Avaliar o “por que?”. Por
exemplo avaliar benefícios ou desvantagens no uso de
uma técnica.
▫ ... mas pode ser Descritiva ou Exploratória. Pré-
estudo. Por exemplo, identificar problemas existentes
com vistas a considerar a adoção de uma técnica.
▫ Pode ser desenvolvido in-situ para um projeto em
andamento.
Checklist do Survey
• Definir os objetivos
• Especificar a população em termos de fontes,
critérios de inclusão/exclusão, etc.
• Especificar a amostra (método utilizado:
probabilístico ou não probabilístico).
• Informar taxa de resposta.
• Disponibilizar questionário.
• Avaliar a sua confiabilidade (calcular medida de
erro, e outras ameaças a validade)
Survey
• Exemplos
▫ Avaliar a efetividade do RUP para promover
qualidade de projeto geral na companhia X e/ou
Y.
▫ A utilização da abordagem de linha de produto
acelera o time-to-market de sistema de
informação web na companhia Z?
Estudo de Caso
• Investiga uma instância de um fenômeno
contemporâneo dentro do contexto real.
▫ Utilizado para monitorar projetos, atividades e atribuições.
▫ Revelar relacionamento Causa-Efeito
▫ O pesquisador não deve interferir no processo.
• Visam observar um atributo específico ou estabelecer o
relacionamento entre atributos diferentes.
• Formatos
▫ Comparação de resultados entre métodos novos de
encontro à baseline da empresa.
▫ Projetos semelhantes que usam diferentes tecnologias.
▫ Aplicação de um método aleatoriamente aplicado a um
projeto em comparação a outros projetos.
Estudo de Caso
• Tipos
▫ Exploratórios para derivar novas hipóteses.
▫ Confirmatórios para confirmar ou refutar teorias
existentes.
• Questão de pesquisa clara em relação a como e
porque certo fenômeno acontece?
▫ Guia na seleção de casos e tipos de dados colhidos.
▫ Amostragem proposital (não randômica). Seleciona
por relevância e representatividade.
• Vantagem: fácil planejamento.
• Desvantagem: resultados dificilmente podem ser
generalizados.
Checklist para Estudo de Caso
• Sem intervenção do pesquisador.
• Objetivos e hipóteses claros.
• Processo de coleta de dados definido.
• Processo de análise definido (papeis, revisões).
• Conclusões claras a partir da análise.
• Clara derivação das evidências a partir da
observação.
Experimento
• Estudo de uma hipótese testável onde uma ou mais
variáveis independentes são manipuladas para medir seu
efeito em uma ou mais variáveis dependentes, com uso
de técnicas estatísticas.
• Realizado em um ambiente controlado.
• Baseado em randomização, onde diferentes tratamentos
são aplicados enquanto que outras variáveis são
mantidas constantes, e os efeitos nos resultados são
medidos.
▫ Quando a seleção de tratamentos às variáveis não pode ser
aleatória são chamados de quase-experimento.
Experimento
• Método para confirmar teoria ou
conhecimento.
• Manipulação de variáveis
▫ In vitro, sob condições de laboratório
▫ In vivo, sob condições normais
• O controle total sobre processo e variáveis
possibilita que possa ser repetido.
▫ Envolve a definição de escopo, planejamento,
operação, análise, interpretação e reporte de
resultados.
Experimento
• Exemplos
▫ Avaliar a eficácia das métricas para detectar um
bad smell em um certo projeto.
▫ Avaliar o tempo gasto para desenvolver e testar
funções usando:
 Pair programming vs. Solo programming
 Testing last vs. Testing first
Checklist de Experimento
• Formulação das hipóteses (nula e alternativas).
• Variáveis definidas explicitamente.
• Pelo menos 10 participantes.
• Uso de métodos estatísticos na interpretação dos
resultados para rejeitar a hipótese nula.
Comparação entre Estratégias
Empíricas
Fator Survey Estudo de caso Experimento
Controle da Nenhum Nenhum Tem
execução
Controle da Nenhum Tem Tem
medição
Controle da Baixo Médio Alto
investigação
Facilidade de Alto Baixo Alto
repetição
Custo Baixo Médio Alto
Revisão sistemática
• Tem por objetivo sumarizar a pesquisa existente, reunir
e avaliar evidencias disponíveis referentes a um tópico
específico e prover orientações de pesquisa futura
identificando lacunas na literatura existente.
▫ Síntese de resultados empíricos.
▫ Executada de modo formal e sistemático.
• Etapas: planejamento, condução e reporte de resultados.
• Envolve:
▫ Definir questões de pesquisa.
▫ Planejar e documentar a estratégia de busca.
▫ Determinar critérios de inclusão e exclusão.
▫ Estabelecer critérios de qualidade.
Revisão sistemática
• Livrarias digitais: IEEE Xplore, ScienceDirect,
ACM Digital library, SpringerLink, Web of
Science, and Wiley Online Library.
• Exemplos
▫ Revisão de estudos empíricos sobre o impacto de
padrões de projeto em *ility software.
▫ Revisão de estudos empíricos sobre a usabilidade
de métricas de acoplamento para identificar
módulos com defeitos
Leituras
• Selecting empirical methods for software engineering
research. Easterbrook S. et al.

• Experimentation in software engineering. Basili V. et al.


IEEE transactions on software engineering, vol. SE-12,
no. 7, 1986.
Experimentation in Software
Engineering (Basili, 1986)
• O processo experimental fornece o necessário
avanço em conhecimento e entendimento.
• A experimentação é realizada de forma a ajudar a
melhor avaliar, predizer, entender, controlar e
melhorar o processo de desenvolvimento e produto.
▫ Envolve uma iteração entre hipótese e processo de
teste.
▫ Modelos do processo de software ou produto são
construídos, as hipótese sobre estes modelos são
testadas e a informação aprendida é usada para refinar
o modelo
Framework de experimentação
• Tem por objetivo ajudar a estruturar o processo
experimental e fornecer um esquema de
classificação para entender e avaliar estudos
experimentais.
• Fases do processo de experimentação:
▫ Definição
▫ Planejamento
▫ Operação
▫ Interpretação
Definição
• Motivação: entender, avaliar, gerenciar, projetar, aprender,
melhorar, validar, assegurar.

• Objeto de estudo: produto, processo, modelo, métrica, teoria.

• Propósito: caracterizar, avaliar, predizer, motivar.

• Perspectiva: desenvolvedor, suporte manutenção, gerente de


projeto, gerente organização, cliente, usuário.

• Domínio: comunidade, programadores e programa/projeto.

• Escopo: projeto simples, múltiplos projetos, projeto replicado,


projetos em bloco.
Exemplo de definição
• Motivação: melhorar o processo de teste de
unidade.
• Propósito: caracterização e avaliação.
• Objeto: os processos de teste estrutural e
funcional.
• Perspectiva: do desenvolvedor.
• Domínio programador: como testes são
aplicados por programadores experientes.
• Domínio programa: unidades de software.
• Escopo: bloco de projetos.
Planejamento
• Projeto (design): compreende o estudo do escopo e
como a amostra será examinada.

• Critérios: Reflexões diretas ou indiretas sobre


custo/qualidade, capturados através de métricas.

• Medições: definição de métricas, validação de


métricas, coleta de dados (formulários projetados e
testados), objetiva vs. subjetiva, níveis de medição.
▫ Goal/Question/Metric (GQM)
Operação
• Preparação: estudo piloto.
• Execução: coleta e validação dos dados.
▫ Histórico: pesquisa bibliográfica, lições aprendidas,
análise estática.
▫ Observação: monitoramento do projeto, estudo de
caso, estudo de campo.
▫ Controlado: repetição, sintético, análise dinâmica,
simulação.
• Análise: combinando métodos quantitativo e
qualitativo
▫ análise de dados preliminar (histogramas e plots).
▫ análise de dados formal (modelos estatísticos e testes).
Interpretação
• Contexto de interpretação: os resultados da análise
dos dados podem ser interpretados em diversos
contextos
▫ Depende do framework estatístico, propósito do
estudo, campo da pesquisa.

• Extrapolação: depende da representatividade da


amostra.

• Impacto: visibilidade (apresentação/publicação dos


resultados), replicação, aplicação.
Problemas na área
• Não existe um modelo universal.
• Dificuldade em definir o propósito do estudo em
termos de (perspectivas de) qualidade.
• O planejamento pode incluir outros
experimentos para explorar, verificar, aplicar e
refinar hipóteses.
• Cuidado com os dados (definição, validação e
comunicação).
• Resultados são qualificados pela qualidade da
amostra.
Conclusão
• A experimentação em ES. suporta o avanço do
campo através de um processo de aprendizado
iterativo .
• É aplicado numa variedade de ambientes para
estudar uma variedade de áreas de tecnologia de
software.
Fim Parte 1