Object-oriented-analysis-design-ooad-object-oriented-analysis

提供:Dev Guides
移動先:案内検索

OOAD-オブジェクト指向分析

ソフトウェア開発のシステム分析またはオブジェクト指向分析フェーズでは、システム要件が決定され、クラスが識別され、クラス間の関係が識別されます。

オブジェクト指向分析で相互に使用される3つの分析手法は、オブジェクトモデリング、動的モデリング、および機能モデリングです。

オブジェクトモデリング

オブジェクトモデリングは、オブジェクトに関してソフトウェアシステムの静的構造を開発します。 オブジェクト、オブジェクトをグループ化できるクラス、およびオブジェクト間の関係を識別します。 また、各クラスを特徴付ける主な属性と操作も識別します。

オブジェクトモデリングのプロセスは、次の手順で視覚化することができます-

  • オブジェクトを特定し、クラスにグループ化します
  • クラス間の関係を特定する
  • ユーザーオブジェクトモデル図の作成
  • ユーザーオブジェクト属性を定義する
  • クラスで実行する必要のある操作を定義する
  • 用語集を確認する

動的モデリング

システムの静的な振る舞いを分析した後、時間および外部の変化に関するシステムの振る舞いを調べる必要があります。 これが動的モデリングの目的です。

ダイナミックモデリングは、「個々のオブジェクトがイベント(他のオブジェクトによってトリガーされる内部イベント、または外界によってトリガーされる外部イベント)に応答する方法を記述する方法」と定義できます。

動的モデリングのプロセスは、次の手順で視覚化することができます-

  • 各オブジェクトの状態を識別する
  • イベントを特定し、アクションの適用可能性を分析します
  • 状態遷移図で構成される動的モデル図の作成
  • オブジェクトの属性の観点から各状態を表現する
  • 描かれた状態遷移図を検証する

機能モデリング

機能モデリングは、オブジェクト指向分析の最終コンポーネントです。 機能モデルは、オブジェクト内で実行されるプロセスと、メソッド間を移動するデータの変化を示します。 オブジェクトモデリングの操作の意味と動的モデリングのアクションを指定します。 機能モデルは、従来の構造化分析のデータフロー図に対応しています。

機能モデリングのプロセスは、次の手順で視覚化することができます-

  • すべての入力と出力を特定する
  • 機能的な依存関係を示すデータフロー図の作成
  • 各機能の目的を述べる
  • 制約を特定する
  • 最適化基準を指定する

構造化分析と オブジェクト指向分析

構造化分析/構造化設計(SASD)アプローチは、ウォーターフォールモデルに基づいたソフトウェア開発の従来のアプローチです。 SASDを使用したシステムの開発の段階は次のとおりです-

  • 実現可能性調査
  • 要件分析と仕様
  • システム設計
  • 実装
  • 実装後レビュー

次に、構造化分析アプローチとオブジェクト指向分析アプローチの相対的な長所と短所を見ていきます。

オブジェクト指向分析の利点/欠点

Advantages Disadvantages
Focuses on data rather than the procedures as in Structured Analysis. Functionality is restricted within objects. This may pose a problem for systems which are intrinsically procedural or computational in nature.
The principles of encapsulation and data hiding help the developer to develop systems that cannot be tampered by other parts of the system. It cannot identify which objects would generate an optimal system design.
The principles of encapsulation and data hiding help the developer to develop systems that cannot be tampered by other parts of the system. The object-oriented models do not easily show the communications between the objects in the system.
It allows effective management of software complexity by the virtue of modularity. All the interfaces between the objects cannot be represented in a single diagram.
It can be upgraded from small to large systems at a greater ease than in systems following structured analysis.

構造化分析の利点/欠点

Advantages Disadvantages
As it follows a top-down approach in contrast to bottom-up approach of object-oriented analysis, it can be more easily comprehended than OOA. In traditional structured analysis models, one phase should be completed before the next phase. This poses a problem in design, particularly if errors crop up or requirements change.
It is based upon functionality. The overall purpose is identified and then functional decomposition is done for developing the software. The emphasis not only gives a better understanding of the system but also generates more complete systems. The initial cost of constructing the system is high, since the whole system needs to be designed at once leaving very little option to add functionality later.
The specifications in it are written in simple English language, and hence can be more easily analyzed by non-technical personnel. It does not support reusability of code. So, the time and cost of development is inherently high.