オブジェクトの広場は株式会社オージス総研グループのエンジニアによる技術発表サイトです

UML/モデリング

ちょっとうれしい UML 2.0 のこんな技

アクティビティパーティションの巻
オージス総研
山内亨和
2007年4月12日

オージス総研では、社内の有志で集まっていくつかの勉強会を実施しています。その中の一つに、筆者が参加している UML 2.0 に関する勉強会もあります。この勉強会では、現場で活用している UML 2.0 のテクニックを共有したり、便利そうな UML 2.0 の表記法を発掘したりしています。この勉強会の成果を、(少しずつではありますが)皆さんに公開していきたいと思います。

はじめに

 UML 1.X の頃のアクティビティ図にはパーティションというモデル要素がありました。
 スイムレーンといったほうがピンとくるかもしれませんね。スイムレーンはパーティションの表記法名です。

 パーティションはアクティビティ図を縦に区切る表記法で、一般的には業務フローの登場人物を表現するために使います。図 1 はパーティションを使った業務フローの例です。


図 1 パーティションの例

 UML 2.0 ではパーティションの表現能力が格段に向上しています。本稿では業務フローの例を交えながら、パーティションの活用パターンを解説します。

 ※ 正確にはアクティビティパーティションという名前なのですが、長ったらしいのでパーティションと省略します。

例題を理解する - 本の予約業務(図書館)の業務フロー -

 図書館の本の予約業務を例に(使い古されたドメインですが)、パーティションを説明します。
 本の予約から貸し出しまでの業務の流れは主に 2 つのパターンに分かれます。

  • 他の図書館に在庫がある場合
  • 他の図書館に在庫がない場合

他の図書館に在庫がある場合


図 2 他の図書館に在庫がある場合の業務

  • 予約日
    会員の依頼を受けて、貸出先図書館の受付係が本を予約します。 予約先の図書館では、整理係が本棚から本を回収し予約用として引き当てます。
  • 翌日
    午前中から配達員が地域の図書館を回り、本を他の図書館に届けます。 貸出先図書館では、予約された本が届いたら受付係が会員に電話で連絡します。
  • 翌日から 1 週間以内
    本を予約した会員が来たら、予約した本を貸し出します。 もし、1 週間以内に会員が来なければ予約を取り消します。

他の図書館に在庫がない場合


図 3 他の図書館に在庫がない場合の業務

  • 予約日
    会員の依頼を受けて、貸出先図書館の受付係が本を予約します。
  • 返却日
    予約された本が返却されたら、受付係は本を本棚には返さず予約用として引き当てます。
  • 翌日、翌日から 1 週間以内
    在庫があった場合の業務と同じです。

パーティションの使い方を理解する

 本の予約業務はとてもシンプルな業務ですが、パーティションを学ぶには適しています。業務フローを表現するために、様々なパーティションを使い方をするからです。

 まずは本の予約業務に登場する用語を種類ごとに整理してみましょう。以下は用語の一部です。

  • 作業 : 予約、回収、返却、配達、連絡、貸出
  • 物  : 本
  • 組織 : 図書館
  • 人  : 受付係、整理係、配達員
  • 役割 : 貸出先図書館、予約先図書館
  • 時間 : 予約日、返却日、翌日、翌日から 1 週間以内

 このうち、「組織」「人」「役割」「時間」を表現するのにパーティションが使えます。

活用パターン(1) 登場人物を表現する

 大抵の業務フローには複数の人・組織が登場します。
本の予約業務では貸出先図書館、配達員、予約先図書館、受付係、整理係などの人や組織が登場しています。

UML 1.X の頃は業務フローの登場人物を表現するためにパーティションを使っていましたが、UML 2.0 でも同じです。図 4 はパーティションを使った業務フローです。本の予約業務の登場人物のうち、貸出先図書館、配達員、予約先図書館を表現しています。


図 4 本の予約業務の登場人物を表現した業務フロー

 UML 1.X と UML 2.0 では微妙にパーティションの表記法が違います。UML 2.0 ではパーティション名の周りを四角で囲うように変わりました。なんとなく UML 1.X の頃の表記法とくらべて野暮ったさがなくなったような気がしませんか。

活用パターン(2) 登場人物の役割を表現する

 1 つの業務フローに同じ種類の人・組織が別の役割で登場することがあります。
本の予約業務では、図書館が貸出先と予約先という 2 つの役割で登場しています。

 UML 2.0 ではパーティションに役割を表現できるようになりました。図 5 の業務フローのように、パーティション名を「貸出先:図書館」「予約先:図書館」と記述して役割を表現します(属性の表記法と似ています)。


図 5 図書館の役割を明示した業務フロー

活用パターン(3) 組織階層を表現する

 組織には会社 -> 部 -> 課 -> 社員、といったような階層があります。
本の予約業務の例では、図書館には受付係や整理係を担当する職員が働いています。

 UML 2.0 ではパーティションを階層的に表現できるようになりました。図 6 の業務フローのように、「予約先:図書館」パーティションの中に「受付係:職員」「整理係:職員」パーティションを配置して組織階層を表現します。


図 6 図書館と職員の組織階層を表現した業務フロー

活用パターン(4) タイムスケジュールを表現する

 業務フロー中の作業はそれぞれ別の日・時間に行うことがあります。
本の予約業務の例では、本の予約と回収は予約日に、本の返却は返却日に、本の配達と連絡は引当日翌日に、本の貸出は引当日翌日~1週以内までというスケジュールで業務が進んでいきます。

 UML 2.0 ではパーティションを縦方向でも横方向でも、縦方向と横方向を組み合わせた表形式でもパーティションを表現できるようになりました。例えば、図 7 の業務フローのように縦パーティションに組織・人を横パーティションに時間を表現するなどといった使い方をします。


図 7 タイムスケジュールを表現した業務フロー

参考文献

[1] 『その場でつかえるしっかり学べる UML 2.0』オブジェクトの広場編集部/著, 秀和システム