エンジニアとして今後活躍していこうと考えると、UMLから目を背けることはできません。
今回は、UMLの基本的な事項である、以下の3点について解説します。
この記事でわかること
- UMLとは何か
- UMLのメリットは何か
- UMLのデメリットは何か
UMLとは?
『UML』(Unified Modeling Language)とは、「統一モデリング言語」と訳されます。一般的には、そのままUMLと表記します。
UMLは「エンジニアの設計用途で使われる、作図上の決まり事」であり、ルールのようなものです。主に「オブジェクト指向開発」(Object Oriented Programming/OOP)で用いられます。
「OMG」(Object Management Group)と呼ばれる非営利団体が管理しています。UMLには細かいバージョンがあり、大まかに「UML1.1」系と「UML2.0」系に別れます。
オブジェクト指向
オブジェクト指向の考え方をプログラム言語上でそのまま適用するには、手続き型言語に比べて「カプセル化」「継承」「ポリモーフィズム(多様性)」を必要とします。
カプセル化
データとそれを操作するオペレーション(手続き)を同時に持つオブジェクト(クラス)の定義を一本化し、その構造を外部から隠蔽することを指します。つまり、クラス内のデータ or オペレーションを外部へ「公開・非公開」を指定できると言う事です。
継承
上位クラスから性質を受け継いで拡張できる仕組みを指します。
多様性
オブジェクトに同じメッセージを送ったとしても、受け側のオブジェクトごとの実装に応じた処理が実行される仕組みを指します。
UMLの概念モデル
概念モデルはプロジェクトに関わるメンバー間で、そのドメインに関係する知識を矛盾なく共有し、以降の開発においてスムースなコミュニケーションをはかることに重きをおいています。
ユースケース(Use Case)
ユースケースとは、システムとその外部のアクターとの一連のやりとりの流れを文章で記述したものです。
- アクター
アクターは、システムと関係を持つ「オペレータ」や「他システム」を指します。 - ユースケース
ユースケースは、アクターにより起動されるシステムの機能です。 - システム境界
システム範囲(スコープ)を明確にするために用いられます。 - その他の表記
- <<include>>
ユースケースから別のユースケースの機能を呼び出す場合に用いられます。 - <<extend>>
拡張凡化関係を表現します。
- <<include>>
クラス図( Class Diagram )
クラス図は、一般に3つの区画からなります。
1段目:クラス名を入れます。
2段目:クラスの属性です(アトリビュート)
3段目:クラスの操作です(オペレーション)
クラスはそのクラス図を記しているパッケージの中のものですが、別のパッケージのクラスを示したり、全て記したい場合はパッケージ名を「::」で区切ってクラス名の前に書きます。
- 属性(アトリビュート)
オブジェクトの持っているデータを表します。
文字列や日付といった型を持っています。- 属性の前に記号をつけてその性質を表現することができます。
+:public
外部リソースからアクセス可能
#:protected
汎化関係にあるリソースからのみアクセス可能
-:private
自リソース及びネームスペース内部からのみアクセス可能
- 属性の前に記号をつけてその性質を表現することができます。
- 操作(オペレーション)
操作とは、オブジェクトの振る舞いを表すものです。
操作は1つのクラスに、複数存在することになります。
- オブジェクト
オブジェクトはクラスのインスタンスです。インスタンスであることを表すために、そのインスタンスに付けられた名前であるオブジェクト名、コロンそしてアンダーラインを使います。 - ステレオタイプ
ステレオタイプは、UMLに登場するモデル要素を分類するために使われます。クラス内での使い方は、クラス名の上に<<ステレオタイプ名>>のようにして記述します。
- boundary
- control
- entity
- exception
- interface
- actor
- 関連
クラス間の関係を多重度「下限値..上限値」を使って表すことが出来ます。
「Composite(parent)」に対して「Component(child)」の数に制限がない為「0..*」で表記されます。 - 凡化
汎化は、あるクラスを特殊化したクラスがあるとき、特殊化の元となったクラスと特殊化したクラスとの関係を表します。「矢印(白抜き)」で表します。
「Leaf」及び、「Composite」は「Component」を継承していることを表しています。 - 集約
集約は、全体と部分の関係を「◇」表します。
「Component(child)」は「Composite(parent)」の一部であることを「◇」を使って表しています。 - コンポジション
コンポジションは集約の一種で、集約関係がより強い全体部分関係にあるとき「◆」を使って表します。 - インターフェース
インタフェースは実装は持ちませんが、操作の集合を定議したものを「→(破線)」を使って表します。
シーケンス図 ( Sequence Diagram )
シーケンス図とは、ソフトウェアの設計などに用いられるUML(Unified Modeling Language)で規定された図(ダイアグラム)の一つで、要素間の相互作用を時系列で表した図を指します。
シーケンス図では、すべてのオブジェクトの振る舞いを記述することができますが、設計を進める上で必要になるものだけを選択してシーケンス図を記述することをお勧めします。
区画から伸びている点線は、ライフラインと呼ばれているものでオブジェクトが存在する期間を表します。したがって、時間は上から下へと流れることになります。
ライフライン上にある長方形は、オブジェクトが活性化していることを意味します
アクティビティ図 ( Activity Diagram )
アクティビティ図とは、ソフトウェアの設計などに用いられるUML(Unified Modeling Language)で規定された図(ダイアグラム)の一つで、業務や処理の実行手順を表した図を指します。
アクティビティ図は、シーケンス図などと同様にオブジェクトのふるまいを表現します。
アクティビティ図は、オブジェクトの振る舞いを記述する他の図とは少し異なり、従来使用されていたフローチャートにオブジェクト指向の考え方を導入したものです。
UMLのデメリット
まずは、UMLのデメリットからみていきましょう。
主なUMLのデメリット
- UMLは学習コストが高い
- UMLの日本語認定試験は2020年3月末で終了
UMLは学習コストが高い
まず挙げられるUMLのデメリットとしては、「UMLは学習コストが高い」ことがあります。
UMLの学習コストが高い理由
- UMLはエンジニアが使用する作図法なのでそもそも難しい
- UMLは主なバージョンが3つあり、それぞれ理解して使う必要がある
- UMLは作図ソフトや特殊なツールを使う必要がある
そもそもUMLはエンジニアが使うものであり、苦せずとも簡単に理解できるものではありません。UMLを正しく理解するには、相応の学習が必要です。
UMLには詳細なバージョンがあり、それぞれ書き方に差異があります。現在は主に3つのバージョンが使われています。
なおUML1.4.2とUML2.4.1、はそれぞれ「国際標準化機構」(ISO)にて世界標準規格として策定されています。更に現在ではUML2.5が主に使われています。
そしてUMLでの作図には、専用のツールが必要です。これらはワードのように、「誰でも簡単に扱える代物」ではありません。
また、UMLの作図ツールは無数にあるため、最悪の場合「使用するUMLツールの使い方を、プロジェクトや部署毎に、毎回覚えなおさなければならない」という事態も起こりえます。
このように、UMLの学習には多大なコストがかかることが分かるでしょう。
UMLの日本語認定試験が2020年3月末で終了
またUMLは、先述の通りOMGというグループが仕様を策定しています。
このOMGが認定するUMLの検定として『OCUP』(OMG Certified UML Professional)があります。日本語では『OMG認定UMLプロフェッショナル』と訳され、現在はUML2.5を対象とした、『OCUP2』の認定がおこなわれています。
しかし、今月末(2020/03/31)をもって、『OCUP2』の日本語による認定は終了します。
これはあくまで日本語での受験ができなくなるだけであり、過去の認定が取り消されるとか、今後受験できなくなるわけではありません。
とはいえ、日本語で受験不可能となったことは、明確にUMLの欠点の一つとして挙げられます。
UMLのメリット
さて、ではUMLのメリットは何があるでしょうか。
UMLには、数多くのメリットが存在します。
UMLのメリット
- 統一的な表記であるため、メンバー間や顧客との意思疎通に向く
- ソフトの数が多く、また成熟している
- デザインパターンとの親和性が高い
- システム設計において必要とされる図表を網羅する
- 日本語の優秀な解説書が多く、自学自習に向いている
統一的な表記、メンバー間や顧客との意思疎通に向く
まずUMLの重要な利点は、「統一的な表記である」ということです。
人によっては、エンジニアという言葉を聞いて「個人のスキルを武器に、新しい物を生みだす人」というイメージをもつ方も居るでしょう。
しかし、実際にプロのエンジニアとして生きていくためには、個人としてのスキルだけでなく、コミュニケーション・スキルも大切です。
たとえばUMLを用いれば、開発を一緒にやるメンバーと情報共有をしたり、開発したシステムを納品する顧客との意見のすり合わせなどに活用できます。
ソフトの数が多く、成熟している
またUMLは、今年で20年目を迎える、息の長い存在です。
そのためUMLは、多くのソフトウェアベンダーがその作図ツールを開発し、利用者に提供しています。
UML作図ツール
- マイクロソフトの『Visio』
- ビジネス用途でよく使われる『astah* UML』
- 『Eclipse』(IDE:統合開発環境)のプラグイン『Amateras UML』
- ウェブブラウザを用いて、UMLを作成できるサービス
これらのツールは長年のノウハウが蓄積されており、現状は大部分で成熟しています。
デザインパターンとの親和性が高い
加えて、UMLは「デザインパターン」との親和性が高い特徴があります。
デザインパターンとは、開発するシステムの「内部処理をどうするか、どう実現するか」といったことを、代表的なパターンにまとめたものです。
UMLとデザインパターンの親和性が高い理由は、どちらもがOOPを対象としているためです。
エンジニアを目指す方は、UMLと共にデザインパターンについても学習すると良いでしょう。
システム設計において必要とされる図表を網羅する
UMLはシステム開発における、「上流工程」から「下流工程」まで、幅広く網羅します。
UMLのユースケース図はシステム設計でよく用いられます。ステートマシン図やクラス図などは基本設計や詳細設計で用いられることが一般的です。UMLはこの他にも、必要に応じて多くの図表が定義されていますので、使い分けることで活用できます。
日本語の解説書が多く、自学自習に向いている
最後の利点として、「日本語の優秀な解説書」や、当ブログのような専門的なサイトが解説している点が挙げられます。
これは言い換えれば、「UMLは自学自習に向いている」という、大きな利点をもっていると言っても過言ではありません。
まとめ
UMLとは何か、そのデメリットやメリットは何か、理解できたでしょうか。
今回の内容の要点を、以下にまとめます。
UMLとは
- UMLとは「Unified Modeling Language」の略である
- システム開発における、エンジニア共通の作図法である
- UMLはすでに20年目に及ぶ、歴史の長い作図法になっている
UMLのデメリット
- UMLは学習コストが高い面がある
- UMLの認定試験である『OCUP2』は今後、日本語で受験不可となる
ポイント
- UMLはコミュニケーションに最適である
- UMLは作図ツールが充実している
- UMLはデザインパターンとの親和性が高い
- UMLはシステム開発に必要な図表を網羅する
- UMLは自学自習に向いている
UMLのこれらの特徴は、今後私たちがエンジニアとして活躍していく際に必要不可欠な存在と言っても過言ではありません。
本記事を参考に、みなさんもUMLを自学自習したり、またはあなたの後輩へ教える際に活用していただければ幸いです。