My Answers ...
Maximizing number of processors used
Minimizing execution time
Minimizing the amount of work performed
Reducing size of memory footprint
Maximizing (minimizing) degree of data sharing
Reducing data motion (interprocessor comm.)
Maximizing synchroneity or maybe asynchroneity
Guaranteeing portability among platforms
Balancing work load across processors
Maximizing programming convenience
Avoiding races, guaranteeing determinacy
Improve SoftEng... robust, maintain, debug, etc