16. A system for customizing a software application, the system comprising: a repository configured to store a base metadata document and a plurality of customization documents, wherein the base metadata document defines one or more characteristics of at least a portion of the software application, wherein the plurality of customization documents define modifications to the base metadata document, and wherein the plurality of customization documents are stored separately from the base metadata document; and a processor configured to: receive the base metadata document; identify the plurality of customization documents by: determining a plurality of customization levels associated with the base metadata document, each of the plurality of customization levels representing a scope for which the base metadata document can be customized, the plurality of customization levels being determined by accessing a configuration file comprising mappings between customization levels and base metadata documents, wherein the plurality of customization levels are sorted in a precedence order; and identifying a customization document for each customization level in the plurality of customization levels, wherein the customization document is identified based on one or more runtime attributes corresponding to the customization level; and generate a customized metadata document by applying the plurality of customization documents to the base metadata document in the precedence order.
16. A system for customizing a software application, the system comprising: a repository configured to store a base metadata document and a plurality of customization documents, wherein the base metadata document defines one or more characteristics of at least a portion of the software application, wherein the plurality of customization documents define modifications to the base metadata document, and wherein the plurality of customization documents are stored separately from the base metadata document; and a processor configured to: receive the base metadata document; identify the plurality of customization documents by: determining a plurality of customization levels associated with the base metadata document, each of the plurality of customization levels representing a scope for which the base metadata document can be customized, the plurality of customization levels being determined by accessing a configuration file comprising mappings between customization levels and base metadata documents, wherein the plurality of customization levels are sorted in a precedence order; and identifying a customization document for each customization level in the plurality of customization levels, wherein the customization document is identified based on one or more runtime attributes corresponding to the customization level; and generate a customized metadata document by applying the plurality of customization documents to the base metadata document in the precedence order. 20. The system of claim 16 , wherein the processor is configured to use the customized metadata document to generate a user interface of the software application.