「かんたんUML入門」第1章〜第2章:まとめ
1章 UMLとは何か?
プログラムを作成する際に設計書を作る。その設計書の図をモデルという。
プログラムの設計書にはいくつかの種類のモデルが必要になる。
モデリングとは、抽象化された概念をもとに、システムの全体像をわかりやすく表現することです。
ユーザーの業務の細かなところにのみ着目すると、変更に弱い設計をおこなってしまうことになる。
ユーザーの業務が少し変わっても対応できる設計にするためには、ユーザーの業務のコアを捉えて、モデルの中心に据え、細かく変わりやすい部分はモデルの外側に配置する。
モデルは、開発対象領域を静的な構造と、動的な振る舞いの両面から表現することができます。
静的な構造で本質的な部分と末梢部分を分けて表現し、動的な振る舞いで実際のプログラムがどのように動くのかを表現します。
世界中で共通した言語として海外の開発者ともコミュニケーションが取れる。
表現力が高いので、分析、設計、実装する人の間で情報が正確に伝わります。
UMLを効果的に活用するための技術要素として
・表記法→UML
・考え方→オブジェクト指向
を総合的に学ぶことが大事。
2章 オブジェクト指向とUML
オブジェクト指向→システム化の対象を構成するオブジェクトを中心にシステムを捉える考え方。
オブジェクトは、属性値(データ)だけではなく、操作(振る舞い)も持ちます。
オブジェクト同士は関係を持つことができ、他のオブジェクトにメッセージ送信することで、対象のオブジェクトの振る舞いを呼び出せる。
クラス→オブジェクトの型となるもの。
属性(データ構造)や操作(振る舞い)の共通した部分を抽象化したもの。
クラスは雛形であり、クラスから生成されたオブジェクトはクラスと同じ属性・操作を持つ。
ただ、オブジェクトにはそれぞれ異なる属性を持たせることもできる。
例えば、生徒というクラスがあった時、「山田太郎「田中花子」といったオブジェクトがそれぞれ異なる属性(データ構造)を持つ。
モジュール(プログラムの1部)をpublic,privateに分ける仕組み。
カプセル化を行うことにより、public部分は公開されている操作を通じてのみアクセスすることができ、 private部分の変更は外分に公開されない。
public部分の変更がなければ、private部分に変更があったとしても外部からのアクセスに影響はなく、保守性が高くなる。
継承→「is a」の関係。
あるクラスが持っている属性と振る舞いを別のクラスに継承すること。
クラスの階層構造を作ることができる。
「サブクラスはスーパークラスである」と記述できるとき、継承の関係が成り立つ。
ポリモーフィズム→同一のメッセージに対して、それぞれ異なる振る舞いをすること。
ポリモーフィズムにより、保守拡張性の高いシステム開発が可能になる。
UMLで定義されている複数の図は、2タイプに分けられる。
①構造図→システムの静的な構造を表現する
・クラス図
・オブジェクト図
・合成構造図
・パッケージ図
・コンポーネント図
・配置図
②振る舞いず→システムの動的な振る舞いを表現する
・ユースケース図
・アクティビティ図
・ステートマシン図
・相互作用図→
・シーケンス図
・コミュニケーション図
・相互作用概要図
・タイミング図
ユースケース図→システムが提供する機能を、ユーザーの視点から洗い出す。
ユースケース図を活用することで、サービスの全体像を利害関係者間で確認することができる。
またユースケース図で洗い出された機能は、以降の分析工程の起点となる。
クラス図→静的な構造図で、システムを構成する重要な概念をクラスの形で表現している。
個々のクラスが持つ属性や振る舞いを定義し、またそれぞれのクラスの関係を定義する。
シーケンス図→クラスやオブジェクト、コンポーネントのなどのライフライン間の相互作用の処理を動的に表現する。
コミュニケーション図→ライフライン間の相互作用を表現する点では、シーケンス図と同じだが、違いはライフラインとライフラインの接続関係を中心に表現することができる点。
シーケンス図は時系列で相互作用を表現する。
ステートマシン図→オブジェクトの状態変化を表現。
ある状態からある状態への変化を遷移で表す。
事前条件と事後条件が必要。遷移のきっかけや、遷移するか否かの判断条件を表記することができる。
アクティビティ図→システムのフローを表す。
業務フローやイベントフロー(アクターとシステム間の処理の流れ)、クラス操作における詳細処理(アルゴリズムの表現)など、様々な視点をフローとして表現することができます。
パッケージ図→意味のあるモデル要素をグループ分けしたもの。
パッケージ同士の依存関係を引くことで、パッケージ同士の利用関係を表現します。
オブジェクト図→静的な構造図。オブジェクト同士のリレーションや保持する属性値を表現することができる。
コンポーネント図→コンポーネント自体の入れ子構造や、コンポーネント間のつながりを表現する。
コンポーネントとは、ソフトウェアの部品であり、複数のクラスをひとまとめにして、外部に公開するインターフェースを持たせたものです。
配置図→システムの物理的な構成を表現する。
合成構造図→外部からどのように内部にアクセスするのかを表現する。
内部構造はクラスやコンポーネントなど。
タイミング図→ステートマシン図と、相互作用図の双方の特徴を併せ持った図。
相互作用概要図→
複数の相互作用で構成されるシステム全体の流れを俯瞰することができます。
UMLの共通要素→
・ノート
モデル要素にコメントを記述するための表記。
・フレーム
可視化する対象の図の種別を表記。タイトルのついたキャンバスのようなもの。
《》(ギュメと呼ぶ)で括った中身に自由に命名して、モデルをグルーピングできる。
UMLで既に決まった指定語もある。
・メタ属性
メタ属性をモデル要素に付加することで、そのモデルに意味付けできる。
・制約
UMLの拡張機能の一つ。モデル要素に掛けたい制約・条件を付加できる。
・タイプとインスタンス
タイプ→雛形となるモデル要素
インスタンス→タイプの具体例
参考
https://www.amazon.co.jp/かんたん-UML入門-改訂2版-プログラミングの教科書-竹政/dp/477419039X