1. A method of developing software code for executing on a target digital processor using a memory in which it maintains data structures having elements, each of the elements storing data which is represented by a label, and at least some links between the elements being created by the target processor as data is being processed, the method comprising the steps of: (a) writing the software code with data structure processing operations which comply with random structure preservation rules, and (b) a static analysis timing tool automatically: (i) parsing the code developed in step (a) to identify all operations, (ii) determining from an operation and all possible input states for that operation an average time value for execution of the operation by a target data processor, and storing said average time value, (iii) determining from the operation and all possible input states all possible output states for that operation, (iv) repeating steps (ii) and (iii) for each next operation, using the all possible output states determined in step (iii) as all possible input states, and (v) generating an output total average time which is a sum of all average times stored in step (ii); and wherein said rules require the labels to be comparable; wherein the rules require directionality in links between elements and labels are assigned to elements to respect directionality of the links; and wherein all directions of links of a data structure indicate the same label comparison ordering.