IT人材のためのキャリアライフスタイルマガジン

ウォーターフォール型開発とは?メリットとデメリット・開発事例

初回公開日:2017年02月09日

更新日:2020年03月12日

記載されている内容は2017年02月09日時点のものです。現在の情報と異なる可能性がありますので、ご了承ください。

また、記事に記載されている情報は自己責任でご活用いただき、本記事の内容に関する事項については、専門家等に相談するようにしてください。

勉強会・イベント

ウォーターフォール型開発とは?システムを開発するスタイル、すなわちソフトウェア開発モデルの代表例。ここでは様々な開発モデルの中でも代表的な開発モデルといえるウォーターフォール型開発の手法とメリット・デメリット、そしてその開発例をご紹介します。

ウォーターフォール型開発とは?

工程を分け、後戻りしない、メジャーな開発モデル

ウォーターフォール型は、システム開発を「要件定義」「外部設計」「内部設計」「プログラム設計」「プログラミング」「テスト」と各工程に分けて管理し、工程順に開発する手法です。 「要求定義」…求められるシステムの要件を定義します。 「外部設計」…具体的にどんなシステムで実装するか設計します。 「内部設計」…システムの使い勝手を設計します。 「プログラム設計」…内部設計をもとにプログラムを設計します。 「プログラミング」…プログラム設計をもとにプログラミングします。 「テスト」…作られたプログラムを段階的に統合してテストをしていきます。 まさにその名の通り、滝(ウォーターフォール)が上流から下流へと向かって流れていくように開発を進める手法です。水が逆流しないのと同じように、前の工程へ戻ることなく進めることを前提に定義されています。 ウォーターフォール型の開発例はたくさんあり、現在、メジャーな開発手法であるといえるでしょう。 各工程の詳しい内容を見てみましょう。

要件定義

「要件定義」では、求められるシステムの要件を定義します。 1、全体の方針を決める 何のためにシステム開発をするのか明確にし、目標を定めます。 2、業務要件を決める 新しい業務の仕組みや方法をまとめて実現すべき条件を挙げ、システム化する範囲を決めていきます。 3、機能要件を決める そのシステムやソフトウェアで何をしたいのかをまとめる。 取り扱うデータの種類や量、画面表示や操作方法、処理する内容、出力形式などが該当します。 4、非機能要件を決める 機能面以外のシステム要件をまとめていく。 性能や信頼性、拡張性、運用性、安全性などに関する要件が該当します。 これら4つをまとめた資料は「要件定義書」と呼ばれ、顧客とシステム開発会社の双方が合意した内容をまとめた文書となります。

外部設計

「外部設計」では、ウォーターフォール型で具体的にどんなシステムで実装するか設計します。 1、画面設計をする 画面での入力や出力項目や方法、ボタンの大きさや色、配置場所などを決めて画面レイアウトを行います。また、画面の切り替え方法や表示方法についても設計していきます。 2、帳票設計をする 請求書や領収書など、用途にあった帳票のレイアウトを決めていきます。 3、外部インターフェイス設計をする 外部システムと連絡するインターフェイスを設計します。 4、データ項目を決める どんなデータを取り扱うのか決めます。 5、データ形式を決める 扱うデータが固定長か可変長か判断します。 6.連絡のタイミングを決める データのやり取りはいつ、どのくらいの頻度で行うのか決めます。 7、連絡方式の決定 CDなどの外部記憶媒体を用いるのか、ネットワークで伝送するのか決めます。 8、データベース設計をする 抽象化してデータモデルを作成し、データベースによってデータを管理できるようにします。

内部設計

「内部設計」では、システムの使い勝手を設計します。 1、物理データ設計をする システム内部で利用するファイルやデータベースの項目をレイアウトします。

プログラム設計

「プログラム設計」では、内部設計をもとにプログラムを設計します。 1、クラス設計をする プログラム全体で主となるクラスを設計します。 2、コード設計をする システムで用いるコードを設計します。 3、規約を定める 開発規約やコーディング規約などを決定します。 4、テスト仕様書を作る プログラミング後の単体テストの方法をまとめた単体テスト仕様書を作成します。

プログラミング

「プログラミング」工程では、プログラム設計をもとにプログラミングします。 プログラム設計をもとにコーディング規約に基づいて実装します。

テスト

「テスト」…作られたプログラムを段階的に統合してテストをしていきます。 1、単体テスト 単体テスト仕様書に基づいてテストを行います。 欠陥があった場合は内容をプログラマに伝えて修正し、再テストします。 2、結合テスト 各プログラムを統合して、プログラム間の連携がきちんと行われているか確認します。 この段階でのバグは、連携方法や制御方法に問題があるといえます。 3、システムテスト ユーザーの環境と同等の環境でテストします。 処理速度や他システムとの連携などを確認します。 4、運用テスト ユーザーに使用してもらい、要件を満たしているか確認してもらいます。

テスト
※画像はイメージです
出典: https://static.pexels.com

それでは、ウォーターフォール型開発のメリット・デメリットについて詳しくご紹介しましょう。

ウォーターフォール型開発のメリット

計画を立てやすい

関連タグ

アクセスランキング