フロントエンド うえむーのブログサイト | NU-Blog(エヌ・ユーブログ)

こんにちは、うえむーです。
今回は「ウォーターフォール」「アジャイル」の違いと個人の見解についてお話したいと思います。

そもそも、「ウォーターフォール」「アジャイル」といった言葉はご存知でしょうか?
これはシステム開発における有名な手法で、名前を聞いたとこがあるがよくわからない方もいらっしゃるかと思います。

そこで、「ウォーターフォール」「アジャイル」についての詳細と前職・現職の体験談を基に2つの記事に分けてお話したいと思います。今回は「ウォーターフォール」のみを書きます。

ウォーターフォールについて


ウォーターフォールとは、開発手順を1つずつ確実に進めていく手法です。


※この画像はbacklogブログで一部流用してます。

プロジェクトによっては異なりますが、工程は下記になります。

・要件定義
・外部設計(概要)
・内部設計(詳細)
・製造
・内部テスト
・外部テスト
・デプロイ・運用

この工程ですが、後戻りすることは非常に難しいです。
仕様が大きく変わってしまうと、システム全体の機能を見直しする必要になり、全ての工程が手戻りになっております。「この仕様はやっぱり気に入らないから変更して」と軽めに言えないレベルであり、そうすると予定工数よりも大きく乖離が発生してしいまい。見積もりの見直しするところから始まり、プロジェクトに大きな問題が発生します。

この開発手法で進行する場合は、クライアント様と丁寧にチューニングをとることが大前提であり、細部まで定義する必要あります。

この開発手法に向いているのは、「ロケット・飛行機」などのハードなものとか、フレームワークが向いているかと思います。

前職について


前職は建設業界で仕事をしており、開発手法はウォーターフォールに近いなと思っております。
建設業界の工程だと以下になります。

1.計画(事前調査・設計・見積り・工程・提出・ご挨拶)
2.着工(仮設工事・地鎮祭・測量・仮囲い・水盛リ・遣り方)
3.杭打ち
4.山留め・掘削
5.躯体工事(鉄筋・型枠大工・生コン打設)
6.内装・外装・外構
7.仕上げ
8.検査・引き渡し

建設業界は職人腕一本の世界、施行中に仕様を大きく変更することは絶対にありえないのです。そうなってしまった場合、計画立て直し、見積もりが大きく乖離してしまい。プロジェクトに大きな問題が発生してしまいます。すごい恐ろしいです。。。

ウォーターフォール開発の手法で進行する場合は、クライアントと丁寧にチューニングをして要件定義を細部まで定義する必要があります。安易に要件を大きく変更することは本末転倒なので慎重に進行して行きましょう。

次回はアジャイルについてお話したいと思います。
また、本件に関してのLTをやっており、speakerdeckに投稿しておりますのでこちらもご確認ください。

ウォーターフォール・アジャイルに関しての個人の見解
https://speakerdeck.com/uemura/uotahuoruaziyairuniguan-sitefalsege-ren-falsejian-jie