1. A method for validating programs, the method comprising: receiving a language-independent description of a computer program, the language-independent description comprising a definition module and an implementation module; validating the language-independent description; generating a language-dependent program from the language-independent description, the language-dependent program comprising an interface and a class; and validating the language-dependent program.