Testgetriebene Suche

Transcription

Testgetriebene Suche
Overview
1
1.
Find out why software engineering is important
■
2.
see some software engineering failures
Get acquainted with –
■
the Chair of Reuse
Software Engineering
Software
–
■ the research
Wie Klassen
ins Netz gehen
■ the people
■ the teaching
Software-Engineering Workshop
18. Juni 2012
Dipl.-Wirtsch.-Inf.
Werner Janjic
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
1
Überblick
2
■
Wiederverwendung von Software (Software Reuse)
■ “Ein Prozess, in welchem Softwaresysteme durch den
Zusammenbau bestehender Softwareblöcke erstellt werden,
statt durch Entwicklung auf der grünen Wiese.“ [Krueger92]
■
Douglas McIlroy sprach bereits 1968 von Märkten für
Softwarekomponenten.
■
Der “heilige Gral” des Software Engineerings, der sich bisher
als “Stein der Weisen” entpuppt.
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
2
Softwaresuche
3
■
Suchszenarien für Software
■ Suche nach wiederverwendbaren Applikationen (Systeme)
und Untersystemen.
■
Suche nach wiederverwendbaren Codeartefakten (Klassen,
Methoden, ...).
■
Suche nach wiederverwendbarer Dokumentation
(Designspezifikation, Testdokumentation, ...).
■
Suche nach Wissen (API Usage Examples, kommentierte
Code Snippets, Tests, ...)
■
...
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
3
Herausforderungen
4
■
Software Wiederverwendung stellt einige Herausforderungen:
■
Repository Problem
■
Retrieval Problem
■
Fragen zum Verhältnis von Aufwand zu Nutzen
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
4
State of the art
■
Seit der Jahrtausendwende hat sich die
Situation entscheidend gewandelt:
■
Große Datenbestände vorhanden
■ Breitband-Internet weitverbreitet
5
■
■
Unzählige OpenSource Projekte
■
Automatische Zugänglichkeit
Verbesserte Werkzeuge
■ Lucene Index-Engine
■
■
Verbesserte IR Algorithmen
Grundverschiedene Aufwand/Nutzen Situation
■ Tools, die nicht zur Suche, sondern zum
Finden eingesetzt werden
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
5
Merobase
6
■ Eine der weltweit größten Suchmaschinen für Software
■
■
Entwickelt an der Universität Mannheim
■
Über 10 Millionen Komponenten
Öffentliche Features
■
Diverse Suchszenarien
■ Quellcode, Binärcode,
Web Service, Android Apps
■
Mehrere Suchalgorithmen
■ Schlagwort, Name, Interface
■ Semantische Suche
■
Codemetriken
■
….
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
6
7
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
7
Qualität der Suchergebnisse
8
■
Die Qualität von Suchmaschinen bemisst
sich zunächst in der Präzision ihrer
Ergebnisse.
■
Signaturbasiert
=
1%
■
Schlagwort
=
16%
■
Namensbasiert
=
17%
■
Interfacebasiert
=
54%
■
Diese Ergebnisse sind jedoch noch immer
nicht ausreichend um das
Aufwand/Nutzen-Verhältnis entscheidend
zu beeinflussen.
■
Die Wahrscheinlichkeit von Ergebnissen,
die nicht nutzbar sind ist noch immer recht
hoch.
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
8
Testgetriebene Suche
9
■
Code unterscheidet sich von Textdokumenten.
■
Code kann ausgeführt und getestet werden.
■ Testgetriebene Suchen erreichen 100% Precision:
Verhalten der
Komponente als Test
b)
Gewünschte
Funktionalität
Kandidaten finden
c)
Kandidaten
kompilieren
d)
Wiederverwenden
public void
testTitleRetrieval
() {
Movie movie
= new
Movie("Star
Wars", 0);
assertTrue(movie.getTitle
()
.
equals("Star
Wars"));
Adaptieren
Testen
e)
}
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
9
10
Suchbeispiel - Darlehensrechner
■
Gesuchtes Interface
public class Mortgage {
public Mortgage(double rate, int years, double loan) {}
public double MonthlyPayment() {}
public double TotalPayment() {}
}
■
Auszug eines JUnit-Testfalls
public void testMortgage() {
private Mortgage m = new Mortgage(4.5, 12, 250000);
assertEquals(2250.02, m.MonthlyPayment(), 0.01);
private Mortgage m = new Mortgage(4.5, 12, 250000);
assertEquals(324002.94, m.TotalPayment(), 0.01);
….
}
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
10
Suche mit Merobase
11
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
11
12
Code Conjurer Eclipse Plugin
■
Integriert die Funktionalität der Merobase in die Eclipse
Entwicklungsumgebung.
■
Wichtigste Features
■
Pro-aktive Codesuche
■
Testgetriebene Suche basierend auf JUnit
■
Unauffälliger Hintergrundagent
■
Auflösung von Abhängigkeiten
■
Interface-Design Recommendations
■
Code-Metadaten (Metriken)
■
Automatische Adaptierung
■
…
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
12
Code Conjurer
13
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
13
Automatische Adaptierung
public void testMortgage() {
private MortgageCalculator m = new MortgageCalculator(4.5, 12, 250000);
assertEquals(2250.02, m.getMonthlyPayment(), 0.01);
14
private MortgageCalculator m = new MortgageCalculator(4.5, 12, 250000);
assertEquals(324002.94, m.getTotalPayment(), 0.01);
[...]
}
MortgageCalculator
+ init(double, double, int);
+ getMonthlyPayment() : double;
✔
LoanCalculator
+ init(double, double, int);
+ getPayment() : double;
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
14
public class MortgageCalculator {
public LoanCalculator adaptee;
public double
getMonthlyPayment() {
return adaptee.getPayment();
}
}
Code Conjurer Eclipse Plug-In
15
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
15
Pro-aktive Suche
16
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
16
Zusammenfassung
17
■
Testgetriebene Suchen integrieren sich nahtlos in agile
(testgetriebene) Entwicklungsumgebungen.
■
■
Im Einsatz mit einer TDD Entwicklung wie bspw. in XP, erzeugen
testgetriebene Suchen quasi keinen Zusatzaufwand.
Probieren Sie es aus ...
■ Code Conjurer http://www.code-conjurer.org/
■
■ Open Source Projekt bei Sourceforge
■ Erhältlich über den Eclipse Marketplace
Integrieren Sie Codesuche in Ihre Tools
■
■ Öffentliche Merobase API
Ihre eigene Suchmaschine für Code
■
■ Merobase kann auch Ihre CVS, SVN, GIT, ... Repositorys
crawlen
Weitere Information: http://www.merobase.com
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
17
18
Weiterführende Quellen
■
W. Janjic, M. Schumacher,
Der Herr der Codes,
Eclipse Magazin, 2.12, S&S Media
GmbH, Frankfurt am Main, 2012
■
AG Software Engineering
Dipl.-Wirtsch.-Inf. Werner Janjic
O. Hummel, W. Janjic, C. Atkinson,
Code conjurer:
Pulling Reusable Software out of Thin Air,
IEEE Software 25 (5), 2008
18