An Examination of Software Engineering Work Practices
An Examination of Software Engineering Work Practices
net/publication/2543447
CITATIONS READS
121 478
5 authors, including:
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by Timothy Lethbridge on 16 October 2012.
Access and use of this website and the material on it are subject to the Terms and Conditions set forth at
http://nparc.cisti-icist.nrc-cnrc.gc.ca/npsi/jsp/nparc_cp.jsp?lang=en
READ THESE TERMS AND CONDITIONS CAREFULLY BEFORE USING THIS WEBSITE.
L’accès à ce site Web et l’utilisation de son contenu sont assujettis aux conditions présentées dans le site
http://nparc.cisti-icist.nrc-cnrc.gc.ca/npsi/jsp/nparc_cp.jsp?lang=fr
LISEZ CES CONDITIONS ATTENTIVEMENT AVANT D’UTILISER CE SITE WEB.
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.
the results of studies involving students cannot be cannot speak to the issue of whether a user will adopt
generalized to programmers in industry. and use a new tool in the workplace because that is
Second, to control extraneous variables, not the point, or the focus, of usability. Moreover,
researchers have used programs that are very small several features of the usability approach prevent it
(both in terms of lines of code and logic) relative to from informing the designers about the acceptance of
industrial software. This poses a generalization the tool in the workplace. Usability testing usually
problem as well: it is not clear that approaches to takes place outside the normal work setting,
comprehending small programs scale up to the sometimes in a room especially designed for that
comprehension of very large programs. purpose. This method of testing prevents the user
Third, there is an assumption that understanding from behaving in a normal manner because it isolates
the programmer’s mental model is an efficient route him from resources that are not part of the software
to designing effective tools. However, it is not at all (such as colleagues, documentation, notes). In other
obvious how to design a tool given a specification of words, it prevents the user from engaging in his day-
the programmer’s mental model. For instance, how to-day work practices. In addition, during usability
does knowing that programmers will sometimes use a testing, the user is essentially forced to use the
top-down strategy to understand code [12] inform tool software. In consequence, it is impossible to collect
design? It doesn’t tell us what kind of tool to build, or data on whether the user would use the software if he
how to integrate that tool into the workplace or the were given a choice between his existing work
programmer’s work. Furthermore, given this practices and the new software.
knowledge, it is not clear how to help the programmer The lack of tool adoption and use is a major
build that mental model; how to help her apply it; or problem in the area of tool design for software
how to help her use it effectively in software engineering. However, because of its features and
engineering activities. techniques, usability cannot inform designers on this
These three problems with the ESP approach issue. We believe that to build tools that are actually
suggest that an alternative approach to tool design used, designers must first understand what it is that
may be more effective. SEs do when they work. This is the reason for our
focus on work practices in designing software
1.2 Human Computer Interaction engineering tools.
Currently, there is a strong focus on usability in the
field of human-computer interaction [10]. That is, 1.3 Work Practices
designers attempt to ensure that prospective users can The study of work practices is a relatively new field
use the software without encountering interface [2, 3, 18] which seeks to understand how work occurs
difficulties. For instance, it should be clear to users and, from this understanding, suggest appropriate
what action they should take at each step, preferably technologies for the workplace. Work practices have
without referring to documentation. Another aspect of been studied in such diverse fields as law, navigation,
usability is the minimization of the number of steps document use, etc.
and the amount of time needed to accomplish a task. In studies of work practices, data are generally
To determine whether software is sufficiently usable, collected by following and recording the work that
prospective users are observed using the software for people do. Researchers often rely on ethnographic
a few, or several minutes. Reaction times, errors, methodologies producing diverse sets of data. The
backtracking to previous states and failures to challenge, then, is to take work practice data sets, and
accomplish the task are recorded along with the put them into a form that is useful to designers.
conditions under which they occurred. These data are Our approach to this problem has been to
2
then used to fix the interface and, ideally, more of implement many different data collection techniques
these test-redesign iterations take place until the and see if the evidence from each converges. Then we
software is sufficiently usable. will use these data to decide what types of tools
However, we see problems with this approach.
While it may increase the usability of systems, it does
not guarantee that the systems that are built will be 2
These methods are detailed more precisely in [7, 8,
genuinely useful [2, 18]. The usability approach
13]
would best solve the problems that SEs face in their Over 100 people have made changes to the source
daily activities. code during the life of the system.
The first thing that struck us when we entered the
work place was that we did not know exactly what it 2.2 Software Engineering Process And
was that the SEs did on a day-to-day basis. That is, Tools In The Group
we knew neither the kinds of activities they
performed, nor the frequency with which these The group follows a well-defined process for creating
various activities took place. As far as we could tell, new system features. They also keep detailed records
there were many hypotheses about the kinds of things of problem reports and the consequent changes to the
SEs do, but no clear ‘cataloging’ as such of exactly system. Other important documents include the
how SEs go about solving problems. Consequently, ‘practices’ that are followed by those who install and
we decided to begin our study of work practices by run the system in the field.
finding out what it is that SEs do when they do their Careful attention is paid to quality control in the
work. First, we will briefly describe the form of design reviews, informal code inspections,
characteristics of the workplace. Then, the rest of this and an independent test team.
paper will present the findings from several studies Development work is done on the Sun platform,
we conducted to answer this first question. although the SEs must also spend considerable time
installing and running the software on various
configurations of the target hardware.
2. Workplace Characteristics
The group we are studying maintains a large 3. SE Activities
telecommunications system that is one of the key
products of the company. The management of the We collected five basic types of SE work practice
group is fairly informal, with group members able to data. First, using a web questionnaire, we simply
select the problems on which they work. asked the SEs what they do. Second, we followed an
Group members work in close proximity and individual SE for 14 weeks as he went about his
often walk over to each other’s desks with questions. work. Third, we individually shadowed 9 different
The group also makes use of a laboratory in which the SEs for one hour as they worked. Fourth, we
target hardware is installed. performed a series of interviews with software
engineers. Finally, we obtained company-wide tool
usage statistics. The next several sections will outline
2.1 The System
more precisely our methodologies and results from
The system includes a real-time operating system and these various studies.
interacts with a large number of different hardware
devices. The system contains several million lines of 3.1 Questionnaire Study
code with over 16000 routines in over 8000 files. It is
also divided into numerous layers and subsystems We began this research by administering a web-based
written in a proprietary high-level language. questionnaire. The questionnaire covered many
The system was first fielded in the early 1980s different aspects of the SEs’ work. Here we report
and has since been continually updated. Its their answers to a question on what they spend their
importance to the company and its evolution are time doing. Six SEs in the group of 13 responded.
expected to continue for many years to come. The question was open-ended, i.e., the SEs had to
Approximately 13 people actively work on decide how to describe their work, rather than
various aspects of the system at the current time. choosing certain activities from a list.
On average, SEs said that they spend 57% of their There, B maintained a product in the same category
time fixing bugs, and 35% of their time making as the current product, but developed on a much
enhancements to the system. Table 1 shows more smaller scale.
specifically the things they reported that they engaged B has experience in several languages, but prior to
in, and the percentage of people reporting that joining the company, considered himself to be an
activity. expert only in an in-house proprietary language.
The most reported activity was reading Likewise, while he has experience in several
documentation. SEs also reported that they spend platforms, prior to joining the company, B considered
time looking at source, writing documentation, himself to be an expert only in an in-house
attending meetings, and writing code. Other activities proprietary 68K development platform. B has worked
include consulting, both answering and asking on 5 different systems, 3 of which have involved
questions, working with the hardware, testing, development, 2 of which have involved maintenance.
designing, and fixing bugs. B joined the company in November, 1996. Before
Because of the questionable validity of self-reports, then B had no experience in the company’s in-house
we felt it was extremely important to not just rely on Pascal-based proprietary language. Nor did B have
what SEs said they did, but to actually observe them any experience in Pascal, although he had
as they worked. Hence the next sections of the paper programmed in other structured languages. B had
describe two studies that we undertook towards this utilized VI before coming to the company, but
goal. planned on switching to the Emacs editor at the
company. Similarly, he had used Grep previously, but
3.2 Individual study was switching to use of Egrep and Fgrep at the
company. B did not have previous experience with
We have been following one SE longitudinally from
the other tools available at the company
the time he joined the company (November, 1996).
For the first six months, we spent about 1-1/2 hours
3.2.1.2 Procedure and Data
per week with B. However, as B has become more
expert, we have found that it makes more sense to The shadowing data result from 14 half-hour sessions
meet once every 3 weeks. This is both because new ranging from October 17, 1996 to February 27, 1997.
things happen less frequently (e.g., experience with a Some days are missing because of vacation or
new tool) and because B is more busy with ‘real’
Activity % of
tasks. B is an experienced SE (was previously a team-
people
leader), thus while he is new to the company, he is
Read documentation 66%
certainly new to neither maintenance nor
Look at source 50%
telecommunications software.
Write documentation 50%
Our sessions with B consist of 3 distinct
Write code 50%
components. First we talk about what has transpired
Attend meetings 50%
since the last time we met. This could be anything
Research/identify alternatives 33%
from code review to learning about a new tool to
Ask others questions 33%
reading documentation, etc. Second, we ask B to look
Configure hardware 33%
at a diagram of the system that he previously
Answer questions 33%
constructed and ask him to modify it if it does not
reflect his current understanding of the system. Fix bug 33%
Finally, we ‘shadow’ B as he works for 1/2 hour. In Design 17%
this paper, we report the data from the shadowing. Testing 17%
Review other’s work 17%
3.2.1 Method Learn 17%
Replicate problem 17%
Library maintenance 17%
3.2.1.1 Subject
B has worked in the software industry for many years. Table 1: Questionnaire results of work
Prior to joining the telecommunications company, he practices (6 responses).
worked as a team leader for a nearby competitor.
Activity Description
Call trace Looking at an execution trace of the program
Consult Either being consulted or consulting someone else
Compile Linking or compiling a program
Configuration Mgt Entering and using the in-house configuration management system (sometimes for
updating, and sometimes to search for past updates)
Debug Using either the high-level or low-level debugger
Documentation Looking at documentation
Edit Actually making a change to source code
Management General software activities, such as meetings, code reviews, etc.
In-house tools Using one of the in-house tools, primarily static software analysis tools
Notes Taking notes, or reading past notes
Search Using Grep, in-house search tools, or searching in an editor
Source Looking at source code using editors or code viewers
Hardware Interacting with the hardware, e.g., loading software, running software, configuring the
hardware, etc.
UNIX Issuing a general UNIX command such as LS, CD, etc.
Hardware
UNIX
Debug
distinct occasions.
Edit
Source
Notes
Search
Consult
Documentation
Call_trace
Compile
Management
Configuration Mgt
In-house tools
Remember, however, that these data do not
include time measurements, but simply activity
switches. So, for instance, while B did management
activities on only 1 day, the code review that was
60%
Figure 2. Percentage of times each type of
event occurred out of a total of 156 distinct
50% events.
undertaken took the entire 1/2 hour.
Thus overall, in terms of both daily activities and
40% frequency of different activities, search for
information about the system, whether through Grep,
in-house search tools, or within a particular editor or
30% debugger, figures most prominently. A significant
amount of effort was also expended interacting with
the hardware and looking at the source code.
20%
10%
UNIX
Debug
Edit
Notes
Source
Search
Consult
Management
Call_trace
Compile
Configuration Mgt
In-house tools
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
Hardware
UNIX
Debug
Source
Edit
Notes
Search
Consult
Documentation
Management
Compile
Call_trace
Configuration Mgt
In-house tools
Debug
Notes
Edit
Source
Search
Consult
Documentation
Call_trace
Management
Configuration Mgt
In-house tools
Debuggers
Hardware Connectors
Other
Search
Editors
Graphics Tools
Operating System
Formatters
Configuration Mgt
Internet tools
In-house tools
Compression
Functional requirements. The system shall: NF1 Be able to automatically process a body of
source code of very large size, i.e. consisting of
F1 Provide search capabilities such that the user at least several million lines of code.
can search for, by exact name or by way of
regular expression pattern-matching, any named As we are concerned with systems that are to be
item or group of named items that are used by real industrial Ses, an engineer should be
3
semantically significant in the source code. able to pick any software system and use the tool
to explore it.
3
We use the term semantically significant so as to
exclude the necessity for the tool to be required to NF2 Respond to most queries without perceptible
retrieve ‘hits’ on arbitrary sequences of characters in delay.
the source code text. For example, the character
This is one of the hardest requirements to fulfill,
sequence ‘e u’ occurs near the beginning of this
but also one of the most important. In our
footnote, but we wouldn’t expect an information
retrieval system to index such sequences; it would
only have to retrieve hits on words. In software the associations include such things as routine calls and
semantically significant names are filenames, routine file inclusion.
names, variable names etc. Semantically significant
observations, SEs waste substantial time waiting of such information are the effects of conditional
for tools to retrieve the results of source code compilation and macros.
queries. Such delays also interrupt their thought
patterns. Acceptable limitations:
NF3 Process source code in a variety of pro- L1 The server component of the tool may be limited
gramming languages. to run on only one particular platform.
The SEs that we have studied use at least two This simplifies implementation decisions without
languages – a tool is of much less use if it can unduly restricting SEs.
only work with a single language. We also want
to validate our tools in a wide variety of software L2 The system is not required, at the present time, to
engineering environments, and hence must be handle object oriented source code.
prepared for whatever languages are being used.
We are restricting our focus to SEs working on
NF4 Wherever possible, be able to interoperate with large bodies of legacy code that happens to be
other software engineering tools. written in non-object-oriented languages.
Clearly, this decision must be subsequently lifted
We want to be able to connect our tools to those for the tool to become universally useful.
of other researchers, and to other tools that SEs
are already using. L3 The system is not required, at present, to deal
with dynamic information, i.e. information about
NF5 Permit the independent development of user what occurs at run time.
interfaces (clients).
This is the purview of debuggers, and dynamic
We want to perform separate and independent analysis tools. Although it would be useful to
research into user interfaces for such tools. This integrate these, it is not currently a requirement.
paper addresses only the overall architecture and We have observed software engineers spending
server aspects, not the user interfaces. considerable time on dynamic analysis (tracing,
stepping etc.), but they consume more time
NF6 Be well integrated and incorporate all fre- performing static code exploration.
quently-used facilities and advantages of tools
that SEs already commonly use. 4.3 Why Other Tools are Not Able to
It is important for acceptance of a tool that it Meet these Requirements
neither represent a step backwards, nor require There are several types of tools used by SEs to
work-arounds such as switching to alternative perform the code exploration task described in section
tools for frequent tasks. In a survey of 26 SEs 4.1 This section explains why, in general, they do not
[7], the most frequent complaint about tools fulfill our requirements:
(23%) was that they are not integrated and/or are
incompatible with each other; the second most Grep: Our studies described in section 3.4 indicated
common complaint was missing features (15%). that over 25% of all command executions were of one
In section 4.3 we discuss some tools the SEs of the members of the Grep family (Grep, Egrep,
already use for the program comprehension task. Fgrep, Agrep and Zgrep). Interviews show that it is
the most widely used software engineering tool. Our
NF7 Present the user with complete information, in a observations as well as interviews show that Grep is
manner that facilitates the JITC task. used for just-in time comprehension. If SEs have no
other tools, it is the key enabler of JITC; in other
Some information in software might be described situations it provides a fall-back position when other
as ‘latent’. In other words, the software engineer tools are missing functionality.
might not see it unless it is pointed out. Examples
However, Grep has several weaknesses with
regard to the requirements we identified in the last Program understanding tools: University
section: researchers have produced several tools specially
designed for program understanding. Examples are
• It works with arbitrary strings in text, not semantic Rigi [11] and the Software Bookshelf [5]. Rigi meets
items (requirement F1) such as routines, variables many of the requirements, but is not as fast [NF2] nor
etc. as easy to integrate other tools [NF6] as we would
• SEs must spend considerable time performing like. As we will see later it differs from what we
repeated Greps to trace relationships (requirement would like in some of the details of items and
F2); and Grep does not help them organize the relationships. The Software Bookshelf differs from
presentation of these relationships. our requirements in a key way: Before somebody can
• Over a large body of source code Grep can take a use a ‘bookshelf’ that describes a body of code, some
large amount of time (requirements NF1 and NF2). SE must organize it in advance. It thus does conform
fully with the ‘automatically’ aspect of requirement
Search and browsing facilities within editors: All NF1.
editors have some capability to search within a file.
However, as with Grep they rarely work with 4.4 The Tools We are Developing
semantic information. Advanced editors such as
Emacs (used by 68% of a total of 127 users of text- As a consequence of our work practices studies, and
editing tools in our study) have some basic abilities to thus the requirements described in the last section, we
search for semantic items such as the starts of have developed an improved software exploration
procedures, but these facilities are by no means tool which we call tksee. A view of this tool is shown
complete. in figure 6.
The main features that fulfill F1 and F2 (search
Browsing facilities in integrated development capabilities) are in the bottom two panes. The bottom
environments: Many compilers now come with left pane shows a hierarchy that the user
limited tools for browsing, but as with editors these incrementally expands by asking to show attributes of
do not normally allow browsing of the full spectrum items, or to search for information (relations or Grep
of semantic items. Smalltalk browsers have for years results) about a given item. The currently selected
been an exception to this, however such browsers item is shown in the bottom-right pane, from which
typically do no not meet requirements such as speed the user can hyper-jump by selecting any item of text.
(NF2), interoperability (NF4), and multiple languages The main feature that fulfills F3 is the top pane.
(NF3). IBM’s VisualAge tools are to some extent Each element in this pane is a complete state of the
dealing with the latter problem. bottom two panes. A hierarchy of these states is saved
persistently, so each time the user starts the tool, his
Special-purpose static analysis tools: We observed or her work is in the same state as at the end of the
SEs using a variety of tools that allow them to extract previous session.
such information as definitions of variables and the The non-functional requirements are met by the
routine call hierarchy. The biggest problems with tksee architecture shown in figure 7. This architecture
these tools were that they were not integrated includes a very fast database, an interchange language
(requirement NF6) and were slow (NF2) for language-independent information about
software, and a client-server mechanism that allows
Commercial browsing tools: There are several incorporation of existing tools (e.g. Grep) so that
commercial tools whose specific purpose is to meet software engineers can continue to use tools they
requirements similar to ours. A particularly good already find useful.
example is Sniff+ from Take5 Corporation [17]. Further details about this tool are in [6, 15].
Sniff+ fulfills the functional requirements, and key We are continuing our involvement with users:
non-functional requirements such as size [NF1], we are studying how their work practices evolve
speed [NF2], multiple languages [NF3], its when they choose to adopt this tool.
commercial nature means that it is hard to extend and
integrate with other tools.
Parsers Source Code
File
Auxilliary
Analysis Tools
ensure that the SEs can effectively use these tools to
Interchange Interchange accomplish their work.
format format (TA++)
(TA++) Database It is possible that the study of work practices can
TA++ Write-API Read-API Clients reduce, or perhaps even eliminate, the need to study
TA++ Parser data data (User Interfaces
Files
Interchange DBMS and other cognitive processes and mental models. This will
format (TA++) analysis tools)
3rd party tools Read-API depend on the accuracy and detail with which work
that produce data
TA++ Query
Query
response
practices can be described. If they can be described in
Engine
3rd party tools detail, in terms of every system state explicitly and
that read
TA++ TA++
Generator
intentionally accessed by the user, it may not be
necessary at all to fathom the users’ cognitions. We
Figure 7: Data flow diagram showing
may only need to abide by general principles of
archtecture of the tksee software
usability and usability testing in addition to the work
practice specifications in order to design useful, and
5. Conclusions used tools. Moreover, it may be more efficient, in
In conclusion, the study of work practices provides a terms of time, to take the work practice approach to
path to tool design that is an alternative to the tradi- tool design than the cognitive approach. However,
tional paths taken in human-computer interaction, further empirical work is required in order to
namely those issuing from the study of the users’ strengthen out confidence in these statements. Further
cognitive processes and mental models, and the details about our research can be found in [15].
emphasis on usability. The problem of disuse has
plagued software tools designed with these traditional
human computer interaction approaches. By focusing
Acknowledgments
on workplace activities, the study of work practices
increases the likelihood that tools can be smoothly in- We would like to thank the software engineers who
tegrated into the users’ daily activities. This, in turn, have participated in our studies, in particular those
should increase the acceptance and use of software with whom we have worked for many months. We
tools designed on the basis of work practices. would also like to thank the tools group at the
Whether one wishes to examine user cognitions or company for providing us with the tool usage
not, it is necessary that tools be consistent with work statistics. Finally, we would like to thank the KBRE
practices for them to be used. Once this consistency is group for many helpful suggestions in conducting this
established, the usability approach can be taken to research.