2023年8月18日金曜日

ソフトウエアの開発者に足りていない老いのたわごと不具合を起こしうるという認知リソース。

 バグのないソフトウエアは作れないと言われる、

正確にはソフトウエアにバグが無いことは証明できないというものだが、

この説明自体は不完全性定理とか嘘つきのパラドクスと呼ばれ非常にわかりにくいものだけど、

要は自己言及によって矛盾が生じるという論理的な理由によるものだ、

そしてソフトウエアに関しては更に、プログラマーが作成するイメージする動作にバグが無いことを証明出来ないという問題と、それゆえに作成されたソフトウエアもバグが無いことを証明出来ないという理屈が加わるのだ、

作ることが出来るというイメージは持てていても、作るもののイメージが正しいかどうかはわからない。ということで、ソフトウエアエンジニアと会話していると、この噛み合わない議論によく出くわす、「どうしたいのですか?」「こうしたい。」「こうですね?」「いやそうじゃなくて・・・」みたいな会話プロトコルはもう定番だろう。

マイナンバーカードをとってみればよくわかるだろう、国民誰もを管理するIDを作って社会保障や徴税など様々な社会システムをそれに紐づけして、効率的効果的な運用を行うというイメージをソフトウエアにするためには、利用者の心理、動機や運用者の行為まで含めてすべてのシステムが完璧にイメージされている必要がある、このイメージを記述する作業を要件定義とか言うけれど、要件がすべて定義されていることを証明することは出来ないのだ。

子供のマイナンバーの口座を親の口座にするという行為は、動機(子供のお金は親が管理したい)も背景(銀行口座の開設はやたら面倒)もはっきりしているけれど、実際には、本人口座を確認するプロセスは実装されていなかった。

だから、開発されるソフトウエアも当然不十分なものになる。のだ、

だから、論理的に考えても銀行のシステムだって、マイナンバーカードのシステムだってバグがあって当然なのだ。

でも、ソフトウエア開発を受託する会社もサービスを運用する会社も、不具合がありますとは決して言わない(言えない)、嘘に嘘を重ねるようなことをして欺くわけである。

でも、取り繕った嘘は必ずバレる、その最悪のケースがプログラムのバグによるシステム障害という不具合である、論理を超越したセールスの理論がそこにあるわけで、実はそういう認知リソースは実務の中でしか蓄積出来ない。逆に言えば、実務者は実は誰でも知っていることだったりする。しかし、世の中、ノウハウと呼ばれるリソースばかりを獲得蓄積するように訓練しようとするから、実務者は誰でも保有しているはずのリソースが足りていないのだ、

だからソフトウエアの開発者って不思議に思うほど自信満々なんだよね。イメージを伝えると即座に出来ますよと答える。まるで、世界には複雑さなど存在しないかのようにね、

でも、出来たものは何かが違うし思ったようにことが進まない、出来ると、いうのはあくまでDo My BESTの範疇なのである。

そんなこと幾度も経験している者はおせっかいにも一言添えたくなるのだけど、鬱陶しいたわごとと応じられて、そこに建設的な相互作用は生まれないのである。