The Role of the Software Architect

One of the most interesting and mysterious jobs in an IT company is for sure the role of the software architect. I am often asked what a software architect is actually doing. Sometimes I see that some people have a notion of this role as the software architect would be  kind of a wizard. Because of this ambiguous understanding, I would like to underline the key activities that a software architect is performing within an IT company.

Let us assume you as an employee of a company delivering software, you get following requirement to implement as working system:

“We are the leading company in the banking sector. Our clients are mostly business partners performing daily million of banking transactions. We want to implement and introduce a powerful system performing fast payment transactions from one account to another account. We want to offer our customers a comfortable tool  that will book all transaction to our central ERP system. We want to have the leading tool on the market.”

And additionally, you get a specification of 1000 pages with a detailed description how banking transactions are performed and managed. The problem in this case is to define the borders of the system and to make the correct technical decisions. These decisions will shape the future evolution of the system. Any employee who is instructed and has the necessary knowledge can take these decisions. But mostly this person will be a software architect.

So, the questions that have to be asked are:

  1. What are the most important functions of the system?
  2. What kind of system we are designing a multiplatform system, a native app or a web application?
  3. What are the interfaces to the central ERP system? What kind of interface we are dealing with (SOAP, REST, DB interface, file interface etc)?
  4. Probably the security layer is for such kind of system relevant. So, what are the security requirements?
  5. Performance seems to be also a key feature for the system. Therefore, what are the performance requirements?
  6. Is the user interface already defined? Because the system has to be “comfortable”, the customer may consider employing a professional company to perform a deep user experience analysis.</br>

As we can see a software architect is dealing with important questions that has to be answered before the actually software development can take place. He will take technical decisions that are hard to change later. But is it actually enough just to focus on the technical decisions as a software architect? No, because a software architect has always to have the business requirements in mind. A technical solution has always to fit to the non-technical problem for which the solution is designed. However, the software architect has to take care about the business requirements but in the optimal case he is not responsible for the elicitation of them. Requirement engineers or business analysts have to elaborate the requirements so that a software architect can start to the design the technical solution. Requirement engineering and software architecture are therefore two disciplines that are performed alternately. A good communication between a requirement engineer and a software architect contributes to the progress of a project.

It is also important to mention, that during the project the requirements can change or new insights can be figured out, so the software architect has to be aware about this and has constantly to adjust the software architecture to the new constraints.

Duties of a software architect

  1. The software architect is aware about the customer requirements and the project timeline. He is in constant information exchange with the stakeholders. Because of that, a software architect is able to listen and to take the perspective of his counterpart.  He attends to regular meetings and workshops with the stakeholders.
  2. The software architect defines rules how to collaborate and integrate new software parts to the product. He creates models and decides which pattern is appropriate to solve a specific problem. Further he creates prototypes and if it is necessary supports the implementation. Therefore, he has to have a broad knowledge about design patterns and different programming languages.
  3. He consults and reports to the management. The management of a company has often limited knowledge about IT and is not aware about the future trends in IT. A software architect arguments reasonably why the company should invest in specific new frameworks or why they should employ specific kind of developers.
  4. And of course the software architect should have the ability to mentor and communicate clearly to the software development team.

Despite these four duties, the software architect will also develop and try to be always aware about new trends within the IT  community. One also very important aspect is from my point of view, that the software architect has to understand all principles and patterns that are utilized in the system. He is always able to start develop with a specific framework and support the team, but he is not obligated to develop all modules as responsible developer. An efficient software development team will work as one body, where the software architect coordinates the big pictures and the software developers act as the prolongation of his arms. Nevertheless, software developers contributes as well as the software architect to the final solution.

 

Categories of software architects

Every company has its own picture of a software architect. But there are some similarities within specific companies how the role of a software architect is defined. Three categories can be identified:

Category Strategic thinking System interaction Design
Enterprise architect Multiple projects highly abstract minimal
Solution architect One solution very detailed detailed
Application architect components, modules, encapsulation single project very detailed

Some companies employ one software architect that can inherit all three categories.

Leave a Reply

Your email address will not be published. Required fields are marked *