For software applications, it is usual to divide the application in different functional modules, being each one independent of each other. With this approach, several advantages can be obtained, such as the following:
Easier to maintain. For example, if there is an error in a module, then the solution is focused in that module and there is no need to look inside other program parts, which makes easier the code maintainability.
Reuse. If a specific module is encapsulated and well defined, then this module can be used for other applications.
One of the typical functional divisions of software applications consists on dividing all program code related to the data interaction, all program code related to the program logic, and all the program code related to the presentation and interaction with the user. In this way, the final application is divided into three big modules.
Therefore, it is interesting to think about how to divide these modules in an application, and first define the assigned functionality for the data module.
Answer the following questions