© GreenFlash/Shutterstock.com
Teil 5: Bibliotheken für ausgewählte Algorithmen in Java nutzen

Algorithmen in der Java-Praxis


Algorithmen für spezielle Aufgaben selbst zu entwickeln, ist sehr aufwendig und fehleranfällig. Oft fehlt auch das notwendige Know-how. Der Einsatz von externen Bibliotheken ist hilfreich. Beispiele geben Anregungen für den Einsatz im eigenen Projekt. Gleichzeitig ist das Thema ein starkes Signal für die Wiederverwendung.

Der Einsatz von externen Bibliotheken ist der zentrale Baustein der Softwarewiederverwendung bei der Programmierung. In diesem Artikel wollen wir uns ausgewählte Aspekte des Einsatzes von Softwarebibliotheken ansehen. Praktiker werden denken: „Was gibt es hier viele Worte zu verlieren? Wir suchen eine Bibliothek, schauen uns die Schnittstelle an, ggf. mit Hilfe eines Beispiels, und binden sie in das aktuelle Projekt ein.“

Es ist richtig, dass es letztendlich auf diese Schritte hinausläuft, dennoch gibt es einige Dinge zu beachten, beginnend bei der Softwarequalität bis hin zu lizenzrechtlichen Fragen. Neben diesen übergeordneten Themen geht es auch um praktische Beispiele für den Einsatz von Bibliotheken als Ersatz für die eigene Codierung. Wir stellen einige Beispiele aus dem Bereich der Metaheuristiken, Mathematik und künstlichen Intelligenz vor.

Aspekte der Softwarewiederverwendung

Die Wiederverwendung von Komponenten bei der Softwareentwicklung ist seit jeher ein zentrales Thema und trägt einen maßgeblichen Anteil zu einer möglichst effizienten Entwicklung bei. Aus Sicht der Entwicklung ergeben sich dabei die folgenden Vorteile:

  • Reduzierter Aufwand für Entwicklung und Wartung: Man lagert einen Teil des Quellcodes auf die externe Bibliothek aus und nutzt dessen Funktionalität. Im Idealfall muss man sich über die inneren Strukturen des Quellcodes, die Codierung oder die zugrunde liegenden Algorithmen keinerlei Gedanken machen. Diese Nutzung einer Bibliothek als Blackbox führt damit zu einer Senkung des Entwicklungsaufwands und einer Verkürzung der Entwicklungszeit (Time to Market). Bezüglich der Kosten ist eine weitergehende Betrachtung notwendig und es hängt primär vom Lizenzmodell der Bibliothek ab.

  • Erhöhte Qualität der entwickelten Software: Durch die Nutzung von externem Know-how hat man Zugriff auf die Funktionen der Softwarebibliothek. Durch die Arbeitsteilung wird Spezialisierung und damit im Idealfall eine höhere Qualität erreicht, als wenn man alles selbst programmieren müsste. Ein Beispiel: Wir haben den Einsatz von Metaheuristiken, u. a. genetische Algorithmen, vorgestellt. Diese in mehreren Variationen zu programmieren, ist aufwendig und erfordert umfassende Kenntnisse auf diesem Teilgebiet. Gleichwohl sind Metaheuristiken gut generisch einzusetzen, da sie problemunabhängig sind. Hier ist die Verwendung einer Bibliothek gut geeignet. Über Parameter wird diese an die Problemstellung angepasst.

  • Nutzung von komplexen Funktionen: Software erfordert immer komplexere und spezifischere Lösungsalgorithmen, zum Beispiel aus den Bereichen der Mathematik, der Statistik und der künstlichen Intelligenz. Gerade letztere Funktionen können nur dann sinnvoll in eine Software integriert werden, wenn wir Cloud-basierte Services nutzen. In diesem Sinn verwenden wir Softwarekomponenten über einen Server, zum Beispiel in Form von Serverless Computing.

Den Vorteilen stehen auch mögliche Hindernisse der Wiederverwendung entgegen. Dazu zählen zum Beispiel die folgenden:

  • Keine Verfügbarkeit: Eine passende und zur Wiederverwendung geeignete Bibliothek ist nicht verfügbar.

  • Rechtliche Probleme: Die Nutzungsbestimmungen der Bibliothek widersprechen der Verwendung im eigenen Projekt (Lizenzbestimmungen).

  • Kosten: Für die Lizenzierung der externen Bibliothek fallen hohe Kosten an.

  • Anforderungen nicht erfüllt: Die verfügbaren Bibliotheken erfüllen nicht die funktionalen oder nichtfunktionalen Anforderungen des eigenen Projekts.

Es gibt unterschiedliche Ansätze zur Nutzung von Softwarekomponenten in der eigenen Applikation (Abb. 1).

krypczyk_bochkor_algorithmen_5_1.tif_fmt1.jpgAbb. 1: Arten der Nutzung wiederverwendbarer Software

Zunächst können wir danach differenzieren, ob wir eine Nutzung ohne Anpassung oder in angepasster Form vornehmen. Ist der Quellcode verfügbar und erlauben die lizenzrechtlichen Bestimmungen eine Anpassung, dann können wir den Quellcode aus der Bibliothek in das eigene Projekt übernehmen und nach unseren Anforderungen anpassen. Wir sprechen von Whitebox-Wiederverwendung. Der Quellcode kann also komplett oder teilweise in das eigene Projekt einfließen. Voraussetzung ist, dass man den Aufbau der Algorithmen im Detail versteht. Gegebenenfalls ist es angezeigt, eine modifizierte Version der genutzten externen Softwarekomponente auch wieder für die allgemeine Nutzung zur Verfügung stellen. Das ist einer der Gedanken von Open Source.

Eine angepasste Nutzung einer Softwarekomponente ist ggf. auch durch Customizing möglich. Das setzt voraus, dass die externe Softwarekomponente derartig flexibel ist, dass man sie über Parameter weitgehend anpassen kann. Die andere Ebene der Wiederverwendung ist die Nutzung ohne Anpassung des Quellcodes. Die Blackbox-Wiederverwendung sieht vor, dass wir keinen Zugriff auf den Quellcode haben. Wir nutzen die Bibliothek (Kasten: „Library vs. Framework“) über die definierten Schnittstellen, d. h., wir übergeben Daten und erhalten das Ergebnis, zum Beispiel einer Berechnung, als Ausgabedatenstrom. Diese Blackbox-Wiederverwendung setzt voraus, dass wir dem Algorithmus in der Bibliothek vollständig vertrauen können. Dazu müssen in der Dokumentation mindestens die Datenverarbeitung und der Algorithmus beschrieben sein. Ist das nicht der Fall, dann kann die Blackbox-Verwendung zum Risiko für die eigene Applikat...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang