Analogy-Making as a Core Primitive in the Software Engineering Toolbox

09/14/2020
by   Matthew Sotoudeh, et al.
0

An analogy is an identification of structural similarities and correspondences between two objects. Computational models of analogy making have been studied extensively in the field of cognitive science to better understand high-level human cognition. For instance, Melanie Mitchell and Douglas Hofstadter sought to better understand high-level perception by developing the Copycat algorithm for completing analogies between letter sequences. In this paper, we argue that analogy making should be seen as a core primitive in software engineering. We motivate this argument by showing how complex software engineering problems such as program understanding and source-code transformation learning can be reduced to an instance of the analogy-making problem. We demonstrate this idea using Sifter, a new analogy-making algorithm suitable for software engineering applications that adapts and extends ideas from Copycat. In particular, Sifter reduces analogy-making to searching for a sequence of update rule applications. Sifter uses a novel representation for mathematical structures capable of effectively representing the wide variety of information embedded in software. We conclude by listing major areas of future work for Sifter and analogy-making in software engineering.

READ FULL TEXT

page 6

page 7

page 12

research
07/11/2018

Building a Sustainable Structure for Research Software Engineering Activities

The profile of research software engineering has been greatly enhanced b...
research
10/03/2018

RPSE: Reification as Paradigm of Software Engineering

The paper introduces RPSE, Reification as a Paradigm of Software Enginee...
research
02/24/2020

Software Engineering Timeline: major areas of interest and multidisciplinary trends

Society today cannot run without software and by extension, without Soft...
research
04/11/2019

First things first: If software engineering is the solution, then what is the problem?

Software engineering (SE) undergoes an ontological crisis and it lacks o...
research
07/13/2021

Promises and Perils of Inferring Personality on GitHub

Personality plays a pivotal role in our understanding of human actions a...
research
04/28/2021

Multi-Objective Reconstruction Of Software Architecture

Design erosion is a persistent problem within the software engineering d...
research
05/27/2021

Interacto: A Modern User Interaction Processing Model

Since most software systems provide their users with interactive feature...

Please sign up or login with your details

Forgot password? Click here to reset