La lecture en ligne est gratuite
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Partagez cette publication

Semantic Component Retrieval
in Software Engineering
Inauguraldissertation
zur Erlangung des akademischen Grades
eines Doktors der Naturwissenschaften der
Universität Mannheim
vorgelegt von
Diplom-Informatiker Oliver Hummel
aus Neustadt an der Weinstraße
Mannheim, 2008Dekan: Prof. Dr. Matthias Krause, Universität Mannheim
Referent: Prof. Dr. Colin Atkinson, Universität Mannheim
Korreferent: Prof. Dr. Ivica Crnkovic, Mälardalen University
Tag der mündlichen Prüfung: 11.03.20084 -
Abstract
In the early days of programming the concept of subroutines, and through this software reuse, was invented to
spare limited hardware resources. Since then software systems have become increasingly complex and developing
them would not have been possible without reusable software elements such as standard libraries and frameworks.
Furthermore, other approaches commonly subsumed under the umbrella of software reuse such as product lines
and design patterns have become very successful in recent years. However, there are still no software component
markets available that would make buying software components as simple as buying parts in a do-it-yourself
hardware store and millions of software fragments are still lying un(re)used in configuration management
repositories all over the world. The literature primarily blames this on the immense effort required so far to set up
and maintain searchable component repositories and the weak mechanisms available for retrieving components
from them, resulting in a severe usability problem. In order to address these issues within t his thesis, we developed
a proactive component reuse recommendation system, naturally integrated into test-first developme nt approaches,
which is able to propose semantically appropriate, reusable components according to the specification a developer is
just working on. We have implemented an appropriate system as a plugin for the well-known Eclipse IDE and
demonstrated its usefulness by carrying out a case study from a popular agile development bo ok. Furthermore, we
present a precision analysis for our approach and examples of how components can be retrieved based on a
simplified semantics description in terms of standard test cases.
Zusammenfassung
Zu Zeiten der ersten Programmiersprachen wurde die Idee von Unterprogrammen und damit die Idee der
Wiederverwendung von Software zur Einsparung knapper Hardware-Ressourcen erdacht. Seit dieser Zeit wurden
Software-Systeme immer komplexer und ihre Entwicklung wäre ohne weitere wiederverwendbare Software-
Elemente wie Bibliotheken und Frameworks schlichtweg nicht mehr handhabbar. Weitere, üblicherw eise unter
dem Begriff Software Reuse zusammengefasste Ansätze, wie z.B. Produktlinien und Entwurfsmuster ware n in den
letzten Jahren ebenfalls sehr erfolgreich, gleichzeitig existieren allerdings noch immer keine Marktplätz e, die das
Kaufen von Software-Komponenten so einfach machen würden, wie den Einkauf von Kleinteilen in einem
Heimwerkermarkt. Daher schlummern derzeit Millionen von nicht (wieder) genutzten Software-Fragmente n in
Konfigurations-Management-Systemen auf der ganzen Welt. Die Fachliteratur lastet dies primär dem hohen
Aufwand, der bisher für Aufbau und Instandhaltung von durchsuchbaren Komponenten-Reposit ories getrieben
werden musste, an. Zusammen mit den ungenauen Algorithmen, wie sie bisher zum Durc hsuchen solcher
Komponentenspeicher zur Verfügung stehen, macht diese Tatsache die Benutzung dieser Systeme zu kompliziert
und damit unattraktiv. Um diese Hürde künftig abzumildern, entwickelten wir in der vor liegenden Arbeit ein
proaktives Komponenten-Empfehlungssystem, das eng an testgetriebene Entwicklungsprozesse angelehnt ist un d
darauf aufbauend wiederverwendbare Komponenten vorschlagen kann, die genau die Funktionalität er bringen, die
ein Entwickler gerade benötigt. Wir haben das System als Plugin für die bekannte Eclipse IDE ent wickelt und seine
Nutzbarkeit unter Beweis gestellt, in dem wir ein Beispiel aus einem bekannten Buch über agile Ent wicklung damit
nachimplementiert haben. Weiterhin enthält diese Arbeit eine Analyse der Precision unseres Ansat zes sowie
zahlreiche Beispiele, wie gewöhnliche Testfälle als vereinfachte semantische Beschreibung einer Komponent e und
als Ausgangspunkt für die Suche nach wiederverwendbaren Komponenten genutzt werden können. - 5
Thank you...
... to my parents Bärbel and Robert Hum(amndel sofo r mluifceh more)...
... to Konrad Zuse for the computer...
... to Peter Luffy for teaching me my first program...
... to Stephan Baumann where it all got started...
... to Colin Atkinson for his faith and support...
... to my colleagues for discussions and distraction...
... to my students for their commitment...
..o. Itvica Crnkovic for coming from Sweden to report on this...
1
... and to myself for all the rest.
1
Actually, I don't know whom to thank for the universe. So, if you should find out, please let me know.6 - C ONTENT
1 NITRODUCTION................................1..1.......................................................
1.1 Motivatio.................................................................................................................................n 11 ................
1.2 Research Obje...............................................................................................................ctive 12 ....................
1.2.1 Out of .sc.o.p.e.....................................................15..................................................................................................................
1.3 Research Stra......................................................................................................................tegy 15 ................
1.4 Outlin....................................................................................................................................e 17 ...................
2 FOUNDATIONS.................................1.9.......................................................
2.1 Software Engineering Bas.............................................................................................ics 19 ......................
2.2 Software Development Proce.........................................................................................sses 20 ..................
2.2.1 Traditional Process M.o.de.l.s............................................2.1.................................................................................................
2.2.2 Today's Best Practice Pro.c.e.ss.es..........................................2.4.............................................................................................
2.2.3 Agile Developm.en.t...................................................2.5..........................................................................................................
2.3 Software Verification and Va......................................................................................lidation 27 ..............
2.3.1 Software Test.in.g....................................................2.7..............................................................................................................
2.4 Software Compone.............................................................................................................................nts 29 .
2.4.1 Component-Based Developm.e.n.t..........................................3.1..........................................................................................
2.4.2 Component Technologies and Service-Oriented Ar.c.hi.te.c.ture.s.......................3.3........................................................
2.4.3 Semantic Web (Serv.ic.e.s.)..............................................3.6....................................................................................................
2.5 Software Re........................................................................................................................use 38 ..................
2.5.1 The Reuse Lan.d.sc.a.p.e...............................................39........................................................................................................
2.5.2 Success and Failure Factors fo.r ..R.eu.s.e.....................................4.1.....................................................................................
2.5.3 Reuse Me.tr.ic.s.....................................................4.3................................................................................................................
2.6 Component-based R..................................................................................................................euse 45 .......
3 COMPONENT RETRIEVAL SO FAR........................49........................................
3.1 Software Component Reposit.....................................................................................ories 50 ...................
3.1.1 Component Representation Me.th.od..s.......................................50......................................................................................
3.1.2 The Repository Pro.b.l.em...............................................5.1....................................................................................................
3.1.3 Usab.ili.ty.........................................................5.2......................................................................................................................8 - C ONTENT
3.2 Component Retrieval Techn..........................................................................................iques 53 ...............
3.2.1 Information Re.tr.ie.va.l................................................53........................................................................................................
3.2.2 Foundations of Search .E.ng.in.es..........................................5.5.............................................................................................
3.2.3 Component Retrieval Appro.a.c.h.es.........................................56..........................................................................................
3.2.4 Information Retrieval M.et.ho.d.s..........................................5.8............................................................................................
3.2.5 Descriptive Meth.ods...................................................5.9.........................................................................................................
3.2.6 Denotational Semantics Me.th.od..s.........................................6.0..........................................................................................
3.2.7 Operational Meth.od.s..................................................61........................................................................................................
3.2.8 Structural Methods.....................................................6.2..........................................................................................................
3.2.9 Topological Methods or Ranking Ap.pr.o.ac.h.es.................................6.2...........................................................................
3.2.10 Discussion of Classific.a.ti.on.............................................63................................................................................................
3.2.11 Retrieval Techniques in Use. .T.o.da..y.....................................6.5......................................................................................
3.3 Semantics in Reuse Appr........................................................................................oaches 66 .....................
4 THE NITERNET AS A REUSE REPOSITORY....................69..................................
4.1 Estimated Potent.............................................................................................................ial 70 .....................
4.1.1 Specialized Search Engines on .th.e. .We.b.....................................7.3...................................................................................
4.2 Precise Retrieval with General-style Search.................................................................... Engines 75 .......
4.2.1 (Meta-)searching With Google Codes.ea.rc.h.....................................76...............................................................................
4.2.2 Limitati.on.s.......................................................7.7....................................................................................................................
4.3 The Build-Up of Merobas...............................................................................................e.com 78 .............
4.3.1 Crawling and Index .St.ru.c.tu.re..........................................7.8..............................................................................................
4.4 The Content of Mero............................................................................................................base 80 ...........
4.5 Sharing Components over the ...................................................................................Web 83 ...................
5 SEMANTIC COMPONENT SEARCHING ......................8.5......................................
5.1 Use Cases for Component Search E........................................................................................ngines 86 ...
5.1.1 Speculative and Open Source .Se.a.rc.h.es.....................................8.7....................................................................................
5.1.2 Definitive Searc.h.es...................................................8.9...........................................................................................................
5.1.3 Java Library Se.arc.h.es.................................................91.........................................................................................................
5.1.4 Further Optimization Op.tio.n.s...........................................9.2.............................................................................................
5.1.5 Design Recommendations based on Sea.rc.h. .R.e.sul.t.s...........................9.3......................................................................
5.2 Specification-Based Retrieval With Extreme Har.........................................................vesting 94 ..........
5.2.1 Process Over.vi.ew....................................................95..............................................................................................................
5.2.2 Component Searching – a Hybrid A.pp.r.oa.c.h..................................96.............................................................................
5.3 Component Evaluat.....................................................................................................ion 97 ......................
5.3.1 Linguistic Conforma.n.c.e...............................................9.8.....................................................................................................
5.3.2 Signature Matches in. .Ja.va..............................................9.9...................................................................................................
5.4 Result Adapta............................................................................................................................tion 101 .......
5.4.1 GoF Ada.pt.er.s....................................................1.0.1..............................................................................................................
5.4.2 Limitations of the GoF A.d.a.pt.er.s........................................10.2.........................................................................................
5.4.3 Parameter Permutat.or..................................................10.4.....................................................................................................
5.5 Dependency Resolu......................................................................................................tion 107 ..................
5.6 Class Ensemb...........................................................................................................................les 108 ...........
5.7 Implementati.....................................................................................................................on 110 .................
5.7.1 Eclipse Pl.ug.in.....................................................1.1.0..............................................................................................................
5.7.2 Server-Side Implemen.t.at.io.n...........................................1.1.3..............................................................................................C ONTENT - 9
6 PROCESS NITEGRATION............................1.1.5.............................................
6.1 Reuse in Test-Driven Proc........................................................................................................esses 116 ....
6.1.1 An Extreme Programming Exa.m.pl.e........................................1.17.....................................................................................
6.1.2 Extreme R.e.us.e....................................................1.19..............................................................................................................
6.2 Component-Driven Design with Kob....................................................................rA 121 .......................
6.2.1 Supporting Software Design With Interface Recommenda..t.io.n.s......................1.2.4.....................................................
6.3 General Design Guidelines for Successful ...........................................................Reuse 124 ...................
7 E VALUATION.................................1.2.7......................................................
7.1 Evaluation Approaches S.............................................................................................................o Far 127 .
7.2 Proof of Conc.......................................................................................................................ept 129 .............
7.3 Semantic Retr...........................................................................................................................ieval 131 .......
7.4 Precision Anal.................................................................................................................ysis 133 ..................
7.4.1 Evaluating Open Source Searc.h.e.s.........................................1.3.4.......................................................................................
7.4.2 Comparison of Retrieval Tec.h.n.iq.ues......................................1.3.5....................................................................................
7.5 Case Stu................................................................................................................................dy 142 ...............
8 RELATED WORK...............................1.4.7...................................................
8.1 Component Search on the I....................................................................................................nternet 147 .
8.1.1 Ago.ra...........................................................1.48........................................................................................................................
8.1.2 Web-Based Component & Code .S.ea.rc.h....................................1.4.9................................................................................
8.1.3 Web 2.0 Techn.ol.og.ie.s..............................................1.5.1....................................................................................................
8.2 Other Reuse T............................................................................................................ools 152 .....................
8.2.1 CodeBrok.er.......................................................1.5.2................................................................................................................
8.2.2 RASCA.L.........................................................1.52....................................................................................................................
8.2.3 CodeGen.ie........................................................15.3..................................................................................................................
8.2.4 And Mo.re.......................................................1.5.3................................................................................................................
8.3 Result Rank......................................................................................................................................ing 154 ..
9 E PILOGUE..................................1.5.9........................................................
9.1 Summa............................................................................................................................................ry 159 ......
9.1.1 Contributio.n.s.....................................................1.6.0..............................................................................................................
9.2 Future Work 161
9.3 Concluding Vi..................................................................................................................sion 162 ...............
10 REFERENCES ...............................1..65.....................................................
LIST OF FIGURES...............................1..81.....................................................
LIST OF TABLES ................................1.83......................................................
APPENDIX A: TEST CASES ...........................1.85.............................................10 - C ONTENT

Un pour Un
Permettre à tous d'accéder à la lecture
Pour chaque accès à la bibliothèque, YouScribe donne un accès à une personne dans le besoin