The free lunch of ever increasing clock frequencies is over. Performance-critical sequential software must be parallelized, and this is tedious, hard, buggy, knowledge-intensive, and time-consuming. In order to assist software engineers appropriately, parallelization tools need to consider detection, transformation, correctness, and performance. This paper introduces a pattern-based process model that assists in all of these parallelization tasks and facilitates transforming legacy software that had not been developed with multicore in mind. We introduce a parallelization approach for existing software artifacts. It detects parallelizable locations and transforms them to common parallel patterns. Our approach uses optimistic parallelization strategies and generates a semantic model from static and dynamic information. Using this mode, we detect parallel patterns together with runtime-relevant tuning parameters. Our process model covers the detection of parallelizable regions, the identification of appropriate parallelization strategies. It enhances traditional parallelization processes to additionally address correctness and perform ... mehrance validation. We implemented the pattern-based process model in Patty, a tool that actively assists engineers in the tedious and error-prone task of software parallelization. This paper also contains a user study that compares the effectivity of optimistic pattern-based parallelization as implemented in Patty to 1) a popular commercial parallelization tool and 2) to pure manual parallelization. We demonstrate that our approach receives the best average scores from its users while delivering the best results within the least amount of time. In our user study Patty outperforms both control groups in subjective and objective indicators. Patty achieves parallel performance comparable to a skilled parallel software engineer within minutes rather than days of work. This makes our approach attractive for experts and inexperienced software engineers alike.