TY - GEN
T1 - An exploratory study of programmers' analogical reasoning and software history usage during code re-purposing
AU - Allen, John
AU - Kelleher, Caitlin
N1 - Publisher Copyright:
© 2024 Copyright held by the owner/author(s).
PY - 2024/4/14
Y1 - 2024/4/14
N2 - Background: Software development relies on collaborative problem-solving. Understanding previously addressed problems in software is crucial for developers to identify and repurpose functionalities for new problem-solving contexts.Objective: We explore the barriers programmers encounter during code repurposing and investigate how access to historical context about the original developer's goals may affect this process.Method: We present an exploratory study of 16 programmers who completed two code repurposing tasks in different code bases. Participants completed these tasks both with and without access to the historical information of the original developer's goals. We explore how programmers use analogical reasoning to identify and apply existing software artifacts to new goals.Results: We show that programmers often failed to notice analogies, made false analogies, and underestimated the value of reuse. Even when useful analogies were made, programmers struggled to find the relevant code. We also describe the patterns of how participants utilized code histories.Conclusion: We highlight the barriers programmers face in noticing and applying analogies during code reuse. We suggest design recommendations for future tools to allow lightweight evaluation of code to help programmers identify reuse opportunities.
AB - Background: Software development relies on collaborative problem-solving. Understanding previously addressed problems in software is crucial for developers to identify and repurpose functionalities for new problem-solving contexts.Objective: We explore the barriers programmers encounter during code repurposing and investigate how access to historical context about the original developer's goals may affect this process.Method: We present an exploratory study of 16 programmers who completed two code repurposing tasks in different code bases. Participants completed these tasks both with and without access to the historical information of the original developer's goals. We explore how programmers use analogical reasoning to identify and apply existing software artifacts to new goals.Results: We show that programmers often failed to notice analogies, made false analogies, and underestimated the value of reuse. Even when useful analogies were made, programmers struggled to find the relevant code. We also describe the patterns of how participants utilized code histories.Conclusion: We highlight the barriers programmers face in noticing and applying analogies during code reuse. We suggest design recommendations for future tools to allow lightweight evaluation of code to help programmers identify reuse opportunities.
UR - http://www.scopus.com/inward/record.url?scp=85197212988&partnerID=8YFLogxK
U2 - 10.1145/3641822.3641864
DO - 10.1145/3641822.3641864
M3 - Conference contribution
AN - SCOPUS:85197212988
T3 - Proceedings - 2024 IEEE/ACM 17th International Conference on Cooperative and Human Aspects of Software Engineering, CHASE 2024
SP - 109
EP - 120
BT - Proceedings - 2024 IEEE/ACM 17th International Conference on Cooperative and Human Aspects of Software Engineering, CHASE 2024
PB - Association for Computing Machinery, Inc
T2 - 17th IEEE/ACM International Conference on Cooperative and Human Aspects of Software Engineering, co-located with the International Conference on Software Engineering, ICSE 2024
Y2 - 14 April 2024 through 15 April 2024
ER -