1/25 夜

昼は外出で勉強できなかったので、夜に残業のふりして会社でまとめて勉強。
朝やっても昼夜でできなければ結局金曜日にはファミレスコースだからな。
ちょっとずつでも消化していきたい…。

UML

量が多いのでWikipediaから適当に抜粋。
会社に専門書が置いてあったのでそっちを読んでおこう。説明文見てもわからないから図を実際に見て勘所をつかんどけばOKでしょう。

wikipedia:統一モデリング言語

UMLのダイアグラム

  • 構造図:システムの静的な構造をモデルで表現
    • クラス図
      • wiki参照
      • システムを構成するクラス(概念)とそれらの間に存在する関連の構造を表現する。
      • クラスの属性とメソッドを記述することができる (省略しても良い) 。
      • 関連については多重度を記述することができる。
      • クラス間の継承関係 (汎化-特化) 、集約、コンポジションなども表現することができる。
    • 複合構造図
    • コンポーネント
      • wiki参照
      • 物理的な構成要素 (ファイル、ヘッダ、ライブラリ、モジュール、実行可能ファイルやパッケージなど) からシステムの構造を表現する。
      • インタフェースを介したコンポーネント同士の関係やコンポーネントの内容を表現する。
    • 配置図
      • wiki参照
      • ハードウェアとアプリケーションとの関係を図に図示したもの。
    • オブジェクト図
      • クラスを実体化して生成されたオブジェクト同士の関係を表現する。
    • パッケージ図
      • wiki参照
      • パッケージ同士の依存関係を描画することで論理的なグルーピングをするための図で、クラス図の一部である。
      • パッケージは、慣例的にはディレクトリ構造のように表わすことができる。
      • パッケージ図では、システムを論理的な階層構造に分解するのに役立つ。
  • 振る舞い図:システムの振る舞いをモデルで表現
    • アクティビティ図
    • ユースケース
      • wiki参照
      • システムに要求される機能を、ユーザの視点から示したもの。
      • そのシステムの機能(ユースケース)に外部からアクセスする利用者、外部システムなどを「アクター」と呼ぶ。
      • ユースケース図を有効に活用することにより、システムの全体像を開発者とユーザが一緒に評価しやすくなり、これにより完成後のシステムの機能がユーザの要望に合わないという問題を軽減できる。
    • ステートチャート(状態遷移図、状態機械図)
  • 相互作用図:振る舞い図のサブセットであり、システムにおける制御の流れとデータ (オブジェクト) の受け渡しをモデル化する。

オブジェクト間のメッセージの流れを時系列に表す。図の中に時間の流れが存在するため、イベントの発生順序やオブジェクト間の生存時間を記述することができる。

    • コミュニケーション図(コラボレーション図)
    • 相互作用概要図
    • タイミング図
      • 時間軸に沿って、状態遷移、時間制約、メッセージ送受信を表現する。

モジュール強度、モジュール結合度

モジュール強度

モジュール内の複数の処理・機能同士の関連性の強さ。
強度の高い順に、以下のとおり。強度が強いほうが独立度が高い。

  • 機能的強度
    • 一つの機能を実現するためだけのモジュール
  • 情報的強度
    • 特定のデータ構造を扱うためのモジュール
  • 連絡的強度
    • 関連ある逐次的な機能で要素が連絡し合うモジュール
  • 手順的強度
    • 関連ある逐次的な機能を扱うモジュール
  • 時間的強度
    • 時間的に連続した複数の機能を扱うモジュール
  • 論理的強度
    • 関連する複数の機能を扱うモジュール
  • 暗号的強度
    • 関係の無い複数の機能を扱うモジュール
モジュール結合度

モジュール間の関連度の強さ。
結合度の弱い順に、以下のとおり。結合度が弱いほうが独立度が高い。

  • データ結合
    • モジュール間の引数として必要なデータ項目だけを渡す。
  • スタンプ結合
    • モジュール間の引数としてデータ構造(不必要なものもふくめ)を渡す。
  • 制御結合
    • 制御パラメータを引数として渡し、モジュールの実行順序を制御する。
  • 外部結合
    • グローバル領域で必要なデータだけを外部宣言して共有する。
  • 共通結合
    • グローバル領域でデータ構造(不必要なものもふくめ)を宣言して共有する。
  • 内部結合
    • 他のモジュール内を直接参照する。