<< 実践 ソフトウェア・アーキテクチャ : パッケージに凝集する | main | 実践 ソフトェア・アーキテクチャ : 楽をしたい >>

実践 ソフトウェア・アーキテクチャ : 結合度を簡単に判定する

レイヤやパーティンションは、コードレベルでは、パッケージの設計と実装になりますね。

パッケージ間の参照関係 ( import 関係 ) が複雑だと、ソフトウェアは理解が難しく、変更もたいへんになる。

結合度を低く保つことも、設計の重要テーマですね。

結合度の実践的なチェックポイントは、import 文の数。

import 文が多い=依存するパッケージが多い=結合度が密
import 文が少ない=依存するパッケージが少ない=結合度が疎

ということですね。

もう一つのチェック方法は、単体テストの難易度。

単体テストが難しいモジュールは、なにかと密結合しているから。
単体テストが易しいモジュールは、疎結合。結合度が低い。

単体テストをやるのに、山ほど依存コンポーネントを集めたり、モックコードを書くようではだめ、ということですね。

単体テストの障害になる箇所を、特定し、それを改善することで、設計の質を向上できる。

Spring は「テスト容易性」を重視したフレームワークです。Springが提供するさまざまなメカニズムやその背景にある考え方は、とても参考になります。

例えば、Spring では、SQL 例外の扱いで、2つの利便性を提供します。

a. ベンダー依存の SQL 例外を、一般化した SQL 例外モデルにマッピングする
b. 一般化した SQL 例外は、runtime 例外 ( コード内で try / catch は不要 )

Spring を使うと、結合度を低くする設計方法とそのメリットを具体的に知ることができます。

コメント
コメントする









この記事のトラックバックURL
トラックバック
calendar
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
<< July 2017 >>
システム設計日記を検索
プロフィール
リンク
システム開発日記(実装編)
有限会社 システム設計
twitter @masuda220
selected entries
recent comment
  • 番号より名前。 ニーモニックコードより名前。 【パターン】
    師子乃 (03/10)
  • Smart UI が優れている?
    masuda220 (03/10)
  • Smart UI が優れている?
    kagehiens (03/09)
  • オブジェクト指向プログラミングの教え方?
    masuda220 (12/05)
  • オブジェクト指向プログラミングの教え方?
    ZACKY (12/04)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    masuda220 (08/14)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    kompiro (08/14)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    masuda220 (06/13)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    JHashimoto (06/13)
  • 「オブジェクトの設計力」 スキルアップ講座やります
    masuda220 (02/28)
recent trackback
categories
archives
others
mobile
qrcode
powered
無料ブログ作成サービス JUGEM