ABSTRACT

The notion of features is commonly used to maintain, evolve, reuse, or re-engineer a software system. To this end, developers need to understand the features and their—potentially scattered—locations within the codebase of a system. Unfortunately, features are rarely documented, developers’ knowledge about the features fades quickly, and developers leave projects. In such cases, feature locations need to be recovered from the codebase—a costly task, but still one of the most common ones performed by developers. While automated feature-location techniques have been proposed, they typically require significant adjustments to the particular system and often fall short in their accuracy. To improve this situation, it is necessary to understand how developers perform feature location manually—a surprisingly neglected research area. In this chapter, we provide an overview on existing studies of manual feature location, focusing on the topics addressed in the studies and open issues. We find that the seven studies we identified analyze four topics of manual feature location in detail: Search tools, performance, influencing factors, and distinct phases. We observe that a focus of these studies is on understanding the process of manual feature location regarding the developers’ activities and actions. We also find that, still, little is known about the actual efforts of performing feature location, how different factors influence these efforts, how automated techniques are scoped to the identified phases, and which additional information sources help developers to locate features.