checksumsはお互い何の関係もない、ただ同じ値の型を持つ二つのキーで片方がタスクというだけだ。エイリアスにすることはできるが、その逆はできない。checksums.value逆方向への依存、つまりタスクの値に依存したセッティングキーの値を定義することはどうしてもできない。セッティングキーの値はプロジェクトのロード時に一度だけしか計算されず、毎回再実行されるべきタスクが毎回実行されなくなってしまうからだ。実行のタイミングという観点から見ると、セッティングはロード時に評価される特殊なタスクと考えることができる。name.value実用的な例もみてみる。場合のみ別のディレクトリに再配線する。セッティングやタスクの有向非巡回グラフを構築するためのドメイン特化言語だ。セッティング式はセッティング、タスク、そしてそれらの間の依存性をエンコードする。対象の依存性が既にビルドされたかを調べて、ビルドされていないものをビルドする。順番にシステムコマンドを実行する。いう名前の対象を選択する。いう対象の依存性がビルド済みかを調べる。2つの対象を列挙する。リンクするシステムコマンドが実行される。これを依存性指向プログラミングもしくはフローベースプログラミングだと考えることができる。ハイブリッドシステムに分類される。いったツールにも受け継がれている。ブレークスルーは、アクションをシステムコマンドの代わりにプログラミング言語を使って記述したことだ。ハイブリッド・フローベースプログラミングの利点ビルドをこのように構成する動機がいくつかある。フローベースプログラミングではあるタスクが複数のタスクから依存されていても一度だけしか実行されない。依存していたとしても、実際のコンパイルは唯一一回のみ実行される。タスクグラフを用いることでタスクエンジンは相互に非依存なタスクを並列にスケジュールすることができる。第三は関心事の分離と柔軟さだ。タスクグラフはビルドの作者が複数のタスクを異なる方法で配線することを可能にする。プラグインはコンパイルやライブラリ依存性の管理といった機能を再利用な形で提供できる。