Just like the building architecture creates blueprints and provides technical details of each component of the structure, the software architecture also creates blueprints of the so-called working model of the application or system.
Similar to the architectural decisions about building structures such as the type of stone or bricks to be used, how many floors will the building be, what are the dimensions of doors and windows, the stairs and many other details which if not finalized while building the architecture can double or triple the cost of the building.
Software engineering and architecture is no different. In fact, we can take the liberty of saying it will have additional complexity as often times in the case of large system designs, all the parameters and details of each component are not known when the architects start creating the basic architecture. Experienced architects know this and have evolved smartly to build to change rather than building to last.
Some decisions must be taken early on during the system design. Some can be deferred till such a point that they do not impact the overall system that is being implemented. Deciding which is which comes with years of experience and unless you have been there and done that, software architecture design is not everyone’s cup of tea.
A Unified Model Language (UML) is used to create a software architecture diagram. It is a general-purpose visual modeling language to visualize, specify, construct and document a software system. It is a common phrase that a picture is worth a thousand words – UML takes care of representing a complex software system in a visual or pictorial format which is easy to comprehend.
Whether it is building a new system or redesigning an existing one, the software architects must provide the right guidance to meet the business goals and objectives by selecting the right designs, tools, and technologies that will go into the system.