あるプログラムやシステムを共通化すると言った場合、形式的な共通化と意味的な共通化がある。
たとえば、給与計算を共通化するといったとき、
自衛隊の給与計算も、外務省の給与計算も、人事院の給与計算も共通化するというのは、
意味的な共通化といえる
→つまり、業務に結びついている
一方
画面はStruts,DBアクセスはHibernateでORマッピング、
その他設定ファイルはXMLでDom読み込み
っていうのは、形式的な共通化といえる
→つまり、業務に直接結びついていない
業務に結びついている部分の共通化は、そもそも、業務が共通化できるかどうかが必要である。
なぜなら、コンピューターシステムは、業務を計算モデルでシミュレートしているにすぎないわけで、
業務的には、不可能だけど、コンピューターで適当にやってよ!といっても、どう計算モデル
(=アルゴリズム→プログラム)をつくればよいのか。。。(^^;)
一方、形式的なものは、業務にかかわらず、統一しやすい。
画面の内容(=業務)にはかかわらず、表示方法、入力方法(アルゴリズムの実装)にかかわっているからだ。
つまり、もっとはっきり言ってしまうと、
意味的な共通化=アルゴリズム自体の共通化
形式的な共通化=アルゴリズムの計算システムへの帰着(実装)レベルでの共通化
といえる。アルゴリズム自体は万能性があるように作るのだから、そのうち、ある言語に帰着させる形式的な共通化は、ある意味、出来て当たり前といえるかもしれない。それに対して、アルゴリズムを共通化させるというのは、本質的に、そのアルゴリズム(まあ、業務?)に共通部分がないと出来ない。
そこで、この、共通部分の担保の取り方(=共通部分であると、なぜ言い切れるのか?)が問題になる。
ただし、形式的な共通化をしようとしたときに、意味的な共通化が入ってきてしまうときがある。
その場合の問題などなどを、(このシリーズの?)次に書こうと思う。