Introduction to Experimental
Software Engineering
Alessandro Garcia
Departamento deInformática
Website do curso
• Com todos slides e informações:
– http://www.inf.puc-rio.br/~inf2921/2014_2/
– Já está disponível a partir desta semana:
• “placeholder for the slides and key references”
• agenda com aulas e datas das apresentações
Agile
Software Engineering
Plethora of Software Engineering Paradigms
• syndrome of *-based software engineering approaches
– underpinning principles
• simple design
• low coupling and high cohesion
• separation of concerns
• narrow interfaces
• ….
– abstractions and decomposition mechanisms
• classes, objects, inheritance, delegation, …
– new methods, techniques, mechanisms
Component-Based
Software Engineering
Object-Oriented
Software Engineering
Pattern-Based
Software Development
Model-Driven
Software Development
Aspect-Oriented
Software Engineering
Do wetrust?
Experimental Software Engineering:Why and What
• Why?
– empirical studies in software engineering (SE) supports
• the advancement of the field through experimental processes
– common wisdom, intuition, speculation and proofs of concepts
are not reliable sources of credible knowledge
• transfer of research results to mainstream software development requires empirical evidence
• What?
– experimental software engineering describes the methods and techniques for performing empirical studies
• the process supports us in doing our studies correctly
Motivation for SE empirical studies…
Example – typical scenario in SE research
• motivation – experts of AOP (Kiczales, Lopes, 1997-2000) argue that:– exception handling implementation is more maintainable and
reusable with AOP than OOP
• superior separation of error handling code
• reuse of 80% of exception handlers (i.e. catch blocks in Java)
• empirical study conducted at Lancaster (2005-2007)– comparison of object-oriented programming (OOP) vs. aspect-
oriented programming (AOP)
• our empirical study: compared actual Java vs. AspectJ implementations of exception handling– 4 real-life software applications
– control: representatives of real software systems, different domains, different exception handling policies, etc…
• Partially confirmed some expectations
– Improved separation of error handling code
• Partially refuted the hypothesis of the experts
– Reuse of exception handlers occurs, but much less than advertised by the AOP proponents: from 20% to 40%
– Reuse of context-dependent exception handlers is very difficult
– Some AspectJ constructs are error prone: soften checked exceptions (transforming them in unchecked exceptions)
• Results added value to the current SE body of knowledge
• Problems in the first evaluation: “toy example”, “show what
the researchers wanted…”
– A non-empirical study: performed by AspectJ developers to illustrate the benefits of this technique, without exposing it to its fragilities
– Biases: one case only, a generic framework, etc…
Motivation for SE empirical studies…
Example – typical scenario in SE research
The Course…
• Brief overview
– Empirical Software Engineering: Why and What
– Types of Empirical Methods
• using concrete examples
– studies developed as coursework in the past in
this course
Objetivos do Curso
• Discutir diferentes métodos empíricos que permitam avaliar as técnicas e métodos existentes em Engenharia de Software
• Hoje: breve introdução ao curso
Tópicos Explorados
• visão geral de métodos empíricos• objetivos, perguntas de pesquisa e hipóteses
• estudos exploratórios
• experimentos (semi-)controlados
• estudos de caso
• surveys: questionários e entrevistas
• métricas e benchmarks
• formas qualitativas de coletas de dados
Formato do Curso
• Dinâmico e heterogêneo:
– aulas
– discussões de artigos
– apresentações ou seminários de convidados...
• ...da PUC: exemplos de estudos experimentais
• ...de fora da PUC: tutoriais ou palestras (TBA)
– apresentações e discussões
• feedback para trabalho da disciplina
– monografia
Contactando o Professor…
Prof. Alessandro Garcia
email: [email protected]
RDC - Room: 506
Pesquisadores Convidados (TBC)
- pesquisadores que atuam exclusivamente
em Engenharia de Software Experimental (ESE)
- pesquisadores que aplicam ESE
Invited Lectures (PUC)
• Manuele Ferreira, Minds@Work Engineer
– Action research in practice
– Applying action research in a SE company: lessons
learned
• Isela Macia, GE Researcher– Degradation of software architecture in programs
– Exploratory case studies
• Luciano Sampaio, Master student
– Are novice and experience programmers able to
detect security vulnerabilities?
– Controlled experiment, interviews and benchmarking
Invited Lectures (PUC)
• Elder Cirilo, Professor at Minas Gerais
– Variability management techniques for product lines
– Controlled experiment, and techniques for dealing
with small samples
• Eiji Adachi Barbosa, Researcher and PhD
Student
– How do programmers handle exceptions?
– Case studies in Java and C#
• ACM Distinguished Paper Award at ICSE 2014
... E outros
Sobre vocês...
• Mestrado? Doutorado?
• Qual o interesse na disciplina...
... e alguma experiência prévia com:
– estudos experimentais?
Organizando a Agenda
• Próximas aulas:– 27 de Agosto (quarta) :
• Métodos experimentais: uma visão geral – parte I
• Experimentos e Estudos de caso
– 3 de Setembro (quarta) • Convidados (ilustar experimentos e estudos de caso)
– 10 de Setembro (quarta) • Métodos experimentais: uma visão geral – parte II
• Surveys: entrevistas e questionários, Revisões sistemáticas
• Hipóteses
– 17 de Setembro (quarta) • Exemplos de surveys e revisões sistemáticas
Trabalho da Disciplina
• Apresentação em etapas:
– Idéia do estudo ao longo do semestre
• técnica(s) sendo estudada(s) e avaliada(s)
• objetivos do estudo e plano experimental
• pode ser: experimento, estudo de caso, estudo
exploratório, revisão sistemática, survey, etc…
– Discussão informal de resultados preliminares
– Apresentação dos resultados
• Monografia
Possíveis tópicos de trabalhos
• Um estudo empírico para avaliação da acurácia de métricas e heurísticas para identicar oportunidades de refatoração
• Um experimento controlado para avaliação da usabilidade (expressividade, concisão...) de uma linguagem específica de domínio (ex. para especificação de regras arquiteturais)
• Revisão sistemática de estudos empíricos do uso da técnica X para manutenção e evolução de linhas de produtos
• Avaliação de manutenibilidade de código produzido com programação orientada a aspectos (vs. POO)
• etc...
• Lembre-se: o trabalho deve ser feito incrementalmente, implementável (projeto e execução do estudo empírico) até início de dezembro
Exemplos de Trabalhos ano
passado…
• Experimento: comparando técnicas de conhecimento de
configuração de LPSs
– foco: compreensão e modificação do conhecimento de configuração
• Estudo exploratório da degenaração do código de uma LPS
• Avaliação de notações de modelagem de teste para
expressar variabilidade de casos de teste:
– uso de entrevistas, questionários e estudo de caso
Vários resultaram em
publicações interessantes…
• Experimento: comparando técnicas de conhecimento de
configuração de LPSs
– Artigo submetido ao SLE 2011
• Uso de técnicas avançadas de programação modular para
implementação de uma LPS
– Artigo aceito no SBES 2011
• Avaliação de técnicas de composição de modelos para
evoluir arquitetura de uma LPS
– Artigo aceito no AOSD 2010
• Avaliação de notações de modelagem de teste para
expressar variabilidade de casos de teste
– Artigo aceito no MODELS 2011
Apresentação do Plano Experimental
• Me enviem um e-mail até 17 de setembro, informando:– individual ou em dupla
– se já tem um tema ou não para o estudo experimental• título inicial
• qual o objetivo?
• hipóteses?
• você pode se juntar à um colega que já tem uma boa idéia:
– da aplicação à ser utilizada, e/ou
– dos objetivos do estudo
– fiquem à vontade para discutir idéias comigo
– Apresentação inicial: aprox. 25 mins + 5 mins perguntas
Apresentação do Plano
Experimental
• Estrutura da apresentação
– motivação
– breve explicação sobre conceitos básicos associados
ao tema do trabalho
– objetivos e questões de pesquisa
– hipóteses iniciais?
– método experimental à ser usado
– avaliação qualitativa/quantitativa
• quais indicadores? Métricas?
– sistemas sendo usadas como “alvo da avaliação”
Apresentações
• Apresentação do Tema do Trabalho– 17 de setembro e 24 de setembro
– Apresentação: 25 mins + 10 mins perguntas/sugestões
• Resultados dos Estudos Empíricos– Datas:
• 26 de novembro• 3 de dezembro
– Apresentação: 40 mins + 10 mins perguntas
• Se o estudo empírico for em grupo, espera-se que todos os membros contribuam ao longo das apresentações
• Me enviem as datas de preferência, título e breve resumo até 6 de setembro
“Mesas Redondas”
• Artigos– Ainda indefinidos...
• ... Mas devem ser relacionados com temas de trabalhos de vocês
– Se desejarem: enviem propostas de artigos por e-mail até 17 de setembro
Avaliação
• Monografia: 45%
• Apresentação do Tema: 15%
• Apresentações dos Resultados: 30%
• Participação: 10%
– presença nas aulas
– participação ativa (perguntas) durante o
colóquio e apresentações de colegas
– participação ativa nas mesas-redondas
Monografia
• Formato e Datas
– Formato Livre (sugestão – monografia DI)
– Tamanho: Mínimo: 15 páginas,
Máximo: 25 páginas
– Fonte: Times 12 (ou equivalente)
– Entrega: até 10 de dezembro
• envie pdf para [email protected]; e
• cópia impressa
– Entrega após esta data: menos 2 pontos
Monografia e Apresentação
• Critério:– Clareza e Objetividade
– Originalidade
– Reflexão crítica
– Se houver avaliação/comparação, espera-se que o critério esteja bem definido
– Profundidade nas discussões
– Uso de exemplos
– Rigor e adequação dos procedimentos experimentais
Atendimento
• Todos sempre muito bem-vindos para discutir proposta e refinamento do trabalho, apresentação e outras questões
• Via email: [email protected]
• Minha sala: RDC – 506, de preferência, marcar horário com antecedência
Introduction to Experimental
Software Engineering
Alessandro Garcia
Departamento deInformática