This paper addresses the static scheduling of a directed acyclic task graph (DAG) on a heterogeneous, bounded set of distributed processors to minimize the makespan. We first derive the lower and upper bounds on the makespan of assigning a given directed acyclic task graph on heterogeneous processors by deferent scheduling strategies. Based on the analysis, we present a new heuristic, known as Heterogeneous Dynamic Critical Path Duplication (HDCPD), for scheduling DAG on a set of heterogeneous processors. HDCPD assigns the tasks on the dynamic critical path to the suitable processors which minimize the earliest finish time for them, combining insertion-based scheduling and task duplication techniques.The comparison study by simulation on Simgrid, based on randomly generated DAG, shows that HDCPD surpasses previous approaches in terms of both quality and cost of schedules, which are mainly presented with schedule length, frequency of best result, and scheduling time metrics.