Please note:
On this page you will only see the English-language presentations of the conference. You can find all conference sessions, including the German speaking ones, here.
The times given in the conference program correspond to Central European Time (CET).
Thema: Software Architecture
- Montag
03.02. - Dienstag
04.02. - Mittwoch
05.02. - Donnerstag
06.02. - Freitag
07.02.
Software stakeholders and users approach technology through the lens of their cultural norms and worldviews. As software designers, we often introduce new concepts and terminology to better address those needs. This can mean adapting or even reshaping their cultural perspectives. But culture, by nature, seeks consistency and conformity, providing a framework to our daily chaos. This consistency can make language and models rigid, often leading to ambiguity. So, how can we navigate and reshape…
Software is changing our world – and the speed of change is increasing. Continously evolving business demands, software technology advances, and social changes mean that gaps can quickly arise between the actual state of a software and its desired state. Not reacting to these gaps can lead to software no longer being competitive or marketable. Reacting too quickly can lead to software becoming “immature” with corresponding negative business impact. Bridging the gaps is not easy and requires…
How to structure your program right? This has been a central question since the beginning of software development. This talk takes a look into the history of software architecture to understand why we are building software the way we are. We start with foundations like information hiding, modularity, separation of concerns, loose coupling. We move on to principles like layering and design patterns. We conclude with an outlook to modern ideas like hexagonal architecture, onion architecture,…
Die Entwicklung typischer aktueller Webanwendungen kann einen erschlagen: Umfangreiche, komplexe JavaScript-Frameworks, Client-Side-Rendering/Server-Side-Rendering, (De-)Hydration, komplizierte Buildprozesse und und und
Die unterliegenden Technologien, Protokolle und Architekturmuster wie HTTP(2/3), HTML/CSS, Web Components, Representational State Transfer (REST) u. a. geraten dabei manchmal völlig aus dem Blick. Für die Entwicklung von Webanwendungen, die nachhaltig und skalierbar sein sollen,…
What is the difference of a test architect to a commonly known software architect? And why do I need one? What do they have in common and where do they differ? Is there a gap where we need a bridge (Spoiler: yes)? What are the different expectations of other roles on a test architect?
Questions over questions which will be covered in this talk. With examples where it did go well because there was a test architect and examples where things got haywire maybe because a test architect was missing.
A…
The objective of visual test automation is replace flaky and hard to read selectors with images. Many software packages offer the possibility of using images as selectors, but it rarely works reliably. Appium has the function "findElementByImage," Playwright has functions like "toHaveScreenshot." Code and no-code tools alike provide a number of options to tweak the sensitivity, where both, too low and to high values, produce their own set of artefacts. What makes this so difficult? Doesn't AI…
Bounded Contexts spielen bei Domain-driven-Design-Diskussionen eine zentrale Rolle. Sie gelten als eine vielversprechende Lösung zur Modularisierung von Systemen, sei es in Form von Deployment-Monolithen oder Microservices. Doch die Anwendung in der Praxis bringt Herausforderungen mit sich: Es ist oft schwierig, eine Domäne sinnvoll in Bounded Contexts aufzuteilen. Zudem ist das Konzept nicht einfach zu verstehen. Einerseits steht es für die Aufteilung eines Softwaresystems in Module,…
Die Grundlage für gute Software ist eine gute Architektur. Eine zum System passende Architektur kann jedoch nicht im luftleeren Raum entstehen – um eine geeignete Architektur definieren zu können, muss man die Domäne und ihre Anforderungen verstehen. Moderne Architekturarbeit beginnt somit ein ganzes Stück vor der eigentlichen Architektur. Für diese Exploration der Domäne wurden im Rahmen von Domain-Driven Design (DDD) verschiedene kollaborative Modellierungstechniken entwickelt. Deren Ziel ist…
Consider for example, this line of C++ code:
std::pmr::vector<std::variant<int,double,std::pmr::string>> values;
Are you aware that this line of code contains at least five Gang-of-Four (GoF) design patterns? If not, then this talk is definitely for you! It will help you realize that design patterns are everywhere. They are the key to managing dependencies between software entities. They help us to structure our software, to separate concerns, and to communicate our intentions. Even better, they…
AI for testing to generate test code or AI for coding (see Copilot) to suggest good code examples; this is almost "state-of-the-art". But isn't something missing? Aren't we largely dealing with brownfield software that needs to be transformed in order to be cloud-ready and scalable? Couldn't AI help here too?
In the presentation, we will look at what AI-based methods could do to simulate architecture restructuring (based on data that goes beyond code to evaluate feature/temporal coupling,…
Today we know very well how to start a new project on a greenfield and how to build a good architecture. But most of us work in projects that have been around for a long time and whose architecture (to put it mildly) is not quite so beautiful. “Monolith” and “Big Ball of Mud” are the unflattering labels put on such systems.
This talk will show how we can introduce (or bring back) structure. Every system is different here, so it’s important to first understand where you are. Then the right steps…
Eric Evans' Big Blue Book has a chapter titled "closure of operations", largely ignored by the community and subsequent works on DDD. This is tragic, as closure of operations is one of the most powerful techniques for domain modeling. A concept imported from functional programming, it makes for flexible and long-lived domain models with the help of combinators - operations that build big domain objects from smaller ones recursively. This is refreshing alternative to the rigid hierarchical…
Agile methodologies promise rapid delivery, flexibility, and resilience, allowing teams to respond swiftly to customer needs and market changes. However, the success of these agile practices is deeply intertwined with the underlying software architecture. An enabling architecture can enhance agility, while a restrictive one can significantly hinder it.
This talk explores how architectural and organizational decisions impact the agility of development teams. We will discuss the role of modularity…
INITIAL SITUATION
When modernizing enterprise applications that were developed many years ago and adapted over decades, you are often faced with several challenges.
- What does the current architecture actually look like?
- Which technologies have all been utilized?
- Which and how much technical debt, i.e. things that would have to be changed anyway, are hidden in the source code?
Normally, various developers have "immortalized" themselves in the code and the architecture. And a uniform and…
Fitness functions are an essential part of evolutionary architectures – and they can also bring desired structures and properties to legacy code bases, step by step. But how do they look like in practice? What kinds of fitness do they check and assert?
After a general introduction to fitness functions we'll do a deep dive into some concrete examples, covering use cases for common architectural patterns. We'll see examples in Java code, based on ArchUnit and jMolecules. But the basic ideas and…
Good Software Design — the proper management of dependencies — is the foundation for the success of a project. The basic building blocks for software design are design patterns. Design patterns have proven themselves invaluable over several decades and thus knowledge about them is essential to design robust, decoupled systems. Modern C++, however, has profoundly changed the way we use C++, how we think about design and implement solutions. This also affects how we implement design patterns.
This…