フラフラつくる人

主に制御工学やコンピュータについてのいろいろな話題を書いていきます。時期によっては内容が偏ることもあります。

構造化設計とオブジェクト設計の違い

概要

本記事では,構造化分析・設計手法とオブジェクト分析・設計手法の違いについて述べる.

2手法の主な違いは2つある

 

まず,処理の対象となるデータの取り扱い方針に違いがある

構造化分析・設計手法では,プログラムとデータをそれぞれ独立した要素として取り扱う

オブジェクト分析・設計手法ではプログラムをアプリケーションロジックとデータ操作ロジックの2つに分離して取り扱う

オブジェクト分析・設計手法では,データをデータ本体とデータ操作ロジックのセットで取り扱う

 

 

次に,各手法に沿って構築されるソフトウェアのアーキテクチャに違いがある

構造化分析・設計手法では,ソフトウェアがユーザインターフェース層,アプリケーション層で構成される.

一方,オブジェクト分析・設計手法ではソフトウェアがユーザインターフェース層,アプリケーション層,ドメイン層で構成される

データの取り扱い方針の違い

構造化分析・設計手法では,プログラムの処理とデータをそれぞれ独立した要素として取り扱う

このことにより,データが処理に依存することを避けられる.

その結果,同じ内容のデータがプログラムの複数箇所で重複して定義されているといった無駄な設計を回避することができる.

 

一方で,構造化分析・設計手法にはデータ構造の変更がプログラムの処理全体に影響を及ぼしてしまうといった問題がある.

なぜなら,プログラムとデータを分離することでデータの依存性は回避することができたが,処理については依然としてデータ構造に依存してしまっているためである.

 

オブジェクト分析・設計手法では,プログラムで取り扱うデータをデータ本体とデータ操作ロジックのセットとして捉える

アプリケーションロジックはアプリ固有の抽象度の高い概念を「オブジェクト」として操作し,アプリケーションが提供する機能を実装する

データ操作ロジックは,アプリケーションロジックからの呼び出しに応じてデータベースといった実装レベルのデータを直接操作する.

その上で操作した結果をアプリケーションロジックが取り扱う抽象度の「オブジェクト」としてアプリケーションロジックに渡す

 

オブジェクト分析・設計手法では,データ構造の変更により影響が及ぼされるロジックはデータ操作ロジックに限定される

なぜなら,データ構造の変更に伴い以下2つの事項について対応すればアプリケーションロジックを変更する必要はなくなるからである.

  • データを直接操作するデータ操作ロジックの内容を変更する
  • アプリケーションロジックに向けて公開しているデータ操作用のインタフェースの仕様を保持する

 

アーキテクチャの違い

構造化分析・設計手法ではプログラムが以下に示す2つの処理層から構成される

  • ユーザインターフェース層
  • アプリケーション層

前節で述べた通り,構造化分析・設計手法ではプログラムとデータを分離して取り扱う.

分離されたプログラムはアプリケーション固有の処理のみ(ユーザインターフェース処理も含む)を行う

故に,アーキテクチャとしてはユーザインターフェース層とアプリケーション層のみとなる

 

オブジェクト分析・設計手法ではプログラムが以下に示す3つの処理層から構成される

  • ユーザインターフェース層
  • アプリケーション層
  • ドメイン

オブジェクト分析・設計手法では,構造化分析・設計手法のアプリケーションロジックに加えてデータ操作を行う処理層としてドメイン層がアーキテクチャの構成要素に含まれる

まとめ

構造化分析・設計手法とオブジェクト分析・設計手法の違いとは,データの取り扱い方針の違いである.

構造化分析・設計手法では処理とデータ本体を分離して取り扱うのに対し,オブジェクト分析・設計手法ではデータをデータ本体とデータ操作ロジックの2つ1組として取り扱う.

このデータ操作ロジックのことをドメイン層と呼ぶ.

ドメイン層を設けることにより実装レベルのデータ処理が隠蔽されるため,データ構造の変更による影響をドメイン層に留めることができる.