© Mapbox, © OpenStreetMap

Speaker

Roland Weisleder

Roland Weisleder

Freelancer

Freiberufler

Berlin, Germany

Roland Weisleder is an independent software developer and consultant and has been in the Java ecosystem since 2009. He empowers development teams to bring their legacy Java systems into the future and especially to improve the structure and test automation. He shares his experience in workshops, articles and talks across Europe.

Roland Weisleder ist selbständiger Softwareentwickler und Berater und seit 2009 im Java-Ökosystem unterwegs. Er unterstützt Entwicklungsteams dabei, ihre Legacy-Java-Systeme in die Zukunft zu bringen und insbesondere die Struktur und die Testautomatisierung zu verbessern. Seine Erfahrungen teilt er in Workshops, Artikeln und Vorträgen im In- und Ausland.

Area of Expertise

  • Information & Communications Technology

Topics

  • Java
  • Java EE
  • Spring
  • Software Development
  • Software Architecture

Sessions

Unit Test Your Java Architecture With ArchUnit en de

Architecture and code are drifting more and more apart? The implementation of non-functional requirements and cross-cutting concerns is often forgotten? Too much spaghetti code due to circular dependencies? Sadly, such things happen far too often and will quickly lead to an unmaintainable code base.

In the Java ecosystem, the library ArchUnit is a possible solution for this situation. We will look at how we can use ArchUnit to test our architecture within unit tests and finally get structure back into the system. We will also look at jMolecules, which allows us to model architectural concepts directly in the code.

ArchUnit: Unit-Tests für deine Java-Architektur en de

Architektur und Code driften immer weiter auseinander? Die Umsetzung von nicht-funktionalen Anforderungen und Querschnittsaspekten wird häufig vergessen? Zu viel Spaghetti-Code durch zyklische Abhängigkeiten? Solche Dinge kommen leider viel zu häufig vor und führen schnell zu einer unwartbaren Codebasis.

Im Java-Umfeld ist die Bibliothek ArchUnit eine mögliche Lösung für diese Situation. Wir schauen, wie wir mit ArchUnit unsere Architektur innerhalb von Unit-Tests testen können und endlich wieder Struktur ins System bekommen. Außerdem schauen wir uns darauf aufbauend jMolecules an, womit wir Architekturkonzepte direkt im Code abbilden können.

Maven Enforcer: Du wirst ihn lieben oder hassen. Oder beides. de

In komplexen Projekten ist oft “schwarze Magie” nötig um überhaupt ein erfolgreiches Build zu erhalten. Mit etwas Glück sind die Vorbedingungen sogar in den Tiefen des Wikis dokumentiert. Und selbst ein erfolgreiches Build kann weiter hinten in der Pipeline zu Fehlern führen. Ein Beispiel können die “Dependency-Hölle” und die transitiven Abhängigkeiten von Maven sein.

Mit dem Maven Enforcer Plugin können wir Vorbedingungen für ein erfolgreiches Build und Anforderungen an Abhängigkeiten explizit definieren. Diese werden direkt zu Beginn des Builds geprüft. Bei unerwünschten Abweichungen schlägt das Build frühzeitig fehl und liefert somit sehr schnell wertvolles Feedback. Auch die “Dependency-Hölle” lässt sich damit zähmen.

Anhand von erlebten Situationen schauen wir, welche Möglichkeiten das Maven Enforcer Plugin bietet. Und es wird den Moment geben, wo ihr euch über ein fehlgeschlagenes Build freuen werdet.

Immer wieder die gleichen Fehler? Nicht mit ArchUnit! de

Nicht-funktionale Anforderungen wie Security, Transaktionen, Caching oder Logging begegnen uns in einer Software an vielen Stellen immer wieder. Und bei jeder einzelnen Stelle müssen wir erneut darauf achten, dass wir sie richtig umsetzen, denn sonst sind Fehler (im wahrsten Sinne des Wortes) vorprogrammiert. Für die richtige Umsetzung von solchen Querschnittsaspekten gibt es im Projekt vielleicht Regeln, die mit etwas Glück sogar dokumentiert sind. Aber können wir das nicht auch automatisiert überprüfen?

