MENU

グラディ・ブーチ氏講演 ◎ソフトウェアエンジニアリングの歴史  ~第8回|ソフトウェアエンジニアリングの第3の黄金時代

先ほども話に出たバリー・ボーム(Barry Boehm、図表102)は、ソフトウェアエンジニアリングの経済学という考え方を打ち出し始めていました。彼の発見はとても面白いので、どうぞ皆さん『Software Engineering Economics』(図表102)という彼の本を読んでみてください。

基本的には、ソフトウェアシステムのコストは、その複雑さに対して指数関数的に増加するということを彼は言っています。つまり、システムの複雑さを軽減させることができればできるほど、コスト低減に大きく貢献するということです。そうしてITの世界に、ソフトウェアシステムを測定するという考え方が導入されました。そこではブラッド・コックス(Brad Cox、図表104)が大きな役割を果たします。

図表102 バリー・ボーム(Barry Boehm) *Wikipedia

図表103 『Software Engineering Economics』 *Amazon

図表104 ブラッド・コックス(Brad Cox) *Wikipedia

ブラッドは、トム・ラブ(Tom Love、図表105)と共に、後にObjective-Cとなる言語を開発していた人物です。彼は、コンポーネントベースのエンジニアリングというアイデアをもっていました。そのコンポーネントベースのエンジニアリングが、マイクロソフト C#となり、それがさらにSOAPとなり、そしてそれが今度はマイクロサービスへと変化していきました。現在、マイクロサービスにおける共通パターンとして私たちが知っているものの非常に初期のアイデアは、ブラッドの仕事から生まれたものでした。

さらにブラッドが興味深いのは、彼の作ったプログラミング言語が、スティーブ・ジョブス(Steve Jobs)のNext Computerの基礎となり、それがその後、Appleが初期の携帯電話などに使っていた言語の基になったというところです。Objective-Cは非常に重要な仕事だったのです。

図表105 トム・ラブ(Tom Love) *カーネギーメロン大学 

そして同じころ、ハーラン・ミルズ(Harlan Mills、図表106)、彼もIBMのフェローですが、彼がクリーンルーム手法(Wikipedia) というアイデアを導入しました。これは、形式手法の考え方をソフトウェア開発に導入しようとするものでした。当時はまだ、よりアルゴリズム的だったものに、独立的な形式手法を適用することで、自分がしていたことの結果を予測できるようにしよう、というものです。

ハーラン・ミルズ(Harlan Mills) *Wikipedia 

さらに同じころ、ワッツ・ハンフリー(Watts Humphrey、図表107)も能力成熟度モデルを開発していました。私はワッツと仕事をしたことがあります。彼をインタビューする機会があったのですが、そのとき、ある学びがありました。あなたの歴史について語ってくださいと私が頼むと、気をつけないと、その相手がすぐに死んでしまうかもしれないということです。ワッツは、私がそう頼んでから、約1カ月後に亡くなりました。そのころには、形式手法も本格的に広がりを見せていました。

図表107 ワッツ・ハンフリー(Watts Humphrey) *Wikipedia

データ管理という考え方をソフトウェア管理プロセスの一環として取り入れ始めたのは、IBMに長く勤務したジェームズ・マーチン(James Martin、図表108)です。そして、フレームワークの興隆が始まりました。TOGAF(The Open Group Architecture Framework、図表109)やZachmanフレームワーク(図表110)が登場したのもこのころです。

こうして、私たちがソフトウェアエンジニアリングで学んだ考え方が、システムエンジニアリングや、ビジネスエンジニアリングにも波及しはじめました。米国やヨーロッパで、こうしたものが方法論として確立されました。英国では防衛システムソフトウェア開発、ヨーロッパでは標準規格として。米国でも、構造分析を伴ったウォーターフォールモデルで、前の工程の要件を満たす必要があるというものとして。いずれにしろ、これが主流になったという事実が重要なところだったと思います。

図表108 ジェームズ・マーチン(James Martin) *Wikipedia 

図表109 TOGAF Architecture Development Method (ADM)の構造 *Wikipedia 

図表110 Zachmanフレームワーク *Wikipedia 

そしてこのころ、私たちは、いわゆる私がソフトウェアエンジニアリングの第3の黄金時代と呼んでいる時代に突入しようとしていました。ドナルド・クヌース(Donald Knuth、図表111)が登場して、文芸的プログラミング(図表112)という考え方を提唱し始めたころです。

私がよく使うフレーズに、「コードは真実だが、すべての真実ではない」というものがあります。これはつまり、私はコードを見てそれを理解しようとするが、そのコードだけではわからないこともあることは理解している、ということです。コードは、理論的根拠自体を明らかにするものではありません。コードはパターンをわかりにくくします。頭と、コード自体との間には、失われている情報があるのです。

ドナルド・クヌースの文芸的プログラミングという考え方については、アラン・クーパー(Alan Cooper、図表113)やボブ・マーチン(Robert Martin、図表114)といった面々も後に、あたかも文学になるかのようなコードの書き方がある、と言いだしました。

図表111 ドナルド・クヌース(Donald Knuth) *Wikipedia 

