システムを上手に設計することについてについて
システムを上手に設計するためには、いろいろな能力が求められます。では、システムを設計している人は、こうした能力を身に付けているのかというと、たいていは、プログラマーとして何年か経験した後で、設計を少しずつやり始めることです。先輩の書いた仕様書を真似しながら、システムの機能を決めていきます。いろいろな面を検討して設計しているというより、何となく決めているという感じに近いのです。利用者に言われた機能を整理して、そのまま実現するのが一般的となっています。
一方で、システムの目的から検討し、目的に適した機能を求めている人となると、非常に少ないのが現状です。このような形で設計すればよいこと自体を、知らない人が多いのではないでしょうか。こんな状態でシステムの仕様を決めると、その内容はどうしても悪くなりやすいのですそこから生じる当然の結果は、途中での手直しが大量に発生する現象です。プログラミング段階では、機能に整合性がない点を指摘されます。利用者に見せた段階では、機能が正しくないとか、必要な機能が揃ってないとか、このままだと運用できないとか、言われてしまいます。当然、修正しなければなりませんが、この段階での修正は大きな負荷となります。