1. A computer-implemented method for automatically extracting a design from source code comprising: identifying branching and looping commands in a code section; extracting process kernel code segments, connected by either branching or looping structures, from the code section; extracting control kernels from the code section; encapsulating the control kernels as state machines; encapsulating the process elements as process kernels; and associating meta-data with the control and process elements; and wherein the meta-data is used to associate the extracted process kernels and the extracted control kernels with code other than the original code used in the extracting steps.