Category

Allgemein

Interview: Anwendungsmöglichkeiten von Machine Learning

By | Allgemein, Inhaltliches | No Comments
„Anwendungsmöglichkeiten von Machine Learning“ (Interview zum ML-Summit)

Anwendungsmöglichkeiten von Machine Learning
Interview mit Oliver Zeigermann
online im ML-Summit Blog
erschienen am 24. Juli 2018

embarc Vorträge & Workshops auf dem ML-Summit

Oliver Zeigermann, Programm Chair und Trainer auf dem ML Summit, hat im Vorfeld des Events mit dem Entwickler Magazin über die vielfältigen Möglichkeiten zum Einsatz von Machine Learning und Deep Learning gesprochen. In dem Interview zeigt Oliver auf, welche Chancen ML auch für laufende Projekte bietet und womit ein Einstieg in die Arbeit mit Deep Learning möglich ist.

Lesen Sie das ganze Interview und erhalten Sie einen Vorgeschmack auf das große 2-in-1-Trainingsevent vom 1. bis 2. Oktober in Berlin.

zum Interview

embarc echo – Juli 2018

By | Allgemein, echo | No Comments

Impulse aufgreifen – embarc echo

Finden Sie in gewohnt kurzer Form frische Anregungen aus unseren Konferenzbeiträgen, Fachartikeln oder in unserer aktuellen Blogserie rund um zeitgemäße Architekturstile. Außerdem haben wir Tipps für einen schnellen Einstieg in das Thema Machine Learning, Referenzwissen direkt zum Download und stellen einen unserer neuen Kollegen vor. Mit aktuellen Informationen und einem Ausblick schauen wir zudem auf künftige Termine & Veranstaltungen.

Download embarc echo Juli-2018 (PDF, 8 Seiten)

embarc_echo_Juli-2018 -- Klicken zum Download ...

Oliver Zeigermann, SciPy 2018 Austin – Understanding Machine Learning

By | Allgemein, Vorträge | No Comments
„Understanding Machine Learning by Looking at Simple Visualizations“

Artificial Intelligence & Machine Learning 101

Understanding Machine Learning by Looking at Simple Visualizations
Speaker: Oliver Zeigermann
Scientific Computing with Python, Austin, Texas July 9-15, 2018
SciPy 2018 – Talks and Posters
AT&T Executive Education and Conference Center, University of Texas campus in Austin

Machine Learning can be extremely helpful, but at the same time very hard to get into. So if you are either struggling to understand it yourself or want to help others understanding it, visualizations can be extremely helpful.

We embrace this idea and by looking at plots of a single, simple and intuitive data set we will explain the core concepts and Learning strategies.

The concepts include the difference between programming and machine learning, validation, and over- and underfitting. We will also cover k-nearest neighbors and neural networks.

Scipy 2018

follow us on Twitter – @embarced

embarc echo – März 2018

By | Allgemein, echo | No Comments

Impulse aufgreifen – embarc echo

Kurz gesagt was wichtig ist.

Finden Sie frische Anregungen und Wissenswertes in aktuellen Veröffentlichungen im Web & in Fachzeitschriften. Dazu einige YouTube-Mitschnitte und kompakt aufbereitetes Wissen für Ihre Projekte. Kurz gefasst geben wir Ihnen die Möglichkeit, Themen nachzulesen oder zu vertiefen – und unser Überblick zu kommenden Terminen & Konferenzen zeigt, ob wir demnächst auch in Ihrer Nähe vor Ort sind.

Download embarc echo März-2018 (PDF, 7 Seiten)

embarc echo Maerz 2018 -- Klicken zum Download ...

Vorschau: Magdeburger Developer Days – Machine Learning für Entwickler

By | Allgemein, Publikationen, Vorträge | No Comments

Am 9. April ist Oliver Zeigermann mit einem Ganztages-Workshop bei den 3. Magdeburger Developer Days vor Ort dabei:

„Workshop: Machine Learning für Entwickler“

Magdeburger DevDays

Machine Learning für Entwickler
Sprecher: Oliver Zeigermann
Workshop bei den Magdeburger Developer Days
Montag, 09. April 2018, 09:00 – 17:00 Uhr
AMO Kulturhaus, Erich-Weinert-Straße 27, 39104 Magdeburg

