1. A computer-implemented method comprising: receiving, at a control device, information from an application program executing on a computing device, wherein the information comprises data associated with an architecture of the application program; generating, at the control device, a representation of the architecture of the application program based on the information received from the application program, wherein generating a representation of the architecture of the application program comprises generating a text file identifying the functions of the application program that process the message at runtime, and the invocation relationships between the functions that process the message; comparing, at the control device, the representation of the architecture of the application program to representations of predefined reference architectures stored in a memory, wherein comparing comprises comparing the text file to reference text files representing predefined reference architectures; and validating, at the control device, the architecture of the application program based on a result of the comparing, wherein validating the architecture of the application program based on a result of the comparing comprises: validating the architecture of the application program if the architecture matches one of the predefined reference architectures to within a predefined threshold: and recommending an architecture for the application program if the representation of the architecture does not match the representation of the predefined reference architecture to within the predetermined threshold, wherein the recommended architecture is recommended according to a predetermined similarity threshold and providing recommendations for altering the architecture of the application program to conform with the recommended architecture.