3

Alexander Stepanov や Sean Parent のような人々は、ソフトウェア設計に対する形式的で抽象的なアプローチに投票しています。
アイデアは、複雑なシステムを有向非循環グラフに分解し、その動作を表すノードに循環動作を隠すことです。
親はboost-conとgoogleでプレゼンテーションを行いました(boost-conのシート、p.24でアプローチを紹介、google talkの動画もあります)。

私はこのアプローチが好きで、必要な開発だと考えていますが、無定形の動作をするサブシステムをどのように処理するかを想像するのに問題があります。
たとえば、状態マシンの一般的なパターンを想像してみてください。すべての状態がサポートするインターフェイスを使用し、状態の具体的な実装で異なる動作をすることです。

どうすればそれを解決できますか?
私は抽象的なアプローチを探しているだけであることに注意してください。

その動作をノードの背後に隠し、状態ごとに異なるサブ DAG を定義することも考えられますが、サブ DAG からメイン DAG の動作に影響を与えたい場合、設計がかなり複雑になります。

4

1 に答える 1

1

あなたの質問は明確ではありません。非晶質サブシステムを定義します。

あなたは「抽象的なアプローチを探しているだけ」ですが、従来のプログラミング言語(「ステートマシンの一般的なパターン」)での実装に関する詳細が必要なようです。それで、あなたは何を求めていますか?ネストされた有限ステートマシンを実装する方法は?

いくつかの詳細は、会話に役立ちます。

実際の抽象的なアプローチについては、Stream X-Machines のようなものを見てください。

... X マシン モデルは構造的に有限状態マシンと同じですが、マシンの遷移にラベルを付けるために使用される記号は X→X 型の関係を示します。...

Stream X-Machineは、基本的なデータ型が

X = アウト* × メモリ × イン*、

ここで、In* は入力シーケンス、Out* は出力シーケンス、Mem は (残りの) メモリです。

このモデルの利点は、各ステップでの出力を観察しながら、システムをその状態と遷移を通じて一度に 1 ステップずつ駆動できることです。これらは、特定の関数が各ステップで実行されたことを保証する証人値です。その結果、複雑なソフトウェア システムは、トップダウン方式で設計され、ボトムアップ方式でテストされるStream X-Machine の階層に分解される場合があります。設計とテストに対するこの分割統治アプローチは、Florentin Ipate の正しい統合の証明によって裏付けられています。これは、階層化されたマシンを個別にテストすることが、構成されたシステムをテストすることと同等であることを証明しています。...

しかし、プレゼンテーションがこれにどのように関連しているかはわかりません。彼は、X-Machine に似たものではなく、プログラミングに対する非常に主流なアプローチについて話しているようです。とにかく、プレゼンテーションはかなり混乱していて、今はビデオを見る時間がありません.

講演の第一印象、スライドだけ読む

著者は、ピープルウェア(プログラミングの心理学など) からソフトウェア エンジニアリング(ソフトウェア製品ラインなど)、さまざまなプログラミング手法に至るまで、多数の分野/問題/解決策に無計画に触れています。

さまざまな部分がどのように関連しているか、彼が主張していることはまったく明確ではありません(私はスライドを読むことに慣れており、通常は結果が重要です)。

ビデオが表示される場合は、この回答を更新します。

于 2009-10-21T05:45:53.463 に答える