ウォーターフォール開発とアジャイル開発。
日本でも慣れ親しまれている開発方法ですが、ノーコード、ローコードを導入するなら、あなたはどちらの開発手法が良いと考えますか?
今回はウォーターフォール開発とアジャイル開発の比較をしながら、ノーコードとローコードの導入がしやすい開発手法を解説しています。
基本的なことも学びながら、どちらがよりノーコード、ローコードを導入しやすいのか考えてみましょう。
【いつ生まれた?】アジャイル開発とウォーターフォール開発
アジャイル開発とウォーターフォール開発。これらの開発名は、どこのプロジェクトでも聞いたことがあるのではないでしょうか。
アジャイルも、ウォーターフォールもシステムやソフトウェアを開発する際の手法のひとつで、日本でも特に採用されている開発方法です。
まずはそれぞれの開発について詳しく知っていきましょう。
【1970年頃に生まれた開発方法】ウォーターフォール開発とは?
システム開発やソフトウェア開発を古くから支えてきた、多くの企業に活用されている開発手法がウォーターフォール開発です。
ウォーターフォールとは、滝(waterfall)を意味していて開発の流れは
- 要件定義
- 内外部設計
- 実装
- そして3通りのテスト
以上を経てリリースに入ります。図で確認してみましょう。
まさに滝のような流れで開発が進んでいくのがわかりますよね。
この開発が生まれたのは1960年から70年代にかけてで、約60年前。
ソフトウェアのニーズが高まり、大規模な開発が多くなってきた反面、エンジニア不足と開発ソフトの品質維持などの課題に対応できるように、予算やスケジュールなどの観点からエンジニアを配置できる開発手法が検討され、ウォーターフォール開発が生まれました。
ウォーターフォール開発には3つの開発モデルがあります。その3つのモデルは次の通りです。
- V字型モデルモバイルアプリ開発
- プロトタイピングモデル
- スパイラルモデル
それぞれ開発したいソフトやアプリ、システムをどのような流れで開発するのかなどにも手法は変わってくるものの、品質重視であったり、大規模なシステム開発でスムーズに稼働させられるという点で効果的な開発手法といえます。
【2001年に宣言された開発方法】アジャイル開発とは?
一方で、アジャイル開発とはPDCAをまわすように開発をすすめていくタイプの開発手法で、2001年のアメリカ、ユタ州でなされたプログラマー17名の宣言提唱により、生まれました。
アジャイル開発の宣言は次の通りです。
引用元:アジャイルソフトウェア開発宣言
アジャイルは直訳すると素早い、機敏、頭の回転が速いというような意味をもち、システムやソフトウェア開発においても
- 人(対人、Face toFace)
- 迅速さ
- 顧客
- 適応性
これらのポイントに重きを置いている点が特徴的ですね。また、機能単位の小さなサイクルで開発を繰り返して行うことができるので、度重なる仕様変更に強く、プロダクトの価値を最大化させることが得意な開発手法です。
また、アジャイル開発にも
- スクラム
- エクストリーム・プログラミング
- FDD
など、それぞれ開発手法があり、中でもスクラム開発は、チーム全体が一体となってシステム開発をおこなうフレームワークで、アジャイル開発の中でも主流な開発方法とされています。
【ウォーターフォールとアジャイル】2つの開発の大きな違いは開発の進め方
アジャイル開発とウォーターフォール開発の大きな違いは、開発の進め方もそうですが、先ほども説明したように開発において大切にしているポイントが違ってきますね。
ですが、2つの開発の流れはわかったものの実際に比較してみないとどのような流れになるのかいまいち想像できないという方も少なくないでしょう。
ここからは開発の工程に沿ってそれぞれ解説します。
第一段階:要件定義
ウォーターフォール開発での要件定義は綿密な計画となります。
そもそも、ウォーターフォール開発では開発当初の段階で、顧客の要求から要件を定義しますね。リリースまでの計画、満たすべき基準なども計画段階で決定させた後に開発が進んでいくのです。1度終わった工程を戻すことができません。
一方でアジャイル開発での要件定義として活用されている言葉がユーザーストーリーです。
ユーザーストーリーは、ユーザー(顧客も含む)の要望や、役割からゴールなどの計画が含まれています。
第二段階:設計
ウォーターフォール開発での設計は、要件定義書を元に基本設計と詳細設計を組み立てる段階です。
基本設計では主に画面やイメージを見える部分、詳細設計では実際にプログラムが動くことを想定した内部動作の設計をおこないます。
一方でアジャイル開発での設計は、リリースプランニング(プロダクトバックログ)とスプリント計画(スプリントバックログ)の2種類が設計という工程に該当します。
リリースプランニングは最初のプロジェクトの立ち上げ時期、スプリント計画は、1つのイテレーション期間でおこなわれるチーム全体の計画です。ここでは、プロダクトの段階でどれくらいの範囲の機能を実現させるかをチーム全体で話し合います。
第三段階:テスト
ウォーターフォールでのテストは、受け入れテスト、システムテスト、単体テストなどテストだけでも3種類あるので、ここでも綿密でひとつひとつの工程が慎重な開発方法だということがわかりますよね。
また、ウォーターフォール開発では全ての開発が終了してからテストをおこなうことから、どの段階でどの検証をしたら良いのかわかるV字型開発モデルが相性が良いです。
一方でアジャイル開発では、ひとつの開発サイクルで作られたプロダクトをデモを行うことがテスト(スプリントレビュー)になります。プロダクトがミスなく動いているか確認後に次のプロダクト開発が始まることは、アジャイル開発における大きな特徴といえるでしょう。
実装後、リリースから運用保守まで
ウォーターフォール開発では前の段階が完了するまで次の工程に進むことができないので、ここはアジャイル開発と大きな違いのひとつです。
アジャイル開発では、ひとつのイテレーションで実装とリリースを繰り返すことから小さな仕様変更もしやすいことが特徴的です。ウォーターフォール開発だと先に進んだ段階でひとつ前の工程に戻ると、計画が崩れてしまうといった大幅な変更にもつながります。
【ノーコードを導入する場合】アジャイル開発とウォーターフォール開発のどちらが適切?
では、ノーコードを開発ツールとして導入するなら、どちらの開発手法であれば導入しやすいのでしょうか。実際にノーコードを導入するシーンをイメージしてみて下さいね。
まずはウォーターフォール開発にノーコードを導入した場合で考えてみましょう。
ノーコード開発の特徴として、
- 開発期間の短縮
- 開発にかかるコストの削減化
など、開発に関わるあらゆる課題に応えられるとして日本でも大きく話題にあがっていますが、ウォーターフォール開発では要件定義の段階で人員や実際にかかる期間などが明確にわかるように定義されていきます。
ノーコードやローコードをウォーターフォール開発で導入した場合、考えられるメリットは次の通りです。
- 技術者不足という点での課題解決(人員確保のしやすさ)
- 開発期間の短縮
など、ひとつ前の工程が終わって次に進んでいく開発であることから、ミスが発生すると前の段階に戻れず、時間や人員も含めあらゆるコストが大きくかかるという特徴があります。ここでノーコードやローコードを導入することで、それらのコストが低コスト化されていく可能性があるでしょう。
ただ、開発者以外に、改修作業やシステムの改善ができない(時間がかかる)というリリース後の課題に対して対応が難しくなります。
次にアジャイル開発ですが、イテレーションを繰り返すことによって、開発を進めて完成させていくアジャイル開発は、ひとつのイテレーションの中でテストを行うことができることから、変化に強く要求に対しても臨機応変に対応ができることが特徴的です。
つまり、ノーコードやローコードをアジャイル開発で取り入れることによって、あらゆる変化に対応し、リリース後も簡単に開発者以外でも修正が可能なことから運用のしやすさもあがるのです。ただ、アジャイル開発はチーム一丸となって開発させていくスタイルなので、役割分担が発生する場合は開発が難しくなるでしょう。
まとめ
ノーコードやローコードは開発現場で実際にかかるコストや困難を削減化させていくことができるので、導入することで開発しやすさは格段に上がりますが、ウォーターフォール開発でも、ノーコードやローコードの導入は可能であるものの、臨機応変に対応ができる点や、リリース後の更新などは、アジャイル開発の方が親和性が高いといえるでしょう。