Konferenzprogramm
Track: Back to Basics of Design, Architecture, and Programming
- Mittwoch
11.02. - Donnerstag
12.02. - Freitag
13.02.
Digitale Ökosysteme schaffen Raum für neue Geschäftsmodelle. Doch ist es notwendig, dafür stets eigene Plattformen auf der grünen Wiese zu entwickeln? Wir zeigen, dass auch die digitale Transformation Mustern folgt. Sie helfen, die Komplexität beherrschbar zu machen, und zwar auf allen Ebenen: von der Gestaltung der Vision bis hin zur Umsetzung in Software. Wir haben Gemeinsamkeiten von Ökosystemen identifiziert und stellen die technologischen Bausteine vor, um effizienter von der Idee zu einem…
Softwareentwicklung muss branchenübergreifend immer kürzeren Releasezyklen gerecht werden. Wir können deshalb Releases nicht länger in dedizierten Testphasen absichern, sondern müssen praktisch jederzeit die Qualitätsansprüche für ein Release erfüllen.
Um das zu erreichen, können wir QS-Maßnahmen wie statische Codeanalyse, Tests oder Reviews entwicklungsbegleitend und änderungsgetrieben durchführen. Dieser Vortrag erklärt auf Basis von Dutzenden Kundenprojekten in den letzten zehn Jahren, wie…
Understanding the software you are working on is crucial to successful software. To understand, you and your team must transfer knowledge to each other. Diagrams are key to this knowledge transfer, but effective diagraming is a skill you traditionally don't get taught. So how do you create effective diagrams and visuals?
Design patterns can be applied to your diagrams to guide you towards the goal of successful communication, and towards maximum inclusion for your audience.
Target Audience:…
Die Skalierbarkeit einer Architektur hängt zentral von ihrem Nebenläufigkeitsmodell ab.
Am Beispiel der neuen Virtual Threads in Java sehen wir den Quantensprung durch die Virtualisierung der Betriebssystem-Threads: Waren bis dahin einige Tausend Threads bereits eine Überlast, lassen sich nun ohne Schwierigkeiten viele Hunderttausende Threads nutzen. Aber wann ist das sinnvoll? Welche Architekturen können davon profitieren? Wie hoch ist der erzielbare Performance-Gewinn? Und vor allem: Lohnt…
Rund um Softwarearchitektur kursieren viele Mythen – manche alt, manche neu, viele falsch.
In dieser interaktiven Session wählt das Publikum aus einer sorgfältig kuratierten Liste, welche Aussagen auf den Prüfstand kommen. Für jede Aussage wird der Kontext beleuchtet, um den Kern herauszuschälen: Was steckt dahinter – Fakt oder Mythos?
Mit überraschenden Einsichten und einem Augenzwinkern liefert Tom Asel fundierte Einordnungen und lädt zum kritischen Hinterfragen ein.
Zielpublikum: Developer,…
Wenn Systeme wachsen, steigt mit der Anzahl ihrer Abhängigkeiten auch das Risiko von Ausfällen. In verteilten Architekturen kann ein einzelner Ausfall schnell eine Kettenreaktion auslösen. Robuste Datenreplikation und asynchrone Kommunikation helfen, diesen Domino-Effekt zu vermeiden; beides Prinzipien von Self-contained Systems (SCS).
In diesem Vortrag zeige ich praxisnah, anhand konkreter Beispiele aus verschiedenen B2B- und B2C-Shop-Systemen, wie Replikation zur Resilienz beitragen kann und…
Die Verwaltung des Zustands eines Systems ist eine der größten Herausforderungen in der Softwareentwicklung. Bei der Arbeit an komplexen Systemen herrscht eine hohe mentale Belastung. Diese kann dazu führen, dass die Datenobjekte und das System als Ganzes so verändert werden, dass der Zustand in eine fachliche Inkonsistenz gerät. Immutability vermeidet viele dieser Fehlerquellen.
Der Vortrag zeigt, wie Immutability funktioniert, wie sie im Kleinen und im Großen angewendet werden kann, um auch…
How to: use globbing for pattern matching, run a Java app without compiling with libraries, print an emoji, run an HTTP dev server, easy date and time, perform SIMD operations, access LLMs, run cron-like jobs, access the system clipboard, print colorful logs, implement smarter enums, "piping" Java applications.
implement a file watch, main() in interfaces, easy file parsing (...) and ~100 other popular Java snippets from youtube.com/@bienadam/shorts.
No builds, no Maven, no dependencies, just…
Object-Oriented Analysis and Object-Oriented Design (from the 90s!) have all but disappeared. Their shortcomings are well-known (UML diagrams, anyone?), and the Method Wars, the Model-Driven Architecture disaster, and the Agile revolution all played a part in killing off these techniques. But surely there is a modern-day successor that tells us how to, well, structure our objects - right? Not really. We examine the good parts of OOA/OOD, the transition to data modeling, and show how you can use…
No/Low-Code und Vibe-Coding machen es einfach, schnell Ergebnisse zu zeigen – aber zu welchem Preis? Wir erleben junge Entwickler:innen, die produktionsreife Software bauen wollen, ohne ein tiefes Verständnis für Architektur, Design oder Wartbarkeit zu haben. In dieser Session diskutieren wir mit Expert:innen und dem Publikum, wie wir der nächsten Generation von Entwickler:innen vermitteln können, worauf es wirklich ankommt. Wie gelingt es uns, diese Grundlagen schnell und wirkungsvoll zu lehren…
C++ is widely used in various fields, particularly in embedded systems where tight constraints are common. Writing software in this domain is both challenging and rewarding.
This talk will cover various library elements and language improvements that enhance embedded software development. We'll explore real-world tasks like converting raw byte blobs into usable data structures.
By the end of this talk, you will know the most important C++ improvements for embedded and similar environments.
Targe…
Programming language integers suffer from potential inaccuracy in arithmetic operations as well as undefined behavior in languages like C++ and C.
This talk shows the risks involved in inappropriate integer operations and the problems with implicit type conversion of the original operands types that can confuse programmers. We will also look at a few other languages besides C++ on how they deal with integer arithmetic.
Target Audience: Developers
Prerequisites:Basic knowledge in C or C++, for advanced examples some more C++ is helpful but not essential
Level: Introductory
Extended Abstract:
Programming language integers suffer from potential inaccuracy in arithmetic operations as well as undefined behavior in languages like C++ and C.
This talk shows the risks involved in inappropriate integer operations in C++ and the problems with integral promotion and the "usual arithmetic conversions" that in addition to the original operands types can further confuse programmers. We will also look at a few other languages on how they deal with integer arithmetic.
We will take a look at language safety guidelines with respect to integer arithmetic and operations and see where are their limitations in static analysis.
However, the power of C++ and new standard library features will allow us to implement safer alternatives. It might be a bit of art required to actually achieve syntactical nicety, efficient implementation and well-defined behavior when dealing with whole numbers and integers.
Note: this talk will not include approaches for unlimited precision arithmetic that might be required for some domains.
- assess the risk of integer arithmetic quiz
- why are there hidden problems, shouldn't integers just wrap?
- what safety guidelines say
- options for dealing with inaccuracy (overflow)
- C++26: saturation arithmetic
- convenient, safe, efficient: can we have all 3?
„Komm, wir analysieren das jetzt nicht tot, lass uns loslegen.“ Kennt ihr das? Warum die Zurückhaltung, in gute Architekturkonzepte zu investieren? Das Ergebnis wird so oft teurer und schlechter als nötig.
Wir plädieren dafür, Architekturarbeit konzeptzentriert zu machen und als kontinuierliche Aktivität mit agiler Entwicklung zu verzahnen. Anhand vieler Beispiele zeigen wir, wie man Konzepte strukturiert gestaltet und mit agilen Vorgehen kombiniert. Denn wer an Konzepten arbeitet, denkt über…
Das Design und die Architektur unserer Software werden von vielen Aspekten geprägt. Ein wichtiger davon ist die Programmiersprache und deren Typsystem. Unterschiedliche Typsysteme bringen unterschiedliche Software-Designs hervor. Wenn wir „gegen“ das Typsystem programmieren, macht sich das unmittelbar in der Qualität der Software bemerkbar.
Typsysteme können durch diverse Kriterien charakterisiert werden: weak vs. strong, dynamic vs. static (vs. gradual), exlicit vs. implicit usw. Alle haben…