イベント相関子を書く予定です。システムの基本的な部分は、記録された状態とログ ファイルに基づいて障害の原因を認識する巨大な決定ツリーになります。主な懸念事項の 1 つは、そのツリーを維持しやすくすることでした。つまり、プログラマーが簡単に理解して編集できる形式で記述します。 .
7 レベルの入れ子になった if() は、「保守可能で理解しやすい」という私の考えではないため、マシンフレンドリー、ユーザー フレンドリー、および効率的なコスト。明白な答えは、実際のイベント コリレータが記述される C++ にコンパイル可能なドメイン固有の言語を使用することでした。明らかな問題は、その DSL がどのように見えるべきかということでした。
私が最も気に入った提案は、UML アクティビティ図を使用し、それを C++ にコンパイルすることでした。ダイアグラムは、意思決定プロセスによって到達した結論として、ほぼ厳密に意思決定で構成され、アクティビティはツリーのリーフのみで構成されます。本質的に、図は私のグラフィカル DSL であり、C++ で大量の if() にコンパイルする必要があります。すべての条件付き関数を手動で作成する必要はありますが、少なくとも条件間の相互接続はシステムによって処理される必要があります。
では、その図を作成するにはどのツールを使用すればよいでしょうか?
「独自のロール」はコスト効率の良い私の考えではないため、最終的には 1 つのデバイスに対して 1 つの単一の図を作成することを考えると (新しい障害モードが発見されると、永遠に編集される可能性が高いとしても)、私は持っていました。統一モデリング言語ツールのリスト を見てください。
「Languages generated」に「C++」がリストされているものを含め、これらのかなりの数がありますが、現実がそれほど良いものではないことはわかっています.クラス図。決定木を含むファイルが必要です。私が手で書く決定関数呼び出しで事前に満たされた条件を持つ一連の条件ステートメントと、特定の結論関数呼び出しとしての結果。
さて、私の質問は、どれがそれを行うことができ、使用がそれほど難しくなく、高価でもありません.無料のツールが好まれますが、手頃な価格の商用ツールも問題ありません.
または、それに失敗した場合-自作の「コンパイラ」で解析できる形式でそのダイアグラムを保存できるものと、そのコンパイラの作成にアプローチする方法。
もちろん、他の提案も大歓迎です。そのようなコードを生成できる昔ながらのフロー図のツールでしょうか? 必要なものを作成するための専用の DSL が既に存在するのではないでしょうか?