ウォーターフォール型の開発とは、システム開発のための開発方法のひとつで、非常に基本的な開発概念となります。滝のように上から下に向けて水が流れるように開発していく様子から、ウォーターフォール型という名称がつけられました。一般的には、次の手順で開発を進めていきます。
・ステップ1:開発したいシステムを決定する ・ステップ2:開発に必要な機能を決定する ・ステップ3:実際にシステムを開発する ・ステップ4:開発したシステムをテストする
最初の段階で、具体的な画面やすべての機能を決定して開発に着手するため、開発の全体像について見渡しやすいというのが大きな特徴です。
・開発するシステムが明確なので何を設計すれば良いかイメージがしやすい ・開発方法が明確なので進捗管理がしやすい ・具体的な機能や画面イメージ、データの処理方法を決めるため、品質の管理がしやすい ・開発物システムが明確に決まっているため、無駄な作業をすることがない ・要求定義から運用までの流れが明確なので予定の管理がしやすい ・設計物が明確なので具体的な見積書を作成しやすい ・システム開発の基礎ともいえる開発手法なので、多様な開発方法に対応できる
・途中で手戻りが発生すると大幅に完成予定がずれやすい ・開発が進めば、細かな変更ができない
特別、大きな問題点はありませんが、手戻りのリスクがゼロではない以上、しっかりとした進行管理が必要となります。
ウォーターフォール型の開発は、次の手順で進めていきます。
・ステップ1:要件定義 ・ステップ2:外部設計 ・ステップ3:内部設計 ・ステップ4:コーディング ・ステップ5:テスト ・ステップ6:運用
それぞれの開発ステップについて詳しくご説明します。
まずは、要件定義を行っていきます。要件定義では、「このようなものをシステムで公開したい」という要望を言語化していきます。たとえば、次のことを話し合います。
・どのような人が利用するシステムなのか ・どのような工程で利用するシステムなのか ・どういった情報を扱うことになるのか ・どのような機能が必要となってくるのか
上記のことをシステム開発者と依頼者でしっかりと話し合っていきます。
外部設計とは、システムの利用者が目に触れる部分を設計することです。要件定義と外部設計は、基本設計と呼ばれており、外部設計ではシステム構築のイメージを具体化していきます。たとえば、画面の操作イメージや具体的な画面のイメージの明確化を行います。
この時、画面設計書や画面遷移図なども作成されるため、システムの全体像が把握しやすくなります。
内部設計では、実際の構築に必要なシステムの詳細を決定します。たとえば、プログラムの処理の工程やプログラムで扱うデータの工程を決めます。そのため、内部設計を見れば具体的なシステムを開発できるといった情報を決定する設計だとイメージすると良いでしょう。
必須項目の記載やエラー表示の仕方、データベースの管理方法などが詳細に決められていくため、システム開発者の開発の説明書といえるものになります。
基本的な画面構成や画面におけるシステム処理の詳細が決まったため、コーディングを行っていきます。コーディングとは、システム開発者が設計書を見ながらプログラムを構築していくことをいいます。
会社によっては、設計書の作成はエンジニアが行い、コーディングについてはプログラマーが行っていることがあるため、頭の片隅に入れておきましょう。
開発したプログラムが正常に作動するかテストを実施します。テストは、次の方法で行われます。
・単体テスト ・結合テスト ・システムテスト
単体テストとは、内部設計で想定される動きが正常に作動するかを調べていくことをいいます。たとえば、必須項目を記載せずに登録した場合、正しくエラー表示が行われるかをひとつずつ調べていきます。そして、結合テストでは、複数画面との連結を確認していきます。たとえば、「新規会員登録」→「登録確認画面」→「登録完了画面」→「トップ画面」→「登録データ変更画面でデータ変更」といったように、一連の画面遷移に問題がないかチェックしていきます。
そのため、複数の画面でデータが正常に更新されるのか、新規登録できるのか、削除されているか、操作性に問題がないかをチェックしていくテストといえます。そして、システムテストを実施します。
システムテストとは、要件定義で決定した水準でシステムが問題なく稼働するかを調べることをいいます。実際に、操作シナリオを考案し、その通りに作動するかをチェックします。そのため、実際の利用をイメージしながらテストを行います。
運用とは、システムを正常に安定的に稼働させるための仕事をいいます。運用を開始すると、エラーの解決や使い方について多数のお問い合わせがあります。それに対応することが運用の仕事となります。
アジャイル開発と組み合わせるハイブリッド開発 ハイブリッド開発とは、設計仕様や変更を前提として反復的に仕事を繰り返すアジャイル開発と開発手順をひとつずつ確認しながら工程を進めていくウォーターフォール型開発を組み合わせた開発方法をいいます。
ハイブリッド開発なら早い段階でシステム開発を行いながら、利用するユーザーの意見を反映できるため、価値あるシステムを開発しやすくなります。