Explore chapters and articles related to this topic
P
Published in Phillip A. Laplante, Dictionary of Computer Science, Engineering, and Technology, 2017
Program understanding can be achieved in an ad hoc manner and no external representation has to arise. While reverse engineering is the systematic approach to develop an external representation of the subject system, program understanding is comparable with design recovery because both of them start at the source code level. Program comprehension is the process of acquiring knowledge about a computer program. Increased knowledge enables such activities as bug correction, enhancement, reuse, and documentation. While efforts are underway to automate the understanding process, such significant amounts of knowledge and analytical power are required that today program understanding is largely a manual task.
Identifying program confusion using electroencephalogram measurements
Published in Behaviour & Information Technology, 2022
Martin K.-C. Yeh, Yu Yan, Yanyan Zhuang, Lois Anne DeLong
Our recent study (Gopstein et al. 2017) identified a few patterns in the C language that can cause programmers to be confused as to how a given piece of code might behave. In this context, we define confusion as when a programmer – presented with a deterministic, syntactically and semantically valid piece of code – believes a code snippet would output something different from what a computer would actually execute. The minimal portions of code that can induce this confusion are named atoms of confusion or atoms for short. We tested the impact of these code patterns by asking participants to predict outputs for snippets, half of which contained an atom. The other half contained the same code, but the atom was removed and replaced by functionally equivalent, but less confusing statements, a process called a transformation. Results from the study affirm that atoms could lead to a significantly increased rate of misunderstanding as measured in performance scores. Such misunderstandings can complicate the already difficult task of program comprehension – a software development activity that can take up to 50%–90% of program maintenance efforts (Lientz, Swanson, and Tompkins 1978).