図表112 ドナルド・クヌース著『文芸的プログラミング』 *Amazon(日本語)(英語) *Wikipedia 

図表113 アラン・クーパー(Alan Cooper) *Wikipedia 

図表114 ボブ・マーチン(Robert Martin) *Wikipedia 

リチャード・ストールマン(Richard Stallman、図表115)は、フリーソフトウェアという考え方を提唱し始めた人物です。この考え方は、SHAREにおいて何があったかを大いに反映しています。そして、ここで再び登場するのがアラン・クーパー(Alan Cooper)です。ビジュアルプログラミングという考え方を生み出したのが彼でした。

Visual Basic(図表116)が登場した当時、これはすごいものだということがわかりました。だから私はあるショップに頻繁に行って、このVisual Basicを使うべきだ、小さなVisual Basicプログラムでもいろいろと素敵なことができるから、やってみるといい、と言ったのです。すると店長が現れて、これを出荷しましょう、と言い出しました。そうしたらあっという間にうまくいって、100万ドルのビジネスになったのです。しかし皆さんも経験しているかもしれませんが、維持するのは大変です。まあとにかく、あれは面白いソフトウェアエンジニアリングでしたね。

図表115 リチャード・ストールマン(Richard Stallman) *Wikipedia

図表116 Visual Basic *Wikipedia 

その後、インターネットの登場で、世界は再び変化しました。というのも、今度は突如、独立したコンピュータのプログラムではなく、今まで見たことのない「コンピュータ同士のネットワーク」のためにプログラムを構築することになったからです。そのネットワークは、それまでそんなものが存在しうるとは知られていず、誰もコントロールできないものでした。ここでブラッド・コックス(Brad Cox)のアイデアが関わってきます。彼のアイデアが、次世代のソフトウェアエンジニアリングに影響を与えました。

そして今度はスクラム(SCRUM、図表117)の登場です。これは最も初期のアジャイル手法で、実は日本で誕生したものです。彼らより先に、竹内(弘高)さんと野中(郁次郎)さんが、1986年にSCRUMを生み出していました。彼らは、SCRUMの考え方とビジネスプロセスアプローチについての素晴らしい論文(「The New New Product Development Game」、図表118)を書いたのです。

その論文に影響を受けたのが、ジェフ・サザーランド(Jeff Sutherland、図表119)たちでした。ここは大きく議論が分かれるところですが、私の意見では、SCRUMを生み出したのは日本ですが、ジェフ・サザーランドとその仲間たちが、その後にさまざまな企業で修正していったのです。そしてこれが、ソフトウェア開発の新しいプロセスの始まりでした。

これは考えてみれば納得のいく話です。当初の私たちは、大きな数理システムや記号システムを構築していたわけですが、今は小さなプログラムを数多く構築することに重点が置かれています。そのほうがインターネット上ではうまくいきました。そして、そのほとんどが使い捨てでした。かなり小さいプログラムなので、作るコストも小さく済みますし、やり直すのも簡単だったのです。

図表117 スクラム(SCRUM) *Wikipedia 

図表118 「The New New Product Development Game」(『Harvard Business Review』1986年1月号)より図表 *Wikipedia

図表119 ジェフ・サザーランド(Jeff Sutherland) *Wikipedia

ケント・ベック(Kent Beck、図表120)とウォード・カニンガム(Ward Cunningham、図表121)が、エクストリームプログラミング(図表122)という考え方を提唱し始めたのもこのころでした。主に小さな目標に取り組んでいくのですが、今でも私のお気に入りです。とにかく、彼らが構築していたのは比較的小さなプログラムでした。彼らはあまりにもSCRUMの人たちに似ていますが、実現の規模は小さく、また構築の方法も大きく異なっています。

そしてこのころにマーチン・ファウラー(Martin Fowler、図表123)も、リファクタリング(refactoring、図表124)という考え方を広め始めました。この3つを集めると、のちにアジャイルとしてまとまる、非常に興味深い一連の考え方が出来上がります。

図表120 ケント・ベック(Kent Beck) *Wikipedia 

図表121 ウォード・カニンガム(Ward Cunningham) *Wikipedia 

図表122 エクストリームプログラミング *Wikipedia 

図表123 マーチン・ファウラー(Martin Fowler) *Wikipedia 

図表124 リファクタリング(refactoring) *Wikipedia  *マーチン・ファウラー著『リファクタリング』オーム社 *Amazon

2001年、ユタ州のNovarad社に17人が集まり、「アジャイルソフトウェア開発宣言」(Agile Manifesto、図表125)に署名しました。私も招かれていて、行きたかったのですが、お客様の対応で忙しくて参加できませんでした。ですから、私も実はアジャイルファウンデーションの創始者の1人なのですが、サインできませんでした。。このときのことはまあ、ずっと昔のことですし、どんな時でもお客様のほうが大事ですからね。とにかくこれが、アジャイルというものが実を結ぶ始まりとなりました。

図表125  ペアプログラミング ~「アジャイルソフトウェア開発宣言」(Agile Manifesto) *日本語サイト *Wikipedia 

