UMLとは
Unified Modeling Language(UML)とは、ソフトウェア開発およびシステム設計において使用される標準的な視覚的なモデリング言語です。
UMLは、システムの概要を理解し、設計、実装、テストのフェーズでコミュニケーションを効果的に行うために使用されます。
実践的に言えばシステムを説明する際に使用できる図です。
体系
UMLに存在する図は以下の通りです。
(赤文字は抜粋して後述)
UML
┣構造図
┃ ┣クラス図
┃ ┣オブジェクト図
┃ ┣パッケージ図
┃ ┣合成構造図
┃ ┣コンポーネント図
┃ ┗配置図
┗振る舞い図
┣ユースケース図
┣アクティビティ図
┣ステートマシン図
┗相互作用図
┣シーケンス図
┣コミュニケーション図
┣タイミング図
┗相互作用概要図
実践的な図の利用について
上記のUML図の中から、より実践的に扱いやすいと感じているを図を抜粋して紹介いたします!
システム開発のシナリオを例に実践的に利用してみましょう。
(個人的な主観が含まれます!ご指摘や不足点があればご教示ください。)
ユースケース図
ユースケース図とは:システムで求められる要件や機能を視覚的に表現するための図
使用タイミング:要件定義
使用例:
例1 > 新規システムまたは機能開発において要件の明確化
例2 > 非エンジニア向けに機能の概要を説明するための資料
図書館管理システムのユースケース図の例:
ユースケース名 | 登場人物 | 事前条件 | 内容 |
---|---|---|---|
本の検索 | 利用者 | なし | 1. 本のタイトル入力 2.「検索」ボタンを押下 |
本の予約 | 利用者 | なし | 1. 本のタイトル入力 2.「予約」ボタンを押下 |
本の貸出 | 利用者 | なし | 1. 受付に本を渡す 2. 本を受け取る |
本の返却 | 利用者 | 貸し出し中の本が存在する | 1. 受付に本を渡す |
新しい本の登録 | 管理者 | なし | 1. 書籍情報を入力 2.「登録」ボタンを押下 |
本の削除 | 管理者 | 登録済みの本が存在する | 1. 本のタイトルを入力 2.「削除」ボタンを押下 |
※内容は想像で記載
かなり粗いユースケース図ですが上記によって利用者と要件のイメージが伝わると思います。
図解することで非エンジニアの方でも理解がしやすく、説明資料としても適切な内容となっています。
アクティビティ図
アクティビティ図とは:処理の流れを視覚的に表現するための図
使用タイミング:基本設計
使用例:
例1 > ユースケースの詳細化
例2 > 非エンジニア向けに機能や手順のフローを説明するための資料
利用者が本を貸し出し、または予約するときの手順:
本の検索機能のシステムフロー記載:
上記のようにアクティビティ図では機能の説明はもちろん、手順の詳細化も行うことができ、表現できることの幅が非常に広いです。
パーティションを適切に区切ることで役割を明確にすることでより分かりやすくなります。
クラス図
クラス図とは:処理の流れを視覚的に表現するための図
使用タイミング:詳細設計、ソースコード理解
使用例:
例1 > 新規クラスを作成する際にクラス構造を考える
例2 > 既存のソースコードのクラス図を確認し設計意図の理解
図書館管理システムのクラス図の例:
上記のようなクラス図を作成することで、拡張性や保守性に優れたクラス設計を行うことができます。
また、既存のソースコードのクラス図を確認することでクラス設計の意図を知ることができ、適切なプログラムの修正を行うことができるようになります。
クラス図を読むには少々学習が必要になるかとは思いますが、
SOLID原則やデザインパターンや理解をする際にはクラス図の理解が欠かせないため知っておいて損のない知識と考えています。
実践に近い形でUMLの使用の例を挙げてみました。使用イメージは沸いたでしょうか。
特に上記で紹介した、
ユースケース図、アクティビティ図、クラス図が個人的なお気に入りです。
UMLに関わる紹介
plantuml
VSコードの拡張機能で、テキストベースの言語でUMLを作成することが可能。
本記事で扱ったUMLはすべてplantumlで記載いたしました。
テキストベースのため差分管理にも対応しており、chatGPTとのやり取りも可能です!
プロンプト例:図書館管理システムのユースケース図をplantumlで記述してください。
テンプレートメソッドパターンのクラス図をplantumlで記述してください。
AmaterasUML
UMLを描画するためのEclipseプラグイン。
既存のソースコードをクラス図に変換することが可能。
UMTP認定試験
UMLの資格です。
L1~L4までレベルがあり、UMLについて体系的に学ぶことができます!
(私はまだL2までしか保持していませんが・・・)
まとめ
UMLの概要と実践的な扱い方を紹介しました。
個人的な見解を含み、UMLの知識もまだ未熟な状態ではありますが何かの参考となればと思います。
業務のなかでも図解で説明をするタイミングが多くあるように感じています。その際にUMLの使用、または近い図の形で利用を検討してみてください!
chatGPTの登場でUMLの記述コストがぐっと下がりました。
UMLでのコミュニケーションがもっと増えてもいいのになあ・・・と密かに思っております。