The eigenvalue problem arises in many scientific areas, e.g., when solving partial differential equations, in model reduction or computing matrix functions. If the problems are of moderate size (less than 10^6) they can be addressed with direct methods, such as the QR algorithm or the divide-and-conquer method. However, if the problem is large-scale and only few solutions are required compared to the size of the problem, iterative methods can be more efficient. Furthermore, iterative methods can provide better speedups in high-performance architectures such as distributed memory parallel platforms, where there are several computational nodes with private memory address spaces and they can only share information and synchronize by message passing. This thesis addresses the implementation of Davidson methods, specifically the Generalized Davidson and Jacobi-Davidson methods, a class of iterative methods that can be competitive in particularly difficult cases such as calculating eigenvalues inside the spectrum or when the matrix factorization is prohibitive or inefficient, and only incomplete factorizations are available. The implementation is developed in SLEPc (Scalable Library for Eigenvalue Problem Computations), a free software library for solving large-scale eigenvalues problems, quadratic eigenvalue problems and singular value problems, among others. As a result of this thesis, SLEPc includes an implementation of Generalized Davidson and Jacobi-Davidson for standard and generalized problems, both Hermitian and non-Hermitian, the latter being a remarkable feature considering that non-Hermitian problems are not supported in other free parallel libraries with Davidson methods. In addition to incorporating techniques to improve the convergence of the methods, such as the harmonic Rayleigh-Ritz subspace extraction, other optimizations were realized to improve the performance, such as avoiding the complex arithmetic when the problem matrices are real (because the eigenpairs may have imaginary part) or rearranging operations in blocks to take advantage of the cache memory. Moreover, we present a new method to expand the subspace, called GD2, which provides better results compared with Generalized Davidson when the preconditioner is very far from ideal. The numerical stability and the computational performance of the implementation are evaluated with a battery of problems from real applications, and compared with other libraries like PRIMME or Anasazi. Finally, we present the integration of the implementation in two scientific applications. On the one hand, Jacobi-Davidson improves the performance of the calculations of eigenvalues with significant impact in the multiparametric studies that appear in GENE, a code that solves the gyrokinetic equations for calculating micro-instabilities in fusion plasma. On the other hand, Generalized Davidson obtains good results addressing large-scale problems that come from the discretization of the Schrödinger equation, in the context of computing the electronic configuration of atoms.