今時のDIコンテナを使ったプロジェクトでのパッケージ依存関係の取得

Technoratiで遊んでいたら発見させていただいたので…

インジェクションをするインタフェイスを実装したクラスとインタフェイスとの間って
DIコンテナが依存関係を解決するから依存関係を調べるには設定ファイルの解析しか。。。

このあたりが少し理解しきれていない部分があるのですが、クラス間の依存関係を調べるときには
むしろここがきれいさっぱりと

  • あるコンクリートクラス(HogeServiceImpl) → あるインタフェース×n

の依存関係に整理されているので良いのではないでしょうか。で、例の依存度とかで見る指標の観点から見てもこの手法で問題ないかと思われます。
理想というか、インタフェースとコンクリートクラスに分けた上で、「インタフェースは仕様であり契約である」というあたりを徹底すると、依存関係はクラス→インタフェースだけでスッパリ切れると思います。数値化という観点では「なかなかよろしい抽象度ですね〜」という話にはこの方法で充分かと思うので。
ただ、あるServiceImplが特定の別のServiceImplの独自の動きに依存しているようなところがあって、それを数値化する…という目的では確かにコンポーネント定義のファイルとか見ないといけないから DI Container依存になって難しいでしょうね。

会社のプロジェクトは、ここ最近完全にS2ベースのものになっていて、CAPやMetricsで見ると、すごくいい作りになってます。反面、オブジェクト指向の設計品質うんぬんで言われているように、抽象化が進んだ設計ではinterfaceの仕様が変更になる(...と 例えばBeanも変更になることが多く...)と波及は大きいです。でもまあ、そんなもんかな、と。これはひとりごとでした。