Title: Sixteen Questions About Software Reuse
1Sixteen Questions About Software Reuse
- William B. Frakes and Christopher J. Fox
- Communications of the ACM
2Software reuse
- The use of existing software knowledge and
artefacts to build new software artefacts - sometimes confused with porting
- reuse is using an asset in different systems
- porting is moving a system across environments
and platforms
3The survey
- Surveyed
- software engineers, managers, educators, and
other in the software development and research
community - About
- attitudes, beliefs, and practices in reusing code
and other lifecycle objects - Response from
- 113 people from 29 organizations (28 US and one
European) - fairly representative of experienced software
engineers or managers at high technology companies
416 questions
- The survey is used to answer 16 questions
commonly asked by organizations attempting to
implement systematic reuse. - The answers to these questions are often taken
for granted in the software community but without
empirical verification - This article uses empirical data from a survey to
answer these questions
5Q1 How widely reused are common assets?
- Are reusable assets actually used, and are they
found valuable? - Answer yes and no.
- Some assets are widely used (e.g.. UNIX tools)
and perceived to be valuable, others are not used
by many and are not perceived to be valuable
(e.g.. Cosmic collection form NASA) - Possible reasons
- lack of information and education
- asset quality and ease of access
- anecdotal evidence suggest that relevant
functionality is an important factor
6Q2 Does programming language affect reuse?
- Does certain programming languages provide better
reuse support (e.g.. by supporting abstractions,
inheritance, strong typing) - The data of the survey shows the correlation of
11 languages and the level of organizational code
reuse. - Findings
- languages usually thought to promote reuse show
small correlation (e.g.. ADA and C) - Higher level languages are no more strongly
correlated with code reuse than is assembly
language - Conclusion
- Choice of programming language does not affect
code reuse levels - To increase reuse the focus should be on other
factors
7Q3 Do CASE tools promote reuse?
- Many organizations regard CASE tools as a way to
improve reuse - The majority (75) does not agree that CASE tools
have promoted reuse - No significant correlation between the
respondents degree of belief in that CASE tools
promote reuse and the percentage of actual reuse. - Conclusion
- CASE tools are not currently effective in
promoting reuse - Reasons
- CASE tools may not be used
- CASE tools may not be used correctly
- CASE tools may not promote reuse
8Q4 Do developers prefer to build from scratch or
to reuse?
- Many people believe that software engineers
prefer to build their own software rather than
reuse someone else's - Statement used in the survey
- Its more fun to write my own software than to
reuse - Most respondent do not agree on it (72)
- Conclusion
- Most developers prefer to reuse rather than to
build from scratch - Contradicts conventional assumptions, but is in
agreement with other findings of another recent
study
9Q5 Does perceived economic feasibility influence
reuse?
- Reuse may not be done if it is not believed to be
economically feasible. - Levels of code reuse is compared with respondents
agreement with the statement Reuse is
economically feasible in my organization. - Clear trend towards higher reuse as belief in
economic feasibility increases - Conclusion
- perceived economic feasibility influences reuse
- important to convince software engineers about
the economic feasibility of reuse
10Q6 Does reuse education influence reuse?
- Comparing education about software reuse (at
school) with individual levels of reuse shows
that education on reuse does affect code and
design reuse - Comparing education about software reuse (at
work) with organizational reuse levels of
lifecycle objects shows that education at work
does affect reuse - Conclusion
- Education in school and at work improves reuse
and is a necessary part of a reuse program
11Q7 Does software engineering experience
influence reuse?
- General assumption that experienced software
engineers are better practitioners - The survey shows no significant correlations
between engineering experience and personal level
of reuse. - Conclusion
- Software engineering experience has no effect on
reuse of lifecycle objects - Maybe caused by historical lack of training in
reuse
12Q8 Do recognition rewards increase reuse?
- Reuse incentives are considered to be necessary
catalysts for reuse. - recognition rewards and cash rewards
- Respondents say that rewards are rare
- no cash bonuses
- only a few with other recognition
- Comparing levels of organizational code reuse
between the two groups rec. rewards and no
rewards show no significant differences - Similar findings for individual reuse
- The findings contradict the common belief that
recognition is a sufficient reward for reuse. - It may be that only monetary rewards are
sufficient rewards
13Q9 Does a common software process promote reuse?
- Statement used in the survey
- A common development process has promoted reuse
across projects in our organization. - Respondents generally do not agree on it.
- This might mean
- no defined common process
- the process has failed to support reuse
- The correlations between the degree of agreement
with the statement and the organizational reuse
shows - moderate correlation for designs, test plans, and
test cases - weak correlations for requirements, code, and
user documentation - Conclusion
- A defined software process that promotes reuse
does affect software reuse levels
14Q10 Do legal problems inhibit reuse?
- Legal issues e.g.. regarding contracting,
ownership are still unresolved and are thought to
be a serious impediment to reuse - The statement
- I am inhibited by possible legal problems.
- Most respondents (68) report that legal problems
do not appear to be an impediment - Conclusion
- No significant correlation between levels of
reuse and reported inhibition by legal problems.
15Q11 Does having a reuse repository improve code
reuse
- A reuse repository is a searchable collection of
reusable assets. - Slightly higher median for reuse levels for
organizations with a repository - Not statistically significant
- Conclusion
- Having a reuse repository does not improve reuse
- A repository should not be the focus for
organizations trying to improve systematic reuse
16Q12 Is reuse more common in certain industries?
- Respondents were asked to classify their company
or business - Significant differences in reuse between
different industries - higher level for telecommunication
- lower level for aerospace industries
- Reasons not currently known
- Industries with low reuse might benefit from
studying and adopting reuse practice in
industries that lead in software reuse
17Q13 Are company, project sizes predictive of
organizational reuse?
- Small organizations
- Is systematic reuse a realistic goal given the
the scope of their domain and limited resources? - Large organizations
- Introducing systematic reuse may be unrealistic
because of the large investment and time required - No significant correlation were found between
organizational size and reuse levels - Conclusion
- Company and project size are not predictive of
reuse levels - Organizations of any size may succeed to
introduce systematic reuse
18Q14 Are quality concerns inhibiting reuse?
- It is commonly thought software engineers
distrust assets developed outside and thus are
less likely to reuse them. - No correlation between
- software developed elsewhere meets our
standards - what percentage of the parts you reuse are form
external sources - Experience in quality of reusable software have
generally been favourable (69 agreement) - No correlation between personal reuse level and
experience in quality of external software - Conclusion
- Satisfaction with quality does not influence
reuse levels - Does NOT mean that quality is unimportant
19Q15 Are organizations measuring reuse, quality,
and productivity?
- Measuring reuse is important to determine success
of the reuse program - Few organizations are currently measuring reuse
(at most 25) - Quality is more widely measured (42)
- Productivity measurement is relatively rare (32)
- Conclusion
- Many organizations do not measure reuse levels,
quality, and productivity - These organizations cannot properly manage their
software processes and products, including reuse
20Q16 Does reuse measurement influence reuse?
- Measuring an activity will tend to increase it.
- Comparing median level of software reuse for
organizations that are or are not measuring
reuse. - The study shows no correlation
- Conclusion
- Organizations that measure reuse do not use these
measurements to improve reuse levels.
21How to improve reuse
- To improve systematic reuse concentrate on
- education about reuse
- developers understanding on the economic
feasibility of reuse - introduce a common development process that
promotes reuse - make high quality assets available to developers