A computer-implemented method for software specification translation including: receiving a software specification comprising: a first program specified in a first procedural programming language, the first program defining one or more data processing operations that interact with one or more datasets; a second program specified in a second procedural programming language, the second program defining one or more data processing operations that interact with one or more datasets; a third program specified in a third programming language, the third program defining one or more data relationships between the one or more datasets of the first program and the one or more datasets of the second program and being configured to impose a decision-based controlled flow of execution and to reference the first and second programs; forming a representation of the first program in a fourth programming language different from the first, second, and third programming languages, said fourth programming language being a dataflow based programming language; forming a representation of the second program in the fourth programming language; analyzing the third program to identify the one or more data relationships; and forming a combined representation of the first program and the second program in the fourth programming language including forming dataflow connections in the fourth programming language between the representation of the first program in the fourth programming language and the representation of the second program in the fourth programming language according to the identified one or more data relationships. receiving a software specification comprising: a first program specified in a first procedural programming language, the first program defining one or more data processing operations that interact with one or more datasets; a second program specified in a second procedural programming language, the second program defining one or more data processing operations that interact with one or more datasets; a third program specified in a third programming language, the third program defining one or more data relationships between the one or more datasets of the first program and the one or more datasets of the second program and being configured to impose a decision-based controlled flow of execution and to reference the first and second programs; a first program specified in a first procedural programming language, the first program defining one or more data processing operations that interact with one or more datasets; a second program specified in a second procedural programming language, the second program defining one or more data processing operations that interact with one or more datasets; a third program specified in a third programming language, the third program defining one or more data relationships between the one or more datasets of the first program and the one or more datasets of the second program and being configured to impose a decision-based controlled flow of execution and to reference the first and second programs; forming a representation of the first program in a fourth programming language different from the first, second, and third programming languages, said fourth programming language being a dataflow based programming language; forming a representation of the second program in the fourth programming language; analyzing the third program to identify the one or more data relationships; and forming a combined representation of the first program and the second program in the fourth programming language including forming dataflow connections in the fourth programming language between the representation of the first program in the fourth programming language and the representation of the second program in the fourth programming language according to the identified one or more data relationships.