Eine mögliche Lösung für diese Situation ist ArchUnit. ArchUnit ist eine Bibliothek, mit der wir innerhalb von Unittests die Struktur einer Java-Anwendung prüfen können.

Dieser Vortrag gibt zunächst eine kurze Einführung zu ArchUnit. Anschließend schauen wir, wie wir mit ArchUnit die richtige Umsetzung von Querschnittsaspekten prüfen können, sodass wir fehlerhafte Strukturen früh aufdecken und Fehler vermeiden können.

Three Principles To Bring Your Legacy Code Into the Future en de

Although developers know the best practices for good code, I keep seeing some fresh code that is the exact opposite: difficult to understand, with unexpected side effects, not documented, insufficiently tested. This becomes a problem once we have to change this code again to add new features or to fix bugs. In addition to the effort to make the actual change, we still have to invest time to understand the code and make sure we don't accidentally change other functionality.

In this talk, I share my experience in dealing with legacy code in uncharted territory. I'll show approaches to decipher code you don't understand, how to make code testable, and the three principles I follow for every code change. With this you can start tomorrow and make your legacy code future-proof, even if management doesn't give you time for refactoring.

Legacy-Code mit drei Prinzipien in die Zukunft bringen en de

Obwohl Entwickler die Best Practices für guten Code kennen, sehe ich immer wieder teilweise jungen Code, der das genaue Gegenteil ist: schwer verständlich, mit unerwarteten Nebeneffekten, nicht dokumentiert, unzureichend getestet. Spätestens wenn wir diesen Code wieder anpassen müssen, um neue Features hinzuzufügen oder um Bugs zu beheben, wird das zum Problem. Zusätzlich zum Aufwand für die eigentliche Änderung müssen wir noch Zeit investieren, um den Code zu verstehen und um sicherzustellen, dass wir nicht versehentlich andere Funktionalitäten verändern.

In diesem Vortrag teile ich meine Erfahrungen im Umgang mit Legacy-Code in unbekanntem Terrain. Ich zeige Vorgehensweisen und Werkzeuge, wie man unverständlichen Code entschlüsseln kann, wie man Code testbar macht, und welche drei Prinzipien ich bei jeder Codeveränderung anwende. Damit könnt ihr schon morgen loslegen und euren Legacy-Code zukunftsfähig machen, auch wenn ihr vom Management keine Zeit für Refactoring bekommt.

Developer Week '24 Upcoming

July 2024 Nürnberg, Germany

Spring I/O 2024 Upcoming

May 2024 Barcelona, Spain

JAX Upcoming

April 2024 Mainz, Germany

Digital Crafts Day 2024 - by DCN Upcoming

April 2024 Weiden, Germany

Enterprise Java User Group Austria

January 2024 Linz, Austria

Softwerkskammer Köln

December 2023 Köln, Germany

Java User Group Saxony

November 2023 Leipzig, Germany

W-JAX

November 2023 Munich, Germany

Accento

October 2023 Karlsruhe, Germany

DevFest Vienna

October 2023 Vienna, Austria

JAX

May 2023 Mainz, Germany

Java User Group Görlitz

April 2023 Görlitz, Germany

JavaLand

March 2023 Brühl, Germany

Voxxed Days Zürich

March 2023 Zürich, Switzerland

Softwerkskammer Köln

February 2023 Köln, Germany

W-JAX

November 2022 Munich, Germany

Java Forum Nord 2022

October 2022 Hannover, Germany

JUG Saxony Day

September 2022 Radebeul, Germany

Herbstcampus

September 2022 Nürnberg, Germany

Magdeburger Developer Days

May 2022 Magdeburg, Germany

JAX

May 2022 Mainz, Germany

Devoxx Morocco

November 2019 Agadir, Morocco

W-JAX

November 2019 Munich, Germany

Devoxx

November 2019 Antwerpen, Belgium

JavaZone

September 2019 Oslo, Norway

Magdeburger Developer Days

May 2019 Magdeburg, Germany

dotNet Cologne

May 2019 Köln, Germany

Roland Weisleder

Freelancer

Berlin, Germany