Querying the History of Software Projects using QwalKekostevensreinout
QwalKeko is a tool for querying the history of software projects. It uses a graph-based representation of code changes and a declarative query language to identify modified files, classify change types, and reason over multiple changes. The tool was used to analyze the change history of several projects totaling over 25,000 commits and 10,000 source files. Key features of QwalKeko include leveraging git metadata, AST information, and a graph navigation approach to enable flexible querying and performance over change histories.
This document introduces QwalKeko, a tool for querying version control system histories. It allows users to specify code characteristics and changes using a graph query language and logic programming rules. Querying the history involves traversing the version graph and checking if Ekeko logic rules are satisfied in each version. This allows formulating complex refactoring queries, such as finding methods that were pulled up to a parent class, in a declarative way.
The document discusses using logic meta-programming to query software history stored in repositories. It describes using tools like Ekeko, QWAL and a history model to query characteristics of code across multiple versions using logic rules. Regular path expressions allow formulating complex queries over the graph of program elements and their changes over time. Future work includes enhancing the history model and scaling the approach to larger projects.
Reasoning over the evolution of source code using QRPEstevensreinout
1. The document discusses Quantified Regular Path Expressions (QRPEs), a temporal query language that allows reasoning over the evolution of source code.
2. QRPEs use regular expressions to match patterns in version graphs and source code changes. This enables formulating queries over how code elements like methods are added, removed, or changed over time.
3. The document provides examples of QRPE queries to find "zombie methods" that are no longer called, analyze test-driven development patterns, and more. It also describes how QRPEs could be extended to incorporate additional information sources.
The document discusses how personalization and dynamic content are becoming increasingly important on websites. It notes that 52% of marketers see content personalization as critical and 75% of consumers like it when brands personalize their content. However, personalization can create issues for search engine optimization as dynamic URLs and content are more difficult for search engines to index than static pages. The document provides tips for SEOs to help address these personalization and SEO challenges, such as using static URLs when possible and submitting accurate sitemaps.
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldabaux singapore
How can we take UX and Data Storytelling out of the tech context and use them to change the way government behaves?
Showcasing the truth is the highest goal of data storytelling. Because the design of a chart can affect the interpretation of data in a major way, one must wield visual tools with care and deliberation. Using quantitative facts to evoke an emotional response is best achieved with the combination of UX and data storytelling.
This document summarizes a study of CEO succession events among the largest 100 U.S. corporations between 2005-2015. The study analyzed executives who were passed over for the CEO role ("succession losers") and their subsequent careers. It found that 74% of passed over executives left their companies, with 30% eventually becoming CEOs elsewhere. However, companies led by succession losers saw average stock price declines of 13% over 3 years, compared to gains for companies whose CEO selections remained unchanged. The findings suggest that boards generally identify the most qualified CEO candidates, though differences between internal and external hires complicate comparisons.
Querying the History of Software Projects using QwalKekostevensreinout
QwalKeko is a tool for querying the history of software projects. It uses a graph-based representation of code changes and a declarative query language to identify modified files, classify change types, and reason over multiple changes. The tool was used to analyze the change history of several projects totaling over 25,000 commits and 10,000 source files. Key features of QwalKeko include leveraging git metadata, AST information, and a graph navigation approach to enable flexible querying and performance over change histories.
This document introduces QwalKeko, a tool for querying version control system histories. It allows users to specify code characteristics and changes using a graph query language and logic programming rules. Querying the history involves traversing the version graph and checking if Ekeko logic rules are satisfied in each version. This allows formulating complex refactoring queries, such as finding methods that were pulled up to a parent class, in a declarative way.
The document discusses using logic meta-programming to query software history stored in repositories. It describes using tools like Ekeko, QWAL and a history model to query characteristics of code across multiple versions using logic rules. Regular path expressions allow formulating complex queries over the graph of program elements and their changes over time. Future work includes enhancing the history model and scaling the approach to larger projects.
Reasoning over the evolution of source code using QRPEstevensreinout
1. The document discusses Quantified Regular Path Expressions (QRPEs), a temporal query language that allows reasoning over the evolution of source code.
2. QRPEs use regular expressions to match patterns in version graphs and source code changes. This enables formulating queries over how code elements like methods are added, removed, or changed over time.
3. The document provides examples of QRPE queries to find "zombie methods" that are no longer called, analyze test-driven development patterns, and more. It also describes how QRPEs could be extended to incorporate additional information sources.
The document discusses how personalization and dynamic content are becoming increasingly important on websites. It notes that 52% of marketers see content personalization as critical and 75% of consumers like it when brands personalize their content. However, personalization can create issues for search engine optimization as dynamic URLs and content are more difficult for search engines to index than static pages. The document provides tips for SEOs to help address these personalization and SEO challenges, such as using static URLs when possible and submitting accurate sitemaps.
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldabaux singapore
How can we take UX and Data Storytelling out of the tech context and use them to change the way government behaves?
Showcasing the truth is the highest goal of data storytelling. Because the design of a chart can affect the interpretation of data in a major way, one must wield visual tools with care and deliberation. Using quantitative facts to evoke an emotional response is best achieved with the combination of UX and data storytelling.
This document summarizes a study of CEO succession events among the largest 100 U.S. corporations between 2005-2015. The study analyzed executives who were passed over for the CEO role ("succession losers") and their subsequent careers. It found that 74% of passed over executives left their companies, with 30% eventually becoming CEOs elsewhere. However, companies led by succession losers saw average stock price declines of 13% over 3 years, compared to gains for companies whose CEO selections remained unchanged. The findings suggest that boards generally identify the most qualified CEO candidates, though differences between internal and external hires complicate comparisons.
The document describes using a Bayesian network to model software reliability prediction when an operational profile is considered. It develops an extended Markov Bayesian network (EMBN) that can handle software reliability prediction with an operational profile. The EMBN models the number of remaining defects after each run, the operation performed during each run based on an operational profile, and whether a failure occurred during each run. It allows incorporating prior information on the failure characteristics of software systems under different operations into the reliability prediction.
Artificial Intelligence Applications in Petroleum Engineering - Part IRamez Abdalla, M.Sc
This document discusses applications of artificial intelligence, specifically artificial neural networks and genetic algorithms, in petroleum engineering. It provides an overview of neural networks in OnePetro papers, describes the basic concepts and training processes of neural networks and genetic algorithms. It then discusses various applications of these techniques in reservoir engineering, production technologies, and oil well drilling, including reservoir characterization, modeling, well test analysis, permeability prediction, production monitoring, drilling optimization, and more. The presentation aims to explore these applications in more depth.
ARIES: An Eclipse Plug-in To Support Extract Class RefactoringFabio Palomba
During software evolution changes are inevitable. These changes may lead to design erosion and the introduction of inadequate design solutions, such as design antipatterns. Several empirical studies provide evidence that the presence of antipatterns is generally associated with lower productivity, greater rework, and more significant design efforts for developers. In order to improve the quality and remove antipatterns, refactoring operations are needed. In this demo, we present the Extract class features of ARIES (Automated Refactoring In EclipSe), an Eclipse plug-in that supports the software engineer in removing the “Blob” antipattern.
The caret package is a unified interface to a large number of predictive mode...odsc
The caret package is a unified interface to a large number of predictive model functions in R.
First created in 2005, the home for the source code and documentation has changed several times.
In this talk, we will outline the somewhat unique aspects of the package and how it impacts the development environment (including documentation and testing). Friction points with CRAN and their resolution will also be discussed.
Three Pillars, No Answers: Helping Platform Teams Solve Real Observability Pr...DevOps.com
Observability has never been more important: the complexity of microservices makes it harder and harder to answer basic questions about system behavior.
The conventional wisdom claims that Metrics, Logging and Tracing are “the three pillars” of observability… yet software organizations check these three boxes and are still grasping at straws during emergencies.
In this session we’ll illustrate the problem with the three pillars: metrics, logs, and traces are just data – they are the fuel, not the car.
Interpretability and Reproducibility in Production Machine Learning Applicat...Swaminathan Sundararaman
The past decade has seen tremendous growth in production deployments of machine learning algorithms across a range of applications such as targeted advertising, self driving cars, speech translation, medical diagnosis etc [1]. In these contexts, models make key decisions such as predicting the likelihood of a person committing a future crime, trustworthiness for a loan approval, medical diagnosis etc [2]. Presence of bias based on gender, geographical location, race etc., and their consequent negative impact, have been uncovered in several of these deployments [3], [4]. Industries and governments are reacting, enacting regulations requiring that decisions made by machine learning models be Interpretable/Explainable [5].
Explainability across the full range of ML and DL algorithms is an unsolved research problem, with many innovations over the last several years and entire conferences devoted to the topic. However, even simple explainability solutions that are considered established in development (training environments) run into additional difficulties when put into live production.
Our design pattern uses a well known technique for explainability - the Canary model (sometimes called Surrogate model) [6,7]. In this approach, a classically non-explainable technique, such as a Neural Network, is paired with an explainable model (that approximates the predictions of the non-explainable technique) such as a Decision Tree. As long as predictions match - the Canary model’s behavior can be used to provide a human understandable reasoning for the prediction.
Multimodal Residual Learning for Visual Question-AnsweringNAVER D2
The document summarizes Jin-Hwa Kim's paper on multimodal residual learning for visual question answering (VQA). It describes the VQA task, the vision and question modeling parts of the proposed approach, and how multimodal residual networks are used to combine the vision and question representations. Evaluation results on the VQA test-dev dataset show the proposed approach achieves state-of-the-art performance.
SBST 2015 - 3rd Tool Competition for Java Junit test ToolsTanja Vos
This document describes the 3rd competition for automated unit testing tools, which evaluates tools' abilities to generate JUnit tests for unknown Java classes based on various coverage and efficiency metrics. Several tools participated including EvoSuite, GRT, and Randoop, with tests run across 63 classes from various open source projects. The competition aims to improve tools by comparing different testing approaches and provide insights for future research.
Practicing at the Cutting Edge: Learning and Unlearning about Java PerformanceC4Media
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1dImvww.
Martin Thompson overviews Java's evolution, comparing it with C++'s, discussing the challenges of pushing the performance limits. Filmed at qconsf.com.
Martin Thompson is a high-performance and low-latency specialist, with experience gained over two decades working on large scale transactional and big-data systems.
Genetic algorithms are optimization techniques inspired by biological evolution that can efficiently search large spaces to find optimal solutions; they work by evolving a population of potential solutions through mechanisms like selection, crossover and mutation. Genetic algorithms have been successfully applied to problems in many domains and are now widely used in business, science and engineering for applications like scheduling, design, control, and machine learning.
This document summarizes a research paper that proposes using kernel learning methods to detect rumors in microblog posts by modeling how information spreads as propagation trees. It introduces a propagation tree kernel (PTK) that calculates similarity between propagation trees by counting common subtrees. It also proposes a context-sensitive extension of PTK (cPTK) that considers propagation paths from the root node to subtrees. An evaluation on two Twitter datasets shows cPTK achieves the best rumor detection performance compared to other baselines.
A novel approach for satellite imagery storage by classifyiaemedu
This document presents a novel approach for classifying and storing satellite imagery by detecting and storing only non-duplicate regions. It uses kernel principal component analysis to reduce the dimensionality and extract features of satellite images. Fuzzy N-means clustering is then used to segment the images into blocks. A duplication detection algorithm compares blocks to identify duplicate and non-duplicate regions. Only the non-duplicate regions are stored in the database, improving storage efficiency and updating speed compared to completely replacing existing images. Support vector machines are used to categorize the non-duplicate blocks into the appropriate classes in the existing images.
A novel approach for satellite imagery storage by classifying the non duplica...IAEME Publication
This document presents a novel approach for classifying and storing satellite imagery by detecting and storing only non-duplicate regions. It uses kernel principal component analysis to reduce the dimensionality and extract features of satellite images. Fuzzy N-means clustering is then used to segment the images into blocks. A duplication detection algorithm compares blocks to identify duplicate and non-duplicate regions. Only the non-duplicate regions are stored in the database, improving storage efficiency and updating speed compared to completely replacing existing images. Support vector machines are used to categorize the non-duplicate blocks into the appropriate classes in the existing images.
Bug Prediction Based on Fine-Grained Module HistoriesHideaki Hata
This document discusses a study on method-level bug prediction using fine-grained historical metrics collected from a version control system called Historage. The study finds that method-level prediction using these metrics can more accurately predict bugs compared to package-level or file-level prediction, requiring less effort. However, further empirical studies are still needed to validate the actual effort savings of method-level prediction and more metrics and projects should be examined.
Sahil Grover is a final year undergraduate student studying Computer Science and Engineering at IIT Kanpur. He has a strong academic record and has received several awards and honors. His skills include proficiency in languages like C++, JavaScript, Python, and tools like Git. He has experience with projects involving machine learning, compilers, and operating systems. He also has extensive achievements in competitive programming competitions.
1) The presentation discusses Caffeine, a tool for dynamic analysis of Java programs that uses Prolog predicates to model execution events and perform analyses.
2) Caffeine models execution events like field accesses, method calls, and class loads. Queries can be written in Prolog to analyze program behavior, like counting method calls.
3) The implementation has performance issues due to overhead from event generation, requiring instrumentation tricks. Analyzing complex relationships like composition is discussed.
This document discusses using particle swarm optimization based on variable neighborhood search (PSO-VNS) to attack classical cryptography ciphers. PSO is a population-based optimization algorithm inspired by bird flocking behavior. VNS is a metaheuristic algorithm that explores neighborhoods of solutions to escape local optima. The paper proposes improving PSO with VNS to find better solutions. It evaluates PSO-VNS on substitution and transposition ciphers, finding it recovers keys better than standard PSO and other variants.
Darwin’s Magic: Evolutionary Computation in Nanoscience, Bioinformatics and S...Natalio Krasnogor
In this talk I will overview ten years of research in the application of evolutionary computation ideas in the natural sciences. The talk will take us on a tour that will cover problems in nanoscience, e.g. controlling self-‐organizing systems, optimizing scanning probe microscopy, etc., problems arising in bioinformatics, such as predicting protein structures and their features, to challenges emerging in systems and synthetic biology. Although the algorithmic solutions involved in these problems are different from each other, at their core, they retain Darwin’s wonderful insights. I will conclude the talk by giving a personal view on why EC has been so successful and where, in my mind, the future lies.
Eeee2017 Conference - OR in the digital era - ICT challenges | PresentationChristos Papalitsas
The document describes a quantum-inspired generalized variable neighborhood search (qGVNS) metaheuristic for solving the traveling salesman problem with time windows (TSP-TW). qGVNS uses a 1-shift local search operator and a quantum-inspired shaking procedure to perturb solutions. It was tested on 10 benchmark TSP-TW instances and found feasible solutions for all within the time limit. The authors conclude that qGVNS shows promise for solving TSP-TW and future work could include more extensive testing and applying it to optimization phases.
The document describes using a Bayesian network to model software reliability prediction when an operational profile is considered. It develops an extended Markov Bayesian network (EMBN) that can handle software reliability prediction with an operational profile. The EMBN models the number of remaining defects after each run, the operation performed during each run based on an operational profile, and whether a failure occurred during each run. It allows incorporating prior information on the failure characteristics of software systems under different operations into the reliability prediction.
Artificial Intelligence Applications in Petroleum Engineering - Part IRamez Abdalla, M.Sc
This document discusses applications of artificial intelligence, specifically artificial neural networks and genetic algorithms, in petroleum engineering. It provides an overview of neural networks in OnePetro papers, describes the basic concepts and training processes of neural networks and genetic algorithms. It then discusses various applications of these techniques in reservoir engineering, production technologies, and oil well drilling, including reservoir characterization, modeling, well test analysis, permeability prediction, production monitoring, drilling optimization, and more. The presentation aims to explore these applications in more depth.
ARIES: An Eclipse Plug-in To Support Extract Class RefactoringFabio Palomba
During software evolution changes are inevitable. These changes may lead to design erosion and the introduction of inadequate design solutions, such as design antipatterns. Several empirical studies provide evidence that the presence of antipatterns is generally associated with lower productivity, greater rework, and more significant design efforts for developers. In order to improve the quality and remove antipatterns, refactoring operations are needed. In this demo, we present the Extract class features of ARIES (Automated Refactoring In EclipSe), an Eclipse plug-in that supports the software engineer in removing the “Blob” antipattern.
The caret package is a unified interface to a large number of predictive mode...odsc
The caret package is a unified interface to a large number of predictive model functions in R.
First created in 2005, the home for the source code and documentation has changed several times.
In this talk, we will outline the somewhat unique aspects of the package and how it impacts the development environment (including documentation and testing). Friction points with CRAN and their resolution will also be discussed.
Three Pillars, No Answers: Helping Platform Teams Solve Real Observability Pr...DevOps.com
Observability has never been more important: the complexity of microservices makes it harder and harder to answer basic questions about system behavior.
The conventional wisdom claims that Metrics, Logging and Tracing are “the three pillars” of observability… yet software organizations check these three boxes and are still grasping at straws during emergencies.
In this session we’ll illustrate the problem with the three pillars: metrics, logs, and traces are just data – they are the fuel, not the car.
Interpretability and Reproducibility in Production Machine Learning Applicat...Swaminathan Sundararaman
The past decade has seen tremendous growth in production deployments of machine learning algorithms across a range of applications such as targeted advertising, self driving cars, speech translation, medical diagnosis etc [1]. In these contexts, models make key decisions such as predicting the likelihood of a person committing a future crime, trustworthiness for a loan approval, medical diagnosis etc [2]. Presence of bias based on gender, geographical location, race etc., and their consequent negative impact, have been uncovered in several of these deployments [3], [4]. Industries and governments are reacting, enacting regulations requiring that decisions made by machine learning models be Interpretable/Explainable [5].
Explainability across the full range of ML and DL algorithms is an unsolved research problem, with many innovations over the last several years and entire conferences devoted to the topic. However, even simple explainability solutions that are considered established in development (training environments) run into additional difficulties when put into live production.
Our design pattern uses a well known technique for explainability - the Canary model (sometimes called Surrogate model) [6,7]. In this approach, a classically non-explainable technique, such as a Neural Network, is paired with an explainable model (that approximates the predictions of the non-explainable technique) such as a Decision Tree. As long as predictions match - the Canary model’s behavior can be used to provide a human understandable reasoning for the prediction.
Multimodal Residual Learning for Visual Question-AnsweringNAVER D2
The document summarizes Jin-Hwa Kim's paper on multimodal residual learning for visual question answering (VQA). It describes the VQA task, the vision and question modeling parts of the proposed approach, and how multimodal residual networks are used to combine the vision and question representations. Evaluation results on the VQA test-dev dataset show the proposed approach achieves state-of-the-art performance.
SBST 2015 - 3rd Tool Competition for Java Junit test ToolsTanja Vos
This document describes the 3rd competition for automated unit testing tools, which evaluates tools' abilities to generate JUnit tests for unknown Java classes based on various coverage and efficiency metrics. Several tools participated including EvoSuite, GRT, and Randoop, with tests run across 63 classes from various open source projects. The competition aims to improve tools by comparing different testing approaches and provide insights for future research.
Practicing at the Cutting Edge: Learning and Unlearning about Java PerformanceC4Media
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1dImvww.
Martin Thompson overviews Java's evolution, comparing it with C++'s, discussing the challenges of pushing the performance limits. Filmed at qconsf.com.
Martin Thompson is a high-performance and low-latency specialist, with experience gained over two decades working on large scale transactional and big-data systems.
Genetic algorithms are optimization techniques inspired by biological evolution that can efficiently search large spaces to find optimal solutions; they work by evolving a population of potential solutions through mechanisms like selection, crossover and mutation. Genetic algorithms have been successfully applied to problems in many domains and are now widely used in business, science and engineering for applications like scheduling, design, control, and machine learning.
This document summarizes a research paper that proposes using kernel learning methods to detect rumors in microblog posts by modeling how information spreads as propagation trees. It introduces a propagation tree kernel (PTK) that calculates similarity between propagation trees by counting common subtrees. It also proposes a context-sensitive extension of PTK (cPTK) that considers propagation paths from the root node to subtrees. An evaluation on two Twitter datasets shows cPTK achieves the best rumor detection performance compared to other baselines.
A novel approach for satellite imagery storage by classifyiaemedu
This document presents a novel approach for classifying and storing satellite imagery by detecting and storing only non-duplicate regions. It uses kernel principal component analysis to reduce the dimensionality and extract features of satellite images. Fuzzy N-means clustering is then used to segment the images into blocks. A duplication detection algorithm compares blocks to identify duplicate and non-duplicate regions. Only the non-duplicate regions are stored in the database, improving storage efficiency and updating speed compared to completely replacing existing images. Support vector machines are used to categorize the non-duplicate blocks into the appropriate classes in the existing images.
A novel approach for satellite imagery storage by classifying the non duplica...IAEME Publication
This document presents a novel approach for classifying and storing satellite imagery by detecting and storing only non-duplicate regions. It uses kernel principal component analysis to reduce the dimensionality and extract features of satellite images. Fuzzy N-means clustering is then used to segment the images into blocks. A duplication detection algorithm compares blocks to identify duplicate and non-duplicate regions. Only the non-duplicate regions are stored in the database, improving storage efficiency and updating speed compared to completely replacing existing images. Support vector machines are used to categorize the non-duplicate blocks into the appropriate classes in the existing images.
Bug Prediction Based on Fine-Grained Module HistoriesHideaki Hata
This document discusses a study on method-level bug prediction using fine-grained historical metrics collected from a version control system called Historage. The study finds that method-level prediction using these metrics can more accurately predict bugs compared to package-level or file-level prediction, requiring less effort. However, further empirical studies are still needed to validate the actual effort savings of method-level prediction and more metrics and projects should be examined.
Sahil Grover is a final year undergraduate student studying Computer Science and Engineering at IIT Kanpur. He has a strong academic record and has received several awards and honors. His skills include proficiency in languages like C++, JavaScript, Python, and tools like Git. He has experience with projects involving machine learning, compilers, and operating systems. He also has extensive achievements in competitive programming competitions.
1) The presentation discusses Caffeine, a tool for dynamic analysis of Java programs that uses Prolog predicates to model execution events and perform analyses.
2) Caffeine models execution events like field accesses, method calls, and class loads. Queries can be written in Prolog to analyze program behavior, like counting method calls.
3) The implementation has performance issues due to overhead from event generation, requiring instrumentation tricks. Analyzing complex relationships like composition is discussed.
This document discusses using particle swarm optimization based on variable neighborhood search (PSO-VNS) to attack classical cryptography ciphers. PSO is a population-based optimization algorithm inspired by bird flocking behavior. VNS is a metaheuristic algorithm that explores neighborhoods of solutions to escape local optima. The paper proposes improving PSO with VNS to find better solutions. It evaluates PSO-VNS on substitution and transposition ciphers, finding it recovers keys better than standard PSO and other variants.
Darwin’s Magic: Evolutionary Computation in Nanoscience, Bioinformatics and S...Natalio Krasnogor
In this talk I will overview ten years of research in the application of evolutionary computation ideas in the natural sciences. The talk will take us on a tour that will cover problems in nanoscience, e.g. controlling self-‐organizing systems, optimizing scanning probe microscopy, etc., problems arising in bioinformatics, such as predicting protein structures and their features, to challenges emerging in systems and synthetic biology. Although the algorithmic solutions involved in these problems are different from each other, at their core, they retain Darwin’s wonderful insights. I will conclude the talk by giving a personal view on why EC has been so successful and where, in my mind, the future lies.
Eeee2017 Conference - OR in the digital era - ICT challenges | PresentationChristos Papalitsas
The document describes a quantum-inspired generalized variable neighborhood search (qGVNS) metaheuristic for solving the traveling salesman problem with time windows (TSP-TW). qGVNS uses a 1-shift local search operator and a quantum-inspired shaking procedure to perturb solutions. It was tested on 10 benchmark TSP-TW instances and found feasible solutions for all within the time limit. The authors conclude that qGVNS shows promise for solving TSP-TW and future work could include more extensive testing and applying it to optimization phases.
Eeee2017 Conference - OR in the digital era - ICT challenges | Presentation
QwalKeko, a History Querying Tool
1. QwalKeko,
a History Querying Tool
Reinout Stevens, Coen De Roover, Carlos Noguera
resteven@vub.ac.be
@ReinoutStevens
1
Wednesday 6 March 13
2. Context
Program
Comprehension
2
Wednesday 6 March 13
3. Was this method pulled up?
Who introduced
this class?
Who has made changes to
my classes?
History Questions
How often is this method
Why were these changes changed?
introduced? Template-based Reconstruction of Complex Refactorings
Kyle Prete, Napol Rachatasumrit, Nikita Sudan, Miryung Kim
International Conference on Software Maintenance (ICSM), p.1--10, 2010
Using Information Fragments to Answer the Questions Developers Ask
Thomas Fritz and Gail C. Murphy
International Conference on Software Engineering (ICSE), p.175--184, 2010
3
Wednesday 6 March 13
4. Was this method pulled up?
Who introduced
this class?
Who has made changes to
my classes?
History Questions
How often is this method
Why were these changes changed?
introduced? Template-based Reconstruction of Complex Refactorings
Kyle Prete, Napol Rachatasumrit, Nikita Sudan, Miryung Kim
International Conference on Software Maintenance (ICSM), p.1--10, 2010
Using Information Fragments to Answer the Questions Developers Ask
Thomas Fritz and Gail C. Murphy
International Conference on Software Engineering (ICSE), p.175--184, 2010
3
Wednesday 6 March 13
5. Pulled up Method
BaseClass
Version 1
DerivedClass
Method()
BaseClass
Method()
Version 2
DerivedClass
4
Wednesday 6 March 13
6. Pulled up Method
(ast :MethodDeclaration ?method)
Version 1 (declaring-class ?method ?derived)
(method-moved ?method ?pulled)
Version 2 (declaring-class ?pulled ?base)
(superclass ?base ?derived)
Template-based Reconstruction of Complex Refactorings
Kyle Prete, Napol Rachatasumrit, Nikita Sudan, Miryung Kim
International Conference on Software Maintenance (ICSM), p.1--10, 2010
5
Wednesday 6 March 13
7. QwalKeko
(qwal graph version1 version2
(qin-current
Version 1 (ast :MethodDeclaration ?method)
(declaring-class ?method ?derived))
q=> ;;transition to next version
(qin-current
(method-moved ?method ?pulled)
Version 2 (declaring-class ?pulled ?base)
(superclass ?base ?derived)))
6
Wednesday 6 March 13
8. Multiversion Refactorings
(qwal graph version1 ?versionX
Version 1
(qin-current
(ast :MethodDeclaration ?method)
(declaring-class ?method ?derived))
... (q=>+) ;;skip >= 1 versions
(qin-current
Version X (method-moved ?method ?pulled)
(declaring-class ?pulled ?base)
(superclass ?base ?derived)))
7
Wednesday 6 March 13
9. QwalKeko
Pr Graph Query
og Language
ra
La m
od ry
ng Q Qwal
sto
el
ua ue
Hi
ge ry
M
Ekeko +
+
8
Wednesday 6 March 13
10. Other Domains
• Answering Developer Questions
• Temporal Bad Smells
• Detecting Co-changing Entities
• Zombie Methods
• Verifying Design Process
Reasoning over the Evolution of Source Code using Quantified Regular Path Expressions.
Reinout Stevens, Coen De Roover, Carlos Noguera and Viviane Jonckers
Working Conference on Reverse Engineering (WCRE), 2011
9
Wednesday 6 March 13
11. Future Work:
Replaying Changes
...
??
...
12 - public int foo;
12 + private int foo;
37 + public getFoo(){
38 + return foo; }
10
Wednesday 6 March 13