Software Engineering: What is a Software architecture?

Check this introductory tutorial on software architecture.

Here is an example of an architecture design called three-tier architecture. But, let us see some concepts first and we will come back to it. First, what is software architecture? It is the foundation or the fundamental design of a software system. Now, software architecture has software elements or components, the function of these software elements and the relationships between these software elements. Software architecture shows how it addresses the key business objectives such as performance, reliability and security.

Why do we need to have a software architecture? Why not develop a software system directly?

The first reason is that a new software system needs to have an architecture just as a computer needs an architecture or a building needs an architecture. Without an architecture, developers would just build the system in the way they consider fit. Such a software system when built may be difficult to maintain or change. Because each developer built their component in their own way. Secondly, software architecture helps existing developers and new software developers, as well as stakeholders, understand the structure of their software system. If the software architecture is implemented, it is possible to address the key risks to the system. Such a software system can have a higher code maintainability. Developers can have more productivity and greater adaptability to system changes. Software architecture documentation shows the system organization. This helps in the reuse of design and code across different projects. Next, who is a software architect? A Software Architect is a role that decides the fundamental structure of software systems and documents them. In his role, a software architect analyzes the business requirements first. Then he identifies the key risks to the software system. And most importantly, he makes fundamental choices about the software system. It is difficult or time-consuming or even practically impossible to change these choices once a system is built.

Now, let us see some example architecture patterns also called architecture designs. First the 3-tier architecture. Now, a three-tier architecture separates the Presentation tier, Application Logic tier and Data Management tier on different servers. The benefits of three-tier architecture are better scaling because each tier can be scaled up independently. If we want to have a higher configuration server, we can just change the servers that support the Presentation tier or any other tier. Also, additional security can be implemented in the Data Management tier. Another example is Peer-to-peer architecture. The benefit of using P2P architecture is that there is no single point of failure. Even if one node fails, other nodes can continue working. This is different from Client-Server architecture where if the server fails, the entire system stops working. So, in this tutorial we learned what is software architecture, Why do we need a new system to have a software architecture and What is the software architect role. We also saw a couple of examples of architectural patterns. That’s all in this video. Thank you and see you in my other videos.