私はパッケージ間の結合や配布単位間の結合にもっと関心がありますか?


2

私はcouplingのメトリックを見ており、DSMも見ています。

私が使ってきたツールの1つは、モジュールがディストリビューションの単位(この場合は.netアセンブリ)である「モジュール」間の結合を調べることです。

私は、配布単位よりもパッケージ(または名前空間)間の結合を調べることにもっと関心があるはずです。

抽象概念は抽象にのみ依存し、具体的な型は抽象概念に依存し、リファクタリングと拡張が容易になるように依存関係にサイクルが存在しないことを保証します。変更のない単位のディストリビューションを更新することなく新しいバージョンをデプロイできるかどうか。

他にも何を測定しますか?

私は、パッケージ/名前空間結合に焦点を当てれば、配布カップリングの単位が無料になるか、少なくとも簡単になるだろうというのが私の感想です。

3

まず、依存関係やカップリングを見て外に出るのは簡単です。あなたがそれを複雑にしていないことを確認してください。

このような免責事項は、私が提案したものです。 1)物理的な構造(すなわち、アセンブリの依存関係) 2)論理的構造(すなわち、名前空間の依存関係) 3)実施体制(つまり、クラスの依存関係)

の場合:

は本当に3種類の依存関係/カップリング管理にビューをあります大規模なアプリケーションでは、少なくとも3つをすべて調べる必要がありますが、通常は優先順位を付けることができます。

クライアントデプロイメントアプリでは、番号1が非常に重要です(プラグインなどの場合)。企業内に配備されているアプリ(asp.net)の場合、アイテム#1はそれほど重要ではないことが分かりました(複数のアプリに再利用されたフレームワークは除きます)。 #1の複雑な構造のオーバーヘッドを取らないように、通常はアプリケーション全体を簡単に展開できます。

アイテム#2は、保守性の問題が多い傾向があります。レイヤ境界とその名前空間との関係を把握しています(つまり、名前空間あたり1つのレイヤを実行しているか、論理レベルで別々にパッケージ化していますか)。ツールは、論理的な依存関係の構造を見て、レイヤ境界を強化するのに役立ちます。

商品#3は本当に良いクラスデザインをしています。優れた開発者は、彼がクラスで適切な依存関係を取っていることを確実にするためにかなりの努力を払うべきです。これは完了したよりも簡単であり、通常は時間の経過とともに獲得されなければならないスキルです。

質問の中心に少し近づくために、項目#1は実際にプロジェクトがVSソリューションでどのようにレイアウトされているかについてです。したがって、これは測定する項目ではありません。それはあなたが最初に設定して実行するものの多くです。アイテム#2は、開発者がルールを破っているかどうかを確認するために、ビルド中にツールを使用してチェックするものです。それは実際の対策よりも多くのチェックです。アイテム#3は本当に測定をよく見たいと思うものです。あなたのコードベースでクラス分けの高いクラスを見つけることは、道のりの苦痛の点になり、それらの人たちの品質を保証するでしょう。また、このレベルで測定することで、進化したコードベースの品質(全体的な)についていくつかの洞察を得ることができます。さらに、もし誰かがあなたのコードベースに本当に厄介なコードをチェックすれば、それはあなたに赤い旗を与えることができます。

したがって、優先順位を付けたい場合は、#1と#2を見てみましょう。彼らはどのように見えるべきかを知る。しかし、ほとんどのアプリでは、アイテム#3が最も時間を費やしているはずです。

この回答には、巨大なフレームワーク(.NET BCLなど)は含まれていません。それらの赤ちゃんは#1に非常に慎重な注意が必要です。 :-)

そうしないと、このような問題で終わる: 「.NET Frameworkの現在のバージョンは、Server Coreのでは正しく動作しないだろうかGUIベースのライブラリの多様性を含ん」 http://www.winsupersite.com/showcase/win2008_ntk.asp

フレームワークがGUIライブラリに依存するため、Windows Server 2008のGUIレスインストールで.NETを実行することはできません。

最終的なものは1つです。依存関係/結合管理の原則に精通していることを確認してください。あなたはここで素敵なリストを見つけることができます。

http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

  0

素晴らしい答え、感謝を。それは私が優先順位をつけ、私が見ているものを重視するのに役立ちます。 23 9月. 082008-09-23 23:13:08


0

配布単位間の結合と依存関係のサイクルは、プログラムを展開することが本当に困難になる可能性があるため、「致命的」です。また、プログラムをコンパイルすることも非常に困難になることがあります。

ほとんどの場合、コードを論理パッケージに分割し、明確で事前定義された依存関係を作成する優れたトップレベル設計が、ほとんどの方法で利用できます。唯一の欠点は、パッケージをディストリビューションの単位。