メタメタプログラミングとメタメタテスト

コンピュータの動作を規定するものが、コードを書くことつまりプログラミングである。

設計はプログラミングのありようを規定するものだから、メタプログラミングである。

設計のありようを規定するものが、フォーターフォール型とかアジャイル型とかの開発プロセスである。つまり、開発プロセスはメタメタプログラングである。

プログラミングの正しさを確認するのが、テストだ。

メタプログラミング(設計)の正しさを確認するのが、レビューである。つまり、レビューはメタテストだ。あるいは、テストの項目等のレビューもメタテストである。

メタプログラミング(設計)やメタテスト(レビュー)が正しく行われているか、開発プロセスが正しく行われているかを監査するのは、メタメタテストとなる。バグの数を数えて、多いとか少ないとか、どこの工程で出るべきだったとか。

このメタメタプログラミングとメタメタテストになじめない。抽象度を変えてものを見る、つまりメタ思考は原理を知るために必要だろう。しかし、認められるメタは一回までだ。メタメタオブジェクトをから、オブジェクトをイメージできる人間なんていない。

設計が妥当⇔製品が妥当

この1個の仮定は認められると思う。しかし、もう一つ仮定を増やして、

プロセスが妥当⇔設計が妥当
設計が妥当⇔製品が妥当
∴ プロセスが妥当⇔製品が妥当

これは認め難い。仮定は1個までにするべきだ。

要するに、製品自体を見ろよと思うわけだ。最終的に外に出るのは製品だ。それを評価せずに何を評価するのか?そもそも、具体製品に興味ないのか?具体製品に興味ない人が権限を持ってどうするのだ。