Multikriterielle Optimierung und Architekturerkennung – Die Evolution im Algorithmus Teil 2

Genetische Algorithmen haben sich, wie Teil 1 gezeigt hat, als hilfreiches Mittel zur einfachen Umsetzung komplexer Optimie­rungsprobleme erwiesen. Dabei sind die Möglichkeiten, die die Evolutionstheorie der Informatik eröffnet, aber noch wesentlich größer und eigentlich nur von der Fantasie der Entwickler be­grenzt. Dieser Artikel soll zeigen, wie genetische Algorithmen korrekt mit verschiedenen Optimierungszielen umgehen können und wie es sogar möglich ist, diese zur Erkennung von Software­strukturen einzusetzen.

Ein kurzer Rückblick

Der erste Teil in Heft 01/2018 hat gezeigt, wie genetische Algorithmen eingesetzt werden können, um Optimierungsprobleme mit wenig Aufwand zu lösen. Dabei haben wir gelernt, dass solche Algorithmen die Grundprinzipien der Evolution, nämlich Selektion, Vererbung und Mutation, implementieren. Beispielhaft wurde dafür das Ressourcenplanungsbeispiel eingeführt, welches das Ziel hat, Tasks unter Minimierung von Zeit und Kosten Ressourcen zuzuweisen. Wie sich herausstellte, stehen diese zwei Objectives allerdings in Konkurrenz zueinander. Die Single-Objective Optimization (SOO) kombinierte diese konfligierenden Objectives in einer Funktion. Zwar lieferte dieser Ansatz zufrieden stellende und sinnvolle Ergebnisse, wirft jedoch auch eine ganze Reihe von Problemen auf.

Dieser Artikel ist im Magazin JavaSPEKTRUM Ausgabe 03/2018 erschienen. Lesen Sie den vollständigen Artikel im Magazin oder hier:
Download Multikriterielle Optimierung und Architekturerkennung – Die Evolution im Algorithmus Teil 2 (PDF, <1 MB)

Der Artikel stellt den zweiten und damit abschließenden Teil zum Thema „Die Evolution im Algorithmus“ dar. Der erste Teil „Optimieren durch Selektion“ ist in Ausgabe 01/2018 (Veröffentlichungstermin: 26. Januar 2018) erschienen.

Vielen Dank an JavaSPEKTRUM für die Bereitstellung des Artikels als PDF.

Einführung in RxJS

Artikel als PDF herunterladen:
Download Einführung in RxJS

Den ersten Kontakt mit den sogenannten Reactive Extensions for JavaScript (kurz RxJS) habe ich bei dem Umstieg von Angular.js auf Angular 2 gemacht. Wurden in Angular.js asynchrone Prozesse noch mit Promises abgebildet, so hat man sich in Angular 2 für Observables von RxJS entschieden. Es war also an der Zeit, mal einen genaueren Blick auf dieses Framework zu werfen. Ziel dieses Artikels ist es, dass der Leser die grundlegenden Konzepte von RxJS kennen lernt und eine solide Wissensbasis erlangt, um seine ersten Schritte mit RxJS zu wagen.

weiterlesen

Dein System: Das unbekannte Wesen?

Artikel als PDF herunterladen:
Download Dein System: Das unbekannte Wesen

Wir haben täglich mit über Jahre gewachsenen Softwaresystemen zu tun, welche so komplex und undurchdringlich sind, dass sie die Bezeichnung „Unbekanntes Wesen“ verdienen, das Stichwort ist hier oft Monolith. Das Hauptproblem: ein Großteil unserer Arbeitszeit fließt in das reine Verstehen solcher Monster, ohne dass wir produktiv etwas an der Anwendung ändern. Klar, es ist an der Zeit der Refaktorisierung, also wieder Struktur in das System zu bringen. Was sich so einfach anhört, birgt aber viele Gefahren. Diese sind zum einen technischer Natur: Wie soll die Zielstruktur aussehen? Stimmt meine gedachte Architektur mit der realen überein? Welche Komponenten gibt es und wie sollen sich die einzelnen Klassen diesen zuordnen? Welche Auswirkungen hat das Herauslösen von einer identifizierten Komponente? Aber auch wirtschaftliche Aspekte sind wichtig zu betrachten: Wie weise ich nach, dass eine Refaktorisierung für die zukünftige Arbeit wirtschaftliche Vorteile bringt? Wie kann der Aufwand und damit die Kosten möglichst geringgehalten werden? Was kann ich tun, um weiterhin lieferfähig zu bleiben? Beide Listen lassen sich vermutlich endlos weiterführen. Deswegen soll dieser Artikel einen Weg aufzeigen, wie mit dem SAR-Framework, einem Tool im jQAssistant-Universum, die bestehenden Strukturen analysiert und die Ergebnisse zur Beantwortung zahlreicher Fragen genutzt werden können.

