ウォーターフォールVSアジャイル。どっちがいいの?
こんばんはヤマピーブラックです😎
システム開発のやり方は、大きく分けてウォーターフォール型開発とアジャイル型開発があります。
アジャイルはウォーターフォールに対抗する概念として生まれました。違いやメリットデメリットを整理します。
ウォーターフォールは建設業と同じ
大規模なシステムを開発する際、ほとんどの場合はウォーターフォール型で開発が行われます。
大規模とは、2000万〜数億円規模。開発期間は少なくても半年以上くらいの案件でしょうか。
ウォーターフォール型の開発手法は、建設業のやり方を参考にしたやり方です。大規模な建物、例えばオリンピックスタジアムのような建物を建設する時は、綿密な設計をしてから実際に建物を建てていきます。
ウォーターフォールは以下の手順で進めます。
要件定義→設計→開発→テスト→リリース
要件定義(どんなシステム作る?)を定義して、設計をしっかりやるのがウォーターフォールの特徴ですね。
しかし、ウォーターフォールにはデメリットがあり、それに対抗する手法としてアジャイルが勃興してきました。
ウォーターフォールのデメリットは?
ウォーターフォール型開発のデメリットは、前の工程への手戻りに弱いという点です。
テストをやっている時に、設計のミスが見つかることがあります。こうなると設計まで戻り、その部分を開発し直して、再度テストになります。
こうなると、当初の見積もりが大幅に膨れます。
設計が完璧だったらいいのですが…限られたリソースで完璧にするのはなかなか難しいですね。
アジャイルとは?
このウォーターフォールの欠点を補う手法として、アジャイルが注目を集めました。
開発→リリース→開発→リリースというサイクルを細かく回すのがアジャイルの特徴です。
設計は要件定義を全くやらないというわけではありませんが、ある程度決まったら作り始めるのがアジャイルです。
完璧に設計するのは難しいので、とりあえず作ってリリースしてみて、触ってみて改善を繰り返す。机上より実践って感じですね。
アジャイルを思想も含めてちゃんと理解したい方は、こちらの本をオススメします。
アジャイルのデメリットは?
アジャイルのデメリットは、大規模開発には向かないということです。
短いサイクルでリリースしていくのがアジャイル。大規模なシステムを一気にリリースするのは無理です。おそらくバグだらけのものが出来上がるでしょう。
結論、ウォーターフォールとアジャイルのどちらが優れているかどうかではなく、システムの規模に合わせて考えるべきでしょう。
ただ、一つ言えることは、大規模はやはりリスクが大きいということ。当たり前ですが、システムの規模が大きくなればなるほど、機能は複雑化し、バグが発生する確率は飛躍的に高まります。
なるべく小さい単位でリリースできないか、考えてみましょう。
本日のまとめ
ウォーターフォールは大規模システム向け
アジャイルは短いサイクルでリリース
大規模開発はなるべく小規模に分けれないか考えよう
次回はIT会社の分類をしてみたいと思います。
サ、サポートありがとうございます😭