Software Architecture - General Viewpoint
Blog - Series2 [19-Aug to 16-Sep, 2021], Part of Tech Thursdays - “Poll and Blog” series on various topics related to “Software Architecture” by Hiral (Vyas) Dave
My Series1-Blog on Software Architecture – Need vs Want dated 12-Aug-2021, was concluded with the following note,
In the race of Need vs Want, Need clearly wins. Software Architecture for each software/system is a “Must Have” than “Good to Have” concept.
Considering Software Architecture as a “Must Have” concept,
In “Poll and Blog-Series2” understanding the General Viewpoint of the professionals from software industry about Software Architecture was an obvious choice.
In this blog I will take you through the Series2 poll questions [1-4] while we analyze the audience viewpoint and infer what is missing and what is required.
Let’s dive in what people has to say:
Poll1 question was,
What is a Software Architecture?
Poll1 Dive in:
Result shows equal weightage for options Blueprint and Structure of System, where in High Level Design follows.
Some definition in the comments section would have made this discussion interesting however it remained empty ☹.
Now let’s see what ISO/IEC/IEEE standard has to say about the definition of Software Architecture, High Level Design and Blueprint.
If we consider the ISO standard definitions then, out of the given choice in the Poll1, Option 3 is the most relevant answer. All other options are related, they do complement each other but have their own different role as a support for software architecture.
Over the period of time and with the years of experience many writers have come up with their own viewpoint on Software Architecture definition. However, what stands as a pillar is the word Fundamental (something that is Essential about the system like elements, relationships, principles etc.). Not necessarily it includes everything and all the decisions. But just the ones which are significant.
We have standards defined for most of the thing with lot of research but we as professionals sometimes refer to it just for the academic purpose or to maintain the organization protocols.
In this world of information overflow it is a real challenge to figure out what is authentic and how advisable it is to use it.
Are we following a standard for this standard concept called Software Architecture that remains a question?
Poll2 question was,
How do you consider Software Architecture and Design?
Poll2 Dive in:
Majority voted for Architecture and Design to be different in Poll2, but there is also an opinion that they are same. This again shows a vast subjective topic like this would certainly have opinion based on what we learn from the working environment.
Architecture and Design complement each other however when clearly defined they stand different. How?
It is well said in some article, "Architecture is more outwardly focused on the system in its environment; whereas design is more inwardly focused once the system boundaries are set."
Poll3 question was,
A: Is use of Software Architectural Patterns beneficial?
B: Have you used any Architectural Pattern in your project?
Poll3 Dive in:
People have used architectural patterns and found it beneficial but there is also an opinion that it’s not beneficial at times.
Awareness on the use of right pattern at the right time can certainly help to look at the benefits it provides.
Poll4 question was,
To be an effective “Software Architect” what should be more important to focus on:
A: Technical Breadth
B: Technical Depth
Poll4 Dive in:
In the initial stages when a person starts working as a software developer his/her keen interest is to have an expertise on the technology, programming language what he/she is working on. At that stage “Technical Depth” is of prime importance.
However, as they step up the technical career ladder which also requires other skills like communication, leadership and so on, he/she needs to have knowledge on the other area along with his area of expertise. This is Technical Breadth.
Neal Ford has explained it in an excellent way.
There is a need to increase the awareness about the importance of Software Architecture.
If one is keen and want to climb the technical ladder and be a Software Architect, one should have a good knowledge of other technical and non-technical areas along with their area of expertise.
A proper training program that imparts the systematic knowledge about Software Architecture, is the need of hour to be a resourceful Software Architect.
There are well crafted courses available to learn and master the art of Software Architecture. They are created by the Software Architects for the Architects like iSAQB-CPSA certifications and related accredited trainings.