オブジェクト指向による開発行程
  1. 目的の明確化

     オブジェクト指向といっても、いきなりボトムアップでオブジェクト設計から始めるのはちょっと無謀だと思います。業務レベルではやはりトップダウンで全体像をかためるべきでしょう。
     まずは、開発の目的を決めます。目的といっても、人それぞれ、立場などで異なります。
     でも、開発に関わる人間すべてに最低限共通の目的(大義名分)を持つことが成功のためには必要です。
     そして、それぞれの立場や人ごとに、この目的を具体化し、ブレークダウンして行けば良いでしょう。
     まずは、なにどうしたいのかを明確にします。

  2. 分析

     なにをどうしたいのかが決まれば、それに基づいて分析を行います。
     一口に分析といっても、見る角度や視点で結果は異なってきます。
     そこで、最初に決めた目的に沿った視点で分析することで話しが発散しなくてすみます。
     目的は開発のバックボーンとなって作業が違う方向へ迷走するのを防ぎます。

     世の中の仕組みは単純なオブジェクトだけでは構成されていないと思います。
     業務や処理(制御)の目に見えないルールによりコントロールされているのです。
     これを、全て同一レベルのオブジェクトに封印して隠蔽する方法もありますが、ルールは世の中では重要な要素であるからシステム全体をコントロールするルールとして明確にするほうがよりストレートに世の中をモデリングできると考えます。
     分析には担当や組織または他のシステムなど役割毎の要素を縦の列に、処理毎の要素を横の行にした改良DFD(データフローダイヤグラム)を用いるとわかりやすいでしょう。
     このDFDにより5W1Hを明確にします。
     横軸は時間軸として業務フローを表します。
     縦軸は役割として他システムや組織との関係を表します。
     例を下記に示します。

  3. 設計

    業務設計
     分析結果をもとに、開発方針、システム化範囲(人間とコンピュータの役割分担)、改善目標(程度)、予定線表などを決めます。
     そして分析に用いたDFDを、上記の開発方針、システム化範囲などに基づいて修正します。
     その前に、業務自体の改善を考えることが大切です。その上で、コンピュータに支援をお願いすることを考えるべきでしょうね。

     上の例では、会計システムへ仕入れ部から仕入れ伝票情報の投入を行うことになります。
     これにより、会計部は無くなります。
     処理オブジェクトからシステムへの接続は人や組織を介することになり、システムからシステムへの接続はフロースルーにより電子的に情報流通することを表します。

    モデリング

     業務系が固まったらいよいよ、コンピュータの世界での設計作業です。
     まずは、実世界のインスタンスをコンピュータの世界へモデリングするため、業務設計をもとにオブジェクトを抽出し、整理します。
     ここで、コンピュータの世界へ取り込むもの、そうでないものを選別し、また、抽象化により必要の無い特性を切り捨てます。
     じつは、この作業が一番難しく、熟練を要する作業で、ここでつまずくと後の作業に影響し、手戻りなどが発生してしまうことになります。
     業務、処理、オブジェクトで分けて考えると良いかもしれません。
     データに近い(業務に遠い)本質部分を中心に抽出し、単純で簡単な構造なものを選びましょう。
     オブジェクト間の関連や制御など複雑なものは業務や処理に任せます。

     個人的に推奨するモデリングの方法を以下に述べます。
     設計により作成したDFDから次の手順によりオブジェクト化することによりモデリングを行います。
    (1)業務フローの「仕入れ業務」、「調理業務」、「配膳業務」をそれぞれ業務オブジェクトとします。
    (2)担当の「客室部」は「メニュー計画」処理と「配膳」処理を内包した処理オブジェクトとします。同じく「仕入れ部」は「買い出し」処理と「返品」処理を内包した処理オブジェクトとします。
    (3)材料表、メニュー表、仕入れ伝票から原子オブジェクトを抽出します。
    (4)原子オブジェクトには、業務や処理に影響しない本質的なルールを内包します。
    (5)処理オブジェクトは原子オブジェクト間の関連と原子オブジェクト自体のライフサイクルを制御します。(実際のライフサイクルの処理は原子オブジェクト内のメソッドが行い、処理オブジェクトは制御だけを行います)
    (6)業務オブジェクトは「仕入れ業務」や「調理業務」などの業務フローを遂行するため、処理オブジェクトを制御します。

    オブジェクト設計

    抽出したオブジェクトを分類しクラスを定義します。
     この定義したクラス間の継承関係、インスタンス間の包含関係などを決めます。

    システム設計

     業務設計からメニューと対話制御部の設計を行います。
     次に、この対話制御部とオブジェクトを結びつけるトランザクション制御部を設計します。
     原子オブジェクトに内包する本質的なルールを設計します。

  4. 実装

     後は実装とテストを行い完成させます。
     プロトタイプやスパイラル型の開発では、これらを繰り返して完成度を上げて行きます。
     単純な構造のオブジェクトとその組み合わせを制御するトランザクション制御部、そして、業務を構成する対話制御部と、階層的に分割することで、プロトタイプやスパイラル型の開発のように修正や追加などが多発する形態にも対応できるようになります。

    ホームページへ