データフローアーキテクチャ
データフローアーキテクチャでは、ソフトウェアシステム全体が、データと操作が互いに独立している、連続した部分または入力データのセットに対する一連の変換と見なされます。このアプローチでは、データはシステムに入り、モジュールが最終的な宛先(出力またはデータストア)に割り当てられるまで、モジュールを1つずつ通過します。
コンポーネントまたはモジュール間の接続は、I / Oストリーム、I / Oバッファ、パイプ、またはその他のタイプの接続として実装できます。データは、サイクルのあるグラフトポロジ、サイクルのない線形構造、またはツリータイプの構造でフローできます。
このアプローチの主な目的は、再利用と変更可能性の品質を達成することです。これは、コンパイラーやビジネスデータ処理アプリケーションなど、明確に定義された一連の独立したデータ変換または規則正しく定義された入力と出力の計算を伴うアプリケーションに適しています。モジュール間の実行シーケンスには3つのタイプがあります-
- バッチシーケンシャル
- パイプとフィルターまたは非順次パイプラインモード
- プロセス制御
バッチシーケンシャル
バッチシーケンシャルは古典的なデータ処理モデルであり、データ変換サブシステムは、前のサブシステムが完全に通過した後にのみプロセスを開始できます。
データのフローは、あるサブシステムから別のサブシステムに全体としてデータのバッチを運びます。
モジュール間の通信は、連続するサブシステムによって削除できる一時的な中間ファイルを介して行われます。
これは、データがバッチ処理され、各サブシステムが関連する入力ファイルを読み取り、出力ファイルを書き込むアプリケーションに適用できます。
このアーキテクチャの一般的なアプリケーションには、銀行や公共料金の請求などのビジネスデータ処理が含まれます。
利点
サブシステムのより単純な分割を提供します。
各サブシステムは、入力データを処理し、出力データを生成する独立したプログラムにすることができます。
短所
高遅延と低スループットを提供します。
並行性とインタラクティブなインターフェースを提供しません。
実装には外部制御が必要です。
パイプとフィルターのアーキテクチャ
このアプローチは、連続するコンポーネントによるデータの増分変換に重点を置いています。このアプローチでは、データのフローはデータによって駆動され、システム全体がデータソース、フィルター、パイプ、およびデータシンクのコンポーネントに分解されます。
モジュール間の接続はデータストリームであり、バイト、文字、またはその他の種類のストリームである先入れ先出しバッファです。このアーキテクチャの主な機能は、同時実行と増分実行です。
フィルタ
フィルタは、独立したデータストリームトランスフォーマーまたはストリームトランスデューサーです。入力データストリームのデータを変換して処理し、変換されたデータストリームをパイプに書き込んで、次のフィルターで処理します。インクリメンタルモードで動作し、接続されたパイプを介してデータが到着するとすぐに動作を開始します。フィルタには2つのタイプがあります-active filter そして passive filter。
Active filter
アクティブフィルターを使用すると、接続されたパイプでデータをプルインおよびプッシュアウトできます。パッシブパイプで動作し、プルとプッシュの読み取り/書き込みメカニズムを提供します。このモードは、UNIXパイプおよびフィルターメカニズムで使用されます。
Passive filter
パッシブフィルターを使用すると、接続されたパイプでデータをプッシュインおよびプルアウトできます。これは、フィルターからデータをプルし、次のフィルターにデータをプッシュするアクティブパイプで動作します。読み取り/書き込みメカニズムを提供する必要があります。
利点
過剰なデータ処理に対して同時実行性と高スループットを提供します。
再利用性を提供し、システムのメンテナンスを簡素化します。
フィルタ間の変更可能性と低結合を提供します。
パイプで接続された任意の2つのフィルターを明確に分割することにより、シンプルさを提供します。
順次実行と並列実行の両方をサポートすることにより、柔軟性を提供します。
短所
動的な相互作用には適していません。
ASCII形式でデータを送信するには、最小公分母が必要です。
フィルタ間のデータ変換のオーバーヘッド。
フィルタが協調して相互作用して問題を解決する方法を提供しません。
このアーキテクチャを動的に構成することは困難です。
パイプ
パイプはステートレスであり、2つのフィルター間に存在するバイナリストリームまたは文字ストリームを伝送します。データストリームをあるフィルターから別のフィルターに移動できます。パイプは少しのコンテキスト情報を使用し、インスタンス化の間に状態情報を保持しません。
プロセス制御アーキテクチャ
これは、データがバッチシーケンシャルでもパイプラインストリームでもないタイプのデータフローアーキテクチャです。データの流れは、プロセスの実行を制御する一連の変数から取得されます。システム全体をサブシステムまたはモジュールに分解し、それらを接続します。
サブシステムの種類
プロセス制御アーキテクチャには、 processing unit プロセス制御変数を変更するための controller unit 変化量を計算するため。
コントローラユニットには、次の要素が必要です。
Controlled Variable−制御変数は、基礎となるシステムの値を提供し、センサーで測定する必要があります。たとえば、クルーズコントロールシステムの速度。
Input Variable−プロセスへの入力を測定します。たとえば、温度制御システムの還気の温度
Manipulated Variable −操作変数値は、コントローラーによって調整または変更されます。
Process Definition −一部のプロセス変数を操作するためのメカニズムが含まれています。
Sensor −制御に関連するプロセス変数の値を取得し、操作された変数を再計算するためのフィードバック参照として使用できます。
Set Point −これは制御変数の望ましい値です。
Control Algorithm −プロセス変数の操作方法を決定するために使用されます。
アプリケーションエリア
プロセス制御アーキテクチャは、次のドメインに適しています-
システムがプロセス制御変数データによって操作される組み込みシステムソフトウェア設計。
アプリケーションは、プロセスの出力の指定されたプロパティを指定された参照値に維持することを目的としています。
車のクルーズコントロールおよび建物の温度制御システムに適用できます。
自動車のアンチロックブレーキ、原子力発電所などを制御するためのリアルタイムシステムソフトウェア。