• Endlich aufgeräumt: Clean Code steigert die Software-Qualität (A. Roczniewski)

    Software ist nie fertig und unterliegt ständigen Änderungen durch Anforderungen, neue Technologien oder Fehlerbehebungen. Wenn diese Änderungen unter Druck realisiert werden müssen, leidet die Software-Qualität. Typische Herausforderungen:

    • Kurz vor dem Release wird noch eine Anforderung geändert
    • Produktionsprobleme verzögern die aktuelle Entwicklung
    • Das Testing kommt durch Fehlentscheidungen zu kurz

    Wie in einer Küche mit vielen Köchen arbeiten Entwickler Tag für Tag an einer gemeinsamen Codebasis, manchmal über Jahre hinweg. Wer seinen Quellcode da nicht unter Kontrolle hat, bewegt sich rasant auf einen wirtschaftlichen Totalschaden zu, verursacht durch technische Schulden. Dieser Gefahr können wir mit Clean Code wirksam entgegenwirken.

    Denn mithilfe von Clean Code produzieren wir lesbaren und damit wartbaren Quellcode. So, dass jeder Entwickler sich leicht im Softwareprojekt zurechtfinden kann.

    Clean Code ist an sich nichts neues, jeder Entwickler weiß, dass er "eigentlich" sauberen und lesbaren Code schreiben sollte. Aber werden wir diesem Anspruch in der Praxis immer gerecht?

    In meinem Vortrag verdeutliche ich die Wichtigkeit von Clean Code und gebe einen unterhaltsamen und praxisnahen Einblick zu:

    • den Folgen von unlesbarem Code und den Vorteile von Clean Code,
    • den Basics der Clean-Coding-Regeln mit Beispielen und Best Practices,
    • der Rolle von Refactoring und Unit-Testing beim Clean Coding.

    Zum Speaker:

    Arkadius Roczniewski (aka Arek) arbeitet seit 2015 bei der Micromata GmbH als Softwareentwickler. Sein Aufgabenfeld umfasst die Entwicklung von Frontend- und Backkomponenten sowie die Pflege der Softwarequalität und Wartung produktiver Softwaresysteme. Mit 15 Jahren Berufserfahrung ist Arek bereits in verschiedensten Bereichen der Softwarebranche unterwegs gewesen. Darüber hinaus betreibt er seit 2012 die Plattform https://lerneprogrammieren.de, auf der er seine Programmiererfahrung in Form von Onlinekursen und Seminaren frei zur Verfügung stellt.

  • The reusability fallacy – killing a beloved dogma (Uwe Friedrichsen)

    Reusability – the holy grail of software architecture for more than 40 years! Barely a new paradigm (currently: microservices) that is not sold with reusability as the big future cost saver.

    But is reusability really so great? Is it always what we should strive for in our designs? Or could it even be counter-productive in some places?

    In this session, we will debunk quite some myths regarding reusability: we will learn why most reasonings are flawed, that reusability comes at a price that is higher than most people think, why it rarely pays, why it usually is a false friend in service-based approaches and more.

    Additionally, we will learn to distinguish when and when not to go for reusability and what to do instead if reusability is the wrong path to follow.

    After this session, you will have a much better understanding where to aim for reusability in your designs, where not to aim for it and what to do instead.

    Zum Speaker:
    Uwe Friedrichsen ist ein langjähriger Reisender in der IT-Welt. Als CTO der codecentric AG ist er stets auf der Suche nach innovativen Ideen und Konzepten. Seine aktuellen Schwerpunktthemen sind (verteiltes) Systemdesign und die IT von (über)morgen. Er teilt und diskutiert seine Ideen regelmäßig auf Konferenzen, als Autor von Artikeln, Blogposts, Tweets und im direkten Gespräch.

  • docs-as-code (Ralf Müller)

    Online event

    Dieser Vortrag zeigt, wie Du die Qualität Deiner Dokumentation erhöhst und gleichzeitig den Aufwand zur Pflege reduzierst, indem Du Deine Dokumentation genauso wie Deinen Code verwaltest und in den Build integrierst.

    Anhand des Beispiels einer Architekturdokumentation zeigt Ralf, wie Du mit dem arc42-Template im AsciiDoc-Format und Gradle als Build-Tool einfach Diagramme in Ihre Dokumentation integrierst, stakeholder-spezifische Dokumente erzeugst und verschiedene Ausgabeformate generierst.

    Reviewfähige PDF-Dokumente? Publishing nach Confluence? Integration einer Präsentation? Alles kein Problem! Einige Teile der Doku kannst Du sogar automatisiert testen!

    1
  • JUG Augsburg: DDD - Damit Dein Code Klartext spricht (Daniel Ludwig)

    Auch die JUGH geht mal auf Reisen.

    Am 23. März 2021 könnt ihr unseren Kollegen Daniel Ludwig bei unseren Freunden von der JUG Augsburg erleben. Online, versteht sich.

    Alle Informationen zum Vortrag findet ihr hier:

    https://www.meetup.com/de-DE/Java-User-Group-Augsburg/events/275228963/

  • SRE bei Neo4j Aura - Erfahrungsbericht (Johannes Unterstein)

    Bei Aura handelt es sich um das Cloud-Angebot von Neo4j, ein vollständig automatisiertes Graphdatenbank-as-a-Service-Angebot.

    Dem Kunden ist es damit möglich, über eine Weboberfläche ein Datenbankcluster zu konfigurieren und zu starten. Dieses Cluster wird dann für ihn vom Code in einem Kubernetes-Cluster in einer Public-Cloud betrieben.

    Johannes arbeitet in einem der Teams, die für dieses Self-Service-Produkt verantwortlich sind, und möchte euch mit auf die Reise nehmen und zeigen, welche Aspekte in Bezug auf Site Reliability Engineering (SRE) eingeführt wurden, um dieses Produkt am Laufen zu halten. Dabei wird er speziell für euch auf Monitoring, Alerting, Chaos Engineering, Rufbereitschaft und das Training dafür eingehen.

    Let's go!

  • Microservices mit Micronaut (Moritz Kammerer)

    Online event

    Startup-Zeiten von Containern werden bei elastischer Skalierung in der Cloud immer wichtiger – wer möchte schon 2 Minuten warten, bis eine neue Instanz des Services erscheint? Hier kann der Shooting Star von java-basierten Microservices, Spring Boot, nicht glänzen.

    Systembedingt steigt die Startzeit des Containers mit der Menge der Klassen auf dem Classpath. Auch der Speicherverbrauch einer Spring Boot Anwendung ist nicht gerade gering.

    Micronaut, erschaffen von den Machern des Grails-Frameworks, behauptet, diese Probleme in den Griff zu bekommen. In dem Talk sehen wir uns an, wie sich Microservices mit Micronaut entwickeln lassen und prüfen, ob es die Versprechen hält.

    Bonus: Da Micronaut kaum Reflection verwendet, sollte es sich mit dem GraalVM AOT Compiler in ein natives Image kompilieren lassen. In dem Vortrag werden wir dies ausprobieren und die Performance dieses Native Images messen.

    Dauer: 1,5h inkl. Live Coding

    2
  • Tests everywhere – was man so alles testen kann (Christian Kühn)

    Wir bewegen uns immer stärker in agilen Umfeldern mit kurzen Iterationszyklen und benötigen schnelles Feedback.

    Continuous Integration liefert hier eine tolle Grundlage, um für Änderungen einfache, aber auch komplexere Tests durchzuführen, um Schwachstellen zu bemerken, bevor wir sie auf den Nutzer loslassen.

    Doch was wollen wir eigentlich testen? Unit-Tests und Integrationstests hat jeder von uns schon mal gesehen. Doch was ist mit komplexen Last-Szenarien? Verschiedenen Datenbanktypen? APIs von Drittanbietern? Infrastruktur und Alerting? Und überhaupt: Wer sind die 3 Amigos?

    Mit Livedemos zu verschiedenen Testhelfern wollen wir Licht ins Dunkel dieser Fragen bringen (z. B. Testcontainer, Gatling, Wiremock u. v. m.).

    Vorkenntnisse:
    Grundlegendes Verständnis an Softwareentwicklung und Interesse an Software-Qualität

    Lernziele:
    Besucher bekommen Einsicht in moderne Testframeworks für diverse Testszenarien, wie man Anforderungen und Ergebnisse auch für Nicht-Techniker lesbar machen kann und welche Vorteile man hat, diese Tests in Continuous Integration zu nutzen.

    Speaker:
    Christian Kühn ist Software-Entwickler bei dmTECH und beschäftigt sich mit Java, Cloud-Technologien und Security-Themen. Er is Co-Organisator des DevOps Meetups Karlsruhe.

    1
  • Elasticsearch. Securing a search engine while maintaining usability (A. Reelsen)

    Speaker: Alexander Reelsen

    Elasticsearch - das Herz des Elastic Stacks - ist als verteilte, skalierbare Volltextsuchmaschine und für Analytics bekannt.

    Zehntausende Elasticsearch Instanzen laufen weltweit, so dass trotz aller neuen Features in jedem Release auch über das Thema Sicherheit nachgedacht werden muss - zu jeder Zeit. Dieser Vortrag geht auf unterschiedliche Aspekte von Elasticsearch im Bereich Sicherheit ein, von Features bis hin zu bestimmten - manchmal auch unpopulären - Entscheidungen die getroffen worden sind. Der Vortrag behandelt unter anderem

    * eine Einführung in den Java Security Manager,
    * die Verwendung des Java Security Managers in Elasticsearch,
    * Production vs. Development mode,
    * System Call Filtering,
    * Painless als sichere Alternative für eine Scripting Sprache.

    Ziel des Talks ist es nicht, auf einige Details in Elasticsearch einzugehen, sondern vielmehr den Zuhörer dazu bekommen, diese Themen auch in seinen eigenen Anwendungen zu berücksichtigen.

  • Domain Driven Design. Damit Dein Code Klartext spricht (Daniel Ludwig)

    Proportional zur Komplexität einer Software steigt auch das potenzielle Fehlerrisiko bei der Übertragung der Spezifikation in den Softwarecode. Diese typischen Fehlerquellen und Schwierigkeiten sind den meisten Entwicklern bekannt:

    • eine nicht eindeutige Sprache bei der Bezeichnung von Klassen, Methoden und Variablen,
    • fachliche Funktionen, die über viele verschiedene Programmbestandteile ohne erkennbaren Zusammenhang verteilt sind,
    • und die daraus resultierende Orientierungslosigkeit, wo denn im Code eine bestimmte Anforderung zu finden ist.

    Doch es besteht Hoffnung: Domain Driven Design!

    Domain Driven Design hilft nicht nur, fachliche Missverständnisse in der Kommunikation zwischen den beteiligten Stakeholdern zu vermeiden, sondern stellt insbesondere in der Spezifikation Klarheit und Eindeutigkeit über die fachlichen und technischen Parameter her - und schafft damit die Voraussetzung für eine hohe Codequalität.

    In meinem Vortrag teile ich meine Erfahrungen mit DDD und gebe bei der Gelegenheit Einblick in die aus meiner Sicht wichtigsten Vorteile:

    • eine allumfassende Sprache, die sowohl im Gespräch mit dem Kunden als auch in der Software selbst Anwendung findet,
    • die sortenreine Trennung von fachlicher und technischer Schicht
    • Domänenklassen mit rein fachlichen Daten, ohne technischen Ballast
    • eindeutige Strukturen für Funktionen wie Serviceklassen, Repositories etc.

    Zum Speaker:
    Daniel Ludwig arbeitet seit 2006 bei der Micromata GmbH als Softwareentwickler. Sein Aufgabenbereich umfasst die Gestaltung von Softwarearchitekturen sowie die Entwicklung von Frontend- und Backend-Komponenten. Durch mehr als zwanzig Jahre Berufserfahrung in komplexen Softwareprojekten ist Daniel Ludwig mit einer Vielzahl an Entwicklungskonzepten und Technologien vertraut. Sein Hauptinteresse gilt der Entwicklung domainspezifischer Sprachen unter Verwendung dynamischer Programmiersprachen wie etwa Groovy oder mithilfe von Frameworks. Seine breite Praxiserfahrung teilte Daniel Ludwig bereits mehrfach mit der Java User Group Hessen, zuletzt 2018 mit dem Talk "Xtext und die Integration in Java-Anwendungen" (zu sehen auf Youtube).

    3
  • Fulib - macht Java Code aus Klassendiagrammen (Albert Zündorf)

    Fulib ist eine neues leichtgewichtiges Tool zur Generierung von Java aus UML-Klassendiagrammen. Einst als Fujaba bzw. SDMLib an der Uni Kassel gestartet, wurde es inzwischen nochmal völlig neu gedacht und entsprechend weiterentwickelt.

    Fulib hat keinen graphischen Editor, sondern nur eine einfache API: Man schreibt ein paar Java-Statements wie createClass("Product"), createAttribute(product, "price", DOUBLE) oder createAssociation(customer, product, "products", MANY, "customers“, MANY) und lässt dann Generator.generate(classModel) drüber laufen - fertig ist die Java-Implementierung.

    Features & Vorteile von Fulib im Überblick:

    • Fulib gibt es als Gradle Plugin.
    • Der generierte Code braucht KEINE Run time Library.
    • Das Ganze funktioniert iterativ und mit GIT.
    • Der generierte Code kann mit manuellen Teilen gemischt werden.
    • Refactorings wie z. B. die Umbenennung von Klassen und Attributen sind möglich.
    • Es gibt auch eine OCL-ähnliche und eine cypher-ähnliche Query Language.
    • Query Languages werden wiederum als Java API angeboten.
    • Die API kann man aber auch selbst generieren, dann braucht man KEINE Run time Library
    • Die Query Languages benutzen intern Reflection und brauchen nur normale Getter, d. h. das funktioniert auch auf manuell programimerten Modellen (und Modellteilen).
    • Und weil die Queries letztlich wieder nur Java Code, sind kann man sie mit Git verwalten und iterativ arbeiten.

    Zum Speaker:
    Albert Zündorf ist Professor für Software Engineering an der Universität Kassel