Technology analysis process
The role of a tech lead or technical expert and solution architect in the software development process.
We always talk about the importance of Business Analysis (BA) in software development. It’s hard to overestimate the role of a business analyst who helps formulate and translate stakeholders’ requirements, align expectations, and as a result, launch a valuable software product.
However, there’s another major analysis in software development that helps create successful products and deliver a project effectively. This analysis is called technical analysis or technical investigation and is usually fulfilled by a tech lead, solution architect or other tech experts in the team.
As we know, business analysts work on functional requirements, whereas the responsibility of solution architects is to define an integration strategy, find the right platforms and frameworks for the future system and document non-functional requirements.
Here are the key steps to make during technology analysis:
Analyze the client’s technology infrastructure
Almost every client has at least some technology infrastructure to start with. By infrastructure, we usually imply hosting, email services, SSL certificates, database servers and any other technology component on the client’s end that will interact with the future system.
In order to understand how to work with the given infrastructure, a tech lead performs the technical investigation and tries to understand how to further use this infrastructure in designing and building a new system or upgrading an existing software.
Usually, if the existing infrastructure is well-built and compatible with a new product, it can be completely re-used. Sometimes, the legacy systems are simply too old and won’t go along with a new product. Then, such infrastructures require a complete upgrade. If this is the case, it’s good to learn about it at the very beginning of the project to implement relevant prioritization of project requirements.
At this stage of technology analysis, tech leads or solution architects also try to find out how to integrate the client’s services into a new system.
For example, if a new app is supposed to use some old backend system, a technical analyst should define the capabilities and limitations for such integration. It is worth discussing the integration opportunities with a backend development team in the first place. In some cases, when direct integration is impossible, the scope may include the development of a private REST API to connect the backend with the app.
Analyze the solutions that will work as the basis for a new system and its components
There is no point in reinventing a wheel. Custom software should benefit from a wide range of platforms, frameworks and services available in the market.
For example, we are building an app or a website that should display certain content managed by an admin. This app or website may be stuffed with custom unique features which require serious design and development efforts. However, adding the component responsible for content management is a no-brainer. Today, it can be built on top of a time-proven CMS platform such as a WordPress, SiteScore, etc.
There are plenty of examples when platform integration actually speeds up the development. Different CRM systems, e-commerce platforms, mail services are among the most common out-of-the-box solutions used and customized for these purposes. The main task of a technology expert at this stage is to find and compare potential third-party software solutions, validate them against given business requirements and choose the right ones for the project.
Analyze third-party APIs required for the development
Nowadays, almost any new system requires certain integrations. It can be a payment gateway, social networks or domain specific services and platforms usually integrated via API.
Sometimes, the list of API is provided by the client. Often, it’s the responsibility of a tech lead to find an appropriate library or framework that can be useful in the course of the project development.
For this purpose, it’s useful to dig through the Internet, choose the most popular libraries or other solutions in a specific business domain, study the approaches competitors of other companies use to solve similar problems and learn from the experience in the company.
When defining the list of libraries, APIs or frameworks that could be used in the project, tech experts may need to compare several software solutions. Once the final list of integrations is defined, tech specialists perform the analysis that usually consists of the following steps:
- Reviewing relevant documentation,
- Matching endpoints/features and product requirements,
- Analyzing how these solutions could be used in the future (important for the features, which are out of the project’s scope now but can be included later)
- Validating API, framework, platform or other solutions’ limitations against the given requirements,
- Validating API, framework, platform or other solutions’ performance capabilities against the given requirements/established project goals,
- Analyzing how to integrate API, framework, platform or other solutions in the existing infrastructure.
Document non-functional requirements
As a rule, business analysts discuss business goals and requirements with a client. Technology analysts, in turn, collect and document non-functional requirements.
Non-functional requirements are abundant. The most common and important ones are the following:
Security requirements include:
- protection against unauthorized access to the system and its data,
- authorization and authentication across different user roles,
- data privacy,
- prevention and protection against cyber attacks and malware.
This requirement determines the ability of a system to perform under certain conditions in a certain environment. It includes:
- consistent system performance without failure for a period of time,
- the impact of bugs, hardware malfunction, other problems with system components,
- the quality of task implementation.
Performance measures the quality of system interaction with users. It includes:
- user experience quality,
- system safety against overloads,
- system responsiveness to different user interactions.
These requirements imply system growth capacity. It includes:
- the ability to provide more users with the service of the same quality,
- processing more data or transactions,
- the capacity for memory, space, speed growth.
These are the important non-functional requirements for almost every software development project. If these requirements are not taken into consideration at the beginning of a project, it entails serious risks which may end up with additional costs and time loss.
The results of technical investigation
When tech leads or solution architects are done with all the steps of technical investigation and analysis, they record the results and create the following artifacts:
- Technology stack description. This description includes the programming languages, databases, servers, hosting and third-party libraries recommended to use on the project.
- The architectural diagram of a product. Usually, the diagram shows different project components with their roles and functionality and the relations between different components of the future system.
- Non-functional requirements specification. This is a separate part of the functional specification which describes non-functional requirements – security, reliability, scalability, performance, etc.
I believe a balanced combination of business and technology analyses leads to the excellence of a software development process and a final product. In my experience, the more thoughts you put into the future system at the beginning of the project, the easier and faster the development will go and the better results you get in the end.