オブジェクト指向分析設計

オブジェクト指向分析設計(OOAD)とは



オブジェクト指向分析設計 (OOAD) は、ソフトウェア工学におけるソフトウェア開発のアプローチの一つです。システムを相互に作用するオブジェクトの集合として捉え、オブジェクト指向モデリングに基づいてソフトウェアを構築します。具体的には、分析段階のオブジェクト指向分析 (OOA) と、設計段階のオブジェクト指向設計 (OOD) を組み合わせた概念です。プログラミングはオブジェクト指向プログラミング (OOP) として区別されます。この記事では、OOAとOOD、そしてオブジェクト指向開発方法論に焦点を当てて解説します。

オブジェクト指向モデリングの基本



オブジェクト指向モデリングでは、システムを構成する要素を「オブジェクト」として表現します。各オブジェクトは、クラスによって定義され、データ(状態)と振る舞い(メソッド)を持ちます。これにより、現実世界の要素をソフトウェア上でモデル化することができます。

OOADでは、以下のようなシステムの様々な側面をモデル化します。

システムの静的な構造(クラス図など)
システムの動的な振る舞い(シーケンス図など)
オブジェクト間の連携と実行時の配置

モデル図の記法は、UML(統一モデリング言語)が広く用いられています。

オブジェクト指向分析(OOA)



オブジェクト指向分析 (OOA) は、システムが扱う対象領域(問題領域)を分析し、概念モデルを作成する工程です。実装の制約は考慮せず、システムが「何を」すべきかを明らかにします。入力となるのは、要求仕様書や利害関係者へのインタビューなどです。システムは複数の領域に分割されることもあり、分割された領域ごとに分析を行います。

OOAの成果物としては、ユースケース図、クラス図、相互作用図などが挙げられます。これらは、システムがどのような機能を持つべきかを概念的に記述したものです。アジャイル開発では、必要最小限の成果物を作成することが一般的です。

オブジェクト指向設計(OOD)



オブジェクト指向設計 (OOD) は、OOAで得られた分析モデルを基に、実装の制約を考慮した設計を行う工程です。具体的には、アーキテクチャの選択、非機能要件(性能、可用性など)、プログラミング言語などを考慮します。OODでは、分析モデルの概念をクラスやインターフェースに対応付け、システムが「どのように」構築されるかを詳細に記述します。

OODの成果物も、OOAと同様にモデル図や文書が中心ですが、アジャイル開発では必要最小限に留めることが一般的です。

OODで利用する資料



OODでは、OOAの成果物を入力として利用します。主な資料は以下の通りです。

概念モデル: システムが扱う概念を記述したモデル。
ユースケース: ユーザとシステムの相互作用を記述したシナリオ。
システムシーケンス図: ユースケースにおけるイベントの流れを記述した図。
ユーザインタフェース: システムの見た目や操作方法を示す資料。
関係データモデル: 関係データベースを利用する場合に作成するデータモデル。

オブジェクト指向の基本概念



オブジェクト指向設計において重要な概念には、以下のようなものがあります。

1. オブジェクトとクラス: オブジェクトはデータと振る舞いをまとめたもので、クラスはオブジェクトの設計図です。
2. 情報隠蔽: オブジェクトの内部構造を外部から隠蔽する仕組みです。
3. 継承: クラスの機能を拡張・再利用する仕組みです。
4. インタフェース: メソッドの実装を遅延させるための仕組みです。
5. 多態性: 同じ操作が異なるオブジェクトで異なる振る舞いをする性質です。

オブジェクト指向設計の考え方



OODでは、以下の点を考慮して設計を行います。

概念モデルからクラス(オブジェクト)を定義し、クラス図を作成する。
クラスのインスタンス変数を特定する。
デザインパターンを適用し、問題解決のための再利用可能なパターンを導入する。
アプリケーションフレームワークを定義し、開発効率を向上させる。
永続化が必要なオブジェクトやデータを特定し、永続化の方法を決定する。
分散環境においては、分散オブジェクトを定義する。

オブジェクト指向設計の成果物



OODの主な成果物には、以下のようなものがあります。

クラス図: システムの静的構造を示す図。
シーケンス図: システムの動的な振る舞いを示す図。

オブジェクト指向プログラミング(OOP)



オブジェクト指向プログラミング (OOP) は、OOADで設計された内容を基に、実際にプログラムを作成する工程です。オブジェクト指向プログラミング言語 (OOPL) を用いることが一般的です。OOPでは、オブジェクト、クラス、情報隠蔽、継承、多態性などの概念を言語レベルでサポートしています。

オブジェクト指向開発方法論



オブジェクト指向開発方法論は、OOAとOODを含む、オブジェクト指向開発全体の具体的な方法論です。数多くの方法論が存在し、それぞれにソフトウェア開発工程における具体的な手順を定義しています。1990年代半ばまでは、独自の記法が用いられていましたが、現在ではUMLが標準となっています。

代表的なオブジェクト指向開発方法論には、以下のようなものがあります。

オブジェクトモデル化技法 (OMT)
Booch法
オブジェクト指向ソフトウェア工学 (OOSE)
Unified Process (UP)
ラショナル統一プロセス (RUP)
エクストリーム・プログラミング (XP)
アジャイルモデリング
ユーザ機能駆動開発 (FDD)
Agile Unified Process (AUP)
Essential Unified Process (EssUP)

ソフトウェアパターン



オブジェクト指向開発では、ソフトウェアパターンも活用します。

アナリシスパターン: 分析段階で利用するパターン。
デザインパターン: 設計段階で利用するパターン。

また、アンチパターンは、問題を解決するための不適切なパターンです。

まとめ



オブジェクト指向分析設計は、ソフトウェア開発における重要なアプローチであり、システムをオブジェクトの相互作用として捉えることで、より柔軟で保守性の高いソフトウェアを開発することができます。オブジェクト指向の概念、分析と設計の工程、そして具体的な方法論を理解することは、ソフトウェア開発者にとって不可欠なスキルと言えるでしょう。

関連情報



オブジェクト指向モデリング (OOM)
オブジェクト指向プログラミング (OOP)
統一モデリング言語 (UML)
デザインパターン
* アジャイル開発

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。