An Examination of Software Engineering Work Practices1
Janice Singera, Timothy Lethbridgeb,
Norman Vinsona, Nicolas Anquetilb
1 This work is supported by NSERC and the company serving as the site of the study.. This work was sponsored by the Consortium for Software Engineering Research (CSER). The IBM contact for CSER is Patrick Finnigan.
a Institute for Information Technology
National Research Council, Ottawa, ON, K1A OR6
b School of Information Technology and Engineering University of Ottawa, Ottawa, ON, K1N 6N5
This paper presents work practice data of the daily activities of software engineers. Four separate studies are presented; one looking longitudinally at an individual SE; two looking at a software engineering group; and one looking at company-wide tool usage statistics. We also discuss the advantages in considering work practices in designing tools for software engineers, and include some requirements for a tool we have developed as a result of our studies.
The Knowledge Based Reverse Engineering Project?s goal is to provide software engineers (SEs) in an industrial telecommunications group with a toolset to help them maintain their system more effectively. To achieve this goal, we have adopted a user-centered design approach to tool development [6, 7, 8]. However, unlike traditional user-centered approaches, we have focused on the SEs? work-practices. This represents a new approach  to tool design.
This approach borrows from several different fields in an effort to more accurately assess users? behavior and then provide them with tools that enhance, rather than displace or replace, these work practices. The rationale is that the tools that are built will actually be used because they have been created to mesh with existing behavior. This paper will describe our experiences with this approach and what we have learned about the work practices of one group of SEs at a large telecommunications company.
The rest of this introduction will first critically examine the more traditional uses of psychology in the program comprehension literature, and second describe the study of work practices. We will then outline some results of a study we conducted at a large telecommunications company. Finally, we will discuss the implications of these results for tool design .
1.1 Empirical Studies of Programmers
One human-computer interaction approach to the design of tools has been to study the cognitive processes of programmers as they attempt to understand programs [19, 20, 21]. The results of such studies are supposed to provide the basis for designing better tools. In other words, understanding the mental processes involved in programming will permit the design of tools that mesh with the programming process.
In this vein, ESP research has identified a number of programmers? approaches to the comprehension ?problem? including the top-down , bottom-up , and as-needed strategies , and the integrated meta-model .
There are three problems with this research, though, as it pertains to tool design. First, the vast majority of the research has been conducted with graduate and advanced undergraduates serving as expert programmers (but c.f., ). It is not at all clear that these subjects accurately represent the population of industrial programmers. Consequently,