41 research outputs found
Understanding software development: Processes, organisations and technologies
Our primary goal is to understand what people do when they develop software and how long it takes them to do it. To get a proper perspective on software development processes we must study them in their context — that is, in their organizational and technological context. An extremely important means of gaining the needed understanding and perspective is to measure what goes on. Time and motion studies constitute a proven approach to understanding and improving any engineering processes. We believe software processes are no different in this respect; however, the fact that software development yields a collaborative intellectual, as opposed to physical, output calls for careful and creative measurement techniques. In attempting to answer the question "what do people do in software development? " we have experimented with two novel forms of data collection in the software development field: time diaries and direct observation. We found both methods to be feasible and to yield useful information about time utilization. In effect, we have quantified the effect of these social processes using the observational data. Among the insights gained from our time diary experiment are 1) developers switch between developments to minimize blocking and maximize overall throughput, and 2) there is a high degree of dynamic reassignment in response to changing project and organizational priorities. Among the insights gained from our direct observation experiment are 1) time diaries are a valid and accurate instrument with respect to their level of resolution, 2) unplanned interruptions constitute a significant time factor, and 3) the amount and kinds of communication are significant time and social factors.- 2-1
A Review of Software Inspections
For two decades, software inspections have proven effective for
detecting defects in software. We have reviewed the different ways
software inspections are done, created a taxonomy of inspection methods,
and examined claims about the cost-effectiveness of different methods.
We detect a disturbing pattern in the evaluation of inspection
methods. Although there is universal agreement on the effectiveness of
software inspection, their economics are uncertain. Our examination of
several empirical studies leads us to conclude that the benefits of
inspections are often overstated and the costs (especially for large
software developments) are understated. Furthermore, some of the most
influential studies establishing these costs and benefits are 20 years old
now, which leads us to question their relevance to today's software
development processes.
Extensive work is needed to determine exactly how, why, and when
software inspections work, and whether some defect detection techniques
might be more cost-effective than others. In this article we ask some
questions about measuring effectiveness of software inspections and
determining how much they really cost when their effect on the rest of the
development process is considered. Finding answers to these questions will
enable us to improve the efficiency of software development.
(Also cross-referenced as UMIACS-TR-95-104
An Experiment to Assess Cost-Benefits of Inspection Meetings and their Alternatives
We hypothesize that inspection meetings are far less effective
than many people believe and that meetingless inspections are equally
effective. However, two of our previous industrial case studies
contradict each other on this issue. Therefore, we are conducting a
multi-trial, controlled experiment to assess the benefits of inspection
meetings and to evaluate alternative procedures.
The experiment manipulates four independent variables- (1) the
inspection method used (two methods involve meetings, one method does
not), (2) the requirements specification to be inspected (there are two),
(3) the inspection round (each team participates in two inspections), and
(4) the presentation order (either specification can be inspected first).
For each experiment we measure 3 dependent variables: (1) the
individual fault detection rate, (2) the team fault detection rate, and
(3) the percentage of faults originally discovered after the initial
inspection phase (during which phase reviewers individually analyze the
document).
So far we have completed one run of the experiment with 21
graduate students in the computer science at the University of Maryland
as subjects, but we do not yet have enough data points to draw definite
conclusions. Rather than presenting preliminary conclusions, this article
(1) describes the experiment's design and the provocative hypotheses we
are evaluating, (2) summarizes our observations from the experiment's
initial run, and (3) discusses how we are using these observations to
verify our data collection instruments and to refine future experimental
runs.
(Also cross-referenced as UMIACS-TR-95-89
Comparing Detection Methods for Software Requirements Inspections: A Replicated Experiment
(Also cross-referenced as UMIACS-TR-94-93
Understanding the Sources of Variation in Software Inspections
In a previous experiment, we determined how various changes in three
structural elements of the software inspection process (team size, and
number and sequencing of session), altered effectiveness and interval.
our results showed that such changes did not significantly influence the
defect detection reate, but that certain combinations of changes
dramatically increased the inspection interval.
We also observed a large amount of unexplained variance in the data,
indicating that other factors much be affecting inspection performance. The
nature and extent of these other factos now have to be determined to ensure
that they had not biased our earlier results. Also, identifying these
other factors might suggest additional ways to improve the efficiency of
inspection.
Acting on the hypothesis that the "inputs" into the inspection process
(reviewers, authors, and code units) were significant sources of variation,
we modeled their effects on inspection performance. We found that they
were responsible for much more variation in defect detection than was
process structure. This leads us to conclude that better defect detection
techniques, not better process structures, at the key to improving
inspection effectiveness.
The combined effects of process inputs and process structure on the
inspection interval accounted for only a small percentage of the variance
in inspection interval. Therefore, there still remain other factors which
need to be identified.
(Also cross-referenced as UMIACS-TR-97-22
An Experiment to Assess the Cost-Benefits of Code Inspections in Large Scale Software Development
We are conducting a long-term experiment (in progress) to compare
the costs and benefits of several different software inspection methods.
These methods are being applied by professional developers to a
commercial software product they are currently writing.
Because the laboratory for this experiment is a live development
effort, we took special care to minimize cost and risk to the project,
while maximizing our ability to gather useful data.
This article has several goals: (1) to describe the experiment's
design and show how we used simulation techniques to optimize it, (2) to
present our preliminary results and discuss their implications for both
software practitioners and researchers, and (3) to discuss how we expect
to modify the experiment in order to reduce potential risks to the project.
For each inspection we randomly assign 3 independent variables:
(1) the number of reviewers on each inspection team (1, 2 or 4), (2) the
number of teams inspecting the code unit (1 or 2), and (3) the
requirement that defects be repaired between the first and second team's
inspections. The reviewers for each inspection are randomly selected
without replacement from a pool of 11 experienced software developers.
The dependent variables for each inspection include inspection interval
(elapsed time), total effort, and the defect detection rate.
To date we have completed 34 of the planned 64 inspections. Our
preliminary results challenge certain long-held beliefs about the most
cost-effective ways to conduct inspections and raise some questions about
the feasibility of recently proposed methods.
(Also cross-referenced as UMIACS-TR-95-14
Specification-based Testing of Reactive Software: A Case Study in Technology Transfer
We describe a case study in which we tried to transfer a
specification-based testing system from research to practice. We did the
case study in two steps: First we conducted a feasibility study in a
laboratory setting to estimate the potential costs and benefits of using
the system. Next we conducted a usability study, in an industrial
setting, to determine whether it would be effective in practice.
The case study illustrates that technology transfer efforts can benefit
from a greater focus on practitioners' needs, and that this focus helps
identify some of the open problems that limit formal methods technology
transfer.
We also found that there is often a tension between the scope of the
problem to be solved and the specificity of the solution. The greater the
scope of the problem, the more general the formal method solution and,
thus, the more customization that must be done to use it in a particular
environment.
We suggest that researchers limit the scope of the problems they try to
solve to minimize the risk of technology transfer failure.
(Also cross-referenced as UMIACS-TR-97-16
Prototyping a Process Monitoring Experiment
Features are often the basic unit of development for a very large software system and represent long-term efforts, spanning up to several years from inception to actual use. Developing an experiment to monitor (by means of sampling) such lengthy processes requires a great deal of care in order to minimize costs and to maximize benefits. Just as prototyping is often a necessary auxiliary step in a large-scale, long-term development effort, so too is prototyping a necessary step in the development of a large-scale, long-term process monitoring experiment. Therefore, we have prototyped our experiment using a representative process and reconstructed data from a large and rich feature development. This approach has yielded three interesting sets of results. First, we reconstructed a 30 month time diary for the lead engineer of a feature composed of both hardware and software. This data represents the daily state (where the lead engineer spent the majority of his time) for a complete cycle o..
A Study in Process Simplification
One of the major problems with software development processes is their complexity. Hence, one of the primary motivations in process improvement is the simplification of these complex processes. We report a study to explore various simplification approaches and techniques. We used the available process documentation, questionnaires and interviews, and a set of process visualization tool fragments (pfv) to gain an understanding of the process under examination. We then used three basic analysis techniques to locate candidates for simplification and improvement: value added analysis, time usage analysis, and alternatives analysis. All three approaches proved effective in isolating problem areas for improvement. The proposed simplifications resulted in a savings of 20 % in cost, 20% in human effort, 40 % in elapse time, and a 30% reduction in the number of activities