コンピュータの動作を規定するものが、コードを書くことつまりプログラミングである。
設計はプログラミングのありようを規定するものだから、メタプログラミングである。
設計のありようを規定するものが、フォーターフォール型とかアジャイル型とかの開発プロセスである。つまり、開発プロセスはメタメタプログラングである。
プログラミングの正しさを確認するのが、テストだ。
メタプログラミング(設計)の正しさを確認するのが、レビューである。つまり、レビューはメタテストだ。あるいは、テストの項目等のレビューもメタテストである。
メタプログラミング(設計)やメタテスト(レビュー)が正しく行われているか、開発プロセスが正しく行われているかを監査するのは、メタメタテストとなる。バグの数を数えて、多いとか少ないとか、どこの工程で出るべきだったとか。
このメタメタプログラミングとメタメタテストになじめない。抽象度を変えてものを見る、つまりメタ思考は原理を知るために必要だろう。しかし、認められるメタは一回までだ。メタメタオブジェクトをから、オブジェクトをイメージできる人間なんていない。
設計が妥当⇔製品が妥当
この1個の仮定は認められると思う。しかし、もう一つ仮定を増やして、
プロセスが妥当⇔設計が妥当
設計が妥当⇔製品が妥当
∴ プロセスが妥当⇔製品が妥当
これは認め難い。仮定は1個までにするべきだ。
要するに、製品自体を見ろよと思うわけだ。最終的に外に出るのは製品だ。それを評価せずに何を評価するのか?そもそも、具体製品に興味ないのか?具体製品に興味ない人が権限を持ってどうするのだ。