by Hannes Thaller, Lukas Linsbauer, Alexander Egyed
Abstract:
Design patterns are elegant and well-tested solutions to recurrent software development problems. They are the result of software developers dealing with problems that frequently occur, solving them in the same or a slightly adapted way. A pattern's semantics provide the intent, motivation, and applicability, describing what it does, why it is needed, and where it is useful. Consequently, design patterns encode a well of information. Developers weave this information into their systems whenever they use design patterns to solve problems. This work presents Feature Maps, a flexible human-and machine-comprehensible software representation based on micro-structures. Our algorithm, the Feature-Role Normalization, presses the high-dimensional, in homogeneous vector space of micro-structures into a feature map. We apply these concepts to the problem of detecting instances of design patterns in source code. We evaluate our methodology on four design patterns, a wide range of balanced and imbalanced labeled training data, and compare classical machine learning (Random Forests) with modern deep learning approaches (Convolutional Neural Networks). Feature maps yield robust classifiers even under challenging settings of strongly imbalanced data distributions without sacrificing human comprehensibility. Results suggest that feature maps are an excellent addition in the software analysis toolbox that can reveal useful information hidden in the source code.
Reference:
Feature Maps: A Comprehensible Software Representation for Design Pattern Detection (Hannes Thaller, Lukas Linsbauer, Alexander Egyed), In 26th IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER), Hangzhou, China, 2019.
Bibtex Entry:
@Conference{DBLP:conf/wcre/ThallerLE19,
author = {Hannes Thaller and Lukas Linsbauer and Alexander Egyed},
booktitle = {26th {IEEE} International Conference on Software Analysis, Evolution and Reengineering (SANER), Hangzhou, China},
title = {Feature Maps: {A} Comprehensible Software Representation for Design Pattern Detection},
year = {2019},
pages = {207--217},
abstract = {Design patterns are elegant and well-tested solutions to recurrent software development problems. They are the result of software developers dealing with problems that frequently occur, solving them in the same or a slightly adapted way. A pattern's semantics provide the intent, motivation, and applicability, describing what it does, why it is needed, and where it is useful. Consequently, design patterns encode a well of information. Developers weave this information into their systems whenever they use design patterns to solve problems. This work presents Feature Maps, a flexible human-and machine-comprehensible software representation based on micro-structures. Our algorithm, the Feature-Role Normalization, presses the high-dimensional, in homogeneous vector space of micro-structures into a feature map. We apply these concepts to the problem of detecting instances of design patterns in source code. We evaluate our methodology on four design patterns, a wide range of balanced and imbalanced labeled training data, and compare classical machine learning (Random Forests) with modern deep learning approaches (Convolutional Neural Networks). Feature maps yield robust classifiers even under challenging settings of strongly imbalanced data distributions without sacrificing human comprehensibility. Results suggest that feature maps are an excellent addition in the software analysis toolbox that can reveal useful information hidden in the source code.},
bibsource = {dblp computer science bibliography, https://dblp.org},
biburl = {https://dblp.org/rec/bib/conf/wcre/ThallerLE19},
crossref = {DBLP:conf/wcre/2019},
doi = {10.1109/SANER.2019.8667978},
file = {:Conferences/SANER 2019 - Feature Maps - A Comprehensible Software Representation for Design Pattern Detection/Feature Maps - A Comprehensible Software Representation for Design Pattern Detection-preprint.pdf:PDF},
keywords = {SCCH},
timestamp = {Wed, 16 Oct 2019 14:14:53 +0200},
url = {https://doi.org/10.1109/SANER.2019.8667978},
}