Roland Weisleder
Freelancer
Freiberufler
Berlin, Germany
Actions
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
Topics
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.
dev2next
JUG Saxony Day
Developer Week '24 Sessionize Event
betterCode() Spring
Spring I/O 2024 Sessionize Event
Voxxed Days Brussels
Magdeburger Developer Days
ADC
JAX
Digital Crafts Day 2024 - by DCN Sessionize Event
Enterprise Java User Group Austria
Softwerkskammer Köln
Java User Group Saxony
W-JAX
Accento
DevFest Vienna
JAX
Java User Group Görlitz
JavaLand
Voxxed Days Zürich
Softwerkskammer Köln
W-JAX
Java Forum Nord 2022 Sessionize Event
JUG Saxony Day
Herbstcampus
Magdeburger Developer Days
JAX
Devoxx Morocco
W-JAX
Devoxx
JavaZone
Magdeburger Developer Days
dotNet Cologne
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top