Finding Architecture
Priyanga Mahasen Bandara Balahewage
Application Architect @ Next | Cloud-Native Architecture, Azure DevOps
For a concept and a discipline that has been in practice for decades, software architecture has way too many definitions and interpretations. Every company that I have worked for had their own collective understanding of what architecture is - but every time I changed companies, I found out that their understanding is different to the previous place I've been, sometimes slightly - sometimes considerably more. But in a general sense they were all correct and they all worked. But, when asked the question what is architecture, I never had an answer that I felt good about or an answer that made sense to others I was talking to.
I've never been after the text book definitions of anything, but I have never contradicted with them either. I just like to word them the way that it made sense to me - to the people I'm communicating with.
And this short write up is about finding a definition for the term architecture - for me.
The Context of Architecture
Before I get to a definition, I think it's important to set some context to it.
All of these factors, collectively and independently influence how software is made, deployed, supported and used.
What is Architecture?
Given this context, architecture is a set of policy decisions made to govern design, implementation and operations of the software solution, as responses to the prioritized risks identified in each of the above categories (contextual influences).
Communication of Architecture
Based on the stakeholders involved, communicating of the architectural decisions itself could have different degrees of risk exposures. For example,
领英推荐
Based on the communication risk assessment, the architect must choose appropriate tools and methods to communicate the policy decisions to the stakeholders.
Whatever the communication mechanism be, it is important to remember and emphasize that the architecture is the policy level decision that was made as a response to an identified risk - architecture is not the medium used for communication.
Deployment design is not architecture - it is just sometimes it is best to communicate the policy decisions around deployment in a deployment design, due to the risks of those decisions not being communicated, understood and enforced correctly in the implementation.
In relation to the other definitions
Below are some of the definitions that I have frequently encountered in the wild.
The important stuff—whatever that is; this refers to the fact that software architects should concern themselves with those decisions that have high impact on the system and its stakeholders
That which is fundamental to understanding a system in its environment
Things that people perceive as hard to change; since designing the architecture takes place at the beginning of a software system's lifecycle, the architect should focus on decisions that "have to" be right the first time. Following this line of thought, architectural design issues may become non-architectural once their irreversibility can be overcome.
A set of architectural design decisions; software architecture should not be considered merely a set of models or structures, but should include the decisions that lead to these particular structures, and the rationale behind them. This insight has led to substantial research into software architecture knowledge management..
Even though I'm not meeting them word to word, I believe my interpretation is not in disagreement with any of them. However having this interpretation has helped me make architectural decisions with a purposeful clarity and communicate them effectively to my stakeholders. I hope at least some of you readers will find this perspective more relatable and gain more clarity of thought in architecture through it.