「ソフトウエアは複雑で、目に見えない。だから作るのが大変だ」。本欄読者であれば、違和感を覚える方は少ないと思います。ただその複雑性とは、一体、どういうことなのでしょうか。そして、本当に可視化できないのでしょうか。

 このテーマは、これまであまり深く議論されてきたわけではありません。それどころかソフトウエア業界では「ソフトウエアは可視化できないから難しい」と語られ続けています。科学の発展を顧みれば、この言葉が全く発展性のない稚拙な見解であることがすぐ分かります。

 ここでは、ソフトウエアの複雑性とは何なのか、その複雑性を可視化するにはどうしたらよいのかについて私見を述べます。

 ここからは、ソフトウエアを「ソフトウエア・システム」と書くことにします。1本のプログラムではなく、複数のプログラム、画面、帳票、ジョブなどから成る構造体であることを強調したいからです。

 ソフトウエア・システムは業務アプリケーション、ミドルウエア、OS、組み込みソフトなどに分かれます。ビジネスの中で使われる業務アプリケーションについて、ビジネスとソフトウエア・システムの関係がどうなっているのかを解き明かしてみましょう。

「不可視だから」と諦めたら、分子は発見できない

 米国のソフトウエア技術者フレデリック・ブルックスは名著『人月の神話』において、ソフトウエアは複雑性(Complexity)や不可視性(Invisibility)を持つ、と述べました。それ以来、ソフトウエア業界では、プログラム1本の複雑性を測定する尺度こそ考え出してきたものの、「ソフトウエア・システムの複雑性とは何か」ということに無頓着に過ごしてきたように思えてなりません。

 複雑で目に見えないということは、深く掘り下げる必要のない“絶対の真実”として受け止められているようです。ブルックスの指摘に、信仰に近い確信を持ってきたといってもよいでしょう。

 日本でも「ソフトウエアの開発は可視化できないから難しい」とよく語られます。しかし他の産業を見ると、ソフトウエア業界との違いが明確になります。

 化学や宇宙物理学、生物学の世界においては、「不可視だから困難だ」などと諦めていたら、分子、原子、光子、素粒子、遺伝子、紫外線、電磁波などを発見できなかったでしょう。彼らは、見えないものを見えるようにすることに努力してきたわけです。それができたから、進歩があったといえます。ソフトウエア業界も“ソフトウエア・システムの可視化”にもっと取り組まなければ、立ちゆかなくなるでしょう。

 それでは、ソフトウエア・システムの複雑性とは何か。そして、それを可視化することは可能なのか。これについて考えてみましょう。