実践UML第2版でのカプセル化と情報隠蔽

ASIN:4894713861 P.350より

David Parnasの著名な論文、On the Criteria To Be Used in Decomposing Systems Into Modules [Parnas72]は、頻繁に引用される古典でありながら、実際に読まれることは少ない業績の例です。その論文の中でParnasは情報の隠蔽(Information Hiding)という概念を紹介しています。おそらく、この用語から受ける印象がデータのカプセル化に似ているため、この用語はデータのカプセル化の意味を持つものとして誤用されてきました。しかしParnasが意図した「情報の隠蔽」とは、困難な箇所や変更が発生しそうな箇所において、設計に関する情報を他のモジュールから隠蔽することを意味します。設計原則としての情報の隠蔽についてParnasが論じている内容を引用します。

難易度の高い設計上の意思決定を挙げたリスト、あるいは、変更が発生しそうな設計上の意思決定を挙げたりストをもとに着手することを提案する。その後で、そのような意思決定が他から見えないように各モジュールを設計する。

つまり、Parnasのいう情報の隠蔽は、バリエーション防護が表す原則と同じです。単なるデータのカプセル化ではありません。データのカプセル化は、設計に関する情報を隠蔽するさまざまなテクニックの1つに過ぎません。しかし、この用語はデータのカプセル化の同義語としてあまりにも広く誤用されてきたため、本来の意味で使用することが困難になっています。