Database analysis before software development

Database analysis before software development


Currently, there is an infinity of technologies and design styles focused on the storage and management of information, which facilitate the creation of databases. Therefore, talking about which is the best technology or the best design will depend on several factors, among them professional and personal opinions.

However, it can be stated that when designing a database, the information is grouped considering how to provide the customer with a quick and efficient access to the system, while protecting its integrity and security.

But, why is it important to make an analysis of how to build a data base before starting the development, instead of designing it along the way? To answer that question, this process may be compared to building a house. It all starts with the foundationsthat support all the structure, giving it stability and making it safe. Now, what if these were poorly built? Well, they could be repaired, which would imply a high cost, most probably it would be necessary to rebuild or reinforce some walls, or in the worst-case scenario, invest a lot and still end up with a croocked house.  Following the same line, data bases are like the foundations of systems or applications. When they have a bad design, it will probably result in performance issues, high mainteinance and redesign costs, or well, the need to create a new system entirely.

This does not imply it is impossible to make any changes to a database while the system is under development, or once it is in use. However, it is important to clarify that said changes will have a high impact on the time and cost of the system, since the most advanced it is at the time of the modification, the bigger the overwork and redesign will be. And it can all be avoided.

Previously, we answered: why is it important to have a good design? But we have not yet responded why not developing the data base at the same time the application is being developed? Retaking the comparison with the construction of a house, what would happen if, while someone builds the foundations, another person begins to build the walls? It is possible that the walls will not not fit properly or that the wall-builder will have to wait for the section of the foundations to be over, to finish their job. Similarly, it is possible that, when designing the database together with the system, developers run into dependencies that make them pause their tasks while finishing the development of the segment that needs attention before they can continue with their task. Another possibility is duplications or a bad application of normal forms, once the system is finished, which would require the redesign of some functionalities or modules to solve these problems.  

It is true that the most advanced teams are capable of developing under assumptions that in the future there will be a place for storing the information, or creating the structure of the database at the same time they are developing. However, we cannot confuse this working style with lack of planning, since, to perform this kind of work, a team needs millimetric planning.

To give it more perspective, let us imagine that someone hired a construction company that provides a plane and diagrams before starting with the structure, in a way that all builders know where everything will be before starting. This is known as an analysis and planning phase, which is the same for development teams.

In other words, we can develop the application at the same time that we create the structure of the database, as long as we have all the resources that are necessary to manage the project and, at the same time, keep them constantly updated each timethere is a change in the system.

In conclusion, when analyzing and planning databases or any other project before having started, the team members will be capable of managing work at their best by foreseeing possible inconveniences and avoiding unnecessary expenses, in addition to allowing a better adaptability to the changes that will mostly reflect in the early stages of the development, proving the team with a better adaptability and no need to overwork.

It is important to remember that the bigger the workload in early stages of the project, the fewer complications there will be at the end, and the result of the project will be better as well.

“Setting a target is not the most important. Deciding what you will do to achieve it and adhere to the plan, is”- Tom Landry