Machine Learning Star Andrej Karpathy beschreibt Neuronale Netzwerke als Software 2.0. Also die neue Art zu programmieren, die die klassische Art nicht ersetzen, sondern ergänzen wird. Passend dazu zeigt dir dieser praxisorientierte Workshop ohne Mathematik wie Machine Learning funktioniert und wie du selbst eine Maschine trainieren kannst. Dabei wirst du mehrere Lernstrategien kennen lernen und erfahren, was es mit Neuronalen Netzwerken und Deep Learning auf sich hat. Ziel ist ein Verständnis für die Grundideen des Machine Learnings und die Fähigkeit, erste Experimente eigenständig durchzuführen. Mit etwas Glück wirst du sogar einige Ideen für Anwendungen mitnehmen.

Die Programmiersprache für den Workshop ist Python, wir werden nur grundlegende Sprachfeatures nutzen. Vorkenntnisse der Sprache Python sind daher nicht notwendig. Als Frameworks wirst du Sklearn, TensorFlow und Keras kennen lernen.

Du benötigst für die Teilnahme an dem Workshop keine Kenntnisse im Bereich Machine Learning. Kenntnisse in einer OO-Programmiersprache (C#, Java, Python, JavaScript, C++, etc.) sind jedoch von Vorteil. Bitte bringt ein Laptop oder Tablet mit. Es ist jedoch keine Installation vorab notwendig, da wir die kostenlosen Azure Notebooks auf Microsoft Servern nutzen werden.

Zur Veranstaltung

follow us on Twitter – @embarced

embarc-echo-2-2017

embarc echo – II 2017

By | Allgemein, echo | No Comments

Impulse aufgreifen – embarc echo

Machine Learning, Architekturansätze unter der Lupe, die Anwendung von TypeScript in Bewegtbild („no slides, just code“), ein Ausflug zum Fantasy Football und Beispiele aus echten Ausgrabungen. Wie das zusammen passt? Kurzgefasst in unserem echo – Erfahrungswissen aus der Praxis mit nützlichen Anregungen und Links zu weiterführendem Lesestoff.

Download embarc echo II-2017 (PDF, 6 Seiten)

embarc_echo_1-2017 -- Klicken zum Download ...

bild_architectur_kata_SToth

Architektur Kata Live – Eine Rückschau

By | Allgemein, Inhaltliches, Publikationen, Vorträge | No Comments

Auf dem Software Architecture Summit 2017 in München habe ich einen halbtägigen Architektur Kata Workshop durchgeführt. Hier ein kurzer Einblick inklusive der erarbeiteten Ergebnisse und Präsentationsfolien. Mehr Informationen zu Architektur Kata gibt es auch in meinem Buch Vorgehensmuster für Softwarearchitektur

„Architektur Kata Live“
Logo Software Architecture Summit
 
Architektur Kata Live
Sprecher: Stefan Toth
Halbtagsworkshop auf dem Software Architecture Summit, München
Dienstag, 14. März 2017, 10 – 13 Uhr
Novotel München Messe, Willy-Brandt-Platz 1, 81829 München Riem

Was ist Ihrer Meinung nach wichtig, um als Sportler Erfolg zu haben? Genetische Veranlagung? Talent? Geld? Glück? Je nach Sportart werden diese Dinge mehr oder weniger Einfluss haben, fest steht jedoch: Alle Sportler trainieren und steigern ihre Leistungsfähigkeit zwischen den Wettkämpfen. Auch Tänzer, Moderatoren oder Musiker bereiten sich professionell auf ihre Aufgaben vor – sie tanzen, machen Sprechübungen, lernen oder proben. In Architektur Kata wird diese Professionalität auf Softwarearchitektur übertragen. Das Konzept der „Kata“ ist dabei Kampfsportarten entliehen, die damit die wiederholte Ausführung von Bewegungsabläufen im Übungsumfeld bezeichnen, um im Ernstfall gerüstet zu sein.
Was wir auch in Projekten und Firmen schon gemacht haben, wurde nun auf die große Teilnehmergruppe am Architecture Summit adaptiert. Über fast 70 Teilnehmer zwängten sich in einen etwas zu kleinen Raum und erhielten die Möglichkeit Systeme zu entwerfen, technisch relevante Fertigkeiten einzusetzen und ihre Ideen kreativ festzuhalten. Wiederholt, abwechslungsreich und im Vergleich mit anderen.

Die ausgewählten Architektur Kata waren „Real Fantasy NFL“ und „Lights, please“. Beide direkt von der ehemaligen Webseite des Erfinders Ted Neward (Teds Kata Seite) und sehr unterschiedlich. Einmal geht es um eine hochskalierbare und äußerst elastisch umzusetzende Webseite für Fantasy Football inkl. Highlight Videos, einmal um Heimautomatisation und die damit zusammenhängenden Herausforderungen für einen Elektronikartikelhersteller.
In Gruppen arbeiteten die Teilnehmer insgesamt etwa 1:15 an ihrer Lösung und an ihrem Problemverständnis. Lösungen wurden gegenseitig vorgestellt und bewertet. Hier die Gruppenergebnisse:

Hier gibt’s noch die Folien der Session zum Download.

bild_echo_1_2017_cover

embarc echo – I 2017

By | Allgemein, echo | No Comments

Impulse aufgreifen – embarc echo

Finden Sie in gewohnt kurzer Form frische Anregungen aus unseren Konferenzbeiträgen, Fachartikeln und neuem Bewegtbildmaterial.

Lassen Sie sich von Kundengeschichten aus unserem Projektalltag inspirieren und umgehen Sie die fünf häufigsten Stolperfallen beim Einsatz von Microservices. Apropos Stolperfallen… Sie erinnern sich noch an die Arcade-Aliens, die es auf Atari & Co. abzuwehren galt? Sie haben überlebt! „Game on!“

Download embarc echo I-2017 (PDF, 7 Seiten)

embarc_echo_1-2017 -- Klicken zum Download ...

Drei Dinge, die mich bei Architekturdiagrammen mit plantUML nerv(t)en

By | Allgemein, Inhaltliches | 8 Comments

plantIch sehe bei Kunden ab und an plantUML im Einsatz. Und noch häufiger fragen mich Teilnehmer in Workshops, was ich von plantUML halte, wenn es um Diagramme in der Dokumentation von Softwarearchitektur geht. Beispielsweise in den betreffenden Abschnitten von arc42 (Konkret: Kontextabgrenzung, Bausteinsicht, Laufzeitsicht …).

Um ehrlich zu sein fand ich plantUML dafür lange Zeit nicht so toll. Aus verschiedenen Gründen. Bei näherem Hinsehen ließ sich einiges davon aber auf Unkenntnis und Vorurteile meinerseits zurückführen. Und einige Unschönheiten lassen sich mit den richtigen Kniffs und Workarounds umgehen. Ein paar kleine Erkenntnisse zeige ich im Rahmen dieses Beitrags. Und beginne so meinen Frieden zu machen mit dem Werkzeug.

Aber zuvor: Was ist dieses plantUML überhaupt (für diejenigen, die es nicht kennen) und warum finde ich es (immernoch) nicht ganz so toll wie manche meiner Kunden?

plantUML

plantUML generiert UML-Diagramme als Graphik aus textuellen Beschreibungen. Die Syntax dazu ist recht einfach gehalten und schnell erlernt. Hier ein Minibeispiel. Aus der Eingabe links generiert plantUML das Diagramm rechts.cd_schach

@startuml

Schachbrett -> Figur 
Figur --> Farbe
Figur --> enum Art

enum Farbe { 
 SCHWARZ 
 WEISS
}

@enduml

 

Neben den besonders gut unterstützen Klassendiagrammen (wie im Beispiel oben, Details zur Syntax siehe hier) kann plantUML auch andere Diagrammarten der UML generieren (Sequenzdiagramme, Anwendungsfalldiagramme …).

plantUML ist Open Source, in Java geschrieben und leicht integrierbar. Entsprechend gibt es zum Beispiel Plugins für verschiedene Textsysteme (z.B. Asciidoctor), Build-Werkzeuge (z.B. Gradle) und Wikis (z.B. XWiki und Confluence). Gerade in diesen Fällen passt das Text-Format von plantUML sehr gut, fühlt es sich doch in der Versionsverwaltung ebenso wohl wie zwischen Wiki-Markup.

In der Regel nimmt der Autor beim Erstellen kaum Einfluss auf das Layout seiner Diagramme. Ich sehe das als Vorteil, kostet das Kästchenschubsen in graphischen Editoren bei Änderungen doch oftmals viel Zeit.

Drei Dinge, die ich an plantUML nicht mag

Trotz der unbestrittenen positiven Merkmale gibt es Dinge, die mir bei plantUML nicht so gut gefallen. Hier drei aus meiner Sicht besonders gewichtige:

  1. Der Technologie-Stack ist fragil
  2. Für Softwarearchitektur relevante Diagramme fehlen
  3. Die generierten Diagramme sehen altbacken aus

Der Technologie-Stack ist fragil

plantUML ist in Java geschrieben, der Download lediglich ein jar-File. Tatsächlich handelt es sich bei bei dem Tool aber eher um ein Frontend (oder wenn man mag einen Präprozessor) für das Werkzeug Graphviz.

binaryGraphviz ist eine leistungsfähige und recht verbreitete Open Source-Lösung zum Visualisieren von Graphen (also Knoten verbunden durch Kanten). Anders als plantUML wird es Betriebssystem-spezifisch als Binary installiert. Es muss lokal vorliegen (konkret: das Graphviz-Executable „dot“). plantUML greift darauf zu, es verwandelt die plantUML-Eingabe in eine Eingabe in der DOT-Sprache und lässt dann Graphviz die ganze Arbeit machen („Zwerge auf den Schultern von Riesen“).

Das Problem dabei: das Zusammenspiel zwischen plantUML und dot führt regelmäßig zu Reibung. Auch eine saubere Graphviz-Installation verweigert schon mal die Arbeit und führt zu Fehlermeldungen, lustigerweise in Form einer Graphik anstelle des erhofften Ergebnisses. Sieht dann zum Beispiel so aus:

Fehler beim Aufruf von not / Graphviz

In der Praxis heißt das etwa für ein Java-Projekt, das seine Architekturdokumentation in den Build integrieren will, dass es höhere Anforderungen an das Build-System stellt. Also an alle, die das Projekt bauen wollen. Java installieren reicht nicht (wie bei Gradle durch den Wrapper eigentlich üblich), es muss auch noch Graphviz da sein und mit plantUML zusammenspielen.  Das berühmte „It Works on My Machine“ war doch eigentlich überwunden (OK, die Pest ist schlussendlich auch noch nicht ausgestorben). Auch entsprechende Beiträge der Plugin-Benutzer in den Foren von XWiki und Confluence singen ein Lied von dem Problem.

Für Softwarearchitektur relevante Diagramme fehlen

plantUML unterstützt verschiedene Diagrammarten der UML, und die wiederum verschiedenen gut. Bei Klassendiagrammen geht mit Abstand am meisten. Gerade diese Diegrammart benötige ich allerdings in einem Architekturüberblick eher selten, bestenfalls für ein grobes Domänenmodell.

struktur_kleinBesonders wichtig sind mir methodisch gesehen die Kontextabgrenzung (Kapitel 3 in arc42, bzw. der Abschnitt „Context“ bei Simon Brown) und die statische Zerlegung (Kapitel 5 „Bausteinsicht“ in arc42). Eine Kontextabgrenzung lässt sich mit plantUML ganz gut visualisieren übrigens. Meine favorisierte Darstellung von Zerlegungshierarchien mit den Ports der Kompositionsstrukturdiagramme unterstützt plantUML leider nicht. Strukturen lassen sich zwar mit gruppierenden Elementen abbilden; Interaktionspunkte auf der „Membran“ (Ports, siehe kleine Skizze links) gehen hingehen nicht.

Die Diagramme sehen altbacken aus

Geschmäcker sind verschiedenen, mir persönlich gefällt die Darstellung von plantUML tatsächlich nicht sonderlich. Die Buchstaben-Icons bei Klassen, Aufzählungen etc. (E, C, … siehe Schach-Beispiel oben)  sind nicht mein Fall, und vor allem:  Die Farben (gelbe Kästen, rote Linien) haben die Anmutung alter Rational-Werkzeuge (kleine Zeitreise, Video). Die Zeit wünsche ich mir nicht zurück. Den Retro-Look der 90er-Jahre komplett machen dann Komponenten im Stil der UML 1. Als Beispiel hier ein rudimentärer Systemkontext (System mit einem Benutzer als Akteur) in plantUML, rechts wieder das resultierende Diagramm (das System als Komponente in UML 1-Notation):

@startumlsc_altbacken
[Webshop] <<system>>
:Kunde: - Webshop
@enduml

Auf Diagramme mit dieser Anmutung stolpere ich regelmäßig in Projekten. Dass mir die nicht übermäßig gefallen ist mein Problem, wenn die Teams es so mögen … Mein Problem könnt Ihr gleichzeitig beheben, bei plantUML läßt sich nämlich so ziemlich jede Stileigenschaft (Fonts, Farben, Strichbreiten …) konfigurieren. Aber wer hat da schon Lust zu? Der Aufwand mit all den Schaltern schreckt erstmal ab.

Die gute Nachricht: Es gibt recht große Schalter — Hebel sozusagen — welche mit wenig Aufwand viel Wirkung zeigen. Für das Beispiel oben reichen zwei dieser wirkmächtigen Hebel, und es sieht für mich deutlich passabler aus (siehe wieder Graphik rechts):

@startumlsc_modern
skinparam monochrome true
skinparam componentStyle uml2

[Webshop] <<system>>
:Kunde: - Webshop
@enduml

Das gefällt mir richtig gut schon. Derartige Skin-Parameter lassen sich übrigens auch in Dateien auslagern, von aussen in den plantUML-Prozessor reinreichen, etc. — So verschmutzen sie auch nicht alle plantUML-Quelltexte.

Fazit

Der Ansatz, aus text-basierten Beschreibungen Graphiken/Diagramme zu generieren, hat viel für sich. In vielen Fällen nutzen Teams ein Wiki oder Text-Systeme wie Asciidoc, um ihre Architekturdokumentation festzuhalten. Die Frage, wo die Diagramme herkommen, stellt sich dort stets, und plantUML ist zumindest eine Option. Mit wenigen Kniffen finde ich die Ausgabe zumindest optisch passabel, eine große Herausforderung bleibt das fragile Zusammenspiel mit Graphviz.

Ich spiele mit dem Gedanken hier ein geschlossenes Fallbeispiel bereitzustellen. Einen Architekturüberblick, in dem die Diagramme mit plantUML generiert sind, und dessen Inhalte sich an den Sichten von arc42 orientieren. Fänden Sie das interessant?

Treffpunkt für Softwarearchitekten – embarc auf dem Architecture Gathering 2016

By | Allgemein | No Comments

Nach der Premiere im letzten Jahr fand das Architecture Gathering dieses Jahr im Oktober erneut in München statt und erfreute sich zahlreicher Besucher. Wir waren mit zwei Vorträgen & unserem Stand auf der Konferenz dabei.

Harm Gnoyke gab in seinem Vortrag ganz praktische Tipps wie Sie Ihren Monolithen möglichst charmant in ein Microservices-System verwandeln. Dabei ergaben sich unterhaltsame Parallelen zwischen den Beziehungen von Projektteams zu ihren Softwarelösungen und den Trennungsphasen des realen Lebens. Ja und selbst die Aufnahmen des Titelhelden (Matthew McConaughey) passten sich im Verlauf der Session dem leichtgewichtigeren Architekturstil an… also ein wenig zumindest (Folieneinblicke).

Unsere Session von Oliver Zeigermann lud am zweiten Veranstaltungstag zum Erfahrungsaustausch zu Best-Practices in der Web-Entwicklung ein und zeigte wo deren Grenzen liegen. Mittels einer kurzen Filmsequenz gab es Einblicke in die Gefühlswelt eines Entwicklers (beim 2-Wege-DataBinding) und am Ende beantwortete Oliver nicht nur die Frage aus „Wissen-20“, sondern noch einige mehr… (nachzulesen auf github).

Gute Gespräche und Austausch am embarc-Stand und auf der Konferenz rundeten den Besuch für uns in München ab und ließen zudem jede Menge frisch gedruckter Architektur-Spicker schwinden.

Aber Bilder sagen ja bekanntlich mehr als Worte…

 
 
(Fotos: SigsDatacom, embarc)