そしてウォーカー・ロイス(Walker Royce、図表126)が実際にラショナル統一プロセスを導入した、あるいは定量化したのが、このころでした。

ここに、ちょっとした歴史があります。もう一人のロイス、つまり、ウィンストン・ロイス(Winston Royce、図表127)のことを思い出してください。ウォーカーはその息子だったのです。息子は父に反旗を翻します。父親はウォーターフォールモデルを考案したのですが、息子は、違う、父さんは間違っていると言ったのです。 興味深い対立です。というのも、ラショナル統一プロセス(図表127)は、先に述べた人物たちが基礎を築いたアジャイルそのものについて語っていたからです。

彼らはどちらかといえばPCの世界の出身で、アジャイルグループの外部からやってきました。私たちは、より広い全体系的な世界からアジャイルグループに入りました。私たちは、継続的インテグレーションという考え方を紹介しています。アジャイルという構造的手法の初期よりずっと早く、この素晴らしい原始的なアイデアの集合体が生まれていたのです。

図表126 ウォーカー・ロイス(Walker Royce) *Silverthreadサイト 

図表127 ウィンストン・ロイス(Winston Royce) *Wikipedia 

私たちの仲間には、「The Gang of Four」という名でデザインパターンについての本を共同執筆した4人がいました。つまり、エーリヒ・ガンマ(Erich Gamma、図表128)、ジョン・ブリシディース(John Vlissides、図表129)、リチャード・ヘルム(Richard Helm、図表130)、ラルフ・ジョンソン(Ralph Johnson、図表131)です。この段階で、リチャード・ガブリエル(Richard Gabriel、図表132)とケント・ベック(Kent Beck、図表133)と私は、「The Hillside Group」(図表134)というグループを結成しました。

私たちはグループ名どおり、コロラド州のある丘陵地帯(hillside)で集まり、クリストファー・アレクサンダー(Christopher Alexander)が書いた『The Timeless Way of Building』(『時を超えた建設の道』鹿島出版会、図表135)という本を読んでいました。そして、その発想に大いに刺激を受けたのです。そこから、これはフォワード・デザインパターンについての本だという考え方が生まれました。

私たちは、初期のソフトウェアエンジニアの一部が気づいたこととほぼ同じように、バックアッププログラミング言語においてはコードそのものを超越するパターンが存在するという認識に至りました。そのパターンを表現する方法すらないが、存在することはわかっているのです。そこで、私たちの本のなかで、こうしたパターンに関する考えを再び修正したのです。

フィリップ・クルーシュテン(Philippe Kruchten、図表136)はそれをさらに修正して、「4+1 Model View」(図表137)という素晴らしい論文を書きました。この論文は、ソフトウェアシステムを検証する場合には、複数の視点から検証しなければならないという考え方を紹介していました。

実は、それがISO規格になったのです。このころは、メアリー・ショー(Mary Shaw、図表137)も活躍していました。彼女は大統領自由勲章を勝ち取った人物です。ショーは、アーキテクチャはその構成要素となるプロセスの集合体であるという発想を始めた業績で、オバマ前・大統領からこの賞(アメリカ国家技術賞)を与えられました。

図表128 エーリヒ・ガンマ(Erich Gamma) *Wikipedia 

図表129 ジョン・ブリシディース(John Vlissides) *Wikipedia 

図表130 リチャード・ヘルム(Richard Helm) *ボストンコンサルティンググループ

図表131 ラルフ・ジョンソン(Ralph Johnson) *Wikipedia 

図表132 リチャード・ガブリエル(Richard Gabriel) *dreamsongs *Wikipedia 

図表133 ケント・ベック(Kent Beck) *Wikipedia 

図表134 「The Hillside Group」ロゴ *ホームページ *Wikipedia 

図表135 The Timeless Way of Building』(邦訳『時を超えた建設の道』鹿島出版会) *Amazon 

図表136 フィリップ・クルーシュテン(Philippe Kruchten) *Wikipedia 

図表137 「4+1 Model View」 *論文 *Wikipedia 

図表137 メアリー・ショー(Mary Shaw) *Wikipedia 

もう1つの業績は、キラン・カリック(Kiran Karnik、図表138)に関するものです。先ほどお話しした、1950年代に英国にソフトウェアハウスを初めて作った女性を覚えていますか? カリックはアウトソーシングという考え方をインドに初めてもたらしました。これにより、私たちはとてつもない変化を目撃することになったのです。

それは、経済だけでなく、ビジネスや文化にも変化をもたらしました。カリックは、インド経済を変化させる種をまき、新たな規範を作り出しました。なぜならカリックは、インターネットのおかげで今やインドにアウトソーシングされることが可能であることに気づき、英国で目撃したのとほぼ同じように、それをとても大きな規模で成し遂げたからです。このように、ソフトウェアエンジニアリングの変化は、世界にさまざまな変化をもたらすのです。[第9回へ続く]

図表138 キラン・カリック(Kiran Karnik)  *Wikipedia 

・・・・・・・・

◎グラディ・ブーチ氏講演 「ソフトウェアエンジニアリングの歴史」

第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]

新着