Recently I began taking a class at college on Software Design, this class has urged me to investigate and dig deeper into Software Development and Architecture. I started reading the Book “Software Architecture for Developers” by Simon Brown and in this post I will be discussing topics from both my class and the Book.
What is software architecture?
To be able to talk about software architecture we have to first be able to define what this words means, there are many different definitions and approaches to software architecture an this is mainly in the eyes of the beholder, what this means is that a Software Developer Jr is not going to define Software Architecture the same way an Architect will, and this is mainly because of the lack of real world approaches to this topic, as Simon brown mentions in the prelude of his book “Software architecture need to be more accessible”. It is also important to note that the definition of Software architecture regardless of the person who is describing it usually takes two roads. Either we address the structure itself or the act of building this structure and this is what Simon likes to refer as:
- Architecture as a noun:
In Simon’s words:
The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relations among them.
- Architecture as a verb:
This refers as the act to transfer the functional requirements into a technical solution, which creates a vision and the Job of the Software Architect is not only to build this vision but to transmit it to the stakeholders so everyone can have a consistent view of what we are trying to build.
Unifying this definitions brings us a step closer to a better understanding of Software Architecture, which comprises both the act of designing and the design itself of both an application and a system. This valuable information can help us further explore how to develop software in a more effective way.