The purpose of this thesis is to investigate methods for the solution of multiscale problems both from the mathematical and numerical point of view, with a particular concern on applications to flows through heterogeneous porous media. After an overview of the recent developments in this vast field, a study of two representative multiscale techniques is carried out. The multiscale finite element method and a conjugate gradient iterative method preconditioned with an overlapping Schwarz domain decomposition preconditioner are compared in the one-dimensional case. Both methods are well suited for parallel environments and have comparable performance and accuracy. Then, we focus our attention on an aggregation-based two-level overlapping Schwarz domain decomposition preconditioner. We study its theoretical properties and show its robustness to mesh refinement as well as to strong variations in the multiscale coefficients of our model problem. We carry out a convergence analysis to give upper bounds for the condition number of the preconditioned linear system arising from the finite element discretization of the problem at hand. We make explicit the relation between the multiscale coefficient and the coarse space basis functions and show that the condition number can be bounded independently of the ratio of the values of the multiscale coefficient even when the discontinuities in the coefficient are not resolved by the coarse mesh. A new aggregation algorithm is proposed according to the suggestions issuing from the theory which builds a coarse space able to cope with the multiscale coefficient. Numerical experiments on various configurations show that the bounds are sharp and that the method is robust with respect to strong variations. Finally, an application of this preconditioning technique to a two-phase flow problem is presented in order to investigate its performance.