## 3 Prototyping and Proposed Implementation
### Designing Intelligent Algorithms to Optimize the Development of a Project-Coestim  
In this stage of the project, the system requirements for the design of project development optimization algorithms were defined and the proposed methods were analyzed to identify the best solution. The objective of Coestim was to improve the algorithms developed in the research so far by adding the possibility to search for resources, both material and human, in real-time, directly in the systems from different providers and service providers, taking into account an initial risk which that each present. As well as the feedback history from all customers who have used the supplier's products or services, thus developing the principles of participatory economy in construction. After more than ten years of study, both the effectiveness of the application and its theoretical basis have shown that the problems of limited allocation of resources can be solved by the technique ACO (Optimization of ant colonies) where the goal is to minimize total time and project risk, with resource availability and precedence relationships as constraints. After calculating the conceptual time of a project using activity-planning algorithms, it was proposed to optimize the use of resources by developing intelligent algorithms to optimize the development of a project. The developed algorithm is based on the following hypotheses:  
* A resource cannot be divided into several activities on the same day;
* An activity cannot be divided on resources from different providers;
* For a certain activity, if any provider of a child activity has the necessary resources to carry out the activity, the algorithm will take into account only those resources and will not look for other providers;
* Resources are limited in quantity and number of hours per day;
* The number of resources allocated to an activity in a given project will remain constant until the end of the activity;
* However, the number of resources allocated to an activity may vary from project to project;
* It is assumed that resources maintain a constant level of productivity throughout the activities;
* An activity has a maximum number of resources that can be allocated at the same time. Testing the application is extremely important. For example, if the software GUI displays a success message after adding a new entity, it is considered that this data has been completely stored in the database. However, a malfunction may occur during this operation without being displayed in the software interface. In this scenario, differences in status/content in a database between different operations can help identify potential software failures. However, manual checking for these differences is a daunting and time-consuming task. Thus, automated testing would be an interesting solution to quickly and efficiently perform functional testing in database-based applications. In this case, the issue of testing the Coestim database was addressed to verify the integrity and consistency of the data. The importance of testing the database was presented  
Figure 10: Pseudocode for designing intelligent algorithms for cost efficiency. and the types of tests that can be performed both by queries and by tools dedicated to this procedure were described. Database tests have been performed involving:  
- Schedule validation  
- Check tables and columns  
- Checking keys and indexes  
- Verification of stored procedures  
- Avoid duplicates. \"Functional database testing\" is a type of database testing that is used to validate the functional requirements of a database from the end user's perspective. The main purpose is to test whether the transactions and operations performed by the end-users related to the database work as expected or not. \"Non-functional testing\" in the context of database testing can be classified into different categories, according to the requirements of the application.