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?
A Technical visionary
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”:
- a front end (Graphic User Interface – GUI),
- a middleware, aka Application Tier, i.e. various calculations and verifications that need to be done; the “heart” of the system
- a backend, aka Data tier, i.e. things done remotely like accessing the stock updating it in real time in the database, or producing periodically statistics about the sells, the customers, etc.
It will also integrate other crucial elements like:
- Connection to the bank for the payment and handle the result of the transaction to allow the purchase
- Connection with the transporter to book and pay for the parcel to be sent
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.
Skills required for the Software Architect
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:
- What is a piece software?
- What is software architecture?
- What are requirements?
- What is a software development process? What is Agile?
- What is outsourcing your software development?
- What is an algorithm?
- What is Object Orientation and why do we care?
- What is a good software engineer?
- What is a good software Project Manager?
- What is a successful software project
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
Contact us for more information.