Software Architecture

There are various similitude's between developing software and building a structure that´s why we often use architecture terms when talking about software. To design a building architects take a lot into consideration, they need to ensure a building feasible to fabricate, balancing all the aspects involved: user requirements, construction methods, maintainability, etc.

Architecture matters and it could set the difference between having a beautiful well built house that would last decades from a house where living would be disastrous. Imagine that but for software.

A well defined architecture of the software will have direct influence on the design and future growth of a software system that's why it´s really important to get it right from start.

There are four commonly recognized views:
  • The conceptual or logical view: This shows the major parts of the system and their interconnections.
  • The implementation view: This view is seen in terms of the real implementation modules,
  • The process view: Designed to show the dynamic structure in terms of tasks, processes, and communication, this view is best used when there's a high degree of concurrency involved.
  • The deployment view: Use this view to show the allocation of tasks to physical nodes, in a distributed system. 
The architectural view does the following:
  • Identifies the key software modules (or components, or libraries)
  • Identifies which components communicate with each other
  • Helps to identify and determine the nature of all the important interfaces in the system, clarifying the correct roles and responsibilities of the various subsystems
The architecture is captured in a high-level document called something imaginative like the architecture specification. This specification explains the system's structure and shows how it fulfills the requirements, including important issues like the strategy to reach any performance requirements and how acceptable fault tolerance will be achieved.

Like in construction architecture, software architecture should be well defined for this to address issues like usability, reliability, upgradeability, and extensibility.

A bad architecture is more than just inconvenient—it could cost you your livelihood.

References:
https://learning.oreilly.com/library/view/code-craft/9781593271190/ch14.html

Comentarios

Entradas más populares de este blog

Hidden Figures

The 4+1 View Model

Is Design Dead?