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