A method and architecture is described that discovers software application
metadata and generates data access applications based on the discovered
software application metadata. The discovered metadata along with
handcrafted metadata goes through a discovery process and is converted
into common, generic abstract metadata objects. The abstract metadata
objects then go through an instantiation process to be translated into
concrete metadata objects that represent the unique configuration,
context and terminology of the source software application. The concrete
metadata objects can be generated into numerous forms for the purposes of
data access and information sharing. The system also has upgrade
protection.