1. A method for automatically generating a user interface for a computer program using programming patterns, the method comprising: analyzing application objects of an application computer program to identify programming patterns, wherein each programming pattern is a relationship among signatures of application methods in one of the application objects, and wherein the signatures of the application methods comprise public interfaces of the application methods; automatically generating a user interface for the computer program, wherein automatically generating a user interface includes providing for at least one of a user and a programmer of the computer program to customize mappings between the application objects and user interface elements, wherein the user interface elements include at least one of user interface widgets and speech grammar rules, wherein the identified programming patterns include at least one of an undo pattern, a structure pattern, a graphical pattern, a validation pattern, and a precondition pattern, and wherein the undo pattern identifies, for each application method a pattern-based executed-command-object that can undo/redo the method, wherein the pattern-based executed-command-object comprises an executed-command object that uses at least one of: (a) relationships among the signatures of the application methods in and (b) antonym dictionaries to implement the undo and redo operations, and wherein the executed-command object is an object that provides operations to undo and redo each application method.
9. The method of claim 1 wherein the structure pattern identifies the logical components of an object, and the read, write, add and remove methods of each identified logical component.