ObjectSquare [1999 年 6 月号]

[トレーニングの現場から] 第1回 - 構造化手法とオブジェクト指向の違いは何ですか? -



■ はじめに

オブジェクト指向トレーニングに来られるお客様には、構造化手法で分析・設計を実践してこられた方がいらっしゃいます。
今回は、構造化手法で分析を実践してこられたお客様がオブジェクト指向モデルの作成でどういったことに ひっかかりを感じておられるか?ということについてご紹介してみたいと思います。

■ 給与計算システムの例

 
例えば、ある会社の従業員の給料計算のシステムを例にとって考えてみましょう。
オブジェクト指向分析(OOA)で給与計算という処理を考えた時に、以下の図のように、振る舞いを持った様々なオブジェクトの協調動作によって遂行されるものとしてとらえます。



構造化手法になれた方は、次のようなモデルを作成されることがあります。

従業員情報である、「大阪太郎」や、「東京次郎」には、処理が分担されておらず、給与計算に処理が集中したモデルになっています。
給与計算処理として切り出したオブジェクトが与えられている役割分担は、構造化分析(SA)で給与計算処理として切り出されたものよりも少ない役割分担(処理内容)しか持ちません。
責務あるいは処理の分散という考え方に違いがあります。

■ システムをどういう単位で考えるか

構造化分析(SA)とオブジェクト指向分析(OOA)では、システムをどういう単位で分けて考えるか?という点が大きく異なっています。
SAは、システムを、データと、データの加工処理(入出力を含む)に分けて考えます。そして、データは処理と分離して考えられます。処理機能は、必要な情報にアクセスし、情報を解釈し、更新処理を行います。以下の図のように、フラットな(つまり処理機能を持たない)データとデータを加工処理する機能とに分けて考えます。


OOAは、システムをオブジェクトという単位で考えます。オブジェクトは、情報と振る舞いをカプセル化(一体化)したものです。処理は、オブジェクトの協調動作によって実行されるものととらえます。
処理を分担する基本的な考え方は、情報は自分自身の情報に対して役割分担を持っているということです。情報についての解釈や更新という処理は、その情報自体に責務を分散させて考えます。

■今回のまとめ

給与計算の例をもう一度振り返りますと、
SAでは給与計算処理(機能)が情報を解釈して計算まで実行するものとしますが、OOAでは、給与計算処理(オブジェクト)は関連する様々なオブジェクト(情報)と協調動作するものとします。給与計算処理として切り出されたものの持つ処理や責務の重みがSAとOOAでは違っているのです。
SAでシステム分析をしてこられた方は、初めてOOAで振る舞いをモデリングしようとすると、責務(処理)つまり振る舞いを持たないオブジェクトが沢山出現してしまうようです。
そして、処理の分散させることについて、SAを実践してこられた方は、戸惑われることが多いように見受けられます。


次回は、「オブジェクトって何ですか?」です。

お楽しみに。


© 1999 OGIS-RI Co., Ltd.
Prev Index Next
Prev. Index Next