見出し画像

ウォーターフォールVSアジャイル。どっちがいいの?

こんばんはヤマピーブラックです😎

システム開発のやり方は、大きく分けてウォーターフォール型開発とアジャイル型開発があります。

アジャイルはウォーターフォールに対抗する概念として生まれました。違いやメリットデメリットを整理します。

ウォーターフォールは建設業と同じ

大規模なシステムを開発する際、ほとんどの場合はウォーターフォール型で開発が行われます。

大規模とは、2000万〜数億円規模。開発期間は少なくても半年以上くらいの案件でしょうか。

ウォーターフォール型の開発手法は、建設業のやり方を参考にしたやり方です。大規模な建物、例えばオリンピックスタジアムのような建物を建設する時は、綿密な設計をしてから実際に建物を建てていきます。

ウォーターフォールは以下の手順で進めます。

要件定義→設計→開発→テスト→リリース

要件定義(どんなシステム作る?)を定義して、設計をしっかりやるのがウォーターフォールの特徴ですね。

しかし、ウォーターフォールにはデメリットがあり、それに対抗する手法としてアジャイルが勃興してきました。

ウォーターフォールのデメリットは?

ウォーターフォール型開発のデメリットは、前の工程への手戻りに弱いという点です。

テストをやっている時に、設計のミスが見つかることがあります。こうなると設計まで戻り、その部分を開発し直して、再度テストになります。

こうなると、当初の見積もりが大幅に膨れます。

設計が完璧だったらいいのですが…限られたリソースで完璧にするのはなかなか難しいですね。

アジャイルとは?

このウォーターフォールの欠点を補う手法として、アジャイルが注目を集めました。

開発→リリース→開発→リリースというサイクルを細かく回すのがアジャイルの特徴です。

設計は要件定義を全くやらないというわけではありませんが、ある程度決まったら作り始めるのがアジャイルです。

完璧に設計するのは難しいので、とりあえず作ってリリースしてみて、触ってみて改善を繰り返す。机上より実践って感じですね。

アジャイルを思想も含めてちゃんと理解したい方は、こちらの本をオススメします。

アジャイルのデメリットは?

アジャイルのデメリットは、大規模開発には向かないということです。

短いサイクルでリリースしていくのがアジャイル。大規模なシステムを一気にリリースするのは無理です。おそらくバグだらけのものが出来上がるでしょう。

結論、ウォーターフォールとアジャイルのどちらが優れているかどうかではなく、システムの規模に合わせて考えるべきでしょう。

ただ、一つ言えることは、大規模はやはりリスクが大きいということ。当たり前ですが、システムの規模が大きくなればなるほど、機能は複雑化し、バグが発生する確率は飛躍的に高まります。

なるべく小さい単位でリリースできないか、考えてみましょう。

本日のまとめ

ウォーターフォールは大規模システム向け
アジャイルは短いサイクルでリリース
大規模開発はなるべく小規模に分けれないか考えよう

次回はIT会社の分類をしてみたいと思います。


サ、サポートありがとうございます😭