前書き
私は、(「ソフトウェア製品」のように)製品に作用することができる変更(デルタと呼ばれる)の抽象的な代数的記述である抽象デルタモデリング(ADM)に関する博士論文を書いています。これは、一連の関連製品(「製品ライン」)を単純なコア製品および条件付きで適用されるデルタのセットとして編成するために使用できるため、基礎となるアーティファクトをさらに再利用できます。
デルタモデリングの詳細は私の質問にはそれほど重要ではありませんが、ADMは問題を説明する良い例として役立つので、最も重要な概念を紹介します。
バックグラウンド
関心の主な構造は、三角筋 。製品はユニバーサルセットから来ています。デルタはモノイドから来る合成作用素とと中性元素。意味評価演算子 '構文'デルタ変換する関係にどのように決定した dは、製品を変更することができます。
質問
ADMは抽象的な代数であるため、私の仕事のほとんどは製品やデルタの具体的な性質から抽象化されており、多くの結果がより具体的なレベルに下ることなく証明されています。これらの結果は、より具体的な領域に引き継がれると予想されますが、これはまだ正式に確定していません。
具体的なドメインで機能する例とケーススタディがあります:オブジェクト指向のソースコード、コード、自然数、携帯電話のプロファイルなど。ネストされたキーと値のペアなど、抽象化の中間段階もあります。それぞれについて、私は再定義(または 'refine')( P、 D、⋅、ϵ、 [。
この階層を明確にしたいと思います。(1)読者により明確な説明を提供し、 (2)より抽象的なレベルの結果を使用して正式に正当化します。
私の質問:これらの抽象化レベルをどのように正式に整理すればよいですか?
私はシンプルな洗練関係を持つ理由にできるように願ってい三角筋に。そして、それはPとDのサブセット関係にアピールするだけで定義できると思います。しかし、まだわかりません。私が説明している種類の問題に対する既存のアプローチはありますか?私が読むべき出版物?
三角筋の階層
私が何を意味するかをよりよく理解するために、ここに私が念頭に置いている三角筋の抽象階層があります:
- 抽象三角筋:これは基本的な三角筋で、製品とデルタはまだ何でもかまいません。理論のほとんどはこれに基づいており、ほとんどの結果はこのレベルで証明されています。
- Relational Deltoid:ここで、デルタはと[は恒等関数です。
- 関数型三角筋:ここでは、デルタは関数型(または「決定論的」)です。
- 自然数三角筋:これは三角筋の洗練を説明するためだけに作成された最も単純な具体的な三角筋です。ここで、積は自然数であり、デルタD = N +は多項式演算を表す単純な数列です。
- ネストされたキーと値のペアDeltoid:キーが値またはサブ階層にマップされている階層の抽象化の中間レベル。デルタは、この「ツリー」の変更を任意の深さで実行できます。
- OOP Deltoid:オブジェクト指向プログラムの抽象的な表現用。プログラムはモジュール名をクラスのセットにマップし、クラス名をメソッドのセットにマップし、メソッド名をメソッドの実装にマップするため、基本的にはキーと値のペアがネストされています。
- ABS Deltoid:ABSは実際のオブジェクト指向プログラミング言語です。
- 電話プロファイルDeltoid:ここでの製品は、対応するドメインの値への設定(音量、画面の明るさなど)のフラットマッピングです。
- OOP Deltoid:オブジェクト指向プログラムの抽象的な表現用。プログラムはモジュール名をクラスのセットにマップし、クラス名をメソッドのセットにマップし、メソッド名をメソッドの実装にマップするため、基本的にはキーと値のペアがネストされています。
- Deltoid:製品はドキュメントとデルタは、マクロを再定義することでそれらを変更します。
- Relational Deltoid:ここで、デルタはと[は恒等関数です。
まあ、それはあなたが私が考えていることの公正な考えをあなたに与えるはずです。ちなみに、三角筋については、からモノイド準同型である Dに D '対応関係三角筋に属します。
実際の階層はこれよりも大きい場合があります。また、使用する絞り込み理論の種類によっては、構成が異なる場合もあります。たとえば、とDで単純なサブセット関係を求めた場合、ABS DeltoidはネストされたKey-ValueペアDeltoidに適合しません。その製品とデルタは実際にはプレーンテキスト(ソースコード)だからです。しかし、準同型を使用する場合、与えられた階層はまだ機能する可能性があります。