■ Java UML - Unified Modeling Language

□ UMLとは

  ・Unified Modeling Language

  ・モデル化
    ・対象物から構築するシステムの視点で必要なデータを取り出すこと
    ・モデル化がすなわち設計である

  ・UMLは、対象物をモデル化して、それを複数の図で表現する

  ・現在のシステム開発においては、UMLを使用することが多くなっている

□ UML図の種類

・UMLの図には、以下のものが規定されている

    ・構造図
      ・クラス図
      ・オブジェクト図
      ・パッケージ図
      ・コンポーネント図
      ・コンポジット構造図
      ・配置図

    ・振舞い図
      ・相互作用図
        ・シーケンス図
        ・コミュニケーション図
        ・相互作用概要図
        ・タイミング図
      ・ユースケース図
      ・アクティビティ図
      ・ステートマシン図


□ UMLの図はすべて、何らかの関係を表現するもの


イメージ 1


□ なぜいろいろな図があるのか?

  ・いろいろなタイプのプロジェクトがあり、また運営方針の違うプロジェクトがある
    事務処理でも千差万別、工場の機器の制御、組込みソフト、数値計算などなど

  ・いろいろなプロジェクトに対して適用できるように、いろいろとUML図が用意されている

  ・実際のプロジェクトでは、それらの中から必要なUML図のみを使用する


□ 普通のプロジェクトでは、だいたいどのようなUML図を使うのか?

・ごく普通のプロジェクトで主に用いられるのは、次の通り

  ・配置図
    ・システム構成の表現

  ・アクティビティ図
    ・業務処理フローを表現する

  ・クラス図
    ・アクティビティ図などを分析することにより、どのようなクラスが必要かを洗い出す
    ・クラス間の継承関係や使用関係を表現する

  ・シーケンス図
    ・クラス間の処理手順

□ ユースケース図はなぜ用いられないか?

    ・現実のプロジェクトでは、実際にユースケース図を描こうとすると、きわめて多量の図を描かなければならない。

    ・ユースケース図は、一つの図で一ページを使用するため、多くのページが必要になり、漏れがないことの確認が難しい

    ・機能の表現としてはアバウトである

    ・結局ユースケース記述が補足資料として必要

    ・多量にあるので思考の道具とならない

□ モデル

  ・モデルとは、現実に存在する事物を特定の視点から見たもの
  ・特定の視点とは、構築しようとするコンピュータシステム
  ・当該システムで、必要なデータのみを事物から取り出したものが「モデル」

  ・モデルを作成するとは、別の言葉で言えば、抽象化すること、すなわちクラスを設計すること

  ・UML図は、現実の抽象化であり、その意味でモデルである
  ・同じものでも、システムが変われば、抽象化の仕方すなわちモデルも変わる
    例.ペットショップシステムの犬のモデルと遺伝子研究の犬のモデルは異なる
  ・モデルの粒度(詳細さ)は、要求分析→設計と工程が進むにつれて、だんだん細かくなる


□ 配置図

  http://www.bcm.co.jp/site/2002/uml/img/figure10-03.gif
  http://uml.org.cn/rjjg/images/43298.jpg
  http://www.bing.com/images/search?q=UML+%e9%85%8d%e7% ; http://www.uml.org.cn/pzgl/images/201112082.jpg
  http://discus-hamburg.cocolog-nifty.com/photos/uncategorized/racdeoracle_2.jpg

□ ユースケース図

  https://www.ogis-ri.co.jp/otc/swec/process/am-res/am/images/models/useCaseDiagram.jpg
  http://www.h2.dion.ne.jp/~ono_kw/usecase1.gif
  http://image.itmedia.co.jp/enterprise/articles/0406/25/zu1.jpg

□ アクティビティ図

  http://itpro.nikkeibp.co.jp/article/Watcher/20060906/247377/zu1.gif
  http://itpro.nikkeibp.co.jp/article/COLUMN/20080619/308731/zu2.jpg?ST=upper
  https://www.hulinks.co.jp/software/yfiles/images/uml-activity.jpg
  http://itpro.nikkeibp.co.jp/article/lecture/20061206/256218/zu2s.jpg

