GAIO CLUB

2023年05月26日

【第2回】ガイオ用語集「UML」

ガイオ用語集

UMLとは

Unified Modeling Language(統一モデリング言語)の略称で、ソフトウェア開発において使われるモデリング言語の一つです。

UMLは、1990年代初頭に登場し、現在では業界標準として広く採用されています。Object Management Group(OMG)にて管理されており、2015年にUML 2.4.1がISOで国際標準化されています。

2023年2月現在の最新版は、2017年12月に採択されたUML 2.5.1となります。UMLは、オブジェクト指向分野でよく用いられます。

オブジェクト指向とは

プログラムを作る作法の一つで、現実世界の物事をコンピュータの中で表現することができます。

例えば、PC上で動く、商品情報を管理するアプリケーションがあったとします。オブジェクト指向を用いたプログラミングでは、商品情報を表す「商品」というオブジェクトを作り、その中に商品名や価格といった情報を持たせます。
また、オブジェクト同士は「メッセージ」をやりとりできるため、「価格を更新する」というメッセージを「商品」オブジェクトに送ることができます。

このように、オブジェクト同士がコミュニケーションを取り合い、協調してプログラムが動くようになります。オブジェクト指向を用いることで、オブジェクトを親子関係で表現することができ、プログラムの保守性や再利用性が高まるというメリットがあります。

UMLの図の種類

UMLは、システムの静的な構造を描写する構造図と、システムの振る舞いを描写する振る舞い図、相互作用図に分かれます。

構造図

クラス図

クラスとは、オブジェクト指向分野において、オブジェクトを作るための設計図のようなもので、オブジェクトの属性(データ)とメソッド(関数)を持っています。このクラス同士の関係性を静的に記述したのがクラス図です。メッセージのやり取りの有無や、親子関係を示すことで、システムの全体像を表すことができます。

コンポーネント図

システムを構成する「パーツ」やその関係を表現するための図です。
例えば、PCというシステムで考えると、マウス、キーボード、ディスプレイ、本体などが「パーツ」です。この「パーツ」のことを「コンポーネント」と呼び、コンポーネント同士のやりとりを表す「インタフェース」を表現できます。

例えば、本体のコンポーネントが「画像を表示して欲しい」とディスプレイのコンポーネントに指示する、といったやりとりや、コンポーネント同士の依存関係を表現するために使用されます。

配置図

システムを構成する要素の配置を明確にし、物理的な構成を表す図のことです。
例えば、サーバーがどのようにネットワークに接続され、どのようなデバイスを使用しているかを表現することができます。システム全体を概観するために使用されます。

コンポジット構造図

複数の要素が階層的に組み合わさっているシステムの構造を表現する図で、システムの設計や分析を行うために使用されます。
例えば、自動車は車体、エンジン、タイヤ、ブレーキなどの部品で構成されています。このような部品を階層的に表現することで、システムの全体像を把握することができます。

パッケージ図

大きなシステムを小さな部品に分けて管理するために使用される図です。
例えば、おもちゃのロボットを作る時は、頭や腕、足などのパーツを作って、それらを組み合わせて完成させます。同じように、大きなソフトウェアを作るときにも、小さな部品に分けて作り、それらを組み合わせることができます。

オブジェクト図

現実世界にある物や概念などをオブジェクトとして表現し、どのようなオブジェクトが関係し、どのような順序でやりとりするのかを明確に表現することができる図です。
例えば、果物を買うというシステムをオブジェクト図で表現すると、果物屋、お金、買う人などがオブジェクトとして描かれます。果物屋オブジェクトには「果物を売る」という操作(メソッド)があり、買う人オブジェクトには「果物を買う」という操作があります。「果物を買う」という操作が起こると、「お金」オブジェクトから「果物屋」オブジェクトにお金が渡り、その後「買う人」オブジェクトに果物が渡る、といった形で表現されます。

振る舞い図

ユースケース図

