基礎理論 - 2.アルゴリズムとプログラミング - 5.その他の言語 - 2.その他の言語

Last Update : January 02 2021 16:00:18

     

a. UML

UMLとは、Unified Modeling Languageの略で、統一モデリング言語を意味している、オブジェクト指向で業務を分析したり、システムを開発したり、ソフトウェアモジュールを設計したりする際のダイアグラムの描き方・記法を定めた米国のオブジェクト技術標準化団体OMG(Object Management Group)の標準である4)、オブジェクト指向分析・設計の標準表記法と言える、

クラス図
モデルの静的な構造を表す図で、問題領域やシステムの構造を表現できます。パッケージ単位での表現や、全体での表現、または機能単位での表現というように、色々な視点で作成することができます。
長方形のクラスシンボルと関連線の組み合わせで成り立つ。

  • クラス(class)
    長方形の中は3区画に分かれ、上からクラス名、属性、操作が記述されます。クラス名の上には"<<>>"で囲まれたステレオタイプを付けることができます。属性はデータを表し、"可視性 名前:型 = デフォルト値"で表します。操作は振る舞いを表し、"可視性 名前(パラメータリスト):返り値"で表し、パラメータリストは、"名前:型=デフォルト値"をコンマで区切って並べます。また、staticな属性や操作は、下線をつけることで表現します。可視性は次のように表します。

  • 関連(association)
    クラス間に、参照や実体を保持するなどの関係があることを表します。線の両端には矢印をつけることができ、矢印がある場合は、その方向にのみ関連があることを示します。これを誘導可能性(navigability)と言い、矢印の無い関連は、誘導可能性が未知であるか、双方向であることを意味します。

  • 集約(aggregation)
    関連の一種で、「全体-部分」関係を表します。
    白抜きのひし形と直線で表す。矢印がつく場合もある。ひし形側が全体で直線・矢印側が部分を示す。

  • 合成集約(コンポジション:composition)
    関連の一種で、より強い集約を表します。全体が削除された時点で、部分も共に削除されると考えられます。
    塗りつぶしのひし形と直線で表す。矢印がつく場合もある。

  • ロール名(role name)
    関連の端に書かれる、関連先の役割を表す名前です。設計レベルでは、関連先を保持するための名前、つまり属性名を付けることが多いでしょう。

  • 多重度(multiplicity)
    関連の端に書かれ、関連の張られたオブジェクト間の数的関係を表します。具体的な数値の他に、"0..n"や"*"(共に0以上)、"1..n"(1以上)、"2..7"(2から7)のように任意の値を設定できます。

  • 依存関係(dependency)
    相手の変更によって影響を受ける関係です。引数などで一時的に使用するクラスやイベント通知などを表現するときに使用します。

  • 汎化(generalization)
    属性/操作/関連を引き継ぎます。JavaやC++、C#の継承に相当します。矢印の先端が継承元となります。

  • 実現(realization)
    操作のインターフェースを引き継ぎます。Javaのinterfaceに相当します。矢印の先端が実現元となります。

  • ステレオタイプ(stereotype)
    UMLの拡張メカニズムで、アプリケーションや問題領域固有の意味を、 わかりやすくモデルに表現するために付加する文字列です。ステレオタイプを付加することで、 同一のモデル要素を、意味的に分類することができます。

  • 制約(constraint)
    { }に囲んで制約を課すことができます。勤務時間データを年月日で整列して持つことを表しています。


シーケンス図
オブジェクト間のメッセージの流れを時系列的に表現することが可能である。
図の上から下へ、垂直に時間が進むと仮定します。 水平に、異なるオブジェクトが配列され、特定の時間に発生する操作を記述します。 つまり、垂直に時間、水平にオブジェクトを記述する 2 次元グラフなのです。

  • オブジェクト(object)
    クラスが実体化したものをオブジェクトと呼び、インスタンスとも呼ばれます。長方形の中に、 「オブジェクト名:クラス名(下線)」で記述し、名前の一部を省略して、 「オブジェクト名(下線)」や「:クラス名(下線)」と記述することも可能です。

  • ライフライン(lifeline)
    オブジェクトが生存している期間を示す点線で、オブジェクトから垂直方向に伸びます。 点線の先に×が現れるまでが生存期間です。

  • メッセージ(message)
    ライフライン間を結ぶ水平の矢印(左右どちら向きでもOK)とメッセージ名で表現します。 矢印には、同期と非同期の2種類があり、先端の形状が異なります。同期的なメッセージは黒三角の矢じり、 非同期的なメッセージは「く」の字の矢じり(*)です。同期的とは、 メッセージのリターンを待って次の処理に進むような場合で、通常のプログラミング言語の関数呼び出しです。 非同期的とは、リターンをまたずに次の処理に進む場合で、例えば受け側が別のスレッドで動いており、 キューにメッセージを貯めているような場合に相当します。

  • リターン(return)
    破線の矢印で表し、返り値を記述できます。リターンは省略可能です。

  • 活性区間(activation)
    ライフラインの上に上書きされる長方形で、この区間では、そのオブジェクトに制御が移り、 オブジェクトがアクティブな状態になっていることを示します。


