How to implement the Clean Architecture?
31 Jan 2018Did you enjoy reading Uncle Bob’s Clean Architecture?
I did! As with every book from Uncle Bob’s it is motivating and inspiring, right?
So let’s take his ideas and realize these in our projects to gain what he is promising!
But how do I start? How do I transform an existing code base - following a layered (web) architecture - into the Clean Architecture?
In this Blog series I will share with you the questions I had and the experiences I made when implementing the Clean Architecture.
When I read about the Clean Architecture one of my projects already had an existing code base and has even been released several times. Its quality was basically OK but there was clearly improvement potential. So I decided that this would be a perfect pick for my experiment …
The project
The project of choice is an “agile backlog visualizer” - I will call it Athena in the context of this series ;-)
Athena’s mission is to bring maximum transparency into the backlog of our agile teams. It fetches all work items from our Team Foundation Server (TFS) and visualizes those nicely on an intra-net page to give us the views and reports we need …
The Backlog
Athena shows our ranked backlog in a simple table with some filters. It also applies the capacity of our teams to illustrate different cut-lines in different colors.
You may wonder why we have fruits in our backlog … this is a different story which I may tell the other day ;-)
Work balance
As we have multiple teams working on that backlog we want to know how the different teams are loaded.
The Burn Down
And of course we want to track our remaining work using a burn down.
Governance
We also have quite some conventions for our backlog, e.g.:
- each work item must have a parent (except the roots of course)
- each work item must have certain category tagging
- iteration paths within parent-child relationship have to be consistent
So we also have a page reporting violations to these conventions.
The "Implementing Clean Architecture" series
- How to implement the Clean Architecture?
- Implementing Clean Architecture - An Overview
- Implementing Clean Architecture - Make it scream
- Implementing Clean Architecture - What is a use case?
- Implementing Clean Architecture - Of controllers and presenters
- Implementing Clean Architecture - Are Asp.Net controllers "Clean"?
- Implementing Clean Architecture - Frameworks vs. Libraries
- Implementing Clean Architecture - Case Study: Sending e-mails
- Implementing Clean Architecture - To use or not to use MediatR?