システムやアプリケーションの利用者の観点から機能を表現することができる図です。開発者はどのような機能が必要かを洗い出し、利用者がどのようにシステムを使うのかを理解することができます。アクターと呼ばれるシステムの外部にいる人物や連携するプログラムが、システム内で行うことができる機能(ユースケース)を表します。

ステートマシン図

物事がどのように変化するかを表す図です。ステートマシン図は、物事の状態を表す「状態」と、状態の移り変わりを表す「トランジション」から構成されています。
例えば、自動販売機の例で考えると、最初は「待ち状態」で、お金を受け取ると「支払い受付状態」に移行し、商品を出した後に再び「待ち状態」に戻ります。このように、ステートマシン図は物事がどのように進行するかを分かりやすく表現できます。

アクティビティ図

システムやプログラムの処理の流れを直感的に表現することができる図です。アクティビティ図は、アクション、デシジョン、マージ、フローといった要素から構成されています。
例えば、お菓子を作る過程の例で考えると、最初に材料を準備するアクションがあります。その後、生地を作るアクション、生地を伸ばすアクション、型を入れるアクション、焼くアクションなどがあります。また、オーブンに入れる前に焼き時間を決定するデシジョンがあります。焼き時間が十分であれば、マージで次のステップに進み、十分でなければ焼き時間を延ばすアクションを行います。

相互作用図

シーケンス図

プログラム内での処理の流れを図で表現することができる図です。シーケンス図は、オブジェクト、メッセージ、ライフラインといった要素から構成されています。オブジェクトがメッセージをやり取りしながら、処理を行う過程を示します。例えば、友達と電話で話す場合も、友達オブジェクトと自分オブジェクトがメッセージをやり取りしながら話を進める様子を図示できます。

相互作用概要図

機能ごとに記述された相互作用図(アクティビティ図やシーケンス図)がより広域のシステム構成から見た時、それぞれがどのように連携しているのかを表現する図です。

タイミング図

イベントの発生と処理のタイミングを図で表現することができる図です。タイミング図はイベント、タイミング制約、メッセージといった要素から構成されています。
例えば、自転車のペダルを踏むタイミングを表現する場合、ペダルを踏むイベント、1回のペダル操作は1秒以内に完了するとしたタイミング制約、ペダルを踏んだことを通知するメッセージなどで表現されます。

コミュニケーション図

オブジェクト間のメッセージのやり取りを表現することができる図です。
例えば、お店でお金を支払い、商品を買うときのやりとりを図示することができます。お金を支払うメッセージを顧客からレジに送り、レジから商品に商品を渡すメッセージを送り、商品からレジに商品を渡すメッセージを返し、最後にレジがお釣りを渡すメッセージを顧客に送るという流れを表現します。

UMLを活用するメリット・デメリット

メリット

UMLを活用することで、開発者はシステムの概念や構造を可視化し、より効率的に設計することができます。システムを様々な観点から表現することができるため、複数の図を行き来しながら、どのようなものを作らなければならないのか、具体化していくことが可能です。

また、他の開発者がシステムの構造を簡単に把握することができるため、必要な修正や改良を素早く行うことができます。加えて、UMLによって作成されたモデルは可読性が高く、開発者間でのコミュニケーションにも役立ちます。

デメリット

UMLの学習には時間と労力が必要であり、過度の詳細にこだわると開発が遅れる可能性があります。初学者にとっては敷居が高いこともあります。

また、UMLは柔軟な方法論であるため、開発者に多くの自由度を与えます。そのため、一貫性の欠如が発生する可能性があります。

まとめ

・UMLはオブジェクト指向分野でよく用いられているモデリング言語です。
・UMLには静的な構造や動的な振る舞いを表現することができ、多くの種類の図があります。
・UMLの学習には時間と労力が必要で敷居が高い点もありますが、開発者が効率的に設計を行うことができるようになります。

この記事を読んだ人はこんなページを読んでいます。

人気のコラム

最新のコラム