ある程度の規模の開発だとアジャイルが使えるのはF/SとAMS、他はウォーターフォールになると思う
ちょっと、アジャイルとウォーターフォールの関係みたいな話がこんなとことか、こんなとこにでていたので、まあ、自分がかかわった関係での、独断と偏見をひとつ。
(あんまり、書くネタもないので)
ある程度の規模の(たとえば、総合電気大手5社+IBMのうち、1ないし2社が一次請けで、3次、4次(それ以上)請けまであるような)プロジェクトの場合、アジャイルっぽい開発が出てくる部分は、はじめのフィージビリティスタディの部分(ここでプロトを作ったりするけど)と、開発終了後の拡張部分だと思う。それ以外を、アジャイルでやりたくなったら、そのプロジェクト、はっきりいって、やばいと思う。その規模になると、もともとの仕様は、そんなに動かないはず!
開発終了後の拡張は、AMS(アプリケーション・マネジメント・サービス。開発後の保守、拡張などを、一括で支援する形のもの。詳しくはここ)なんかの形で、一括して担当すれば、その期間に応じて、お金がもらえるので、とりっぱぐれない。なんで、結構、毎日チョコチョコ(プログラムを)動かせると思う(ただ、そうやって拡張すると、プログラム自体汚くなるけどね)
F/S(フィージビリティスタディ)のところでは、開発実現性を確認し、フレームワークをきめて、どーいうパターンにするかを決めるので、この部分は、ある程度、トライ&エラーになると思う。なので、アジャイルのほうが、いいかも。
でも、他の部分、アジャイルで、開発しなければいけないとすると、やばくない??
(アジャイルのツールを使うのは、もちOK!だけど)
だって、他の部分って、
帳票出力、電文入出力=これって、ふつう業界で決まってたり、法律で決まってるでしょ。
そんなもん、変化ないっすよ。
モデル部分=代えないほうがいい。
たとえば、証券において、追証(「おいしょう」と呼んでね)関係の計算とかは、公式は変わんないでしょ。出金余力、建余力の求め方、約定(やくじょう)後のプロセスとかも。なんで、一度書いたコードが、間違いないなら、変えないほうが、デグレードしないので、いい。
もちろん、トレーディングルールなんかは、変わる。でも、そこは、あらかじめ変わることを予期して、抽象的につくり、パラメータ変化で対応できるようにしておかないと、大変。
流通など、ほかのものでも、動く部分は、たしかにある。しかし、それはハードコーディングしないように、設計する。ハードコーディングしてしまい、「だからアジャイルで」といいだしたら、それはやばい(アーキのミスは、開発方法論で解決できるもんじゃない)。
画面表示部分=たしかに変えられるけど、変えないほうがいい
というのは、はじめに、画面のガイドラインを決めてしまい、ツールを使ってしまうと、そんなにかわらないはず。もし、変わるとしたら、入出力がまちがい=インターフェースかエンティティの間違い=かるくやばい!
っていうことで、アジャイルでやりたくても、普通は仕様がそんなに動かない上、やり方は、F/Sのときに決めているので、変わんないはず。
で、この部分を、アジャイルでやりたくなるくらい、仕様がころころ変わるとしたら、それは、
・インターフェースの切り方に失敗している
・仕様が正しく聞き出せていない
・F/Sのときに無茶なやり方を基準にしてしまった
なんていうことになる。こうなると、デスマーチのパターン。
この場合、結合テスト1(IT1、プログラム間のインターフェーステスト)で破綻する。
こうなったら、人を投入しても収束しない。
ちなみに、ここで、この理屈がわからないと、IT1で出るバグを、単体レベルと勘違いする(というか、単体とIT1の境界線が、わかってない)。IT1でバグが出た場合、プログラム修正は、単体レベルよりはるかに困難(同期をとらないといけないのと、一度できたプログラムに修正を入れるため、ロジックがぐちゃぐちゃになる。なお、そういう場合は、捨てればいいと思っているそこのあなた。だめなんですねーこれが。一度捨てても、またぐちゃぐちゃになるから)。
ただし、F/Sも、別にウォーターフォールでやれないこともないんだけどね。。。
ただ、どっちにしろ、いえることは、F/Sに、優秀な人間を投入しないと、あとは、一直線に流さざる「を得ない」ので(考えながらやるというものではない。仕様の変更があるようなら、それはたいていミス)、下流工程で混乱する。
その混乱は、たいていIT1で出るので、(もっと、おばかなグループのあつまりだと、IT2でやっと気づいたりする。STで気づいた場合、救えない)、大幅な工数(というか、コミュニケーション)を必要とし、そこに新たに人を投入しても収束しない。
なんていうくらい大切なのに、現実には、F/Sっていう工程がなかったり(はじめ、てきとーにF/Sっぽいことをやる。工程名にF/Sが、最近は、ない。プロトを作ればいいほう)、そこの工程に、へなちょこな人を投入したりする(そして、見当違いなプロトを作る)のよねー
あと、そんなことは知っていて、はじめから、失敗することを覚悟で、投入する場合と、契約の話とかで、お金の回収のからみがあるんだけど。。。
ま、気が向いたら(つーか、書くネタがなかったときに)ね。