「開発現場が忙しすぎる」
「いつも開発の納期に間に合わない」
このような悩みをお持ちではありませんか?
開発は目の前のタスクをこなしていくだけでは無駄が多く、きちんと計画を立てる必要があります。
この記事では、開発手法の1つであればウォーターフォール開発を紹介します。
開発現場で働く方はPM(プロジェクトマネージャー)の方は、ぜひ最後までご覧ください。
ウォーターフォール開発とは?
ウォーターフォール開発とは、上流工程から下流工程をきちんと決めて順番に開発を進めていく開発の手法です。
1970年代に情報工学博士のロイスの論文に記載された「大規模ソフトウェア開発には、製品製造過程のようにいくつかの工程に分けたトップダウンアプローチが必要」という内容が原型といわれています。
その後も論文は全世界で受け入れられ、ウォーターフォールは今でも広く使われています。
日本においては、開発現場で採られる開発手法のうち97.4%がウォーターフォール開発です。
ウォーターフォール開発の開発工程
ここでは、ウォーターフォール開発の開発工程について紹介します。
合わせて読みたい
システム開発の工程管理が課題であればアプリを使ってみよう!
システム開発工程の詳しい内容や重要性、おすすめのアプリなどを紹介。記事を読むことで、システム開発を効率よく進めるためのコツがわかります。システム開発に課題を感じ.....
要件定義をおこなう
要件定義では、開発者側と発注者側でシステムに必要な機能や条件、目的をすり合わせます。
具体的に、発注者の希望を基に要件定義書を作成するところまで落とし込みます。
文書化しておくことで、担当者以外にも共有されるためプロジェクトが計画通り進みやすくなるでしょう。
要件定義書のクオリティーは事業の成功に大きく影響するため、要件定義は経験豊富な方が担当する場合がほとんどです。
設計する
設計フェーズでは、要件定義書に記載される項目をより具体的な設計段階までに落とし込みます。
これにより、実際に開発する現場の作業員が何をすればよいのかが明白になるでしょう。
例えばシステム開発の現場であれば、以下の作業を実施します。
- 要件を満たすソフトウェア・ハードウェアを明確化する
- システムに必要なすべての機能と役割を決定する
- 取り扱う情報の管理方法を決める
次のフェーズからは実際に開発が進みます。
発注者は認識の相違がないか、この段階までで確認及び指摘する必要があります。
コーディングを実装する
完成した設計書を基に、実際に成果物を作成するため開発します。
この段階では開発に必要な設計書や情報がすべて揃っているため、ひたすら作業を進めます。
作業ミスが発生すると開発の遅延につながるので、ミスが起きにくい作業体制を構築しておくことが重要です。
テストを実行する
開発が終われば、成果物に問題がないかテストします。
テストは細かく分けると、以下4種類あります。
単体テスト | 開発を終了した機能ごとに動作を検証する |
結合テスト | 開発した機能を連携させて動作確認を実施する |
総合テスト | 実際の運用を想定して、成果物の動作を検証する |
運用テスト | 成果物が仕様書通りになっているか確認する |
ウォーターフォール開発では、基本的に前工程を飛ばして次工程を実施することはありません。
しかし機能ごとに開発期間が変わる可能性があるので、単体テストは飛ばして結合テストをする場合があります。
テストではもし不具合が見つかれば、不具合が解消されるまで修正して何度でも再テストが実施されます。
導入する
成果物に問題がなければ、実際に現場へ導入します。
新規であれば比較的問題は起きにくいですが、既存システムを入れ替える場合は移行作業が発生します。
ITシステムを導入する場合、既存のシステムを気軽に停止できない場合も少なくありません。
したがって、移行作業に工数が多く取られる可能性があります。
成果物を入れ替える作業が発生する場合は、見積もりに移行作業の工数も多めに入れておくことが重要です。
運用する
導入が完了すれば、実際に成果物を運用します。
運用では、保守をどうするかが重要です。
システムを開発した会社がシステムのことをもっとも理解しているため、多くの場合は開発を担当した会社が保守も担当します。
しかし、発注側もシステムのことをある程度理解しておいた方が、トラブルの際スムーズに修復作業が進みます。
ウォーターフォール開発2つのメリット
ここでは、ウォーターフォール開発のメリットを2つ紹介します。
1)進捗管理が楽にできる
ウォーターフォール開発は全工程を決めた状態で開発が進むため、今どの段階なのかがすぐにわかります。
また工程が終わる度に進捗と結果を順に整理していくので、比較的進捗が簡単といえるでしょう。
進捗がわかりやすいので、クライアントや開発に携わっていない自社の人間でも開発の状況をすぐに理解してもらえます。
2)品質を担保できる
ウォーターフォール開発では手順や目標、基準をきっちり決めてから開発が進むため、品質が保たれます。
作業を遂行できる人であれば、誰が作業してもクオリティーはほとんど同じなので、属人化を防げます。
また計画を練るために前もってクライアントと認識を合わせるので、成果物の品質とクライアントが考える品質にズレが生じにくいのも特徴です。
ウォーターフォール開発2つのデメリット
ここでは、ウォーターフォール開発のデメリットを2つ紹介します。
1)動作確認ができるまで時間が掛かる
ウォーターフォール開発では、6つのステップのうち、4つ目の段階でテストします。
要件定義から開発フェーズの間は、実際に動作する成果物を目にしません。
動作確認を経て考えが変わったとしても、ウォーターフォール開発では基本的に手戻りは不可能です。
したがって、プロジェクト完了間近まで問題が手つかずのまま残る場合があります。
2)柔軟性に乏しい
ウォーターフォール開発は途中で要望や仕様の変更が原則できず、柔軟性が乏しい開発手法です。
もし途中から仕様変更に応えるために開発のやり直しをする場合、1から開発工程を組みなおすため非常に多くの工数が割かれます。
当初の計画段階ではユーザーのイメージが曖昧な場合も多いため、
ウォーターフォール開発ではユーザーの意見を完全には取り入れられないケースもあります。
ウォーターフォール開発は、基本的には手戻りが発生しないように進める必要があります。
ウォーターフォール型とアジャイル型の違いは?
ウォーターフォール開発は、しばしばアジャイル開発と比較されます。
アジャイル開発は、ウォーターフォール開発と違い機能単位で小さくすばやく開発を繰り返す手法で、近年注目されています。
アジャイル開発には柔軟性があり、ユーザーの細かな要望に応えることが可能です。
しかし、作業メンバーは全員に設計から開発、テストまでのスキルと、手戻りにすばやく対応できる機転のよさが求められます。
ウォーターフォール開発に比べて属人的になりやすいのも、アジャイル開発の特徴です。
合わせて読みたい
アジャイル開発ツールのおすすめ5選!導入メリットや料金を解説
従来のウォーターフォール開発と比較して、より迅速かつ仕様変更に強いアジャイル開発について、導入メリット・デメリットを、解説します。本記事内のおすすめツールを参考.....
ウォーターフォール型が向いている開発の特徴
ここでは、ウォーターフォール型が向いている開発を紹介します。
品質を重視した開発
ウォーターフォール開発は、想定通りの品質が担保されやすいのが特徴です。
したがって、一定の品質を保たれないと成果物として認めないクライアントにはウォーターフォール開発が向いています。
時間が掛かってもいいから高品質の成果物が欲しいという場合も、ウォーターフォール開発がよいでしょう。
大規模プロジェクトの開発
大規模なプロジェクトにはウォーターフォール開発が向いています。
最初に全工程の計画を立てるため、規模が大きくても全体の進捗を把握しやすいからです。
また、最初に綿密な計画を立てることで無駄な工数を前もって削減できるのでコスト削減にもつながります。
アジャイル型が向いている開発の特徴
アジャイル型が向いている開発を紹介します。
スピード感が求められる開発
アジャイル型は、要件が明確に確立されていなくても見切りで開発を進めます。
したがって、サービスインまでの時間は比較的早くなります。
また、手戻り時もそこまで工数が掛からない場合が多く、全体的な納期短縮にもつながるでしょう。
昨今注目されているDX推進など、変化が早くスピード感を求められるプロジェクトにはアジャイル開発が向いています。
仕様が変更する可能性が高い開発
ユーザーの成果物に対するイメージが曖昧で、途中で仕様変更が発生する可能性が高い開発にはアジャイル型が向いています。
アジャイル開発は何度も開発を繰り返すことが想定されているため、仕様変更にも適応した開発が可能です。
例えば、実際に動作してみたら思ったより動きが悪くもっとシステムに割り当てるリソースを追加したいとなった場合でもアジャイル開発であれば比較的すぐに対応できます。
またITに関する開発の場合、時代のニーズや流行の潮流が早く開発途中で応えるべきニーズが変わることもありますが、アジャイル型であれば対応できるでしょう。
組織に合った開発手法を選び効率的な運営を目指そう
今回の記事の内容を以下にまとめました。
- ウォーターフォール開発は高品質な成果物を作るのに向いている
- ウォーターフォール開発は動作確認ができるまで時間が掛かる
- 機能単位で小さくすばやく開発を繰り返すアジャイル開発も近年注目されている
- 仕様変更が発生する可能性の高い開発にはアジャイル開発が向いている
ウォーターフォール開発を利用することで、開発を順序立てて丁寧に進められます。
しかし柔軟性には欠けるため、開発途中の仕様変更や市場のニーズに応えていきたい場合はアジャイル開発も検討しましょう。
アジャイル開発を成功させたいなら、Lychee Redmineの利用がおすすめです。
Lychee Redmineは、アジャイル開発に活用できるガントチャートやカンバンなどの機能が一通り揃っています。
30日は無料で全プラン使用できるので、まずはスタンダードプランから試してみてはいかがでしょうか。