Edge label placement

Here is a (maybe) fix to make the edge “curvier”. But note that dot produces unsatisfactory results for many variations on this theme.

digraph test {
  label="Caption"
  concentrate=true

  {
    rank="same"
    B,C,D
  }

  A:n -> B[label="A\ndepends\non B"]
  C -> B[label="Unordered\nconstraint", dir="both", arrowhead="onormal", arrowtail="onormal", style="dashed"]
  A:nw -> C[color="red"]
  C:ne -> D:nw [color=red label="  " ]  // trying to make the visible version "curvier"
  C:n-> D:n [color="invis" ]
  D -> A[label="Def. loop", color="red"]
  B -> D[label="Requirement", style="bold", color="forestgreen"]
}

Giving:

Here are three forum entries about edges & edge labels. With luck, they should help you place your edges and labels more to your liking.