Web教材一覧システムの調達

UMLの概要


UMLとは

UML(Unified Modeling Language:統一モデリング言語)は、オブジェクト指向の方法論で使われている図式表現を統一したものです。情報システムの現状、開発すべき情報システムを設計するため、可視化するための表記としての標準です。UMLの1.4.2版が ISO/IEC 19501 、JIS X4170 になっています。

1990年代初頭から、オブジェクト指向設計が普及するのに伴い、多数の方法論が開発されましたが、Booch、Rumbaugh、Jacobsonにより統合されてUMLとなり、OMG(Object Management Group)によって標準として認定され、広く用いられるようになりました。

その後、UMLは発展しました。各種の図を作成するツール、図の相互関係を分析し矛盾や不足を指摘するツール、さらにはUMLからJavaのプログラムを自動生成するツールが開発されてきました。そのため、UMLは情報システムの開発基盤になってきたのです。将来は、プログラムはプログラミング言語で記述するのではなく、このような開発基盤により作成するようになると期待されています。

UMLの図法

●体系による図の一覧
 UMLは、次の13の図法があります。そのうち、重要なものに★をつけました。なお、この表の説明はかなり簡略しており厳密性を欠いています。≒印は似ている従来の図法です。

 構造図
  (静的構造)
    ★クラス図       業務で用いられる情報の構造を図示≒ERD
     オブジェクト図    クラス図をオブジェクトのレベルで図示
                インスタンス間の関係を表現
     コンポジット構造図  構造を持つクラス等の内部構造の協調関係を図示
     コンポーネント図   プログラムやリソースファイルの構成を図示
  (実装)
     パッケージ図     データやプログラムをパッケージとしてまとめて図示
     配置図        ハードウェアなど物理的構成を図示
 振る舞い図
  (要求)
    ★ユースケース図    システムが外部に提供する機能と、利用者や外部システムとの関係を表現
  (相互作用図)
     相互作用概要図    以下の相互作用の図をまとめたもの
    ★シーケンス図     オブジェクト間の相互作用(情報の流れ)を時間的に図示≒業務分析図
     コミュニケーション図 オブジェクト間のリンク関係を図示
                (以前はコラボレーション図といっていました)
     タイミング図     時間を横軸にとり、システムの動作の開始や終了を図示
  (その他の振る舞い)
    ★アクティビティ図   ある振る舞いから次の振る舞いへの制御の流れを表現する≒DFD
                 (ユースケースを行う処理の流れを図示)
     ステートマシン図   オブジェクト生成~消滅をイベント発生や時間経過による状態変化≒状態遷移図
                (以前はステートチャート図といっていました)

●開発プロセスとの関係
 システム開発のプロセスと対応させると次のようになります。しかし、開発の仕方により異なりますし、部分的に他のプロセスでも用いることがありますので、厳密なものではありません。

アクティビティ図

システム化の対象となる業務フローの現状やあるべき姿などを示します。

ユースケース図

ユースケース図は、システムがもつべき機能(これをユースケースという)と利用者(アクターという)の関係を示す図です。要件定義の段階で作成し、開発するシステムの全体像を、発注者と開発者が誤解なく理解することが目的です。
 ユースケース図では、アクターを人の形、ユースケースを楕円で表現します。

クラス図

クラス図とは、システムで取り扱うクラスと、クラス間の関連を表した図です。従来から利用されていたERD(Entity-Relationship Diagram)を拡張したような図法です。情報の流れの順序などは表現していないので、静的構造といいます。

操作
属性とはクラスがデータとしてもつ項目です。ERDでは、これにより一つのファイル(リレーショナルデータベース)が実装されます。クラス図では、それに加えて操作(メソッド)も記入できます。例えば、クラス「利用者」では、「加入する」「退会する」があります。これはプログラムとして実装されます。すなわち、データとそれを操作するプログラムが一体となったものがクラスになるのです。
汎化
「図書」には「単行本」と「雑誌」に区分することができます。このとき、「図書」は「単行本」と「雑誌」を汎化したクラスといい、「図書」をスーパークラス、「単行本」「雑誌」をサブクラスといいます。このような関係があるとき、スーパークラスで定義した属性や操作をサブクラスに引き継ぐことができます。その機能を継承(インヘリタンス)といいます。
関連、多重度
例えば、クラス「利用者」と「貸出・返却」の間に、関連(relationship)があることを示すには、図のように2つのクラスを線で結びます。そして、「1人の利用者は、数冊の貸出・返却をする」、「1つの貸出、返却は、唯一の利用者によりなされる(同一の図書を複数の利用者が同時に貸出・返却することはない)」という関連があるとき、「利用者」の「貸出・返却」の多重度を1、*で表します。(*は不特定多数の意味)で表します。
(以下の図で「0..*」は、「*」としても意味は同じです。「0も含む」を強調したいときに「0..*」とします。)
さらに、その関連におけるそれぞれのオブジェクトの役割をロール名といい、◀ や ▶ で示します。
 ┌───┐◀ 所属する┌───┐ Aには一つ以上のBが存在する
 │ A ├─────┤ B │ Bは必ず唯一のAに所属する(Bは決まればAもわかる)
 └───┘1   1..*└───┘ 例:A=学部、B=学生
                  (全ての学部定数が100人なら 1..100 とする)
                   ロール名;学生は唯一の学部に「所属する」ことを明示しています。
 ┌───┐     ┌───┐ AにはBが存在しないか、一つ以上のBが存在する
 │ A ├─────┤ B │ BはどのAにも所属しないか唯一のAに所属する
 └───┘0..1 0..*└───┘ 例:A=立候補者、B=有権者
                   (得票数が0の場合、棄権の場合もある)
 ┌───┐     ┌───┐ AにはBが存在しないか、一つ以上のBが存在する
 │ A ├─────┤ B │ BはAに所属しないか、複数のAに所属する
 └───┘0..* 0..*└───┘ 例:A=科目、B=学生
            (AとBは「多対多」の関係になるので、中間にC(履修者名簿)を作る)
             ┌───┐     ┌───┐     ┌───┐
             │ A ├─────┤ C ├─────┤ B │
             └───┘1   0..*└───┘0..*   1└───┘

シーケンス図

シーケンス図とは、システムの動的な振る舞いを表現する図です。処理の流れに沿って、 メッセージを上から下(時系列)に配置して表します。アクティビティ図と似ていますが、アクティビティ図では業務向けの外部設計を対象にしているのに対して、シーケンス図はオブジェクト間の相互作用を示したもので、内部設計に用いることを目的にしています。


理解度チェック: 正誤問題
過去問題