Databases Reference
In-Depth Information
existing software parts in order to compose new systems [ 24 ] as one cornerstone of
a more engineering like software development approach [ 27 ] certainly fitted well
into the spirit of the whole event.
Software engineering research in general has come a long way since then and has
successfully identified a lot of reuse potential amongst various software engineer-
ing artifacts [ 9 ]. The systematic reuse of well-defined third-party software building
blocks (such as components [ 6 ] or services [ 7 ]) according to a well-defined speci-
fication (as e.g. envisaged in [ 1 ]) is one of the most challenging approaches since
it requires a precise matching of potential reuse candidates to a given specifica-
tion. However, most existing software search solutions are still text-based and do
neither reflect nor support the need to match reuse candidates with the syntactic
and semantic characteristics of a specification. Nevertheless, the programmatic syn-
tax and semantics make software search and retrieval significantly different from
plain text retrieval so that the techniques that have been successfully applied within
the information retrieval community are likely not to be sufficient in the context
of (reuse-driven) software retrieval. Software retrieval research has identified some
core challenges for implementing a sustainable reuse repository that requires to -
Create and maintain a large enough software collection that makes searches
promising (the so-called repository problem [ 35 ]),
Index and represent its content in a way that makes it easily accessible (the rep-
resentation problem [ 8 ])
Allow characterizing a desired artifact with reasonable effort and precision (the
usability problem [ 10 ])
Execute queries with high precision in order to retrieve the desired content (the
retrieval problem [ 32 ]).
While the open source movement, higher bandwidths and always increasing hard-
ware power seem to have mitigated the repository problem recently (cf. Sect. 5.2.2
as well), the other three challenges center around finding an optimal representation
of software artifacts that allows storing, retrieving and searching them in a precise
manner with little effort.
In the remainder of this chapter we present a practical solution to tackle all three
of these challenges. We especially describe how we increased the precision of soft-
ware searches from a reuse perspective based on ordinary unit tests as usually cre-
ated during every software development project anyway [ 4 ]. We have found that
well formulated test cases reveal enough syntactical information and semantics of
a desired component that they can be used as a query for software searches effec-
tively. Therefore, the current status of our test-driven reuse approach, first presented
in 2004 [ 15 ], is described in detail in Sect. 12.3 . Moreover, we show how we inte-
grated this vision in a state of the art software search engine and into the developer's
work environment through a plug-in for the popular Eclipse IDE. In Sect. 12.4 fol-
lowing thereafter, we explain how we evaluated our system in order to demonstrate
the feasibility of the test-driven reuse approach and compare it with a similar sys-
tem recently presented in the literature. Section 12.5 describes this and other related
Search WWH ::




Custom Search