Within the framework of a distributed system, the use of a logic component can be made only through transitional virtual components, joining the parent logic component with the child component, the child component being the one having an incoming dependency towards the virtual communication component.
The actual framework of the study ignores as much the implementation of the virtual component as of the internal implementation of a logic component. So, when a logic component is not yet using the communication links, for example during component startup, it affects virtual components without impacting the rest of the solution.
Virtual components are quantifiable risks within the framework of the study. Their implementations are not internal to the logic components of the solution, so assumptions can then be issued. When deploying a software solution, the environment can be known in advance, and some knowledge of the environment allows reduction of risk. This is not the case for all software solution deployments: for example, solutions from independent software vendors must be designed to be deployed in heterogeneous environments, which changes how we evaluate their availability.
The context of an independent solutions vendor is different: the deployment environment is neither controlled nor known in advance. The only characteristics known to it are those directly connected to the logic components of the solution.
Conversely, the vendor may proactively break up the solution into components in order to have greater flexibility when deploying in a targeted environment. Each component can combine a certain number of features which can be deployed differently depending on the environment. This minimizes the impact of the unavailability of a virtual component, by limiting the number of logic components depending on the same virtual component.
The breakup may, conversely, have a negative impact on the solution. The complexity is increased, as much due to the integration of links allowing communication between logic components, as due to execution speed, which is impacted by communication links that can be slower than the internal processing of a logical component. Breakup can provide better availability, but can also have negative impacts on other measures of quality for the solution. While aware that breakup can have a negative impact, the quality of the breakup will remain outside the scope of the current analysis.
When the services of the software solution stay identical and there is an increase in the number of components, the distribution opportunities increase. In return, this distribution adds virtual components to the software solution; these components may be virtual components associated with the new communication links between the logic components or virtual components that must be added due to the dispersal of the solution.
The implementation of a component being abstract, it must be assumed that each component of the solution offers a different service from those offered by the other components. The services offered by each component of the software solution are therefore unique, and the increase in number of components, as well as their distribution, therefore increases the risk of downtime.