これは、気づきではなくて、改めて確認したこと。
論理におけるモデルと設計におけるモデルとは随分違う。
文章にしてみて、より理解を堅牢にしてみたい。
まず、論理におけるモデルは、より具体的には、論理言語のモデルのことを指す。
次に、設計におけるモデルは、対象領域の記述のためのモデルのことを指す。
順番は逆になるが、それぞれさらに詳しくいうと。
対象領域の記述のためのモデルとは、例えばMVCにおけるモデルであり、それはドメインを分析した結果、そのドメインにおいてエクステントが比較的に長い概念や語彙のことである。
論理言語におけるモデルとは、今、ある論理言語にて書かれた文αがあるとして、そのαの真偽を考えるにあたって想像しうる(存在しうる)可能世界(possible world)のことである。
ということ。
ここでまず違うのが、
設計におけるモデルは現実に対する「何らかの抽象」と位置付けられているのに対して、
論理におけるモデルは論理文αに対する「何らかの(想像しうる)具象」と位置付けられている、
ということである。ただし、これら2つのモデルという言葉の用法がunification可能かどうか考えてみると、これはできそうだ。
設計におけるモデルというのは抽象ではあるが、それはいろいろ考えうる抽象のうちの一つであり、その中から設計の選択として実装に使用するモデルを選択しているということである。これって可能世界としてありうるものの一つという感覚と似てなくもない。
こう書いてみると、抽象と具象というのはN:Mな関係であることに気づいた。ある抽象を決めれば、それを満たす具象がいろいろあると考えられる(具象群)。OOにおけるクラスとオブジェクトの関係。具象群からある抽象をつくるとは、その具象群の抽象の形というのはいろいろありえるわけで(抽象群)、その中から選択をする行為とも考えられる。まあ、実際に設計をするということは、この双方をいったりきたりして、フィードバックをかけてチェックしつつうまい抽象化というのを探索している行為と考えられるのですが。
ちなみにSPINなどのModel checkerのモデルとは、論理の方のモデルのことですね。
0 件のコメント:
コメントを投稿