Software Architecture Guide
We see that Martin Fowler is influenced by Ralph Johnson in deriving for himself a definition of architecture. In particular,<p><i>there was no objective way to define what was fundamental, or high level</i><p>And goes on to lean heavily on the idea that ‘application architecture' is a social construct. But I am then left with a thought that if application architecture is a social construct, that means there should be identifiable social characteristics that make-up the application architecture, characteristics that can be further quantified to an acceptable degree, such that they can be defined as fundamental.<p>Taking a step back from Martin’s influence & conclusion, and ask ourselves, “couldn’t software architecture, or architecture in general, be defined by a set of heuristics that lead to objectively defining what is fundamental to a particular context?“<p>Suppose we create three rules that need to be defined before reaching our conclusion:<p>- context: what scale does the architecture in question reference?<p>- collection of computing elements: what are the computing elements (this can range from machines to software)<p>- connectedness: how are the computing elements connected?<p>For example, in order to determine the architecture of my web scraping local machine setup I would go through the rules:<p>- context: a single script file with code written to accomplish the task<p>- collection: functions that are used to perform the task of scraping the webpage<p>- connectedness: functions pass data to other functions to perform specific tasks of scraping<p>In this example we have a guide to achieve objectively what is fundamental to our architecture.