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