Project Details
Empirical Foundational Research on Program Comprehension in Software Engineering
Subject Area
Software Engineering and Programming Languages
Term
from 2010 to 2023
Project identifier
Deutsche Forschungsgemeinschaft (DFG) - Project number 166725071
Program comprehension is defined by Rugaber (1995) as the process of acquiring knowledge about a program. It is part of software maintenance. Program comprehension gives the foundation for effective and efficient changes, debugging, reutilisation, and documentation.In the requested project, we will conduct fundamental research in the field of program comprehension to provide better guidance for research in software engineering based on empirically established insights. To gain a comprehensive understanding of the processes involved in program comprehension such as behaviours, work patterns, and decisions of developers, we will also pursue approaches that originate beyond classical computer science, e.g., from the field of cognitive sciences.For this, we will empirically study the following subject areas:(1) Necessity: Which knowledge is needed when and what for? How much program comprehension is required within a specific task context? Does lesser program comprehension lead to more errors? How does the environmental context influence the need for information and the strategies applied for pogram comprehension?(2) Availability and Perception: Which knowledge is already present where and how? Which factors influence the perception of suchknowledge by developers? Which knowledge is needed for program comprehension in specific contexts, which sources do contain it and how is it perceived to be available by developers? Which factors influence the perception in the search of needed information and contribute to the occurrence of "active blindness"?(3) Recovery: Which missing knowledge is how retrieved? Which particular working steps are carried out by developers in what stage of program comprehension? How are the specific working steps in program comprehension prioritized and organized by developers? Can a systematic context-dependent approach facilitate program comprehension?(4) Utilisation: How is knowledge utilised as efficient and effective as possible? Why are tools for program comprehension not utilised in practice? How should existing knowledge optimally be presented to developers? Which aspects of distinct development tasks and development situations are symptomatical for the respective contexts and how are they to be identified? How can (recommendation-) systems use those aspects to provide adequate information? What influence has the organisation and representation of information to the perception by developers?For this, we will apply various empirical methods, particularly among them instrumentation of development environments for data acquisition, surveys, observations, and interviews.
DFG Programme
Research Grants