モデルという語の由来
英語の辞書を調べましたがこれというものがありません。そこで、他の回答者の意見も参考にして考案しました。モデルとは、物理学、工学、経済学などの分野で、その分野に固有の言語を使って表現した『対象の本質的な振舞い』と定義します。
初期のMVC
MVCの初期の論文に解説があります。MVC XEROX PARC 1978-79
controller (input) 入力(ボタンなどの入力用部品)
view (output) 出力(表示のための出力用部品)
model (mental model) ユーザーが心に描くアプリケーション機能
controllerとviewは一体となってToolと表記されていますが、今の言葉で言い直すとGUIです。画面(GUI)の背後にあって、ユーザーが心に思い描く像がモデルです。モデルとは問題領域の本質的な振る舞いを表す。おっしゃるとおり、ビジネスの領域では、ビジネスロジックの集合がモデルと考えられます。
ここから『GUIを取り去っても、付け加えても、アプリケーションの本質的な機能は変わらない』というモデルの要請が生まれます。
MVCとレイヤーアーキテクチャ
MVCアーキテクチャとレイヤーアーキテクチャとの類似点を見てみましょう。
- プレゼンテーション層 GUI(View、Controller)
- ビジネスロジック層 対象領域の本質的な振舞い (Model)
- 永続化層 Modelを格納するストレージ
レイヤーアーキテクチャは上位層から下位層の呼び出し方法が決まっている。層が独立していて取り替えや並存が可能。プレゼンテーション層は、HTTPプロトコルだけでなく、別のUI機能を付け加えたり削除できます(複数のGUIが併存してもよい)。永続化層もRDBだけとは限らず多くのストレージが並存可能。アプリケーションの本質であるビジネスロジック層はモデルを表し、GUIにもストレージにも依存しない。別のプラットフォームにマイグレーションすらできるのが理想だと考えます。