digraph DP { rankdir=TB; graph [fontname = "Helvetica"]; node [fontname = "Helvetica" ]; /* {rank=same: IDEA FEASIBILITY "SKETCH \n DESIGN" "DETAIL \n DESIGN";} */ /* {rank=same: problem need "revision \n renewal";} */ /* {ran=same: "essential \n details" ;} */ /* {rank=same: specifications sketches ;} */ /* {rank=same: approval decision ;} */ /* {rank=same: "user \n testing" "user \n feedback";} */ /* {rank=same: implementation documentation} */ /* inception */ subgraph cluster0 { node []; color = white; IDEA[sides=4,color=black]; problem -> IDEA; need -> IDEA; "revision \n renewal" -> IDEA; IDEA -> i_sketches; } /* feasibility */ subgraph cluster1 { node []; color = white; FEASIBILITY[shape=box]; "essential \n details" -> FEASIBILITY; FEASIBILITY -> specifications[style=bold]; specifications -> FEASIBILITY; } /* sketch design */ subgraph cluster2 { node []; color = white; "SKETCH \n DESIGN"[shape=box]; sketches -> "SKETCH \n DESIGN"[style=bold]; } /* approval and decision */ subgraph cluster3 { node []; color = white; approval -> decision[style=bold]; } /* user testing */ subgraph cluster5 { node []; color = white; "user \n testing" -> "user \n feedback"; } /* user testing */ subgraph cluster6 { node []; color = white; "DETAIL \n DESIGN" [shape=box]; "DETAIL \n DESIGN" -> implementation; "DETAIL \n DESIGN" -> documentation; } IDEA -> FEASIBILITY [style=bold,weight=1]; i_sketches -> FEASIBILITY; FEASIBILITY -> sketches[style=bold]; "SKETCH \n DESIGN" -> approval[style=bold,weight=8]; approval -> specifications[style=dotted]; "SKETCH \n DESIGN" -> "user \n testing"[style=dashed]; "user \n feedback" -> approval[style=dashed]; decision -> "DETAIL \n DESIGN"[style=bold]; specifications -> "SKETCH \n DESIGN"[style=dotted]; specifications -> "essential \n details"[style=dotted]; }