weiterlesen

Optimieren durch Selektion –
Die Evolution im Algorithmus Teil 1

Bei der Lösung von Problemen lässt sich die Informatik häufig von anderen Wissenschaften inspirieren. Man denke nur an Neu­ronale Netze und die Möglichkeiten, die sich mit diesen eröff­nen. Doch während diese aufwendig angelernt werden müssen, bietet Darwin mit seiner Evolutionstheorie eine interessante und leicht umsetzbare Lösung für eine Vielzahl von Optimie­rungsproblemen. Wie man sich das Ganze vorstellen kann, soll diese Kolumne näher beleuchten.

Jeder ist sicher schon einmal auf Optimierungsprobleme gestoßen und hat überlegt, wie man diese algorithmisch lösen könnte. Ein Beispiel hierfür ist Ressourcenplanung. Dabei sollen Tasks in zeitlicher Begrenzung eine Menge von Ressourcen zugewiesen werden, um diese unter Beachtung verschiedener Gesichtspunkte, beispielsweise den entstehenden Kosten oder der benötigten Zeit, abzuarbeiten. Dies ist ganz klar ein Optimierungsproblem. Doch sind ausgefeilte, hochgradig spezialisierte Algorithmen oder Brute-Force die einzige Möglichkeit zur Lösung solch komplexer Optimierungsprobleme?

Dieser Artikel ist im Magazin JavaSPEKTRUM Ausgabe 01/2018 erschienen. Lesen Sie den vollständigen Artikel im Magazin oder hier:
Download Optimieren durch Selektion – Die Evolution im Algorithmus Teil 1 (PDF, 1 MB)

Der Artikel stellt den ersten von zwei Teilen zum Thema „Die Evolution im Algorithmus“ dar. Der zweite Teil beschäftigt sich mit multikriterieller Optimierung und automatisierter Architekturerkennung durch genetische Algorithmen. Er ist ins unserem Blog und im Magazin JavaSPEKTRUM Ausgabe 03/2018 (Veröffentlichungstermin: 25. Mai 2018) erschienen.

Vielen Dank an JavaSPEKTRUM für die Bereitstellung des Artikels als PDF.

Besinnliche Weihnachten.

Weihnachten steht vor der Tür. Zeit, sich zu besinnen und das Jahr Revue passieren zu lassen:

buschmais erinnert sich an interessante Konferenzen, die wir als Referent, Sponsor oder Teilnehmer besucht haben: das JavaLand in Brühl, das 1. JUG Saxony Camp in Leipzig, die DEVOXX UK in London und zu guter Letzt den JUG Saxony Day in Radebeul.

Außerdem haben unsere Kollegen wieder spannende Artikel geschrieben, die wir in unserem Kundenmagazin, in unserem Blog oder auf anderen Portalen veröffentlicht haben: Dirk Mahler über „Architekturmanagement mit jQAssistant und Asciidoc“ und über „Automatisierte Codeanalyse mit jQAssistant“ (Interview bei heise.de), Michael Ruttka über „Clean(er) Code mit ECMAScript 6“ und Peter Herklotz über „CSS statt LESS und SASS“.

Ein gelungener Abschluss für 2017 war für uns ganz klar wieder die JUG Saxony Weihnachtsveranstaltung, die wir bereits zum neunten Mal in Folge thematisch schmücken durften. Frank und Tobias zeigten über 50 Teilnehmern, wie mobile Anwendungen mit Angular und Ionic erstellt werden. Als kleines Schmankerl gab es JUG Saxony M&Ms für alle. Die Weihnachtsveranstaltung fand am 14. Dezember 2017 in der Fakultät Informatik der TU Dresden statt. Slides und Fotos findet ihr am Ende dieses Beitrages.

Wir bedanken uns bei allen Teilnehmern, bei der JUG Saxony und bei der Fakultät für Informatik der TU Dresden für den schönen Vortragsabend.

Wir möchten uns auf diesem Wege herzlich bei unseren Kunden, Geschäftpartnern, Kollegen, Freunden und Familien für ein angenehmes und gelungenes Jahr bedanken und wünschen allen ein besinnliches Weihnachtsfest und ein gesundes und erfolgreiches neues Jahr.

In diesem Jahr unterstützen wir den MediClowns Dresden e.V. und die Integrationswerkstätten Niederlausitz in Senftenberg mit einer Spende.

Fotos zum JUG Saxony Weihnachtstreffen:

Slides „Mobile Anwendungen mit Angular und Ionic“
Download Mobile Anwendungen mit Angular und Ionic

 1 2 3 4 Vor