Let’s approach the topic of creating own architecture in this series of articles.
Architecture is the highest level of a system design.
System design is a way to facilitate production of code for an application.
An application is a medium needed to fulfil a (business) goal.
Even when you don’t prepare system design before making the app, you still have to think before writing any code, and this is called accidental system design, which leads to accidental architecture (AA).
It is easy to detect accidental architecture:
Q: Why our code is so ugly?
A: Historical reasons…
The purpose of setting up a formal architecture rather than jump into coding stuff is to establish guidelines, constraints, and patterns according to which the code is going to grow.
Think of setting up architecture as laying a railroad for a code to move along it like a train.
Guidelines, constraints, and patterns help to:
You should learn from those, but that they all suffer from many problems:
No one has enough, but the more you have, the easier it is to see the light at the end of a tunnel.
Here is what will help you:
We should always start by analysing requirements (as in any mature endeavour) which come from the goal.
In the worst case you can get a high-level functional specification, like this:
At this stage, the business might think that requirements are sufficient, and it is your responsibility to find answers to the swarm of questions which arise, for example:
When you can’t think of other questions to ask, its time to move on to the next stage.
If it is not a greenfield project there might be plenty of restrictions on your architecture choice, at least try to answer these questions:
Yes, you can! By putting functional and organisational requirements together, you can start outlining your ideas and then eventually compose a formal Architecture! But its an entirely different story to tell…
Before you take your ideas into the wild, I suggest you stress-test them against a comprehensive checklist I’ve compiled for your convenience.
Take your candidate architecture and pretend to be its advocate by answering questions like on trial (imagining a jury of iOS community helps).
Thank you for reading!
Message me on Twitter for feedback.
Powered by WPeMatico