You are a Business Owner, a CEO, or any person with a need for software development. You are working on the development team composition and a title appears in the list: “Software Architect”. So, what is a Software Architect and what is Software Architecture?
We have seen in our previous article, that the software engineer will convert your needs into some lower level bricks of his/her own. If this is true in general terms, in reality, the developer will not pick the bricks at random in a library of bricks. These bricks must fit into the bigger picture. Just like one does not add a wooden wall in a concrete house, one does not produce software elements that don’t fit in the whole. And this whole, is the job of the Architect.
The software architecture is the master plan that combines the general software and hardware solutions to achieve the goals in respect of the global constraints.
This architecture is two fold: Software and Hardware.
The Hardware architecture is surely the easiest to understand. In order to have your application up and running, it will require computers to work for you. These computers may be very simple. For instance, a web site may only require one computer connected to Internet to serve the pages. This connection is made via a router connected to the net.
If you plan to build a system that allows you to manage your car fleet while on the move, you will need a satellite-GPS source, a fleet of GPS captors to embed in the cars, an emitting hardware like a 3G SIM card, a central computer dedicated to receive the real-time info, etc.
A far more complex architecture could be for an international electronic trading platform. This could require: an ultra fast internet connection between the trading points, a distributed database across the different countries, a cloud based real-time backup system. In this case, the architect will have plenty of work to create, setup and test the physical architecture.
So, the physical architecture is made of a more or less complex set of machines, cables and electronic equipment.
The Software Architecture is, of course, a less tangible piece of work. It is architecture nonetheless. What kind of components can enter in this part?
For a start, the software “bricks” are required to work with the hardware. So, if you intend to use a GPS based system, you will need software elements that will be able to code and decode GPS information.
If your application is a heavy merchant site, like Amazon, you will need to be able to cope with extremely high transactional traffic. In such case, one may use specific applications written and designed for this purpose.
The Architecture is involved in more complex questions, like: What steps do we take between a Customer’s request and the treatment of this request? Indeed, a purchase on a web site is likely to involve three classic “layers”:
It will also integrate other crucial elements like:
Please note that software architectures nowadays are more complex that this 3-tier solution. But this makes it easier to explain the principles.
The Software Architecture consists in selecting all the components structuring the application, the communication protocols to allow the components to communicate, and other technical solutions to allow the system to perform well.
The Software Architect must have a great knowledge of the available technologies at the time of the project development. He/She must also have a talent for making components work together. In a way, it is a “Visionary” role in terms of technologies. In fact, although I believe that comparing the Software Industry with the Construction industry is wrong, in this case, the role of “Architect” is not dissimilar to the one of a traditional Architect for a building, a bridge, etc. It consists of knowing what components can create the best result.
Like for a traditional architect, a software architect can be creative and come with unexpected solutions for your problem.
A Software Architecture is made of two components: the Hardware and the Software Component. Each of them require to have an Architecture in place in order to produce the desired result.
The Software Architect is the corner stone of any project, especially complex and innovating projects. It is the architect’s experience and “vision” that will shape your solution and produce (or not) marvels.
We, at Liemur, always make sure that our customers understand thoroughly the architecture of their project. We make it intelligible to all stakeholders so that no-one remains in the dark. We know that it is the best way to get everyone’s buy-in and therefore the starting point of a great team work.
Contact us for more information.
This article is #2 of a series on Software Development for Non-Technical Decision makers. This series contains or will contain:
The next article will cover the topic of Requirements, a corner stone of the Software Development Project.
Learn more about software development: Software Development for Non Technical Decision Makers
Liemur provides Software Development Services within UK and with its nearshore branch in Budapest.
Contact us for more information.