Constraint based scheduling to deal with uncertain durations and self timed execution