1. A method of generating test cases for functional testing of a software application, said method comprising: maintaining a plurality of rules, each rule specifying a corresponding one of a plurality of patterns in a natural language and a corresponding template, wherein each of said plurality of patterns comprises a corresponding set of variables and corresponding words of the natural language together in an ordered sequence, wherein each template indicates a corresponding set of test cases; receiving a design document containing a plurality of statements, each statement containing words of said natural language; determining a first statement of said plurality of statements matching a first pattern specified in a first rule of said plurality of rules, wherein a match is deemed to exist if the words in the first pattern exist in the first statement in the same corresponding positions of said ordered sequence, and if said first statement also contains values for each of said corresponding set of variables specified in said first pattern; and generating a set of test cases indicated by a first template specified in said first rule based on the values for each of said corresponding set of variables.