最近のシステム開発は反復型の開発を行うことが多くなっています。
特に今のシステム開発には様々なリスクが多いため、単純なウォーターフォール型のシステム開発ではリスクに対応できなくなっているからです。様々な技術が乱立する現在において、選択した技術が問題なく動作する保障はありませんし、顧客の要求もシステム開発の初期段階において完全に固まっていることは少なく、仕様が開発中に変更されたり追加されることは当たり前です。その様な環境で初めから完璧なシステム構造を作るのは困難です。ですので、反復して最適な構造を考える必要があります。
しかし、現場で設計を担当している方のほとんどは、反復によってシステムの構造が洗練されていくイメージを持つことが難しく、たとえ決まっていない仕様であっても、構造を一回で確定しないとなかなか納得がいかないようです。そしてシステムの構造全てを俯瞰し、納得したいようです。もちろん巨大で複雑なシステムの全てを一人で完璧に理解することができるようにも思えませんが、安心ができないようです。
最近仕事をしたお客様から話を聞いてみると、いくつか原因が見えてきました。まず、システム開発は様々な役割を持ったメンバで構成されているという意識がないようです。そしてシステム構造を構築する際に契約による設計を行うという意識がないようです。システムを役割で分割し、それらの関係を疎にして、契約を設定して分業するという考えです。問題領域の切り離しというイメージがついていないわけです。
今の日本の開発は同じ人が上流工程(要求分析)から下流工程(実装)まで実施するスタイルを取る事がおおいです。ですので、上流で下流を意識してしまい、分析で設計もしてしまいます。そうすると、本来、分析や設計でやるべき事があいまいになって、間違ったシステム開発へ繋がってしまいます。そしてシステムの構成要素間の依存度が非常に高いシステムになってしまい、問題を切り離せなくなり、全体を把握しないとメンテナンスできないことになるようです。それが当たり前になっているのですね。
そんな問題に対して気づきを得てもらうのが私たちの仕事です。もう少し解りやすく、そしてメリットが理解しやすい形で反復型の開発を体験学習できるセミナーを作ってみたいと思う今日この頃です。