1. A computer-implemented method of generating an embedded system ( 4999 ) comprising a parallelized hardware and/or software implementation of an original computer program ( 996 ), which parallelized implementation satisfies one or more criteria regarding hardware constraints of the embedded system ( 4999 ), the method comprising the steps of: subjecting ( 1000 ) the original computer program ( 996 ) to static program analysis, comprising compiling the original computer program into an executable to obtain structural program models comprising control data flow graphs ( 1157 ) with static data dependencies and static data types, and to dynamic program analysis, comprising executing the executable on a host computer using test data, capturing the interactions with the memory of the host computer during the executing of the executable to identify sets of load and store operations of the original computer program that access the same memory locations as dynamic data dependencies, and capturing execution counts of code sections, to obtain behavioral program models, deriving ( 2000 ) a preferred design ( 3999 ) that satisfies the one or more criteria regarding hardware constraints using the obtained structural and behavioral program models, and building ( 4000 ) the embedded system ( 4999 ) by transforming the design ( 3999 ) to a parallelized implementation that comprises a plurality of parallel processes that execute in software and/or hardware, characterized in that the step of subjecting ( 1000 ) the original computer program to the static and the dynamic program analysis is performed on a version of the original computer program ( 996 ) in which load and store instructions are annotated with information that links these instructions back to a specific part of a control-dataflow graph ( 1157 ), the step of subjecting ( 1000 ) comprises adding to the structural and the behavioral program models indications of memory dependencies and indications of streaming dependencies, the step of deriving ( 2000 ) the design ( 3999 ) comprises using the structural and behavioral program models and providing information about mutually parallel implementation of each part of the preferred design ( 3999 ), which step comprises a) introducing a separation into different partitions of load and store instructions that have a detected streaming dependency between them, using the added indications of streaming dependencies from the models, b) introducing a separation into different partitions of load and store instructions that have a detected memory dependency with synchronization protection between them, using the added indications of memory dependencies from the models, c) retaining in a single partition load and store instructions that have another detected memory dependency between them, using the added indications of memory dependencies from the models, the step of deriving ( 2000 ) the design ( 3999 ) further comprising a step of adding to the structural and behavioral program models indications of source lines and variables in said original computer program to relate the introduced partitions and the detected dependencies in the program model with locations in the original program source code, and the step of building ( 4000 ) the embedded system ( 4999 ) comprising specifying the preferred design ( 3999 ) by means of a series of changes to be made to the original computer program ( 996 ) based at least in part on the added indications, applying the series of changes to the original computer program ( 996 ), and using the thus-changed original computer program ( 996 ) in the building of the embedded system ( 4999 ).