Numerous methods exist in the literature for decomposing mathematical programming (MP) problems. The question for the designer wishing to utilize any of these methods is, what (if any) structure exists in a particular problem, and what (if any) decomposition method(s) may be appropriate for the problem at hand. The paper develops a formal methodology, termed Decomposition Analysis, to answer this question. Decomposition of a mathematical programming problem requires identification of linking variables or functions which effect independent optimization problems. Examination of prevalent methods reveals various structures in an MP problem which determine appropriate decomposition methods for a particular problem. An undirected graph representation of the MP problem facilitates rigorous identification of the desired structures that allow decomposition. The representation is the foundation of the methodology to analyze any particular MP problem for its decomposability.