What IS and what IS NOT Software Architecture

The agile manifesto

What is the main value of software?

The most common mistake that shouldn’t be

This is not a very flexible material (marble)

“A bit of dependency inversion now can save you a ton of deployment management effort for the rest of your life”

How to understand dependencies

A depends on B
If B changes, it could break A1 or A2, so B is hard to change, it is stable
If A1 or A2 change, then B may break, so B has to change more often, it is unstable

This is where the D in SOLID becomes very useful

A controls B
The flow of control is the same as the flow of dependencies
Dependency: Inverted

The main principles of architecture

A depends on B

What is NOT software architecture

Architecture is NOT about making decisions about things that you don’t know!

Do we use MySQL or Maria? What Network Protocol are we going to use for the front-end? How do we keep consistency over a cluster of distributed persistence servers?

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store