Introduction to Experimental Software Engineeringinf2921/2014_2/docs/aulas/INF2921_aula1.pdf · •...

28
Introduction to Experimental Software Engineering Alessandro Garcia [email protected] Departamento de Informática

Transcript of Introduction to Experimental Software Engineeringinf2921/2014_2/docs/aulas/INF2921_aula1.pdf · •...

Introduction to Experimental

Software Engineering

Alessandro Garcia

[email protected]

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

[email protected]

Departamento deInformática