The Universal Data Model (UDM) is a metaprogrammable tool for providing uniform access to data structures that could be persistent. The tool uses UML class diagram as the language for defining the data structures and it generates C++ or Java class definitions for implementing the classes. Each attribute and association will have a corresponding setter/getter method in the generated code. The generated class implementations are handles pointing to generic objects that provide the real implementation: these generic objects can be persistent and be mapped into: XML files, GME project files, database tables, or CORBA structures. For each kind of generic object there is a separate back-end library that implements the objects in terms of the underlying technology (XML structures, GME objects, database tables, CORBA structs).