Take care of the quality of your software and do not fail in the attempt: Part 2
Published: 2021-01-13 22:55:40

In the last post I told you about the quality criteria to take into account for the project development. Today, I will continue to tell you about this so you can be a more professional developer. Before continuing, I remind you of the six quality attributes:

- Functionality
- Reliability
- Usability
- Efficiency
- Maintainability
- Portability

In this post I am going to tell you about the last three.

Efficiency is the ability of the software to respond to a user request with the appropriate speed. You may think that I mean "the application responds fast", but this would be ambiguous, since how can you determine what is fast and what is not? At this point you must take into account what is an adequate response time for your user, as well as take into account the norms or standards that exist about this. You as a developer can help the software have adequate response times by correctly managing hardware resources, using good development practices, such as using efficient ordering methods or long-proven industry libraries.

Maintainability is the ability of the software for the user to invest minimal effort to maintain or improve it. Perhaps this attribute you understand better with examples. Suppose that in your work you were assigned a new requirement for an application that was developed by a person who no longer works for the company. The first thing you are going to do is check the code to try to understand it, if the code is easily understood by you or by another of your colleagues, we could say that the software is maintainable, but this is not enough. Now, suppose that you are going to start making the request, but you find that to do it, you have to change many things and that when you move something, the application begins to present unexpected effects, in this case we would see that the application cannot be " easily modified "and it is" not very stable ", so in this case we could say that the application is not very maintainable. Finally, suppose that you have finished the adjustments that you requested in the requirements, now you must do the corresponding tests to validate that the change you made has been correct, if the application is modular, doing these tests will probably be easy, in this case we could say the software is maintainable. In general, to determine if software is maintainable, we must ask ourselves how understandable, changeable, stable, and testable it is.

Ultimately, portability is the ability of software to be transferred from one environment to another and function in it. This means that the software can be installed / executed in different environments, for example that it can run on Windows, Linux or IOS, if it is a web application, that can be viewed in different browsers, or if it is a mobile application, that it can be installed on Android or IOS. It also refers to the ease of installation, preferably having an assistant to perform the installation and in each step it is clear to the user what he is doing, always avoiding that he makes decisions that affect the environment where it is executed and does not generate conflicts with other system. Portability also refers to the ability that the software can have to be used instead of another product, for the same purpose, in the same environment, for example, a mailing API that can replace another API that does the same. same.

It is important to clarify that the software does not necessarily have to comply with 100% of these attributes, it all depends on the requirements, needs and even the budget of the client, but if it is important that when you make the software, you have all this in mind, think in the impact it will have in the future, since the conditions and needs of the environment and your client may change

You can read the first part [here](https://dev.to/jeffaristi92/take-care-of-the-quality-of-your-software-and-do-not-fail-in-the-attempt-4eed)