1. A method of restructuring a source computer program to a target computer program, the method comprising: defining a source computer program P that consists of source code, said source code of the source computer program P comprising a main function F 0 and a set of functions {F 1 , F 2 ,. .. F r }, wherein F 1 , F 2 ,. .. F r are each a function other than the main function F 0 and are each adapted return a value to the main function F 0 as a result of being executed in response to being called by the main function F 0 , wherein each function in the set of functions { 1 , F 2 ,. .. F r } is external to the main program F 0 and comprises one or more statements and/or declarations, and wherein r is at least 1; defining for said source computer program P, a set of tasks T={T 1 ,T 2 ,. .. T n } able to be performed by said source computer program P, wherein n is at least 1; determining, for each task T i in said set of tasks T, a corresponding set of input data sets U i ={u i1 ,u i2 ,. .. u ip } for task T i , wherein p is a function of i denoted as p(i) such that p(i) is at least 1, and wherein each input data set u ij in U i consists of an explicit data value of at least one variable in P; and determining, for each set of input data sets U i ={u i1 , u i2 ,. .. u ip } a corresponding set of programs {c il , c i2 ,. .. c ip } such that each program c ij in the set of programs {c i1 , c i2 ,. .. c ip } comprises declarations and executable statements from the source code of P required to execute task T i for input data set u ij in U i ; processing each set of programs{c i1 , c i2 ,. .. c ip }to generate a component C i adapted to execute the respective task T i , said processing resulting in generation of a set of components C={C 1 , C 2 ,. .. C n }; and generating a target computer program P R from the set of components C, such that P R comprises a main program H 0 and a set of functions H={H 1 , H 2 ,. .. H n }.