オブジェクト指向分析・設計の第2回です。
今回は、少し根本的な話から始めましょう。
抽象と具象
そもそも、ITシステムを作るとはどういうことでしょうか。
プログラミングをするとか、サーバを立てるとか、色々とやることはあります。いま、話をしている分析とか設計もありますね。
ただ、これは単なる作業の列挙なので、もっと大括りに考えてみましょう。
ITシステムとは、基本的には現実社会で人間がやることを、ITに代わりにやらせるものです。Amazonがやっていることは現実社会では書店がやっていることですし(最近のAmazonはそれだけではないのですが・・・)、Google(の検索エンジン)は図書館の司書ですかね。
単にITが代替しているだけではなく、ITならではのメリットを使って、インターネットで距離を飛び越えたり、コンピュータは人間ほどには疲れず、費用がかからないので24時間営業をやったりということをしています。もちろん、定型的なことの処理スピードは人間をはるかに上回ります。
ただ、現実社会をITで単純にシミュレートしているのか?というと、そういうわけでもありません。書店員は営業中でも昼ご飯のことを考えているでしょうし、書店のお客さんも目的はトイレを使いたいだけかもしれません。
つまり、書店において、書店の登場人物が、本の売買のためにやるべきことに限定して、ITとしてシミュレートすれば、それで良いのです。
ITシステムを作ることとは、現実社会という具象を、いったん抽象化して分析し、今度はコンピュータの中に別の形で具象化することと言えます。
抽象化して分析する際、現実社会を抽象化したAs-Is(現状)から、To-Be(理想)に組み替えることが一般的です。ここに、ITシステムを作る価値があります。
To-Beにどのような味付けを加えるかが、ビジネスの鍵を握ることになるからです。
システムを分析する3つの側面
どうやら、ITシステムを作るには現実社会を分析する方法が必要になりそうです。
オブジェクト指向では、責務側面、静的側面、動的側面の3つの側面から分析を行います。
第1回でオブジェクトとクラスについて書きましたが、これは静的側面の分析です。
また、社会の営みをオブジェクト間のコラボレーションで分析するとも書きましたが、これは動的側面の分析です。
現実社会では、数多のオブジェクトが様々な理由でコラボレーションを繰り広げているわけですが、ITシステムを作る際には何らかのコンテキスト(文脈)があり、その範囲内で必要なだけオブジェクトとそのコラボレーションがあれば良いわけです。それが責務側面の分析です。
別の言い方で3つの側面を表現すると、
静的側面: 役者
動的側面: 脚本
責務側面: 物語の主題
となります。
まとめ
今回はシステムを分析するとはどういうことかについて書いてきました。
次回は、「ブログ」をテーマにして、実際に分析をしてみましょう。