Set-based analysis is a constraint-based whole program analysis that is applicable to functional and objectoriented programming languages. Unfortunately, the analysis is useless for large programs, since it generates descriptions of data ow relationships that grow quadratically in the size of the program. This paper presents componential set-based analysis, which is faster and handles larger programs without any loss of accuracy over set-based analysis. The design of the analysis exploits a number of theoretical results concerning constraint systems, including a completeness result and a decision algorithm concerning the observable equivalence of constraint systems. Experimental results validate the practicality of the analysis. 1 The E ectiveness of Set-Based Analysis Rice's Scheme program development environment provides a static debugger, MrSpidey, which analyzes a program and, using the results of this analysis, checks the soundness of all computational primitives 9]. If a pr...