Multicore technologies have increased the peak performance of computing systems during the last decade. However, unlike previous advances in computer architecture, existent code cannot immediately take advantage of these architectures improvements. To fully exploit multicore capabilities, programmers should parallelize their applications, a difficult task that requires an in-depth knowledge of both the application and the underlying computer architecture. Parallelization techniques such as Thread-Level Speculation (TLS) eases this task, ensuring that the parallel code satisfies the sequential semantics. Nevertheless, this technique also requires manual and tough intervention by expert programmers. This Ph.D. thesis addresses this problem defining a new OpenMP clause, called speculative, which points out those variables that may lead to dependency violation, and a compile-time system that seamlessly translates this new OpenMP clause into calls to our TLS runtime system. This ensures that all accesses to these speculative variables will be carried out according to sequential semantics, and frees programmers from the manual augmentation of the source code required by the speculative parallelization. Before instrumenting a loop with OpenMP constructs, including our proposed speculative clause, programmers firstly need to extract certain information about the source code that they aim to parallelize. Without automatic tools, programmers have to manually extract the information. This Ph.D. thesis also addresses the problem of automatic characterization and coverage of sequential loops, with the aim of finding parallelization niches in widely-used benchmarks that may benefit from softwarebased speculative parallelization. To do this, we have proposed a system that takes advantage of an XML-based representation of the source and combines profiling information to extract all this information. Besides, we have also proposed a system that leverages this information, automatically synthesizing and generating the OpenMP constructs needed to parallelize the source code speculatively. We believe that the implementation of the new OpenMP clause in a mainstream compiler, together with the automation of the whole process of the parallelization, will help thread-level speculation to be mature enough for its production use.