## 5 Results  
### Automated DSS for Efficient Distributed CN Selection  
The object-oriented approach was chosen for designing and developing software tools, enabling the creation of highly reliable systems that meet modern quality and user interface requirements [80]. The core of the program system was implemented in the C programming language [81], while the user interface was developed using C++ [82]. This approach enhances program portability across operating environments. Furthermore, numerous libraries of mathematical subroutines written in C significantly improve development speed and program reliability.  
Embarcadero RAD Studio, a rapid application development (RAD) environment, was selected as the toolkit for software development. This integrated development environment (IDE) accelerates the process of visual design [83]. Software products were tested during and after development to ensure quality and reliability [84]. The DSS enhances the management of complex systems. One of their primary functions is generating possible decision options acceptable to the manager [85].  
An automated DSS was developed to select an efficient structure for distributed computing CSNs considering performance, reliability, and cost. This system employs mathematical models to evaluate network performance and reliability, making it applicable to the design or modification of CN architectures for specific complex problems. The software is a Windows application, developed in C++ using the Embarcadero RAD Studio environment.  
Figure 4 illustrates the generalized structural scheme of the DSS for selecting an effective configuration of a CN.  
Figure 4: Generalized structural scheme of the DSS for selecting an effective CN configuration.  
The \"_DCS Settings_\" window is shown in Figure 5a, where users specify both the hardware profile of the client-server network and the algorithmic parameters governing the problem to be addressed. For the server tier, one defines the permissible range of processor counts and the corresponding per-core performance limits (in FLOPS), as well as the failure and recovery intensities for both CPU units and the central hub. On the client side, users indicate the distinct node classes, the quantity of nodes in each class, their minimum and maximum processing capacities, the data-link bandwidths, and the associated failure and repair rates. Algorithmically, the user must provide the average computational workload per iteration--both for the primary solution routine and its control subroutine--and the mean volume of data exchanged in each client-server interaction. Finally, a global availability constraint may be imposed by specifying the minimum acceptable uptime for the entire distributed system.  
The \"Settings and Launch of the GA\" window, as shown in Figure 5b, is where the Genetic Algorithm (GA) parameters are configured and the computational process is initiated. In this window, the optimization problem-solving process is visualized graphically, with the current non-dominated set of solutions displayed. Each point on the graph represents a particular computer network configuration that meets the availability constraint, showcasing specific performance and cost values. During program execution, users can press the \"Pause\" button to temporarily halt the process, enabling them to adjust all GA parameters except for the sampling step and the number of individuals in the population. In this window, users can configure several GA parameters, including the number of individuals in the population, the number of generations, the species selection method, the discretization step for all DCS elements, the types of crossover, and the mutation type.  
Upon selecting the \"_Suitability Graphs_\" button, the window shown in Figure 6 appears. This window displays graphs of the fitness of the best and worst individuals, as well as the average fitness of the population.  
Figure 5: (a) DCS main window: “DCS Settings”. (b) DSS main window: “Settings and Launch of the GA”.