絶対設計と計画(とか XP とか開発のスケールアップとか)

by tanabe on September 16, 2008

最近考えていることのまとめとして、「絶対設計」というのをキーワードに書き散らしてみようかと。たぶん、一回で書けないから何回かに分けて書く。あと、先に言っておくと答えは出てないので思考過程のメモ。というか、答えを知っている人はぜひ教えて。

まず、絶対設計というのは造語で、「設計というのは完成された姿があり、それは静的に写しとれる。」という信条を指す。設計書作成をプログラミングに先行して行おうとするのなどは絶対設計。

でもプログラミングというのは設計プロセスだし、より良い設計というのはそのときの置かれた状況により動的に変わるし、他の設計と比べてこの条件だとどっちが良い?っていうような相対的なものなので、すべてを見通して静的な完璧な設計を作って設計書を作るというのは不可能。(この辺、当たり前のように XP やリファクタリングや TDD やを正しい方向性としているので、ここが食い違うとこの後の問題意識や考えも食い違う。あしからず。)

でも、不可能だということと、する必要がないというのはまた別の話で、どんなケースでもソフトウェア開発は「いやー、そんなん書いてみなきゃわからんですよ」というのが許されるかというとそうもいかない。

で、「そうもいかない」のはどんなときなのかってのを考えると、「計画」が求められているときなんだよね。たとえば、「ターゲットの日付が先に決まっている」というのは計画をすることが必須になる要件だし、単に「上司がスケジュールを出せと言っている」でもいい。

この辺からかなり話があやしくなってくるわけだけど、この「計画」への対処は二つあって、

  • 計画がいらなくなるように環境を変える
  • 計画ができるように方法を変える
ってのが考えられる。

続く。