Journal of Software Engineering and Applications, 2011, 1, 48-58
doi:10.4236/jsea.2011.41006 Published Online January 2010 (http://www.scirp.org/journal/jsea)
Copyright © 2011 SciRes. JSEA
Software Reuse: Developers’ Experiences and
Perceptions
William W. Agresti
Carey Business School, Johns Hopkins University, Baltimore, USA,
Email: agresti@jhu.edu
Received November 27th, 2010; revised December 14th, 2010; accepted December 27th, 2010.
ABSTRACT
Reusing programs and other artifacts has been shown to be an effective strategy for significant reduction of develop-
ment costs. This article reports on a survey of 128 developers to explore their experiences and perceptions about using
other people’s code: to what extent does the “not invented here” attitude exist? The survey was structured around a
novel and simple “4A” model, which is introd uced in this article: for an organizatio n to obtain any benefits from reu s-
ing code, four conditions must obtain: availability, awareness, accessibility, and acceptability. The greatest impedi-
ments to reuse were shown to be awareness of reusable code and developers’ perceptions of its acceptability for use on
their new projects. For 72% of developers, the complexity of the old code was cited as a reason that the code was not
reused. The survey also included developers’ suggestions for ways to take greater advantage of existing code and re-
lated artifacts.
Keywords: Software Reuse, Survey, Software Development
1. Introduction
This article reports on a survey of software developers to
gain an understanding of their experiences and percep-
tions about incorporating already existing code into their
new software systems. The motivation for the survey is
that software reuse can be a source of cost savings in
software development. The survey may help to under-
stand more about the role of a “not invented here” atti-
tude toward using someone else’s code. Developers re-
port on their experiences when they attempted to reuse
code, and they offer recommendations on ways to ach-
ieve higher levels of reuse. Conducting such a survey is
consistent with observations in [1] that more investiga-
tion is needed on the non-technical factors (such as pre-
vailing attitudes and perceptions) that are barriers to
reuse. Developers’ viewpoints on reusing code may also
provide insight concerning what they look for when con-
sidering incorporating code from multiple sources, such
as public software libraries, open source software, or off-
the-shelf components.
2. Background and Motivation
Reusing programming code is a widely practiced tech-
nique to take advantage of existing resources in devel-
opment projects. Research studies and experience reports
over the years have explored many aspects of software
reuse, such as the f ollowing:
What are the mechanisms for reusing code and oth-
er artifacts; that is, how does it happen, what are the
steps involved?
What artifacts are reused, and what are the effects
when different artifacts (e.g., reusing design versus
code) can be reused for the same project?
How much does reuse (of various artifacts) reduce
development costs?
What is the effect of reuse (of various artifacts) on
software quality?
How can development tools, environments, and lan-
guages support reuse?
What are the differences between reusing know-
ledge (e.g., by consulting with colleagues) and re-
using artifacts (e.g., referring to documents) as al-
ternative ways to obtain the same information?
How does software reuse relate to design patterns,
templates, software product lines, versioning, main-
tenance, and knowledge sharing?
To what extent can developers be trained to maxi-
mize reuse?
What are the differences (e.g., in additional devel-
opment time required) when software is intention-
Software Reuse: Developers’ Experiences and Perceptions
Copyright © 2011 SciRes. JSEA
49
ally designed to be reused?
Don’t developers really have a not-invented-h e r e v i e w -
point toward other people’s code and want to write
new code all the time?
Very useful overview studies over the years (e.g., [2-5])
have helped to organize the diverse technical, organiza-
tional, behavioral, and economic issues suggested by
these questions.
There is an abundant literature, summarized here, sh o-
wing that reusing software components can lower the
cost of software development projects. The motivation
for this article is that if we improve our understanding of
developers’ experiences and perceptions regarding reuse,
we may identify ways to increase reuse, and, by doing so,
further reduce the cost of software development. Again,
there is support for this motivation in [1], “It is impera-
tive to understand the behavior of software developers.
The key to successful re use programs obviously depends
on its acceptance by the users.”
One of the earliest empirical results on the effects of
reuse on cost was reported in [6], analyzing data from a
development environment that classified modules by the
reuse categories of:
Verbatim (complete reuse of a module from a pre-
vious project without changing any of the code)
Adapted (there was reuse of a module, and there
was slight modification of its code, that is, less than
25% of the lines of code were changed)
Rebuilt (there was reuse, but the module was exten-
sively modified, that is, 25% or more of the code
was changed)
Newly developed (that is, no reuse of a previous
module)
The resulting analysis found that reused components
cost less, as measured in median hours per 100 executa-
ble statements to develop the modules:
Verbatim – 11 hours
Adapted – 18 ho urs
Rebuilt – 19 hours
New – 24 hours
More recently, the effect of the extent of reuse on de-
velopment cost was explored in [7], showing similar re-
sults that verbatim reuse has a significantly stronger ef-
fect than partial reuse (such as the categories of adapted
and rebuilt abov e). With partial reuse, d evelopers have to
spend time to understand the code sufficiently to change
the lines of code correctly and not introduce new defects.
In some investigations, the cost savings by reusing
code are analyzed at the project level rather than at the
level of individual modules. In two industrial projects in
[8], the first project had 38% reused code and showed a
57% increase in productivity over development from
scratch. The second project, with 31% reuse, resulted in a
40% producti v i t y improvement.
A comprehensive cost model and framework for reuse
operations was developed in [9]. In an industrial case stu-
dy, various reuse scenarios showed a range of cost sav-
ings of 42-81% from reusing software compared to the
cost of new development. Another study found project
cost savings of approximately 50% [10]. So, to the extent
that projects reused code, those projects reported lower
total project development costs.
3. Conditions for Reuse: The 4A Model
The literature overview provided support that reusing
more code can reduce project costs. The focus of the cu-
rrent research was to analyze what developers do when
they consider using other people’s code. The approach
here is to propose a simple model, called th e “4A” model,
based on a sequence of conditions that must be met for
reuse of artifacts (such as code or documents) to occur:
Availability: the reusab le artifact must be available;
that is, it must not have been destroyed, erased, or
lost
Awareness: the developer must know of the exis-
tence of the reusable artifact
Accessibility: a transfer mechanism must exist to
get the reusable artifact to where it is needed
Acceptability: the reused artifact must be acceptable
to the developer for use in the new project and its
environment
The 4A model may be seen in the context of the reuse
life cycle in [11] as an expansion of their “reuse utiliza-
tion phase” into four distinct conditions for utilization. If
any of these conditions is no t met, reuse cannot occur. In
this sense, the 4A’s can also be viewed as successive ob-
stacles or impediments to reuse. Taking the 4A’s in order,
the path to successful reuse can break down at any stage.
For example, associated with an organization is the am-
ount of code that is made available for later reuse based
on organizational policies and practices. When there is a
potentially reusable artifact that the organization has arc-
hived and made available, a developer may not be aware
of it. Even if the developer is aware of it, she may not
have a way to access the artifact. Finally, even if there is
a way to access the artifact, the developer may examine it
and either determine that it is not suitable for reuse after
all or simply exercise a preference to develop the code
from scratch.
A survey was designed and administered around this
4A model to probe these four points of potential derailing
of the reuse process and understand more about which
ones pose the greatest obstacles to reuse. Among the re-
used artifacts of interest, the survey focused on the reuse
of code, but specific questions, discussed later, did ex-
plore the reuse of other artifacts such as documents and
Software Reuse: Developers’ Experiences and Perceptions
Copyright © 2011 SciRes. JSEA
50
test plans.
The survey was administered to 128 personnel who
participate in teams that develop technical application s in
an environment that is described in [7]. Because the fo-
cus in the survey and in this article is on developer expe-
riences and perceptions, it is suggested that the survey
results will be of interest to other development environ-
ments. The development teams in this environment are
composed of both U.S. Government employees and con-
tractors. Of the 128 personnel surveyed, 30 were Gov-
ernment employees and 98 were contractors. The survey
participants had an average of five years of development
experience in this environment and seven years of expe-
rience in total. There were several candidate artifacts that
could be reused in this environment, including code, de-
signs, specifications, and other documents produced in
support of a devel o pment project .
Figure 1 shows the results of a survey question that
directly addressed the 4A’s and reused code. Developers
were asked, “How often has each of the following major
factors prevented you from reusing cod e?” As the Figure
indicates, the greatest perceived impediments to reuse
were awareness and acceptability from the 4A’s. More
respondents answered that these two factors were ob-
stacles either a few times, several times, or often. In this
environment, the other two of the 4A’s, availability and
accessibility, were not perceived as major impediments.
Clearly, this information can be valuable when decisions
are made to try to increase the level of reuse: specifically,
more attention and resources can be dedicated to enhan-
cing the awareness of reused code and addressing rea-
sons that developers f ou n d code was n ot accept abl e.
4. Awareness
Two survey questions probed the awareness factor,
which was shown in Figure 1 to be one of the major ob-
stacles to code reus e. One question asked, “How did you
become aware of the existence of reusable code?” The
other question was similarly phrased but addressed “…
items other than code (e.g., subsystem designs, sections
of documents)”. The results are shown in Figures 2 and
3, respectively. The possible responses to each question
are shown below, along with the ways they were labeled
in Figures 2 and 3. The respondent was aware because
he or she:
“Knew from my own experience” (denoted “Self-
Experience” in Figures 2-3)
“Looked at documents from previous projects”
(Self-Docs)
“Asked a colleague” (Peer-Ask)
“Told/suggested by a colleague” (Peer-Told)
“Asked a task leader/manager” (Super-Ask)
“Told by a task leader/manager” (Super-Told)
The results were instructive in several dimensions.
The developers indicated the extent to which they rely on
themselves or others. If other personnel are involved, are
they superiors (task leaders/managers) or colleagues?
When there are interactions with others, is the informa-
tion sharing more a “push” (“told by a task leader/man-
ager” or “told/suggested by a colleague”) or a “pull”
(“asked task leader/manager” or “asked a colleague”).
Finally, from a knowledge management viewpoint, the
response, “looked at documen ts of previous proj ects” re-
fers to explicit knowledge, that is relying on tangible ar-
tifacts, while the other responses referred to tacit know-
ledge.
As shown in Figures 2 and 3, developers ofte n rel y on
their own experiences. A contributing factor to th is result
is that there is a conscious effort by management in this
environment [7] to develop the programming staff by
bringing them along into positions of successively great-
er responsibility on projects over time. For example, a ju-
nior programmer will typically be introduced into a team
in the impleme ntation phase to co de some modules, each
of which has a narrow and well-defined scope. Also used
as a way to bring on junior staff members is to have them
start with the testing phase, under the guidance of a sea-
soned developer, so they can start seeing the modules
and how they fit together. These early experiences typi-
cally bring the developers into contact with single-pur-
pose modules that are prime candidates for later reuse. As
the developers mature, they are brought into new teams
in more significant roles, such as programmer analysts
from the start of the project, so they work on the specifi-
cations and design. Still later on, they may assume roles
as task leaders for portion s of the design , imp lementation,
and testing phases. So, it is not surprising that developers
report that they often rely on their own expe riences to re-
use both code and non- code ite ms.
A general observation from Figures 2 and 3 is that the
developers make use of all the means to become aware
of reusable items: they ask others; they are told by others;
and they look at documents. The most notable result, al-
though not surp rising, appears to be in Figure 2, that de-
velopers are much more likely to ask peers about reusa-
ble objects and are much more likely to be told by task
leaders/ managers. There is much more rigorous explora-
tion of the social processes at work in reuse in [12] .
5. Accessibility and Acceptability
Three questions probed the extent to which developers
found that available reuse artifacts were accessible and
acceptable. As discussed earlier and shown in Figure 1,
accessibility turned out not to be as significant an obs-
tacle to reuse as did acceptability. Three questions shed
more light on both factors. The first question asked, “If
Software Reuse: Developers’ Experiences and Perceptions
Copyright © 2011 SciRes. JSEA
51
Figure 1. How often has each of the following major factors prevented you from reusing code?
Figure 2. How did you bec o me aware of the existence of reusable code?
there were times when you did not reuse code because
the old code was not accessible or acceptable, what were
the reasons?” Figure 4 shows the responses of the deve-
lopers. The responses substantiate the earlier result that
accessibility is not a major factor for these developers.
The Figure indicates that, while code was nominally
available “somewhere,” the fact that it was not actually
available on the computer system needed or in the lan-
guage needed was not a major obstacle (that is, relatively
few responded that it happened several times or often).
When 67% of the respondents said that, at least a few
times, the old code “did not meet the new functional re-
quirements,” it raises concerns when considered along
with the responses just examined in Figures 2 and 3. If
developers relied on their own knowledge, then it may
simply be that, upon further inspection, their recollection
about what the old code did was not accurate. If they
received information from superiors or colleagues, then
those personnel thought the old code was a match for the
new requirements, but it was not the case. There may
have been some miscommunication or misunderstanding
in the exchan ge of informatio n.
If the developers relied on documentation that was in-
tended to support reusability (e.g., a catalog of modules
Software Reuse: Developers’ Experiences and Perceptions
Copyright © 2011 SciRes. JSEA
52
Figure 3. How did you become aware of the existence of items other than code (e.g., subsystem designs, sections of docu-
ments)?
Figure 4. If there were times when you did not reuse code because the old code was not accessible or acceptable, what were
the reasons?
thought to be good candidates for reuse), then it suggests
that the documentation was incomplete in providing the
information needed by developers to establish the accept-
ability of the old code or the documentation was an in-
accurate representation of the old code in terms of speci-
fying the functional and operational requirements being
met. Perhaps these responses can provide data useful for
making a business case that creating an online catalog of
Software Reuse: Developers’ Experiences and Perceptions
Copyright © 2011 SciRes. JSEA
53
modules is a worthwhile investment.
According to Figure 4, 17% of respondents reported
that defects in the old code were the reasons (several
times or often) for not reusing the code. It should be
mentioned that no attempt was made to follow up in
these cases, such as to identify the respondents who ans-
wered this way, determine which old code they examined,
and whether, in fact, that code really did have defects.
It may be that the developers perceived that the code was
defective when it was not. If the code was indeed defec-
tive, that fact should be troubling for the organization.
Defective code is the surest way to discourage reuse!
Figure 4 also reveals that 51% of developers expe-
rienced difficulty understanding old code. Such a result
motivates follow-up to determine if there should be ef-
forts to improve the code style or self-documentation (e.g.,
via comments) to make it easier for others to understand
the code. Improvements to coding style and documenta-
tion can be enforced with development tools and with
practices such as code inspections, code reading, and
code walkthroughs.
By far the greatest impediment to acceptability of old
code was that it was perceived as too complex, with 39%
reporting that “several times or often,” this was their ex-
perience, and an additional 33% reporting that it occurred
“a few times”. This result is more evidence (e.g., shown
also in [12]) for complexity being a deterrent to reuse.
There are many aspects to this survey outcome. On some
occasions, the old code is complex because it has been
modified from its original creation. As with many organ-
izations, this one trains its develop ers to keep track of the
modification history of the module in the prolog (front
matter comments) of each module. In this way, a devel-
oper can readily tell if a module has been modified, and
how extensively. Extensively modified code may have
rendered what was once a clearly coded module into a
much less clear amalgam with patches and added-on
functionality. Another indication of what can result from
extensive modification is that these rebuilt modules (as
defined earlier) have been shown to have a higher defect
density than newly developed ones [13].
It takes effort to understand old code. The developer is
trying to establish whether the old code will meet some
or all of the new requirements so it can be part of a new
system. When that old code is written such that it makes
it especially difficult to understand, a developer can rea-
sonably conclude that her effort is better spent develop-
ing new code from scratch. At least by taking that action,
the newly written code will most certainly address the
new requirements. So, the need to expend effort to under-
stand old code provides encouragement and further ra-
tionale for a not-invented-here attitude by the developer.
When there are many occasions of this phenomenon
(i.e., expecting to reuse a module, then rewriting it), it
can adversely affect the cost and schedule of a project if
the effort required by the developer is more than expe-
cted. The survey had an “expectation of reuse” question
and also a question that addressed the opposite situation,
expecting to write a new module and then find ing co de to
reuse. The survey questions were as follows:
In your experience in the coding phase of projects,
how often did you end up extensively modifying or
completely rewriting a module when the design
called for a module to be reused?
How often did you end up reusing a module (in
whole or in part) when the design called for a new
module to be written?
Figure 5 shows the survey results, that it is much more
likely that an “expected-to-be-reused” module was either
extensively modified or completely rewritten rather than
an “expected-to-be-developed-from-scratch” module was,
instead, reused. Among the r espondents, 40% of them re-
ported that in 25% or more of the cases, they ended up
extensively modifying or completely rewriting a module
that had planned to be reused. It is acknowledged that the
inclusion of “extensively modified” in the responses
makes this result less clear in its message.
However, the basic result—having to extensively mo-
dify or rewrite a module when the plan was to reuse the
module—has strong implications for projects to exceed
their budgets in cases where the initial co st estimate (and
budget) was dependent on a significant amount of reuse.
The cost of module development shown earlier makes it
clear that the costs will be higher on average for exten-
sively modified and newly coded modules. So, when it
comes time that developers actually reach the point of
deciding on reusing modules, this survey is saying that
some of the planned reuse may not occur. When more
modules are developed from scratch than was planned,
the costs increase.
Another question probed further into the developers’
attitudes about reusing code, asking them to respond on
the extent to which they agree with statements about the
effect of time pressure, the extent of a not-invented-here
orientation of wanting to develop from scratch, and the
relationships to reliability and design integrity. Figure 6
shows the responses. Time pressure on developers makes
them more likely to try to reuse code, with 55% saying
that they ag r e e or s tron g ly agr ee with that statement. This
result is not obvious. Attempting to reuse code typically
requires an investment in time to locate the code, exa-
mine it, compare it to what is needed, and test it. With
time pressure, it may have been expected that developers
would go into a “bunker” mentality, and prefer to dedi-
cate themselves to coding the required modules from sc-
ratch ra ther than searching for possible reusable code and
Software Reuse: Developers’ Experiences and Perceptions
Copyright © 2011 SciRes. JSEA
54
Figure 5. In your experience in the coding phase of projects, how often did you end up extensively modifying or completely
rewriting a module when the design called for a module to be reused or reusing a module (in whole or in part) when the de-
sign called for a new module to be written?
examining it for suitability. The survey result suggests
that developers do see reusable code as a way to save
time. A concern for the organization might be that, with
the time pressure, there will be less attention paid to 1)
ensuring that the reused module is, in fact, a correct
match for the requirements and 2) testing the reused mo-
dule, and, instead, relying more on documentation and
comments that the module will operate as described.
Only 21% of developers agreed that it is better to tho-
roughly rewrite old code than to try to reuse it. This re-
sult is consistent with the previous one, in that develop-
ers are giving evidence of a commitment to seek to reuse
code when possible and not immediately decide to re-
write it. At least in this environment, developers do not
report an especially strong not-invented-here attitude.
This question has been one of those closely related to th e
observation that programmers, when given the chance,
will want to “go it alone” and demonstrate that they are
skilled at generating superior code. In the context of re-
use, this may translate into a belief th at reusing code will
limit creativity [11] and more pointedly, “Only wimps
use someone else’s software.” [14]. There are additional
dimensions to this issue however. For example, new de-
velopers are more likely than their experienced collea-
gues to reuse existing artifacts, believing that designing
and coding from scratch increases the risk of being criti-
cized [15].
While the first two questions in Figure 6 show an
orientation to try to reuse code, the final question sug-
gests one limitation to unbridled reuse. When reusing old
code may “slightly perturb the system design,” then 48%
of developers say that the old code should not be reused.
Developers may be expressing their understanding of the
key role of an overall design structure and not wanting
reused code to cause design changes that would likely
threaten the integrity of the design and have ripple effects
for other developers on a proj ect .
6. Developers’ Perceptions
The survey also probed the perceptions of developers
about the benefits of reuse. The motivation for this line
of questioning was to enable researchers to compare per-
ceived effort saved to actual effort saved. If there are
gaps between perception and reality, it may lead to fol-
low-on activities to try to understand why perceptions
may be higher than reality, whether the perceptions offer
opportunities for improvement to actually deliver on the
perceived benefit. For example, perhaps developers per-
ceive very high value from reusing documents, but the ac-
tual effort data sh ows that much less benef it was achieved
from reusing documents. Such an observation may lead to
providing document templates that are more reusable for
developers.
One question directly addressed the perceptions of
developers : “On proj ects you h av e work ed on , how much
work have you saved through reuse of the follo wing pro-
ject elements?” The responses were chosen to probe the
differences in perceived reuse among documents, deli-
vered code, and non-delivered code (e.g., test drivers, de-
bugging code). The results are shown below with per-
Software Reuse: Developers’ Experiences and Perceptions
Copyright © 2011 SciRes. JSEA
55
Figure 6. To what extent to you agree or disagree with the following statements?
ceived percenta ge of wor k saved by reuse of the item:
Requirements document s , 9%
Specifications documents, 10 %
Design documents, 18%
Planning and management documents, 11%
User’s guides and systems descriptions, 22%
Actual design of the system, 21%
Delivered source code, 26%
Test drivers and other non-delivered software, 12%
The results showed modest perceived benefits from the
reuse of planning, requirements, and specification docu-
ments, from 9-11% expected savings of effort. This
makes sense because these documents refer to activities
that are early in the development process and very spe-
cific to the particular application being developed. There
was much higher perceived reuse of design documents.
This result is consistent with actual data on staff hours of
effort saved by reuse of design, as found in [7]. The per-
ception of high reuse of user’s guides and system des-
cription documents (22%) can be readily understood be-
cause of the existence of “boilerplate” (i.e., relatively
consistent) content that needs to present in such docu-
ments, such as to describe the operational environment
and modes of user interaction.
There was a developer perception that the reuse of
previously delivered source code saved 26% of effort.
This perceived value is very close to actual data on staff
hours of effort saved by reuse of code, on average, in this
environment for adapted or rebuilt modules presented
earlier (18 or 19 median hours per 100 executable state-
ments versus 24 hours for new code). Using 18.5 as an
average of the adapted and rebuilt means that the actual
effort savings is 31.25%. Perceived reuse of nondelivered
code was much lower at 12%, which is to be expected
because such code is often very specific to the tests being
run or the nature of the debugging required.
One additional question about perceptions of develop-
ers explored a very different aspect of reuse and reusabil-
ity: “If you were assigned to implement a module that is
to be reused in several projects (as opposed to a module
that no one else will likely every examine), what percen-
tage additional effort would you put into the coding of
that module?” The average response of the developers
was that they would put in 29% additional effort. Data
shows that the actual additional effort is much more. In
[10] the average effort was 160-250% of the cost of de-
veloping a non-reusable asset, while the additional effort
was 111% in [8]. The underestimation by developers is
understandable. There is no widely accepted meaning of
what is necessary for a module to be considered reus able.
Also, by any definition, making a module reusable is in-
fluenced by the programming language used and by the
rigor of the acceptance criteria for reusab ility. In particu-
lar, most developers underestimate the percentage of code
that is needed for exception handling and recovery to
make a module robust in the presence of off-nominal in-
put and behavior.
7. Opportunities to Increase Reuse
While the objective of the survey was to obtain a deeper
understanding of attitudes and perceptions about reuse,
the ultimate aim was to start identifying opportunities for
improvement so that development costs can be reduced
by more effective reuse and higher levels of it. Three que-
Software Reuse: Developers’ Experiences and Perceptions
Copyright © 2011 SciRes. JSEA
56
stions in the survey were focused on ideas for improve-
ment:
Which artifacts offer the most potential for addi-
tional reuse?
Which of several proposed improvements would be
most hel pful?
What suggestions do you have to improve reuse?
On the question to indicate which artifacts offered the
most potential for additional reuse, the respondents were
asked to consider the same set of artifacts listed above
(requirements documents, et al.) and rate the potential for
additional reuse on a five-point scale from low (1 point)
to high (5 points). Because the research interests were in
obtaining a relative indication of which artifacts were the
best targets for reuse initiatives, th e responses were com-
bined for each artifact, such that, if all the respondents
rated an item low (1 point), that would correspond to
20%; if all respondents rated an item high (5 points), that
would correspond to 100%:
Requirem ent s documents , 45 %
Specifications documents, 49 %
Design documents, 51%
Planning and management documents, 59%
User’s guides and systems descriptions, 51%
Actual design of the system, 57%
Delivered source code, 61%
Test drivers and other non-delivered software, 48%
While the previous result showed that developers per-
ceive they get the most savings from reusing code, they
also believe that reusing code offers the most potential
for even higher levels of reuse. From the expressed view-
points of developers in this survey, there are potential
improvements still to be obtained by focusing on code re-
use. The survey results show that developers believe that,
after source code, the next best targets for reuse initia-
tives would be to focus on the reuse of planning/mana-
gement documents and the reuse of system designs.
Developers were asked to indicate their perceptions of
how much various changes would help to increase the
amount of reuse. Developers indicated their perceptions
using a five-point scale ranging from “not helpful” (1
point) to “extremely helpful” (5 points). The results are
expressed again in percentage terms, so that 100% means
that all respondents indicated th at a change would be ex-
tremely helpful. The results are as follows:
Better comments in the code, 84.1%
Better prologs, 81.4%
Better offline tools, such as catalogs, listings, and
documentation, 80.0%
Better online tools for software search, description,
and retrieval, 78.9%
Better structured software modules (highly cohesive,
etc.), 76.0%
Better access to personnel who are knowledgeable
about the cod e, 74.8%
Use of different programming languages, 52.6%
Use of different operating systems, 46.6%
The responses suggest that most of the items were per-
ceived as helpful: better comments in the code, better
prologs, and better offline and online tools, and access to
knowledgeable personnel. These results can be a guide to
where best to make changes to improve reuse. However,
they offer only one half of any cost-benefit analysis.
These results would need to be matched with estimates
for the costs to make each change. There was a gap be-
tween these five changes and the last two. Moving to
other operating systems or languages was not perceived
as offering much improvement for reuse. Of course, this
result must be tempered by the realization that there is no
knowledge of th e extent to which the respondents are fa-
miliar or not with the reuse-supportive constructs of oth-
er languages or operating systems.
The survey also included an open-ended question, as-
king for suggestions on how to improve reuse. Of the 128
developers surveyed, 58 provided suggestions. The res-
ponses clustered around suggestions related to personnel,
tool support, and cost/budget:
Personnel Related:
Assign staff members to projects specifically to ad-
vise the project team on what resources may be
available to reuse
Provide training on how to reuse and incorporate
reused code into systems.
Formalize a list of people who know about project
X or topic Y.
Provide training on where to look for help.
Provide training on how to build reusable objects
and how to build systems from them.
Educate managers too !
Tool Support Related:
Provide an online keyword-search capability that
cuts across different sources of potentially reusable
content.
Write a reuse guidebook and update other hand-
books to describe how to reuse; update the manag-
er’s handbook to show how reuse fits into the
process model being used.
Clean up, unify, and publicize existing code libra-
ries; put them under control so that code and docu-
mentation are in agreement.
Put the library under an administrator who can add
to it.
Establish criteria (enforced by tool?) to qualify cod e
for library.
Develop reusable code outside of the constraints of
a project.
Software Reuse: Developers’ Experiences and Perceptions
Copyright © 2011 SciRes. JSEA
57
Cost and Budget Related:
Identify high-payoff areas and invest in them.
Specify a separate budgetary charge number that
programmers can use when they are contributing to
a code library and when they are searching for code
to reuse (so they will be more willing to look for re-
usable code without penalizing their project by
charging their time to it while looking).
Run a contest: have programmers submit code; pro-
grammers who use reused code get 1 point for re-
using it; the programmer who submitted the code
gets one point every time that code is used.
The recommendations on cost and budget are particu-
larly interesting because they raise the practical issue of
providing incentives for developers to increase levels of
reuse. The first suggestion, to invest in high-payoff areas,
is a proactive approach. There could be an assessment of
the application domains of the developing organization to
identify knowledge areas or types of artifacts that would
be the best candidates for strategic investments to incr-
ease reuse. This approach is consistent with strategies in
knowledge management in which a large consultancy
may have created dozens of strategic plans. A consultant
wanting to develop a new plan has a difficult task to
choose which ones to use as guides. The consultancy can
reduce overall costs by investing in a proactive exercise
for staff members to review all the strategic plans and de-
velop a few archetype plans or templates that are th e best
models for consultants to use in the future [16]. In soft-
ware development, an analogy may be the need to incr-
ease quality by being more consistent with non-func-
tional code that is broadly applicable, such as the intro-
duction of effective exception handling and security-re-
lated code into a wide range of modules. Instead of each
developer going it alone, the company can dedicate some
experienced software engineers to develop some code pa-
tterns that can be the starting point for developers on fu-
ture projects.
8. Summary
Obtaining cost reductions from reusing code depends on
developers actually accomplishing the reuse during a
project. This article used a survey of developers to gain
an understanding of some of their experiences and per-
ceptions about software reuse. The greatest impediments
to reuse were awareness of reusable code and its accep-
tability for use on a new project.
Some key survey results were that:
Developers relied mostly on their own experiences
for awareness of reusable artifacts
72% of developers found the complexity of the
examined old code to be an obstacle to establishing
its acceptability for reuse
55% of developers responded that time pressure
makes them more likely to try to reuse code
Developers’ perceptions were much more accurate
concerning the effort saved by reuse than they were
about the effort required to create reusable modules
One survey result had implications for a role that reu se
may play in large software projects exceeding their bu-
dgets: 40% of dev elop ers r epor ted that in 25% or mor e of
the cases, they ended up extensively modifying or com-
pletely rewriting a module that had planned to be reused.
Given the additional effort required by this change, this
result can affect the ability of projects to stay within their
budgets, when those budgets had been planned on more
reuse than was actually achieved. The developers also
made recommendations for increasing reuse. The ideas
tended to cluster into tho se that were related to personnel,
tool support, and cost/budget.
There is an obvious threat to the validity of these re-
sults. Given that this is a survey, the results depend on
the particular respondents and their personal experiences
with reuse. The study was conducted in a particular deve-
lopment environment, so the results cannot be expected
to hold in different environments (e.g., development plat-
forms, tools, languages, application domains).
However, it is suggested that the 4A framework may
be a useful model generally as a way to consider the se-
quence of steps in reuse and the possible impediments to
its realization. Furthermore, because the survey revealed
information about experiences and perceptions of devel-
opers, the results may provide insights for the organiza-
tions wanting to enhance their understanding of the cli-
mate for reuse. Lastly, researchers and managers may
find that the develop ers’ suggestions for improving reuse
may resonate as being good ideas for consideration in
their own organizations.
9. Acknowledgements
The author acknowledges the support of the U.S. Nation-
al Aeronautics and Space Administration and thanks F.
McGarry and D. Solomon for their contributions to this
research.
REFERENCES
[1] V. Mellarkod, R. Appan, D. Jones and K. Sherif, “A Mul-
ti-level Analysis of Factors Affecting Software Develop-
ers’ Intention to Reuse Software Assets: An Investiga-
tion,” Information & Management, Vol. 44, No. 7, 2007,
pp. 613-625. doi:10.1016/j.im.2007.03.006
[2] W. Agresti and F. McGarry, “Minnowbrook Workshop
on Software Reuse: A Summary Report,” W. Tracz, Ed.,
Software Reuse: Emerging Technology, Computer Socie-
ty Press, Washington DC, 1988, pp. 33-40.
[3] Y. Kim and E. Stohr, “Software Reuse: Survey and Re-
Software Reuse: Developers’ Experiences and Perceptions
Copyright © 2011 SciRes. JSEA
58
search Directions,” Journal of Management Information
System, Vol. 14, No. 4, 1998, pp. 113-147.
[4] W. Frakes and K. Kang, “Software Reuse Research: Sta-
tus and Future,” IEEE Transactions on Software Engi-
neering, Vol. 31, No. 7, 2005, pp. 529-536. doi:10.1109/
TSE.2005.85
[5] P. Mohagheghi and R. Conradi, “Quality, Productivity
and Economic Benefits of Software Reuse: A Review of
Industrial Studies,” Empirical Software Engineering, Vol.
12, No. 5, 2007, pp. 471-516.doi:10.1007/s10664-007-
9040-x
[6] D. Card, V. Chur ch and W. Agr esti, “An Empi rical Study
of Software Design Practices,” IEEE Transactions on
Software Engineering, Vol. 12, No. 2, 1986, pp. 264-271.
[7] R. Selby, “Enabling Reuse-based Software Development
of Large-scale Systems,” IEEE Transactions on Software
Engineering, Vol. 31, No. 6, 2005, pp. 495-510. doi:
10.1109/TSE.2005.69
[8] W. Lim, “Effect of Reuse on Quality, Productivity and
Economics,” IEEE Software, Vol. 11, No. 5, 1994, pp.
23-30. doi:10.1109/52.311048
[9] A. Tomer, L. Goldin, T. Kuflik, E. Kimchi and S. Schach,
“Evaluating Software Reuse Alternatives: A Model and
its Application to an Industrial Case Study,” IEEE Tran-
sactions on Software Engineering, Vol. 30, No. 9, 2004,
pp. 601-612. doi:10.1109/TSE.2004.50
[10] S. Morad and T. Kuflik, “Conventional and Open Source
Software Reuse at OrbotechAn Industrial Experience,”
Proceedings of the IEEE International Conference on
Software, Science, Technology and Engineering, Herzlia,
February 2005, pp. 110-117. doi:10.1109/SWSTE.2005.11
[11] K. Sherif and A. Vinze, “Barriers to Adoption of Soft-
ware Reuse,” Information & Management, Vol. 41, No. 2,
2003, pp. 159-175. doi:10.1016/S0378-7206(03)00045-4
[12] W. Boh, “Reuse of Knowledge Assets from Repositories:
A Mixed Methods Study,” Information & Management,
Vol. 45, No. 6, 2008, pp. 363-375. doi:10.1016/j.im.2008.
06.001
[13] W. Agresti and F. McGarry, “Defining Leverage Points
for Increasing Reuse,” Paper Presented at the Minnow-
brook Workshop on Software Reuse, Blue Mountain
Lake, New York, 1987.
[14] W. Tracz, “Confessions of a Used-Program Salesman,”
W. Tracz, Ed., Software Reuse: Emerging Technology,
Computer Society Press, Washington DC, 1988, pp.
92-95.
[15] K. Desouza, Y. Awazu and A. Tiwana, “Four Dynamics
for Bringing Use Back into Software Reuse,” Communi-
cations of the ACM, Vol. 49, No. 1, 2006, pp. 97-100.
doi:10.1145/1107458.1107461
[16] W. Agresti, “Knowledge Management,” Advances in
Computers, Vol. 53, No. 1, 2000, pp. 171-283. doi:10.
1016/S0065-2458(00)80006-6