1. A computer executed method of determining compatible versions of dependent entities of a root entity having a specified version in a computer system, the method comprising: building a directed graph comprising the dependent entities; dividing the directed graph into multiple levels; determining which level of the multiple levels each dependent entity belongs to; dividing each level into one or more isolated subsets; and determining compatible versions for all entities in upper levels of the directed graph before determining compatible versions for any entity in lower levels of the directed graph; wherein building the directed graph comprises: representing the entities by nodes and dependency relationships between the entities by edges; and putting a directed edge from a first node to a second node which is dependent on the first node and referring to the first node as a parent node and the second node as a child node; wherein the directed graph is divided into levels in such a way that no node of a given level is dependent on a node of a lower level; and wherein dividing the directed graph into multiple levels comprises: putting a root node representing the root entity in a first level of the directed graph and all of said root node's child nodes into a new level and then for each level of the directed graph: a. including in the current level all nodes which are interdependent directly or indirectly with the nodes already included in the current level; b. pushing into a next level of the directed graph all those nodes from the current level that are dependent on nodes which have not yet been assigned to a level; and c. putting all the child nodes of parent nodes in the current level into the next level of the directed graph if said child nodes have not already assigned to a level; and repeating a) to c) until all nodes have been assigned to a level of the directed graph.