データフロー
ソフトウェアアーキテクチャとしてのデータフローは、ある変数の値が変更されたときに他の変数の値を自動的に再計算させるという考え方(リアクティブプログラミング(英語版))に基づいている。
データフロー言語はその原理を取り入れたもので、その意味では表計算ソフトが最も一般的な例であろう。例えば、表計算ソフトでは、あるセルに他のセルの値を使った計算式を対応付けることができる。そして、任意のセルの値を変更すると、自動的にその値に依存している他のセルの再計算が行われる。これは依存関係がある限りずっと続く。
データフロー技術は数値の再計算だけに限られない。例えば、マウスの動きに対応して絵を再描画するとか、周囲の明るさの変化に対応してロボットが反応するといったこともデータフロー的な考え方に基づいている。
データフローの利点の1つとして、プログラム内のコードの結合度を減らすことができる点が挙げられる。例えば、変数 X が 変数 Y に依存しているとする。
データフローアーキテクチャは、ノイマン型や制御フローアーキテクチャと正反対のコンピュータ・アーキテクチャを意味する。データフローアーキテクチャではプログラムカウンタを持たないか、(少なくとも概念的には)命令の実行が入力引数が使用可能となった時点で行われる。このような計算方式をデータ駆動という。データフローアーキテクチャを採用したコンピュータで商業的に成功したものはないが、データベースエンジン設計や並列コンピューティングフレームワークなどの各種ソフトウェアアーキテクチャは概念としてデータフローアーキテクチャを採用している。しかし、部分的にはアウト・オブ・オーダー実行として、大きな成功を収めている。