1
CATCH ME IF YOU CAN To reuse a software component, you first need to find it
IDEALIZED COMPONENT LIFE-CYCLE [1]
A
B
C
A
B
C
D
BC
D
A
B
BC
A Instance
B Instance
D Instance
BC Instance
Builder
Repository
Assembler Run-time
Design phase Deployment phaseExecution phase
3
WHAT IF MY REPOSITORY IS EMPTY?
4
POSSIBLE STRATEGIES
Implement
Search
5
THE NEED OF A COMPONENT MARKET - I
“the software industry is weakly founded and one aspect of this weakness is the absence of a software component sub-industry”.
Malcolm Douglas McIlroy
6
THE NEED OF A COMPONENT MARKET - II
“Imperfect technology in a working market is sustainable; perfect technology without any market will vanish”
Clemens Szyperski
7
TYPES OF MARKET
Internal
External
8
COMPONENT RETRIEVAL MODEL [2]
ProblemProblem
understood
Query space
Codesspace
Components
space
Query
Matcher
Ind
ex
9
SEARCH APPROACHES
Facet-based
Free-text indexer
Enumerative
classification
Test Driven
10
FACET-BASED CLASSIFICATION SCHEME [3]
11
USING THE WEB AS A REUSE REPOSITORY [4]
Describe
syntax
Describe
Semantics
Search the web
Match signatu
re
Compile Test
Stack+push(o:Object):void+pop(void):Object
Stack stack1 = new Stack();Stack1.push(“Lessie”);
assertTrue (((String) stack1.pop().equals(“Lessie”))
;
12
SEARCH - I
13
SEARCH - II [5]
Search engine
# Indexed files
# Java files Retrieval algorithms
Koders >1 million 600,000 Keyword and name matching of codes from large open source hosters
Google Code
>10 million 2.5 million Keyword matching of open source code with regex support
Merobase >10 million 8 million Keyword and name matching, signature matching, and interface-based and test-driven retrieval on open source code, binary components, and Web services
Codase <1 million 300,000 Keyword matching of hosted open source codes
Searchcode 250,000 250,000 Keyword and topological matching on indexed open source code ranked by CodeRank
Sourceforge >10 million 3.5 million Keyword and name matching in open source code and search for technical Web pages
14
OK I’VE FOUND IT, AND NOW
15
DEPLOY IN THE CLOUD?
16
REFERENCES [1] K.-K. Lau and Z. Wang. Software Component Models. IEEE Transactions on Software Engineering 33(10):709-724, 2007.
[2] H. Mili, F. Mili, and A. Mili. Reusing software: Issues and research directions. IEEE Transactions on Software Engineering, 21(6):528–562, 1995.
[3] R. Prieto-D´ ıaz. Implementing faceted classification for soft- ware reuse. Communications of the ACM, 34(5), 1991.
[4]Hummel, O., Janjic, W. & Atkinson, C., 2008. Code conjurer: Pulling reusable software out of thin air. Software, IEEE, 25(5), pp.45–52.
[5] Hummel, O. & Atkinson, C. Using the web as a reuse repository. Reuse of Off-the-Shelf Components, pp.298–311, 2006.