1. A computer implemented method, comprising: separating a file comprising source code into a plurality of subroutines and a plurality of data elements; determining a relationship between a first subroutine, a second subroutine of the plurality of subroutines, and at least one of the plurality of data elements; creating a first signature of the first subroutine and a second signature of the second subroutine, the first and second signatures based on the at least one of the plurality of data elements; storing the first signature and the second signature in a data structure, the data structure configured to indicate the relationship between the first subroutine, the second subroutine, and the at least one data element; comparing the first signature to a new first signature based on a modification of the first subroutine; and determining whether the relationship between the modified first subroutine and the second subroutine has changed and, if the relationship has changed, updating the data structure with the new first signature based on the changed relationship; and determining whether to recompile the second subroutine based on the data structure and the new first signature.