ソフトウェアは
パンチカードの穴のなかにある
当時使われていたソフトウェアという用語に関する面白い話を1つしましょう。
マサチューセッツ工科大学(MIT)は宇宙計画から始まった学校です。私は空軍士官学校を卒業したのですが、卒業後すぐに、空軍宇宙軍団という最高にクールなところで任務につくことになりました。そこでは、ソフトウェアシステムや、後に軍のスペースシャトルになるものの開発が行われていたのです。
私は当時、バリー・ベーム(Barry Boehm、図表13)博士と仕事をする機会に恵まれました。彼は私に、ソフトウェアとハードウェアを区別する、すばらしい話を教えてくれました。
図表13 バリー・ベーム(Barry Boehm) *Wikipedia
衛星の開発では、重量の配分が非常に重要です。その理由は、重心がどこにあるのかを厳密に考慮する必要があるからです。そして文字どおり、さまざまなものをどこに配置するのかを管理する、重量管理官という人がいました。
この重量管理官がバリーのところにやってきて「あなたがこの宇宙船のソフトウェア担当ですね。そのソフトウェアの重さはどれくらいですか?」と聞いてきたそうです。バリーは、「なぜです? ソフトウェアには、もちろん重さはありませんよ」と答えました。すると管理官は、「いや、それはありえない。いくらかの重量はあるはずです。後で戻ってきますから、ちょっと時間をとって考えておいてください」と言ったそうです。
管理官は戻ってきて、「ソフトウェアの重量はいくらでしたか?」と聞きました。バリーはそれでも、「重さなんてありませんよ」と答えました。管理官は、「あんなにパンチカードがあるじゃないか。どう見てもソフトウェアには重さがあるはずだ」と言いました。そこでバリーはこう答えたそうです。「たしかにパンチカードの重量は500ポンド(約227kg)ほどありますが、ソフトウェアというのは、あの穴のなかにあるのです」と(図表14)。
図表14 パンチカード *Wikipedia
ソフトウェアエンジニアリングの
さまざまな定義
女性軍人でもあった計算機科学者グレース・ホッパー(Grace Hopper、図表15)は、プログラミングとハードウェアサイエンスを、「実用的なアート」と呼びました。私もそう思います。
エドガー・ダイクストラ(Edsger Dijkstra、図表16)は、「複雑性を整理するアート」だと言いました。
ドナルド・クヌース(Donald Knuth、図表17)は、「アート」と呼びました。
私は、ソフトウェアエンジニアリングという言葉を「応用アート」ととらえたいと思っています。サイエンスがあって、エンジニアリングがあり、そこに結びつく美しさがあるのです。
図表15 グレース・ホッパー(Grace Hopper) *Wikipedia
図表16 エドガー・ダイクストラ(Edsger Dijkstra) *Wikipedia
図表17 ドナルド・クヌース(Donald Knuth) *Wikipedia
写真(図表18)は、皆さんがご存知の、デイビッド・パーナス(David Parnas)です。私はデイビッドの言っていることが好きなんです。大好きな人の1人です。彼はこう述べています。
「私たちはソフトウェアエンジニアリングを、コンピュータサイエンスの一分野として扱うことが多いのですが、それは、化学エンジニアリングと化学は同じものか、そうでないのか、と言うようなものです。
図表18 デイビッド・パーナス(David Parnas) *Wikipedia
コンピュータサイエンスと、ソフトウェアエンジニアリングは明らかに違います。私がこれをエンジニアリングと呼んでいるのは、どんな分野においても、エンジニアリングというのは、力の分析の支柱だからです。エンジニアが集まり、チームとなり、見た目に美しいだけでなく、そのなかの静的な力や動的な力を分析するようにして、ソフトウェアを作り上げる。そうした力の一部は、ソフトウェアエンジニアリング自体のなかにあります。
私たちは、コストやスケジュールといった日常的な力を管理する必要があります。さらに、複雑さ、互換性、スケーラビリティ、信頼性といった力も管理しなければなりません。
私は、あらゆるアーキテクチャはデザインだと思っていますが、デザインのすべてがアーキテクチャだというわけではありません。ソフトウェアにおいてアーキテクチャが示しているのは、重要なデザイン上の決定が、私たちの周りにある力を分析するということです。それが、ソフトウェアエンジニアリングというものなのです」 [第3回へ続く]
・・・・・・・・
◎グラディ・ブーチ氏講演 「ソフトウェアエンジニアリングの歴史」
第1回 エンジニアリングは高級神官イムホテプから始まる
第2回 ソフトウェアエンジニアリングのさまざまな定義
第3回 Adaから始まりエンジニアリングの基礎が築かれる
第4回 ソフトウェアエンジニアリングへ
第5回 サブルーチン、コンパイラ、FORTRANの誕生
第6回 ソフトウェアが現実のものになる
第7回 アルゴリズムからオブジェクト指向へ
第8回 ソフトウェアエンジニアリングの第3の黄金時代
第9回 ソフトウェアは、ハードウェアの可能性の物語を囁く
・・・・・・・・
◎グラディ・ブーチ(Grady Booch)氏
グラディ・ブーチ(Grady Booch)氏は1955年、米国テキサス州生まれ。オブジェクト指向ソフトウェア開発方法論Booch法とソフトウェア開発モデリング言語UMLの開発者。現在、IBM フェロー。ACM フェローおよびIEEEのフェローでもある。*Wikipedia
[IS magazine/i Magazine]