-- Description
This training helps you to recognize problems of layered architecture and provides you with a toolbox of exercises that you can use to implement clean and hexagonal architecture. After the training, you will be able to continuously test your architecture and apply the evolutionary architecture mindset.
When expanding existing systems, we repeatedly stumble across rigid architectures that cannot be expanded or even grown systems that no longer allow any expansion that matches the architecture, as there is no longer any recognizable architecture. As a result, the underlying business model can no longer evolve. But how can we prevent this scenario? How can we implement an architecture in our software system that can withstand the evolution of the system?
Both the Clean and the Hexagonal Architecture promise a clear separation of the functional domain from the infrastructural aspects. The core idea, the Ports and Adapters Pattern, is powerful and helps to realize technical, functional and organizational flexibility in the software architecture. Building on this, we will examine the Clean and Hexagonal Architectures in the context of Evolutionary Architecture and present implementation options for Fitness Functions for these architecture patterns.
In the training “Evolutionary Software Architecture” we will talk about similarities, differences, benefits, trade-offs and pragmatic development approaches for these architecture patterns. Using a demo application in Java, we will analyze code examples together and implement them ourselves using a functional example. We will use the building blocks of tactical domain-driven design and learn how to implement them embedded in the clean architecture. You will be given access to the demo application with Spring Boot and Java and will have the opportunity to study the topic in more depth afterwards.
-- Agenda
**Day 1
Software architecture as structure and methodology
- Functional system decomposition and modularization
- Architectural patterns, architectural principles, design patterns and pattern language
- Time-to-adaptation and structural quality of software architecture
Ports & adapters as architectural patterns
- The weaknesses of layered architecture
- From layered architecture to ports & adapters architecture patterns
Creating an isolated domain
- Implementation of business objects and specialized values according to the principle of the rich domain model
- Implement domain-related data validation
- Distribute different tasks to the class stereotypes Service, Root Entity, Entity and Value Object
- Code exercise: Domain model
Hexagonal Architecture
- Implementation of business objects and specialist values according to the principle of the rich domain model
- Implement domain-related data validation
- Distribute different tasks to the class stereotypes Service, Root Entity, Entity and Value Object
- Code exercise: Domain model
Clean Architecture
- The domain in the clean architecture
- The use case ring of the clean architecture
- Principles of the use case section
- The framework ring of the clean architecture
- Call flow through the clean architecture
- Code exercise: Use case ring and framework ring
**Day 2
**Mapping strategies
- One-way, two-way and full mapping strategy
- Simplifying mappings with third-party libraries
- Mappers, converters and factories
- Code exercise: Two-way mapping strategy
Domain-Driven Modularization
- Modularization with domain modules using root entities
- Structuring domain modules
- Design patterns for relationships between domain modules
- Coding exercise: Dependencies between domain modules
**Evolutionary architecture
- Motivation for architecture discipline based on the Broken Window Theory
- The mindset of evolutionary architecture
- Fitness Functions for Clean and Hexagonal Architecture
- Coding exercise: Clean Architecture Fitness Functions with ArchUnit
-- Audience
This training is aimed at software architects and developers who want to understand these architectural patterns and their application in everyday project work. Participants should have the following experience and knowledge:
- More than 12 months of practical experience in software development in a team of medium to large software systems.
- Knowledge and practical experience in at least one high-level programming language (Java will be used for the course examples)
- Familiar with layered architecture, SOLID principles, design patterns, dependency injection and modularization concepts (modules, packages, namespaces)
- Familiar with the creation of domain-oriented object models in Java or a comparable programming language
-- Training Objectives
Recognize the problems of layered architecture and be able to address them using ports & adapters and functional modularization
Implement clean and hexagonal architecture and differentiate between these architectural patterns
Be able to apply different modularization variants and mapping strategies for the clean and hexagonal architecture
Be able to specifically use design patterns to map relationships between domain-oriented building blocks
Be able to continuously test your architecture using architecture tests and apply the evolutionary architecture mindset
-- Your Trainers
Matthias Eschhold
Matthias Eschhold
Architektur, Domain-driven Design
- Evolutionary architectural patterns with Clean and Hexagonal Architecture
Matthias ist Lead-Architekt der E-Mobilität bei der EnBW AG. Mit seiner Erfahrung in der Softwarearchitektur und Domain-Driven Design gestaltet er mit seinem Team die IT-Landschaft und Team-Topologie der E-Mobilität. Trotz der Schwerpunkte auf strategischer und sozio-technischer Architekturebene, fühlt sich Matthias nach wie vor mit Java und Spring Boot auf der Codeebene zuhause, implementiert Prototypen und führt Refactorings durch. Seit vielen Jahren teilt Matthias seine Leidenschaft für Architektur als Trainer. Seine Stärke liegt in praxisnahen Schulungen, die nicht nur Architekturmuster und -prinzipien vermitteln, sondern auch die Realitäten von Projekten berücksichtigen. Er sucht stets nach Wegen, um Softwarearchitektur alltagstauglich zu machen.
In-House Training
You can also book this training as an in-house training course exclusively for your team. Please use the enquiry form for more details.
Enquire now-- Relevant Other Training Courses
Flexible architectures
Microservices, Self-contained Systems and Continuous Delivery
Technology 20Methodology 10Communication —from 1,200 €
iSAQB® Module FLEX
If you want to find out more about modern architectural approaches, you've come to the right place.