“…For example, during maintenance tasks, some programmers follow a "systemic" strategy aimed at understanding how different parts of the code interact [30,38]. In contrast, an "opportunistic" strategy aims to find only the section of code that is needed for a particular change [9,32,14,35]. In either strategy, studies suggest that programmers form a mental model of the software [36], specifically including the relationships between different sections of source code [41,34,50,51].…”