When customers make requests for software development, some questions from the IT team are disheartening to them.
Checklist: Requirements for evaluating an IT project.
In the production of custom IT solutions, we appoint a manager who monitors the work and interacts with the customer, we form a team and we deploy the project environment.
The software product development process involves several phases. Each phase consists of three blocks: requirements specification, implementation of the solution, transfer of the project to the customer. Let's talk more about the stage of requirements specification.
Clarification of the requirements will help to clearly identify the needs of the customer, determine the resources and team, assess the value of the IT project. Based on the requirements, the development team agrees with the customer on the phases and timing of the solution and determines the methodology for acceptance testing of the software product.
It is worth mentioning that our approach does not claim to be unique. Its value is in the fact that we have collected and analyzed aspects of various quality assessment methodologies, tested them in our work on custom projects and compiled a checklist of requirements sufficient for an adequate and accurate assessment of an IT project.
The checklist for developing project requirements consists of several large blocks.
1. Functional requirements for “successful” scenarios.
At this point, we figure out what the system should do. Our developers always have questions for customers about functional requirements.
For example, a client describes the expected result: "The user logs into their personal account, selects this and that, and then goes there." Stop! Where will the personal account come from? How do users register? How to change and recover passwords? Do I need to import / connect an existing user base? Finding out “missed”, implicit requirements is the team’s task.
2. Functional requirements for “emergency” scenarios.
When we buy a car, we think about how it will carry us to various interesting places, and not about how we will have to refuel it.
Typically, the customer presents more or less clearly how the solution will work in positive scenarios.
In our experience, a significant part of the work is spent on processing errors related to external factors: unstable communication, incorrect operation of third-party services, insufficient storage for backups and so on.
3. Non-functional requirements
It is advisable to clarify the figures: the number of users, the response rate for a given amount of data and the load on the system, the amount of stored data, resource consumption of the system during normal operation.
Sometimes the client seeks to minimize labor costs at the expense of everything, including asking for a minimum performance. The project makes it to the prototype stage, and the real load of the production level is getting off scale.
In our practice, there was a case when a client ordered a demo prototype with the possibility of quick deployment on their own laptop, and then launched a dozen users into it without consulting with us. The prototype could not provide the simultaneous operation of so many users.
At the very start, it is important to explain to the customer that you cannot take passengers on a paper plane.
We find out MTBF expectations (mean time between failures) at normal, critical and supercritical load. Based on this, you can select the most suitable technological stack and determine whether it is necessary to supplement the solution with such a "side" functionality as advanced monitoring, self-healing, auto-scaling.
The analysis is carried out in parallel with points a, c, e, f, g.c. Reliability and recoverability
Here we take into account the time to restore the system after a fall, the complete destruction of the entire data center and operational data. We discuss the requirements for data backup and system backup.d. Security
Do not forget to identify the roles of user groups, the scheme of differentiation of access rights, the requirements for encryption of data and communication channels.
This item is especially important for projects with personal data that are stored in the clouds.
What should you do if your client works with ‘sensitive’ personal data and decides to transfer the database from its servers to the cloud? At one of the projects, we did the following - we collected backups from the entire network, encrypted them and put them into cloud storages so that no one who had access to one storage could decrypt anything.
We always discuss the possibilities of scaling and requirements for it, then we specify the time and cost of deploying additional capacities.f. Extensibility
Scalability and extensibility have two sides to the coin. We can do a project quickly and inexpensively, but with restrictions on the amount of data, speed, power and other indicators. The customer instantly enters the market, receives feedback, pays less for infrastructure. Another option for the development of events when we are working for the future, but there is a risk that the product will not take off soon and the cost will be higher. Competitors are on the alert. They can do everything quickly and cheaply, but without scalability and extensibility.
Who will the customer ultimately choose as a subcontractor? Someone who is able to show that they understand and will be able to meet the needs of the customer, taking into account restrictions, including financial ones.
It may happen that the customer requests a super-universal solution. The data model / architecture / deployment scheme will turn out to be very expensive for development (without a visible return on the investment horizon). It will require too much time for implementation and high costs for maintenance and infrastructure. That is why it is important to maintain a balance at the start.
One of our customers from Britain began to work with clients from their time zone. For a long time, the system could be relatively painlessly stopped for maintenance at night. Then they got users in Australia and Germany. The window of opportunity shrank sharply. And when China connected to their project, it finally shut.
It is important to consider the features of the system: some require availability 99.999% of the time, and you can’t stop them for more than 8+ hours a year.
Find out who will install, maintain, and upgrade the product. If these are admins on the part of the customer, it is important to clarify their qualifications and provide for the appropriate level of complexity for monitoring, diagnosing and updating the system. This requirement is related to documentation, which will be discussed below.h. Ergonomics
We find out the requirements for usability, accessibility, take into account the time it takes for the average user to master the system, the simplicity of typical scripts, and the built-in documentation. If ergonomics is not worked out on the client side, then UX experts do this.i. Graphic design
At the start of the project evaluation, we find out whether the customer provides a ready-made design or gives it to our team for development.
If the client’s employees are involved in the installation and configuration of the solution, documented instructions will obviously be required. It is important to consider the level of qualification of operational personnel. The detail of such an instruction will depend on this.
What to do if the customer wants to use a framework for which he does not have a license? Then you could either buy licenses or start looking for alternatives.
Once we were approached by a company in whose brand book there were paid fonts that the client did not buy. We had to explain the legal consequences. As a result, changes to the brand book were made.l. Compliance with standards and legislation
What can not be ignored in evaluating an IT project? Federal Law on personal data, compulsory licensing of certain types of activities, fiscal accounting, server location and data storage in certain jurisdictions. The most sensitive projects in this regard are related to the storage and security of personal data.
Instead of a conclusion
Our checklist for evaluating an IT project can be used in whole or in part, depending on the specific request of a potential customer. The most accurate understanding of what the customer wants to create allows to reduce the uncertainty in the project and increase the accuracy of the assessment. The efforts spent on eliminating uncertainty on the part of the client may indirectly demonstrate their readiness for further cooperation.