アジャイル開発とウォーターフォール開発の本質的な違いは何?

アジャイルとは何かを知りたい時にウォーターフォールとの違いを考えると良く理解出来ます。この記事ではウォーターフォールの問題点を挙げていき「アジャイルソフトウェア開発宣言」がその問題の解決策であるのが分かります。

アジャイル開発とウォーターフォール開発の本質的な違いは何?【アジャイルソフトウェア開発宣言】

(動画時間:6:12)

 

スポンサーリンク

アジャイル、スクラム、ウォーターフォールって何?

 

こんにちは、リーンシグマ、ブラックベルトのマイク根上です。業務改善コンサルをしています。

 

今回もビューアーさんのリクエストからです。

 

 YouTube上の動画リクエスト

「アジャイルのスクラムで使えるテンプレートはありますか?マスター、ありがとう。」

 

JCコメントありがとう。皆さんも質問、リクエストがあれば気軽に聞いて下さい。

 

彼はテンプレートを聞いてますが、今日はその前に最近よく耳にするアジャイルとは何か、またその前身であるウォーターフォールとの関係について話したいと思います。

 

アジャイルもウォーターフォールもプロジェクトのやり方を言っています。ちなみにスクラムはアジャイルの中で一番有名な一手法です。スクラムとアジャイルは特にソフトウェア開発で使われます。と言うかそれ以外ではおそらく使われていないでしょう。しかしそのコンセプトは非常に役に立ち、皆さんも参考に出来る部分が必ずあると思います。

 

ウォーターフォール開発の手順

 

昔は皆ウォーターフォールでやってました。ウォーターフォールは日本語で「滝」ですね。滝は上から下に常に流れてその逆には決して流れません。そこからこの名前が付いたみたいです。

 

その流れを簡単に言うとお客さんの要件定義をし、基本設計、詳細設計をし、プログラムのコーディングをします。各種テストを行い問題が無いのを確認し顧客や運用する人に引渡して終了です。滝と同じようにこの流れが逆に行くことはありません。もし行く時があればそれは大問題が起きた時です。

 

ウォーターフォールの開発手順

 

IT企業以外の世間一般でやっているプロジェクト、僕がいつもやっているリーンシグマのDMAICやPMPのプロジェクトは基本的に皆ウォーターフォールなのです。

 

しかし、2017年のある会社のアンケート調査では英語圏のソフトウェア会社の94%がアジャイルでやっていると言う事です。IT業界では今ではアジャイルが当たり前になっています。

 

英語圏でのアジャイルの普及率

*From VersionOne’s 11th Annual State of Agile Report in 2017

 

ちなみに日本のPMIの2016年の調査によると日本での普及率は37%で今だにウォーターフォールが主流です。日本はかなり遅れている感がありますね。

 

日本でのアジャイルの普及率

*PMI日本支部 アジャイルプロジェクトマネジメント意識調査報告 2016 から

 

ウォーターフォール開発の問題点

 

アジャイルに変って来ているという事はウォーターフォールで問題があったということですよね。どんな問題があったのでしょうか?

 

お客に多少不満があっても我慢してもらうのが普通

 

ウォーターフォールですとお客さんにちゃんと動くプログラムを見せるのは大体全て完成した後です。また、依頼してから数ヶ月が過ぎてますので、お客さんの考え方も変っていることもあります。プロジェクトの後半であれば手直しにかなりの時間や手間がかかるのでお客も多少不満があっても我慢してもらうのが普通でした。

 

完璧な計画は作れないけど、計画は絶対である

 

ウォーターフォールではプロジェクトの初期に計画と準備にかなりの時間をかけます。その計画で全員が動きますのでこれはしょうがないでしょう。またその計画を管理するのにも時間がかかります。そして一度出来た計画は絶対で、多少問題があっても皆それに従うようになってしまいます。さらに状況が変ったり、予期せぬ出来事が出てくることもいつもの事ですが、その際に計画を変更するのも大変です。

 

64%の作った機能が使われていない

 

プロジェクトの初期段階では依頼者のお客さんですら何が本当に必要なのか理解していないことが多いです。その状況下で計画を細かく立てて出来たプログラムに多くの使わない機能が含まれている事があります。つまりムダなものを作った事になります。

 

アジャイルの普及する前の2002年の調査で「64%の作った機能が使われていない」と言う結果があります。

 

機能の使用状況(2002年)

 

「アジャイルソフトウェア開発宣言」とは?

 

これらの問題を克服して生まれたのがアジャイルだったのです。アジャイル(Agile)とは英語で「機敏な」とか「頭の回転の速い」という意味ですが、アメリカでアジャイルとは何かと5人の人に聞いたら7つの答えが返ってくるというジョークがあるくらいアジャイルの定義は人によって違うみたいです。しかし一つ言えることがあります。アジャイルの概念が生まれた頃にその時のアジャイルエンジニアが集まって「アジャイルソフトウェア開発宣言」を書きました。

 

アジャイルソフトウェア開発宣言

「アジャイルソフトウェア開発宣言」⇒ https://agilemanifesto.org/iso/ja/manifesto.html

 

「プロセスやツールよりも個人と対話を、包括的なドキュメントよりも動くソフトウェアを、契約交渉よりも顧客との協調を、計画に従うことよりも変化への対応を価値とする」、と言うことです。

 

この時に「アジャイルソフトウェアの12の原則」も決めています。下記のリンクをクリックしてそれも見て下さい。要はこれらを達成出来ればアジャイルなのです。

 

「アジャイルソフトウェアの12の原則」⇒ https://agilemanifesto.org/iso/ja/principles.html

 

アジャイル開発の手順

 

今度はアジャイルの流れを見てみましょう。実はウォーターフォールの時とやることは同じなのです。しかし、「個人と対話」を重視しますので、チームメンバーは同じ場所で作業をします。顧客の要件に優先順位をつけて重要な機能を決めてその機能ごとに設計、コーディング、テストをして「動くソフトウェア」を作ってしまいます。

 

「顧客との協調」が大事ですのですぐに顧客に見せて確認をしてもらいます。この一サイクルを2,3週間で行い「イテレーション」と呼んでいます。その顧客から変更を言われれば直ぐに応じるし、新しい要望も快く受けつけ、イテレーションを繰返して「変化への対応」をしながら全てを完成させます。

 

 

アジャイル開発手順

 

「最初に決めた全ての機能を作る」ウォーターフォールと違って、アジャイルだと「顧客との協調」と「変化への対応」から「本当にお客さんが必要なものだけを作って提供する」ことが可能なのです。これがこの二つの明確な違いです。

 

<<関連記事>>