1. A computer implemented method for optimizing the performance of one or more software components, the method comprising: identifying at least two constituent software components for parallel execution, wherein the software components comprise a software application, workflow, process, or a software component implementing at least one discrete functionality; executing the identified software components; profiling the performance of the one or more software components at an execution time, wherein profiling comprises gathering a set of data related to one or more performance characteristics of the one or more software components at runtime; creating an optimization model with the set of data gathered from profiling the execution of the one or more software components, wherein criteria involved in the design of the optimization model comprises a resource requirement for executing a software component or a cost-benefit evaluation associated with an overhead involved in the execution of a software component in parallel with other identified software components; and marking at least two software components for execution in parallel in a subsequent execution on the basis of the optimization model.