□ クラス図


  http://www.atmarkit.co.jp/fjava/devs/renew_uml12/uml12_10_l.gif
  http://www.ogis-ri.co.jp/otc/hiroba/technical/JavaWorld_UML/chap2/image/schedule/17_classDiagram.png
  http://image.itmedia.co.jp/im/articles/0507/12/r5mm02_09.gif
  http://www.ics.kagoshima-u.ac.jp/edu/database/ER_UML.png

  ・クラスの抽出方法 - 以下を組合わせて漏れをなくすことが望ましい
    ・ユースケース図から
    ・アクティビティ図から
    ・顧客やユーザから貰った資料から
    ・勘と経験から

   ・クラス図はすべてのクラスが記述されるわけではない
     ・現実にはすべてのクラスが抽出されるわけではない、システム内の重要なクラスのみ
     ・実際のシステムでは最低でも数百のクラスがある
     ・残りのクラスはプログラミング中に確定される
     ・またクラスが多いので、クラス図には、属性やメソッドは書かれないことも多い

  ・クラスの関係の検討
    ・クラスの抽出が終了すれば、クラスの関係を検討する
    ・しかし問題があれば、クラスの抽出に戻る
    ・ある程度の満足がいくまで、何度も「クラスの抽出⇔クラスの関係」を繰り返す
    ・しかし完全なものを作ろうとすると失敗する
      ある程度の見切りは必要
    ・最後まで頭で考えるよりも、実際にやってみる方がよい
      実際にやってみて、初めて気が付くことも多い

  ・集約、関連、依存、コンポジション

    ・集約、関連、依存の違いはあいまいである

    ・集約とコンポジションの違い
        集約とコンポジションの違いは、ライフサイクルの違い
        あるいは取り外せるか否か
      ・コンポジションは、管理元オブジェクトが終了すれば、管理されるオブジェクトも終了する関係
      ・集約は、管理元オブジェクトが終了しても、関係するオブジェクトは終了するとは限らない
      ・コンポジションの例
          人間 ◆-- 心臓
            心臓は取り外せない、注、心臓移植の場合を除く
      ・集約の例
          車 ◇-- タイヤ
            タイヤは取り外せる



□ シーケンス図とコミュニケーション図

http://www.itsenka.com/images/development/uml/uml-sequence02.gif
http://marunomaruno.web.fc2.com/picts/shikakuSequenceA01.jpg
http://www.ogis-ri.co.jp/otc/hiroba/technical/JavaWorld_UML/chap5/image/diagram/04_diagram_sequense.jpg
http://image.itmedia.co.jp/im/articles/0305/31/fig8_8.gif
http://image.itmedia.co.jp/im/articles/0801/25/r5image10.gif


http://www.itsenka.com/images/development/uml/uml-communication01.gif
https://www.ogis-ri.co.jp/otc/hiroba/Report/ETRobocon2009/ModelingMeeting2009_2/img/2_comm_diagram.png
http://image.slidesharecdn.com/uml-150226194140-conversion-gate02/95/uml-16-638.jpg?cb=1425001481


  ・シーケンス図が必要な場面は少ないが、タイミングが問題になる場合は重要

  ・クラス内部ロジックを表現するものではなく、クラス間の動作を時系列に表現する

  ・コミュニケーションズもクラス間の動作を表現する
    ・コミュニケーション図は見やすいが、タイミングが分かりにくくなったり、不正確になることがある、またメッセージ番号をメインテナンスするのが大変である
    ・シーケンス図で代用することができるので、特に見やすくする必要がある場合以外は使用しない。

  注、アクティビティ図もシーケンス図と同様に複数の間の動作を表現するが、主に人間を含めた業務処理の流れを表現するのに用いられる


□ オブジェクト図

http://www.kumikomi.net/archives/2003/03/03uml/f07_01.gif
http://www.masatom.in/pukiwiki/?plugin=ref&page=UML%2F%A5%AF%A5%E9%A5%B9%BF%DE%A4%CE%B4%F0%C1%C3&src=%A5%AA%A5%D6%A5%B8%A5%A7%A5%AF%A5%C8%BF%DE.png

  ・実行時のある瞬間に、オブジェクト同士がどのような関係にあるかを表現する
  ・特殊・特別の状態を表現するときに使用する

  ・注、「オブジェクト図」で検索するとクラス図が多くヒットするので注意

□ ステートマシン図

http://news.mynavi.jp/series/UML_zero/016/images/005.jpg
http://img01.hamazo.tv/usr/micom/elekhstate.jpg
http://www.riko-rh.expressweb.jp/Visio/graphics/8682.png



□ パッケージ図
  http://cdn-ak.f.st-hatena.com/images/fotolife/c/chiharunpo/20110828/20110828211820.png
  http://www.altova.com/images/screenshots/uml-package-diagram.png
  http://www.bcm.co.jp/site/2002/uml/img/figure11-01.gif



-----------------------------------------------------
・目次 Java システム開発
  http://blogs.yahoo.co.jp/artery2020/40586660.html
・目次 - Java入門
  http://blogs.yahoo.co.jp/artery2020/39975776.html
・目次 - ビジネスパーソンの常識と非常識
  http://blogs.yahoo.co.jp/artery2020/39728331.html
・目次 - 論理・発想・思考についての考察と鍛え方
  http://blogs.yahoo.co.jp/artery2020/39657784.html
-----------------------------------------------------