In Poland – where I live and work – we have a pension system. My grandma doesn’t have to work now to survive and she makes a living from her pension. But my situation won’t be the same. Right now polish pension found receives about 50.000.000 PLN from government to pay all pensions. When I retire, the found will need 3 times more (according to the found itself). Right now there are two working people for one pensioner. When I retire there will be 0.8 working person for one pensioner. I’m going to receive the pension in the amount of 20-30% of my current salary.
Yep… So it’s time to run a budget, including my own pension budgeting. And I definitely need an application for that. And here the chain of decisions finds its beginning. Software architecture decisions are determined by architecture drivers which we can be divided into five categories:
- High-Level Functional Requirements
- Quality Attributes
- Architectural Concerns
- Conventions
- Design Purpose
You should keep trying discovering your drivers because:
- it saves time and money (you know exactly what are you building),
- it helps to decide which technology are you going to use (there is infinite amount of them!),
- you will get to know the real needs / purpose of the project.
The source of requirements, architecture drivers, are stakeholders. In this specific situation one stakeholder – just me.
It’s good to write your architecture decisions down, because they are changing in time and can be various for specific parts of your system. For that I will use Architecture Decision Records. ADRs are just text documents, where you describe your decision. There is no one schema, how to do it1. The list of your ADRs is called Architecture Decision Log.
I will keep my ADL inside my_budgeting
project repository. Let’s start with 0001_record_architecture_decisions.md
.
1. Record Architecture Decision
Status
Accepted
Context
I start a public project for which architecture decisions can be seen as weird.
Decision
I will record architecture decisions as documents in doc/adl
folders – documentation / architecture decision log
Consequences
The motivation behind previous decisions is visible for everyone, present and future. Nobody is left scratching their heads to understand, “What were they thinking?” and the time to change old decisions will be clear from changes in the project’s context. See more here