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:
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
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
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
• 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…
The Course…
• Brief overview
– Empirical Software Engineering: Why and What
– Types of Empirical Methods
• using concrete examples
Objetivos do Curso
• Discutir diferentes métodos empíricos que
permitam avaliar as técnicas e métodos
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
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
Contactando o Professor…
Prof. Alessandro Garcia
email: [email protected] RDC - Room: 506
Pesquisadores Convidados (TBC)
- pesquisadores que atuam exclusivamente
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?
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
Sobre vocês...
• Mestrado? Doutorado?
• Qual o interesse na disciplina...
... e alguma experiência prévia com:
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)
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
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,
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:
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
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
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?
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
“Mesas Redondas”
• Artigos
– Ainda indefinidos...
• ... Mas devem ser relacionados com temas de trabalhos de vocês
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
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