Big designs upfront are usually done in waterfall models of software development.
- The waterfall model is predicted to be bad by its own inventor :)
The upfront design should be a basic, good one done with an iterative and incremental process.
When we have a solid understanding of the following aspects:
- The significant architectural drivers
- Cost, Response Time, etc...
- The context and scope of the product.
- The significant design choices.
- Technology used.
- Is our application a Monolith or is a set of Microservices?
- The risks associated with the product.
2. Every Software Team/Product Needs To Consider Architecture And Needs To Have A Technical Leader ✌️
This is crucial to have consistent patterns in the product.
- Keeping an eye on what’s going on with the code base.
- Collaboration with others to incrementally draw the architecture of the application.
It’s a continuous role that spans the life of the project.
There are several other tools that enable us to create architecture diagrams using GUIs or even using code.
This post has been prepared using the lecture of Simon Brown Five Things Every Developer Should Know about Software Architecture