システム的視点

システムを構築するとき、ソフトウエアを設計するとき、企画をまとめるとき、これらを行うときに、必要な考え方をまとめてみます。

まず、問題の大小にかかわらず、仕事をある単位で分割します。分割の単位を決める視点は、「なんのために、なにをするのか」、目的と手段です。

巨大なプロジェクトであっても、小さなプロジェクトでも同じです。この分割は、これ以上できないというまで繰り返します。

分割されたまとまりを「タスク」と呼ぶことにします。

次に、タスクの共通性を探します。この共通性探しは、そのプロジェクトの中だけでなく、他のプロジェクト、世の中のすべての問題から探します。そうすると、1つのタスクだと考えていたものが、さらに複数のタスクから構成されていることを発見することがあります。発見したらタスクを分割して、さらに共通化を行います。

次に、手順を考えてみます。たとえば

a->b->c->d->e

の順で行うことが、

a->c->d->b->e

の順で行うことができるか、その場合に結果が同じを考えます。同じであれば、b, c, d の共通性を再考します。さらに複数タスクへの分割の可否を検討します。

そうすると実は、

a->b*3->c*2->d*6->e

であることが発見できることがあります。ここで、多重が見つかったときには、並列化の可能性を検討しますが、多くの場合は並列可能です。

完全に、部品の共通化が計られていますので、再利用性はきわめて高く、開発は最小限の労力で行うことができます。

次に、各タスクの実装を検討することになりますが、ここからは実際に現実との対比を意識することになります。つまり、各タスクはすでに実際に実現されているもの、動いているシステムが存在していないかを調査しなければなりません。もちろん、そのものずばりとは限りませんから、情報の内容、流れを可能な限り抽象化して、類似性をチェックしていきます。

こうすることにより、システムも企画も汎用化が計られ、適用範囲を拡大することができます。

ここでの汎用化はもちろん汎用的に使うことのできる部品をたくさん作って組み立てるという面が大きいわけですが、その部品が得意なもの、得意な手法であるように導くことができれば、システム構築、企画の提案に対して、自信のあるもの、説得力のあるものになるでしょう。

最終更新日: $Date: 2008-10-23 14:34:46+09 $

Copyright (c) 2008-2010 by Shin Yoshimura. All rights reserved.