0740-7459/08/$25.00 © 2008 IEEE September/October 2008 IEEE SOFTWARE 45
focus
software development tools
Code Conjurer:
Pulling Reusable Software out of Thin Air
Oliver Hummel, Perot Systems Germany
Werner Janjic and Colin Atkinson, University of Mannheim
A tool that
automatically
finds and presents
suitable reusable
software components
to developers can
help speed the
development process.
F
or many years, the IT industry has sought to accelerate the software develop-
ment process by assembling new applications from existing software assets.
However, true component-based reuse of the form Douglas McIlroy
1
envisaged
in the 1960s is still the exception rather than the rule, and most of the systematic
software reuse practiced today uses heavyweight approaches such as product-line engineer-
ing or domain-specific frameworks. By component, we mean any cohesive and compact
unit of software functionality with a well-defined interface—from simple programming
language classes to more complex artifacts such as
Web services and Enterprise JavaBeans.
Historically, three main reasons explain why
component-oriented reuse has failed to take off:
Not enough good components were around to
make it worthwhile. Indeed, during the golden
years of software reuse research in the 1980s
and 1990s, researchers considered themselves
fortunate to have a repository with even a few
hundred components.
The retrieval technologies used to find suit-
able components matching a user’s query were
crude and often returned a high proportion of
unsuitable components or missed many rel-
evant ones.
2
The overhead involved in using the retrieval
technology to find suitable components and
evaluate their fitness for purpose was too high.
As a result, the balance of effort and risk involved
in software reuse always compared unfavorably to
building components from scratch.
Recent developments have improved the situ-
ation. The rise of the open source movement and
cheap, high-bandwidth Internet connectivity have
■
■
■
given software developers access to vast swathes
of free software, so the number of available com-
ponents is no longer a significant problem. Also, in
the last two years, high-performance code-search
engines (such as Koders, Google Code Search, and
Merobase) have emerged that provide better ways
of retrieving assets from this code base, going be-
yond simple keyword matching. The third prob-
lem regarding retrieval overhead has changed little,
however, and is now the main barrier to the routine
reuse of software components and the emergence of
software component marketplaces.
This is where tools such as Code Conjurer, de-
veloped at the University of Mannheim, aim to
make a difference (see the “Repository-Driven Re-
use Assistance Tools” sidebar for a description of
similar tools). As its name implies, from a develop-
er’s viewpoint, Code Conjurer effectively “conjures
up” software components out of thin air and makes
them available with almost no effort on the user’s
part. It does this by tapping into the vast resource
of components offered by a modern code-search
engine to deliver high-relevance software reuse rec-
ommendations with minimal, if any, disturbance
to a developer’s normal practices. Moreover, it dra-
matically reduces the risk and effort involved in