Working With Objects

MVC の父、Trygve Reenskaug(読み方不明:トリグヴェ・リーエンスコゥグ?)の「Working With Objects」を読んでみました。

Working With Objects: The Ooram Software Engineering Method

Working With Objects: The Ooram Software Engineering Method

現在は絶版のようで、preprint が PDF で公開されています。

http://heim.ifi.uio.no/trygver/1996/book/WorkingWithObjects.pdf

1980 年代後半から、Booch や OMT などを始めとする様々なオブジェクト指向分析・設計の方法論が提唱されましたが、本書が提唱する OOram もその一つです。1997 年にはこれらの表記法が統合され、UML 1.0 がリリースされています。

http://ja.wikipedia.org/wiki/%E7%B5%B1%E4%B8%80%E3%83%A2%E3%83%87%E3%83%AA%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E

OOram の中心的な概念は、ロールモデルです。ロールモデルとはシステムのある側面におけるオブジェクト群の相互作用のことで、ロールとはそのロールモデル(≒コンテキスト)におけるオブジェクトの役割を表します。例えば、クライアントサーバーというロールモデルでは、クライアントやサーバーがそれぞれロールになります。MVC というロールモデルなら、モデル、ビュー、コントローラーがロールですね。

単純なケースでは、単一のロールモデルを継承して派生ロールモデルを構築します。サーバークライアントモデルをベースに FTP モデルを構築する、といった具合です。さらに、複数のロールモデルを継承してより複雑なロールモデルを表現することもできます。これを「ロールモデル統合」と呼ぶそうです。

Working With Objects ではこうした OOram の紹介に留まらず、オブジェクト指向によるシステム開発の各工程を丁寧に掘り下げていて、その内容には今でも通用する普遍性があると感じました。OOram の表記法があちこちに出てきて最初はうっとおしい気もしますが、UML がわかる人ならすぐに慣れると思います。

OOram はまた Rebecca Wirfs-Brock にも大きな影響を与えているようで、好著「オブジェクトデザイン」にも参考文献として掲載されています(p.45)。

オブジェクトデザイン (Object Oriented SELECTION)

オブジェクトデザイン (Object Oriented SELECTION)

Working With Objects を読むと、10 年以上も前に今で言う Agile と同じようなことを実践していたことがわかります。再利用を前提にした品質の確保、問題に対するアプローチの仕方、オブジェクトの相互作用による価値の創造。20 年に渡って蓄積された経験と考察がこの本には凝縮されています。まさに、本物のオブジェクト指向がここにはあるわけです。

でも。なあ。

Trygve の提唱するメソッドでオブジェクト指向分析を実践するためには、かなりハイレベルなオブジェクト指向リテラシーとでも言うものが必要になりそうです。特に、ロールモデル統合など、複雑すぎて実際にやるのは無理なんじゃないでしょうか。また、業務システム開発で、抽象的なロールモデルの是非を真面目に議論するというのも非現実的な気がします。

というわけで、OOram を実際に適用するのは難しいかもしれませんが、コンセプトや勘所については十分参考になりました。理解を深めるために、もう一度読み直してみるつもりです。