皮を被せるのがSEの仕事?

投稿日:2008年08月18日 作成者:yasunaka

システムを設計する際には、必ずといっていいほどいろいろな部分で「皮を被せる」ことが行われていると思います。この「皮を被せる」というのは、あるモジュールを利用する際に、それをそのまま使うのではなく、一般化したインターフェースを自前で定義することで、そのモジュールに対する依存性を下げるために使われています。

確かにインターフェースを介した設計というのはいいことだと思うのですが、現実問題として、その「皮」がまるでらっきょの皮のように何重にも定義されているケースがよくあります。インターフェースを何重にも定義した場合、それぞれの階層毎にテストが必要となり、メンテナンスも大変になり、メモリを余計に食い、パフォーマンスも劣化し、あまりいいことはないはずです。

つまり、何重にもなっている場合には明らかに設計を間違えているわけですが、例えば「決まり」としてそうしなければならない、などといったよく分からない理由で皮が定義されていることがしばしばあります。またどういうわけか、そういった皮を定義することが生きがい(趣味?)のような人もいますよね。だから世の中には無用な皮をまとったシステムが大量に出来上がり、本人達の自己満足のために、客観的にはやたら複雑化したシステムができあがるわけです。

皮を新たに定義する前に、今そこにあるものが目的にあったインターフェースかどうかを検討し、もしほぼ満たすものであれば、むしろ積極的にそれを活用すべきなのではないでしょうか?

日本料理のように、素材の良さを活かしたシステム設計というのも「あり」だと思います。