Understanding Software Maintenance Tools: Some Empirical Research 1 Timothy C. Lethbridge tcl@site.uottawa.ca School of Information Technology and Engineering University of Ottawa, K1N 6N5, Canada Janice Singer singer@iit.nrc.ca Institute for Information Technology National Research Council, Ottawa, K1A OR6, Canada Abstract In this position paper we discuss research into tools for software maintenance, where tools include everything from large scale integrated CASE products down to simple one-function commands or features. The objective of this research is to learn more about software engineers’ work with and needs for tools, so that they can become more productive. We discuss several categories of questions to be asked in this research, and various methods for gathering data. We present some data from our research to date which indicates, among other things the need for efficient software exploration mechanisms. Finally we propose some directions for collaborative research. Keywords: Software maintenance tools, work practices, studying software engineers 1. The software maintenance topic and problem we are addressing A key part of our research is to study tools to help software engineers (SEs) perform maintenance. In this paper, we discuss the problem of understanding what tools and tool features are or would be useful. Our goal is to help software engineers become more productive. In this position paper, we follow the format requested for this workshop; this also happens to correspond very well with the GQM (Goals-Questions-Metrics methodology) [1]. Our goal is defined in the previous paragraph. In section 2, we list questions that we want answered. In section 3, we list metrics and observations that would help answer the questions. In sections 4 and 5, we describe how to gather and interpret this data. We include some results from our work in section 6. Finally, in section 7, we propose a collaborative approach to help achieve our goal. This work fits within the broader scope of our project, whose goal is to help software engineers to improve their productivity. Other discussions of our project can be found in [2, 3, 4, 5]. 1.1 What is a tool? When we use the word ‘tool’ we include anything functional which can help the software maintainer solve maintenance problems. In general, such tools are computer programs or parts of computer programs. We consider tools to be organized into hierarchies: Many programs provide multiple services or ‘features’; each of these may be a tool in its own 1 This work is supported by NSERC and sponsored by the Consortium for Software Engineering Research.