Embedded software design for a multicore platform involves parallel programming for heterogeneous multiprocessors with diverse communication architectures under design constraints such as hardware cost, power, and timeliness. Since the classical von Neumann programming model assumes sequential execution of programs, it is not adequate for MPSoC SW development. Thus new programming models and corresponding SW development tools that are capable of exploiting the available parallelism and ensuring satisfaction of design constraints, are necessary.