オブジェクト図
インスタンス同士の関係を表す。
クラスとクラスの関係をインスタンス化したもの。
システムのある時点におけるオブジェクト間の関係を表現する図で、システムの静的な構造を表すものです。

  • オブジェクト(object)
    長方形を2区画にすることで、下の区画に属性を表現することができます。 属性は「属性名:型 = 値」で記述し、「:型」は省略可能です。


コラボレーション図

オブジェクトの相互作用を表す相互作用図の1つで、オブジェクト間のメッセージのやりとりを、 接続関係に着目して表現したものです。レイアウトを工夫することで、 シーケンス図よりもオブジェクト間の関係がつかみやすくなります。

  • リンク(link)
    インスタンスレベルでの関連で、他のオブジェクトとの参照関係を表します。リンクと関連の関係は、 オブジェクトとクラスの関係と同じです。すなわち、関連をインスタンス化したものがリンクとなります。

  • メッセージ(message)
    シーケンス図で使用するものと同じですが、メッセージの相対的順序番号が必須となります。


ステートチャート図
ひとつのオブジェクトの状態変化を表した図で、外部からの入力と、 それに対するオブジェクトの状態遷移を表します。

  • 状態遷移(transition)
    ある状態から他の状態への移行は、"イベント名[ガード]/実行する内容"のように記述します。 "イベント名"、"イベント/実行する内容"のように、不要なものは省略することができます。 また、自分自身へ遷移するイベントも記述でき、自己遷移と呼ばれます。


ユースケース図
現実の仕事で使われる機能を規定し、その機能をシステムと外部との対話または相互作用として表したもの。
システムの使用機能(ユースケース)を、楕円の中にユースケース名として書くことで記述します。 ユースケースを全て集めたものが、システム全体の機能となります。
外部環境(アクター)をその外側に配置する。


アクティビティ図
業務や処理の流れを表すために、関連する複数の業務手順や処理ステップを順序だてて配置したものです。
アクティビティ図は必ず開始状態から何らかの終了状態へ、矢印で示された手順に従って実行を行います。
アクティビティ図がフローチャートと異なる特徴は、並行処理が記述できることです。

  • アクティビティ(activity)
    業務や処理を行っている状態です。状態を矢印で結ぶことで、処理の流れを示します。

  • 開始状態
    システムの開始状態を示します。後に説明する状態図にも用いられます。

  • 終了状態
    システムの終了状態を示します。後に説明する状態図にも用いられます。

  • ガード(guard)
    条件を示します。

  • 分岐(branch)
    処理の流れの分岐点を示し、ガードが真となる方向に遷移します。

  • 同期バー
    制御を分割したり、同期して結合したりすることを表します。 制御を分割するときはフォーク(fork)、同期して結合するときはジョイン(join)と呼びます。

  • レーン(swinlane)
    振る舞いの責任範囲を分けるために、図を縦に分割する実線です。 オブジェクトやサブシステムに割り振られた処理のまとまりを明示します。

アクティビティ図の主な図式要素
アクティビティエッジ 普通のアクティビティエッジ アクティビティエッジ
アクティビティエッジのコネクタ表記 アクティビティエッジ(コネクタ表記)
アクティビティノード 動作ノード 動作
オブジェクトノード オブジェクト
制御ノード 分岐、マージ 分岐、マージ
フォーク、ジョイン フォーク、ジョイン
開始 開始
アクティビティ終了 アクティビティ終了
フロー終了 フロー終了





     

www.it-shikaku.jp