次に、カウンターカルチャーというシフトがありました。私は、ソフトウェアエンジニアリングについて、2つの共通点に言及しました。それは、信頼と、すべてのハードウェアで稼働できるという点についてでしたが、3つ目が変化についてです。
この変化は、戦争後の経済繁栄と私が考えている時期に始まりました。冷戦を切り抜けた私たちは、コンピューティングをビジネスにすることに、すべてのエネルギーを注ぎ込んだのですが、その際に、冷戦時に生まれた小型化の手法をすばやく取り入れました。
私たちが学んだ小型化の手法が、ほかの分野にも応用され始めたことから、ミニコンピュータが登場し、のちにマイクロコンピュータも登場しました。そして、今までとは異なるプログラミング手法が生まれたのです。
約15年間にわたって、人間とコンピュータの活動には明確な区別があり、その違いはソフトウェアの発展に関して重要でした。しかし、ミニコンピュータの時代がそれを変えました。突然、人間とコンピュータの間を隔てていた壁が文字どおり壊されたのです。今や私は、コンピュータと真正面から相対することができます。その結果、プログラミングそのもののやり方を変えることが求められたのです。
ここで、ウィンストン・ロイス(Winston Royce、図表73)が登場します。
私は衛星プロジェクトでウィンストンと一緒に働く機会を得ました。ウィンストンは「ウォーターフォールメソッド」(図表74)を導入した人物です。彼の論文をきちんと読めば、「ウォーターフォールメソッド」について彼が語っているのは、厳格な分析‐設計‐開発‐テストという作業工程ではなく、もっとインタラクティブなものであり、私たちはそれ以上のことができる、ということに気づくでしょう。
ウィンストンの手法は、まだ行き当たりばったりの実践に近く、また、すでに使われていた手法でした。初期のウォーターフォールメソッドの多くは、諸企業により解釈されていました。そして解釈されたものは、きわめて厳格なものとして扱われていました。
図表73 ウィンストン・ロイス(Winston Royce) *Wikipedia
図表74 ウォーターフォールメソッド *Wikipedia
次に登場するのは、ニクラウス・ヴィルト(Niklaus Wirth、図表75)です。ニクラウスは、ちょっと待てよ、もう1つ使える手法があるぞ、と言いました。
今日、私たちは継続的インテグレーション(図表76)を話題にします。おそらく、その基礎概念を最初に思いついたのはヴィルト博士です。プログラムの開発を始めるにあたっては、アルゴリズムの抽象化に着目して、それをどんどん小型化していき、それらの断片を構築して始めるという手法です。
ここで、デイビッド・パーナス(David Parnas、図表77)が登場します。結合度と凝集度というアイデアを覚えていますか? 凝集度と結合度を合わせて、情報隠蔽(information hiding)という考え方が生まれました。
私は、内部にシークエンスを隠したモジュールを作成しました。余談ですが、2003年にIBMに買収され統合されたラショナル・ソフトウェア(Rational Software、図表78)という社名は、パーナスの論文から着想を得たものです。私たちはこの会社で、Rational Process(合理的なプロセス)を構築しようとしているのです。
このころ、バーバラ・リスコフ(Barbara Liskov、図表79)が興味深い仕事をしていました。彼女はジョン・グッターグ(John Guttag、図表80)とともに、形式手法のいくつかのアイデアを、後の抽象データ型理論に導入しました。
図表75 ニクラウス・ヴィルト(Niklaus Wirth) *Wikipedia
図表76 継続的インテグレーション *Wikipedia
図表77 デイビッド・パーナス(David Parnas) *Wikipedia
図表78 ラショナル・ソフトウェア(Rational Software) *Wikipedia
図表79 バーバラ・リスコフ(Barbara Liskov) *Wikipedia
図表80 ジョン・グッターグ(John Guttag) *Wikipedia
ここで、私たちの現在地を確認しましょう。私たちは今、興味深い地点にいます。プログラミングやコンピュータが、よりパーソナルなものになり、人々は、自分たちの言葉を表現するよりよい方法を目にし始めていたのです。ここから、本当の意味でソフトウェアエンジニアリングの構築を始めることができたのです。
私は、マーガレットを超えて、これらのアイデアを最初にまとめ始めた人物として、ラリー・コンスタンチン(Larry Constantine、図表81)の名前を挙げたいと思います。
SADT(Structural Analyses and Design Techniques:構造化分析設計技法、図表82)という考え方を導入したのは、ダグラス・ロス(Douglas Ross、図表83)です。SADTは、IBMをはじめとする多くの企業がかなり長い間使っていました。
ラリー・コンスタンチンは、構造化設計(structured design)という考え方を取り入れました。つまり、エドワード・ヨードン(Edward Yourdon、図表84)による構造化設計という考え方です。マイケル・ジャクソン(Michael Jackson、図表85)は、方法論研究者(Methodologists)の先駆けでした。
図表81 ラリー・コンスタンチン(Larry Constantine) *Wikipedia
図表82 SADT(Structural Analyses and Design Techniques:構造化分析設計技法) *Wikipedia
図表83 ダグラス・ロス(Douglas Ross) *Wikipedia
図表84 エドワード・ヨードン(Edward Yourdon) *Wikipedia
図表85 マイケル・ジャクソン(Michael Jackson) *Wikipedia
ここで彼らが、なぜそれぞれの研究を行ったのかを考えてみましょう。当時彼らが直面していた問題は主に、記号論的な問題と、数学的な問題でした。方法論研究者はどんどん研究の規模を拡大し、多数の人々で構成されるようになりました。彼らは、アルゴリズム解析を最も適切に行うための特定の方法論を構想した人々です。それは活気あふれる刺激的な時代でした。ソフトウェアエンジニアリングの第1期黄金時代だったのです。文献や多くの出版物、たくさんのカンファレンスを見れば、このときがソフトウェアエンジニアリングの中心期だったことがわかるでしょう。それはまさに全盛期の直前でした。なぜなら、人々がもっていたツールと、当時抱えていた問題の間に、一定の間隔があったからです。
テスト工程については、マイケル・フェーガン(Michael Fagan、図表86)が活躍しました。レスリー・ランポート(Leslie Lamport、図表87)は、分散コンピューティングという考え方を導入しました。
図表86 マイケル・フェーガン(Michael Fagan) *Wikipedia
図表87 レスリー・ランポート(Leslie Lamport) *Wikipedia
それから、ジョン・バッカス(John Backus、図表88)が登場します。ジョンは、IBMのある部門のフェローでした。IBMは私たちに、自分の仕事をやり終えたあと、自由に好きな研究をさせてくれたのですが、ジョンがFORTRANの仕事をほとんどやり終えたあとにやろうとしたのは、ひとりで、プログラミングを読み込むことでした。彼は、現在のプログラミング言語よりはるか昔に存在していた関数型プログラミング(functional programming)の分野に多くの労力を注ぎました。
私は、ジョンの足跡すべてをたどるという、喜ばしい機会を得ました。それはたぶん、ジョンが受けた最後のインタビューだったでしょう。ジョンの妻は他界していました。奥さんが亡くなったあと、ジョンは、娘が住んでいた場所の近くに引っ越していたのですが、彼は文字どおり、傷心状態にありました。妻の死をとても悲しんでいたのです。
インタビューの1年後くらいに、ジョンも他界しました。私たちはジョンのインタビューを数時間分、テープに録音してあります。私はジョンに、関数型プログラミングについて尋ねました。ジョンは、「なぜきみはジョンを失望させたのかな? 知っての通り、関数型プログラミングの問題点は、難しいことは非常に簡単にできるが、簡単なことはほぼできないことなのだ」と答えました。ジョンの考えでは、それこそが関数型プログラミングが失敗した原因なのです。
図表88 ジョン・バッカス(John Backus) *Wikipedia
さて、前にお話ししたように、女性たちが生み出したソフトウェアというものがありました。それは、第2次世界大戦と冷戦という悲嘆のなかで生まれました。私たちはその後それが、経済的繁栄を通じて成長するのを見守りましたが、60年代には、カウンターカルチャーシフトもありました。パソコン事業がシリコンバレー地域で活況を呈するのを目にしたのは驚きではありません。
『パソコン創世 「第3の神話」 カウンターカルチャーが育んだ夢』(『What the Dormouse Said ? 』ジョン・マルコフ著、NTT出版、図表89)という素晴らしい本があります。この本は、スチュアート・ブランド(Stewart Brand、『全地球(ホールアース)カタログ』で有名な編集者、図表90)と、LSDを飲み、マリファナを吸いながら未来などについて語り合っていたすべての男女について論じています。
図表89 『パソコン創世 「第3の神話」 カウンターカルチャーが育んだ夢』 *Amazon
図表90 スチュアート・ブランド *Wikipedia
最初のインターネットが登場したのはこのころです。当時は、とても興味深い文化が生まれていました。それはパソコンの登場ときわめて関係が深かったのです。なぜなら、パソコンが突然、今私たちが話している、自由とカウンターカルチャー運動のちょっとした表現方法となったからです。
コンピュータの使用はきわめてパーソナルなものになり、ソフトウェアエンジニアリングも変化しました。なぜなら、経済的変化が起こっていたからです。過去の時代には、マシンは人間よりも高価でした。この時代、突然、人間のほうがコンピュータよりも高価になったのです。このことは、すべての経済を変化させました。
自由にソフトウェアを構築する人たちが何千人も台頭してきました。90年代後半の私たちは、また別の面白い場所にいました。それが、ソフトウェアエンジニアリングの第2の黄金時代です。私たちは、今こそプログラミング言語データの時代だと思っていました。一方、米国政府はまだソフトウェアには問題があると考えていました。現在使用されているプログラミング言語は1400種類もあります。これを単純化したいので、共通の言語を1つ見つけましょうということになり、Simulaなどの考え方を基に生まれたのが、最初のオブジェクトベースの言語です。
私も他の人たちも、ソフトウェアエンジニアリングの世界で、アルゴリズムによる抽象化から、オブジェクト指向の抽象化へと移行する大転換が起こりそうだということを実感していました。
ここで自慢しておきたいのが、オブジェクト指向設計という言葉を発明したのは私だということです。バーバラ・リスコフ(Barbara Liskov、図表91)らのアイデアが、ソフトウェアエンジニアリングにも応用できるのではないかとひらめいたことで、この言葉を思いつきました。
さらに私は、前世代のソフトウェアエンジニアリングがうまくいっていないことにも気がついていました。これは、ジム・ランボー(Jim Rumbaugh、図表91)がOMTを開発したり、イヴァー・ヤコブソン(Ivar Jacobson、図表92)がObjectoryを考案したりしていた時代なのです。
図表91 バーバラ・リスコフ(Barbara Liskov) *Wikipedia
図表92 ジム・ランボー(Jim Rumbaugh) *Wikipedia
図表93 イヴァー・ヤコブソン(Ivar Jacobson) *Wikipedia *Blog
彼らと再び関わるようになる前、私はビャーネ・ストロヴストルップ(Bjarne Stroustrup、図表94)と一緒に仕事をするという嬉しい機会に恵まれました。あるとき、私が講演をした際に、彼が最後にいくつか質問をしてくれたのです。彼の質問が気に入って、私たちは仲良くなりました。
そのときから彼は、C with classesというものに取り組みました。当時はまだC++にはなっていませんでしたね。彼は、Simulaの考え方をC言語に取り入れようとしていました。私たちはお互いに好感をもっていたので、何かを一緒にやろうということになりました。ビャーネと私は約1カ月間、米国中を講演して回りました。後にC++になるものを彼が宣伝し、私はBooch法を売り込みました。ビャーネの第1作目の著作を見ると、私の仕事を数多く引用してくれているのがわかります。私たちはC++とBooch法を、隣り合わせで一緒に育ててきたようなものでした。
当時は、競合する方法論がほかにも多数あり、それは市場に活気があることを表しているという意味ではよいことでした。しかし優れた起業家としては、競合をなくすことも、市場を大きくする1つの方法です。
図表94 ビャーネ・ストロヴストルップ(Bjarne Stroustrup) *Wikipedia
そこで私たちはジム・ランボーに会いに行き、君を雇いたいと伝えました。こうしてOMTとBooch法が、私たちのところで統合されたのです。イヴァー・ヤコブソンのObjectoryに関しては、ジーメンス(Siemens)社での仕事が進行していることが判明しました。第1世代の携帯基地局は、Objectory法を用いてAdaで書かれていたのです。それがすごいと思ったので、私たちは最終的にこの会社を買収しました。その結果、私、ジム、イヴァーの3人組が誕生したのです。
当時はほかにも、ブラム・コーエン(Bram Cohen、図表95)や、ラリー・コンスタンティン(Larry Constantine、図表96)、エド・ヨードン(Ed Yourdon、図表97)、トム・デマルコ(Tom DeMarco、図表98)といった人たちが、多くの方法論を発表していました。ステファン・メラー(Stephen Mellor、図表99)や、レベッカ・ウィフズ・ブロック(Rebecca Wirfs-Brock、図表100)、ピーター・コード(Peter Coad、図表101)なども活躍していました。活気に満ちた、刺激的な時代だったのです。
図表95 ブラム・コーエン(Bram Cohen) *Wikipedia
図表96 ラリー・コンスタンティン(Larry Constantine) *Wikipedia
図表97 エド・ヨードン(Ed Yourdon) *Wikipedia
図表98 トム・デマルコ(Tom DeMarco) *Wikipedia
図表99 ステファン・メラー(Stephen Mellor) *Wikipedia
図表100 レベッカ・ウィフズ・ブロック(Rebecca Wirfs-Brock) *Wikipedia
図表101 ピーター・コード(Peter Coad) *Wikipedia
私は、こうした仲間たち全員を称えなければならないと思っています。ますます大きくなっていた彼らの貢献なしには、今日の私たちはなかったのですから。彼ら全員に感謝しています。
さて、私たち3人が集結したことで、方法論開発戦争は終わったようにも思えましたが、ソフトウェアエンジニアリングの世界では他にもいろいろなことが起こっていました。[第8回へ続く]
・・・・・・・・
◎グラディ・ブーチ氏講演 「ソフトウェアエンジニアリングの歴史」
第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]