Onion, Hexagonal, Clean, or Fractal Architectures aim to organize how we deal with dependencies in our software architectures. But which one should we choose? After distilling the essence of each approach and comparing the advantages and challenges, I’ll show how to combine all of them into an approach to use evolutionary steps towards an architecture that fits your needs from day one until the software dies. You’ll see that layers and slices aren’t enough. A modularisation that fits the domain...
Simplicity enables an evolutionary software architecture
Software Architecture in the agile World – Part 9: Summary
These are the slides with some notes from my talk about software architecture when developing in an agile way. Contents Let’s look back at the workflow Max and his team used to build a solution to their problem. First, they invested in problem understanding so that they then could decompose the problem into almost independent subproblems. Finding solutions to the subproblems and composing these together into a solution for the whole problem were the next iterative steps. Once a consistent...
Software Architecture in the agile World – Part 8: No time for improvements
These are the slides with some notes from my talk about software architecture when developing in an agile way. Contents Max and his team can now build software in steps, adapt to new business needs and technology changes, and evolve the software architecture accordingly. But like most teams after a while, they get the feeling that they lose speed. Development takes longer, features get completed less and less. It’s time to improve the code base and invest in innovation. But unfortunately...
Software Architecture in the agile World – Part 7: Changing requirements and technologies
These are the slides with some notes from my talk about software architecture when developing in an agile way. Contents Even if you invested a lot of time upfront to get all the requirements and to make wise technology decisions, requirements and technologies will change. Requirements change because the stakeholders see new possibilities or there were misunderstandings. Technologies change all the time and at some point, you have to keep up or the product will die. How can we design a software...
Software Architecture in the agile World – Part 6: How to get fast feedback
These are the slides with some notes from my talk about software architecture when developing in an agile way. Contents
Max wants to get feedback about the architecture and the software his team built often and as early as possible. Earlier feedback means that the team can correct its course earlier and thus reducing waste caused by building the wrong stuff.
Software Architecture in the agile World – Part 5: Changing things without breaking them
These are the slides with some notes from my talk about software architecture when developing in an agile way. Contents Max knows now how to add new features and how to extend the architecture in an iterative and incremental way. He knows how to split and defer decisions. But how can his team keep adding stuff without breaking what is already there? Breaking existing stuff is very time consuming and frustrating. Re-work is what costs teams a lot of their capacity. Instead of building new...
Software Architecture in the agile World – Part 4: Making decisions with little knowledge
These are the slides with some notes from my talk about software architecture when developing in an agile way. Contents
Max has the challenge that there are a lot of architectural decisions that have to be made. But how can his team make good decisions with only limited knowledge because they build the software incrementally and need decisions early to start developing?
Software Architecture in the agile World – Part 3: Incremental and iterative
These are the slides with some notes from my talk about software architecture when developing in an agile way. Contents
When we build software with an agile approach, we build features incrementally and iteratively.Incremental = one feature after the other.Iterative = we build the first version of a feature, get feedback and improve it in the next iteration.
Software Architecture in the agile World – Part 2: Where to start when there is just a product vision
These are the slides with some notes from my talk about software architecture when developing in an agile way. Contents
Max knows that the goal of the software to be built is to match potential team members based on their skills to a team. But that is not enough knowledge to start designing a software architecture.