バードランド・メイヤーのオブジェクト指向開発の正しい理解法
Eiffle言語の設計者として有名なバードランド・メイヤーの書籍「オブジェクト指向入門第2版」が、比較的最近上・下分冊で翻訳された。
翻訳では上下合わせて1800ページ近くある(原書は1300ページ位)。
Eiffle言語を用いてオブジェクト指向設計と実装に焦点をあてて書かれている書籍である。
#第2版では開発全般について触れられているが、基本的にバードランド・メイヤー主張は、詳細設計と実装に重きが置かれている。
内容を読んで感じたのはやはりこの方は言語設計者であるということである。
バードランド・メイヤーの主張では、上流の作業やオブジェクトの抽出についても言語からの視点が強すぎる傾向があり、概念モデリングレベルからクラスを型として意識しすぎる。
ユースケースからのクラス抽出に否定的であるが、その理由がやや検討は外れというか、あまりユースケースドリブンの開発に自ら経験が無いのだろう。
概念モデルや分析モデルには、実装のための情報だけでなく、色々な目的がある。
よってこの時点からクラスを型として意識する必要はあまりない。
書籍全般については深い洞察と豊富な記述がなされていることは認めるが、色々な技法や他の研究者の考え方を紹介しつつも、実のところ上流になればなるほど、あまり深い知識を有していない、あるいは実務上の経験がないことが見てとれてしまう。
また、自分の意見を強引に正当化する部分が散見される。
一方、実装レベルになればなるほど彼本来の強みと個性が出ている。
開閉原則や契約に基づく設計と表明は有名だが、バードランド・メイヤーの真の主張と狙いを理解するには、型理論や形式記述的な部分を理解しなければならない。
#蛇足だが、開閉原則はバードランド・メイヤーとマーチンの2つが知られており、継承をも用いている点は同じだが、内容は大きく異なっている(目的と求めている利点が少し違う)。
バードランド・メイヤーの考えをソフトウエア開発で実現するには、型理論にける厳格な型チェックが必要である。
開閉原則を満たすためには継承メカニズムをどのように活用するか極めて重要だが、バードランド・メイヤーの継承活用の考え方は、巷に氾濫するオブジェクト指向の書籍とその書籍達の中で解説されている継承の解説とは大きく趣を異にする。
極めて形式記述的で型理論をきっちり理解していないと本当の意味で理解したことにならない。
詳細設計(クラスの定義や関連など)について数学的な扱いをする。
より具体的な事を言えば、バードランド・メイヤーの書籍「プログラミング言語学の招待」やなどの書籍を併読する必要がある。
多相性を実現するには反射律と対称律は成立するが、推移律は満たさないという共有関係においてモデル化が可能である。
継承では区分原肢で分類された特化側のクラスは同値類(商集合)であるが、同値とは反射律、対称律、推移律を全て満たす。
同値類でないつまり同値分割でな場合は、UMLの制約で{overlap}と記すが、この場合推移率を満たさなくすればよい。
なお、日本では形式記述や型理論というと机上の学問的に感じられており開発現場では敬遠されているが、これは日本特有の取られ方の気がする。
EUでは多くの開発者が命題論理学や述語論理学がキチンと理解されているせいか、その後プロセス代数や各種形式記述、型理論にしっかりした知識を持てる力がある。
だからこそバードランド・メイヤー(フランス人)の形式的な特色が強い書籍も非常に多くのエンジニアに読まれているわけである。
日本のソフトウエア開発の弱点はあまりに経験則的かつアバウトな取り組みであることだろう。
HSCI Takanari Hashimoto(URL:http://hsc-i.com/)=
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- 6つのテーマを同時並行作業(2019.07.05)
- すっかりご無沙汰してしましました(2018.05.27)
- CCCC(C AND C++CODE COUNTER)GUIランチャーの公開(2017.04.13)
- 作成したYicesのGUIからオプションを変えSMTを行う(2017.01.19)
- 『Yices』によるSMTソルバ(2017.01.18)
この記事へのコメントは終了しました。
コメント