コメントやトラックバックは一切受け付けない仕組みになっているので、せっかくだから、他の人は書かない危ない話題について書いてみたいと思う(もし、受け付けたら炎上だよね ^^;)
最近のソフトウエア工学や開発方法論では、アジャイル開発の話題が花盛りになっている。
この前提として、
・要求仕様は完全なものは出ない
・なので、どんどん作っていって、スパイラルで開発していき
・仕様をつめていく
というのが、前提にあると思います。
で、問題なのですが。。。
要求仕様が完璧でない場合、何度も修正かけると、どうして品質がよくなると
いいきれるのか?
要求仕様が完璧だったとしたら、アジャイルで開発する必要はないです。
仕様変更がほとんど入らないことになるので、この場合、ウォーターフォールでもOKで、仕様変更を障害の一環として処理すれば、問題ないです(20年位前の汎用の開発はこれに近かったと思う)。
なので、アジャイルで開発するというのは、そうじゃゃないとき=要求仕様が完璧じゃないから、アジャイルで開発して、どんどん目に見える形で確認し、修正していこうということだと思います。
でも、ってことは、どんどん修正していけば、プログラムはよくなるって言うことが前提にあります。でも、この前提成り立ちますか?
要求が完全でないって言うことは、部分的です。
したがって、修正も部分最適になります。これは全体最適とは限らないので、部分最適のつぎはぎだらけのプログラムになって、ぐちゃぐちゃになり。。。
そのうち保守できなくなり、崩壊するっていうことはありませんか?
つまり、昨日書いた
仕様漏れ、勘違い→仕様変更→プログラムが崩れる→結合テストで破綻→デスマーチ
って話で、プログラミングレベルで修正を繰り返すと、プログラムが破綻しなければいいけど、破綻してしまったら、もう、手が付けられなくなります。
破綻しないといえますか??っていうか、
破綻することのほうが多い=作り直したほうがいい、ってことが多いと思うけど。。
で、作り直すって言うのであれば、何回も作り直すよりかは、ある程度精度を高めて、そしてから、プログラム工程に流したほうがいいってことになります。
つまり、要求仕様の精度を上げるため、プログラムを作らないでもいいシュミレーション方法(決まりきった処理と入出力から、それができるかどうか検証するみたいなかんじの話)を研究したほうがいいのに、後工程に話をすすませて、それでどうにかしようという形に、今の学会、企業、開発者は進んでいませんか?
でもね、むかーしむかし、上流工程のミスを下流で発見する場合、下流工程に行けば行くほど、修正はたいへんになるっていう話しがあったと思うのね。だとすれば、プログラム工程で矛盾を発生させるアジャイルより、上流工程でシュミレーションをきっちりやる、さらには、ヒアリングがきっちりできる手法を考えたほうが。。品質上がりませんか?
なーんてかいたら、アジャイルまんせーの人から、
非難のコメント、トラックバックごうごうだよね。
おまえは分かってないっていって。。
よかった、コメントトラックバック禁止にしておいて(^^)v