In the initial years of application development, I have found several junior or mid-level developers show up blank faces when asked about architecture of application. This is primarily because that they have been involved mainly in coding or low level design aspect of application development till that point of time in their career. Thus, these developers look up to architects to help them come up with various different architectural viewpoints. Not only this, project managers also look up to architects to come up with architecture and help the team get started.
Before I go ahead and write on a series of articles on how newbies could come with the architectural diagrams, let me try and explain one key terminology which is important to understand in order to come up with these diagrams. And, the term is called as Viewpoint.
What is Viewpoint?
Did you ever wonder why there were more than one architecture diagrams found in the architecture document of your application? For example, some of the common diagrams are high level architecture, logical architecture, application architecture, data architecture, infrastructure architecture, security architecture, performance architecture etc. This is because these diagrams are intended for different set of audience or stakeholders such as application engineers, performance engineers, security guys, infrastructure team to work on their aspects of application in independent manner.
Let’s see from real world scenario. Take a look at diagrams below.
The above view is the primary floor plan view. Also, there are other views such as height, back view which could be useful for the house owner.
The diagram above represents how plumbing will be done in the house.
The diagram above represents the eletrical fittings in the house and would be useful for electrician to work their way.
The above diagrams are intended for different set of stakeholders including house owner, building constructor, electrician, plumbers etc for them to plan to deliver based on the different set of requirements each one then have got for the same house.
In the similar way, application has various different aspects to be taken care such as application itself, data it works upon, servers it gets deployed upon, security policies that it has to adhere to, performance that it needs to have, internal and external applications that it needs to be integrated with and so on and so forth. Each of these aspects need to be worked upon by one or more individuals having different set of expertise and experience. And, these different set of individuals need to create a blueprint based upon which they would lay down the necessary elements fulfilling the given requirements. This is where different views are needed for different set of stakeholders and these views belong to that stakeholders’ viewpoint.
Following are different viewpoints in relation with architecture for application:
- Business (Functional architecture, Process flow view)
- Application (Application architecture – Layered View, Security View, Performance View)
- Data (Data architecture – Data relationship view)
- Technology/Infrastructure (Technology architecture – networking view)
In next article, I shall be explaining methodology one would want to use to create functional architecture diagram.