目次
ウォーターフォール開発とは?
「ウォーターフォール開発とは」システム開発プロセスのうちの一つで、
プロジェクトをいくつかの工程を段階に分けて
一つずつ順番に進めてシステムを完成させていくプロセスです。
では、ウォータフォール開発には
どんな工程があり、どういう開発なのか
[家を建てる]を例に解説していきます。
工程
ウォーターフォール開発は、
システム開発において最もメジャーな開発プロセスであり
また、工程ごとに開発を進めていくため
原則として前の工程には戻らないという特徴があります。
工程は以下のように分かれています。
- 要件定義
- 外部設計
- 内部設計
- 開発
- テスト
- 運用
上記であげた6工程を名前の通り、
上から降りてくるように開発を進めていきす。
滝は上から下に落ち上に上がることはないため
工程を戻らないということです。
要件定義
要件定義とは、
システムに求められる機能や性能、
制約条件などを明確にするプロセスです。
具体的には、以下のようなことを行います。
- システムがどのような機能を持つべきかを明確にする
- システムが達成すべき性能や品質の基準を定める
- 利用者のニーズやビジネス要件を洗い出す
- 制約条件やリスクを特定し、対策を考える
これらの要件を明確にすることで、開発チームは何を作るべきか、どのように作るべきかを理解し、計画的にプロジェクトを進めることができます。
これを家を建てるプロセスで考えると
設計図を描くことです。
どのような家を建てたいのか、
どんな部屋が必要なのか、
また、どの場所にどの設備があるべきか、
すべての詳細を決めていきます。
外部設計
外部設計とは、使用者が直接触れる部分の設計を行うプロセスです。
具体的には、システムのユーザーインターフェース(UI)や、
他のシステムとのインターフェースを設計します。
具体的には、以下のようなことを行います。
- ユーザーがどのようにシステムを操作するかの設計
- 画面レイアウトやナビゲーションの設計
- システム間のデータ交換の設計
- ユーザーの利便性や使いやすさを考慮したデザイン
どんな外壁の色にするか、
窓やドアの配置はどうするか、
庭のデザインはどうするかなど、
家の見た目や使い勝手を考えます。
内部設計
内部設計とは、システムの内部構造や機能を詳細に設計するプロセスです。
具体的には、以下のようなことを行います。
- 各機能をどのように実装するかを詳細に設計する
- データベースの設計や、データの流れを決定する
- 各コンポーネント間のインターフェースを定義する
- システムのパフォーマンスやセキュリティに関する設計を行う
断熱材の選定、
耐震構造の設計など、
家の内部が安全で快適に機能するための設計を行います。
開発
要件定義や設計に基づいてシステムを実際に構築する段階です。
このフェーズでは、プログラミングや設定作業が行われ、
システムが実際に動く形に作り上げられます。
具体的には、以下のような作業が含まれます。
- コーディング(プログラミング)
- モジュールやコンポーネントの作成
- 各コンポーネントの統合
基礎工事から始まり、骨組みを建て、
配管や電気配線を設置し、壁や屋根を作り上げます。
テスト
開発が完了したシステムが要件通りに動作するかを確認する段階です。
このフェーズでは、バグの検出と修正、システムの性能評価、
ユーザーのニーズに応えているかの確認などが行われます。
具体的には、以下のようなテストを行います。
- 単体テスト:各コンポーネントやモジュールが個別に正しく動作するか確認する
- 結合テスト:複数のコンポーネントやモジュールを組み合わせて正しく動作するか確認する
- システムテスト:システム全体が要件通りに動作するか確認する
- 受け入れテスト:ユーザーがシステムを使用して問題がないか確認する
家が完成したら、次に行うのは品質確認です。
- 構造の確認:家の基礎や骨組みが設計通りにしっかりと作られているか確認します。
- 配管と電気配線のテスト:水道や電気が正常に機能するか、漏れやショートがないか確認します。
- 安全性の確認:耐震性や火災対策が適切に施されているか確認します。
- 最終チェック:内装や設備が問題なく動作し、住む人が快適に過ごせるか最終確認します。
運用
開発が完了したシステムを実際にユーザーが使用し、
日常的な業務に役立てる段階です。
- システムの監視とパフォーマンスの管理
- ユーザーからのフィードバック対応
- バグや問題の修正
- 定期的なメンテナンスとアップデート
住み始める段階です。
しかし、住み始めても
水漏れや電気のトラブルがないか、
定期的にメンテナンスを行い、必要に応じて修理を行う。
家具の配置を変える、庭を手入れするなど、
様々な要因があるとも言えます。
家に例えるとユーザー側がすることが多いですが、
システムだと保守という段階に入ることもあります。