システム開発の工程を一挙にご紹介 成功のポイントは上流工程にあり!

システム開発の基礎知識

システム開発の基礎知識

システム開発にはいくつかの開発手法があり、その中の代表的な手法として、ウォーターフォール開発があります。
ウォーターフォール(Waterfall)とは、英語で「滝」を意味し、その言葉通り、上流工程から下流工程へと順に開発を進めていく手法となります。
ウォーターフォール開発の原形は1968年に提唱されており、古くから活用されている開発手法です。

さまざまな開発手法がある中で、システム開発を検討する際にウォーターフォール開発で進めるべきか、他の手法のほうが良いのか悩むケースもあるでしょう。
本記事では、ウォーターフォール開発の工程・成果物のメリット・デメリットなど詳しく解説します。
また、開発の中で重要なポイントである上流工程についても紹介します。

▼関連記事
アジャイルとウォーターフォールを比較!開発手法の選び方

1.システム開発の代表格 ウォーターフォールの工程と成果物一覧

ウォーターフォール開発の工程は一般的に「要件定義」「基本設計」「詳細設計」「開発(プログラミング)」「単体テスト」「結合テスト」「総合テスト」で構成されています。
要件定義から詳細設計までを上流工程、製造から総合テストまでを下流工程と呼びます。

1. 要件定義

要件定義工程では、システム開発において、システム化の目的・範囲、必要な機能や要求条件を明確にします。
要件は大きく分けて「業務要件」「機能要件」「非機能要件」の三種類に分類されます。

業務要件 システムを導入して達成したい目的や、業務課題を明確にします。
現状の業務を整理し、改善すべき点、システム導入後の業務フローを検討します。
機能要件 システムに搭載すべき必要な機能を定義します。
ユーザーが求める機能、データ入出力の流れを検討します。
非機能要件 機能面以外の、システム性能、可用性、拡張性、運用性、セキュリティなどの要件を定義します。

▼関連記事
システム開発における要件定義の進め方とは?事例から学んでみよう

2. 基本設計

基本設計工程では、要件定義工程で決定した要件に基づき、機能単位に分割し、全体の構成や、インターフェース、画面遷移などを決定します。
ユーザーから見える部分(外から見える部分)を設計するため、外部設計といわれることもあります。

3. 詳細設計

詳細設計工程では、基本設計で決定されたシステムの全体像や仕様に基づき、機能ごとに画面の動作やデータ構造など、プログラムレベルで設計していきます。
システムエンジニアが設計書を見てどのように作るのかがわかるように、細部まで具体化します。

また、設計書のほかに、後続の単体テスト工程で使用するテスト仕様書を作成します。
開発者向け(内部向け)に設計書を作成するため、内部設計といわれています。

4. 開発(プログラミング)

開発工程では詳細設計で作成した設計書をもとに、システムエンジニアがプログラミングを行います。
プログラミング工程が完了したら、作成したプログラムが前工程で定めた通りに動作するかを確認するために、テスト工程へ移ります。

5. 単体テスト

単体テスト工程では、最小に分割した機能単位で、個々の部分が仕様通りに動作するか確認を行います。
機能単位でテストを行うことで、システム全体の動作へ影響を及ぼす前に不具合を発見し、解消することを目的としています。
不具合が見つかった場合は、修正し再度テストを行い不具合が解消されるまで実施します。

6. 結合テスト

結合テストでは、単体テストが完了した機能を組み合わせて検証を行います。
画面遷移やデータの受け渡し、処理順序の正しさなど、単体テストでは検出できない問題を発見・解消することを目的としています。
結合テストの成果に基づき最終的な総合テストへ移るため、結合テストでの成果がシステムの品質にもつながります。

7. 総合テスト

総合テストは「単体テスト」「結合テスト」を経て、開発したシステムが設計や要件通りに稼働するか、実際の運用環境や利用シーンを想定して検証を行います。
納品前の最終的なテストとなり、リリース後の問題発生リスクやトラブル発生を防ぐためにも重要な工程です。
総合テストはシステムテストとも呼ばれています。
総合テストでの検証結果をもとに、納品判定やリリース判定を行います。

なお、要件定義から総合テストまでの工程ではさまざまな成果物を作成します。
一般的な例としては以下が各工程での成果物となります。

工程別の成果物例

工程 成果物 内容
要件定義 要件定義書 システム概要
システム全体図
業務フロー図
機能要件
非機能要件
工程表
基本設計 基本設計書 システム設計
画面・帳票設計
バッチ・データベース設計
インターフェース設計
詳細設計 詳細設計書 画面遷移図
クラス図
シーケンス図
データベース・バッチ処理定義
異常処理設計
単体テスト仕様書
開発/プログラミング ソースコード 実行プログラム、およびテーブル・ビュー作成スクリプト
単体テスト 単体テスト結果報告書
結合テスト 結合テスト結果報告書
総合テスト 総合テスト結果報告書

ここまで、ウォーターフォール開発について工程と成果物についてご紹介しました。
次にウォーターフォール開発のメリット・デメリットについて整理していきます。

2.ウォーターフォール開発のメリット・デメリット

さまざまな開発手法がある中で、ウォーターフォール開発を選ぶケースはどのような時でしょうか。
ウォーターフォール開発のメリット・デメリットから整理していきます。

メリット

・プロジェクトの全体計画が立てやすい
ウォーターフォール開発は、要件定義から実施して順を追って工程を進めるため、要件定義が完了した段階で、後続工程の全体スケジュールを把握することが容易です。
また、工程ごとに行うべきタスクが定められておりリソース管理や進捗管理が行いやすいメリットもあります。

・品質管理がしやすい
各工程で成果物のチェックを行うため、不具合や仕様の漏れを早期に発見でき、一定水準の品質を確保することができます。

・成果物、ゴールが明確
ウォーターフォール開発では計画時点でプロジェクトやシステム全体の目標や成果物が決められています。
このため方向性がぶれる可能性が減り、計画していた成果物を達成することができます。

デメリット

・手戻りが発生すると工数が増加する
仕様変更や追加が発生した場合、現在の工程だけで部分的にやり直すことができず、各工程を見直して、やり直す必要があります。

・開発途中で要件を追加することが難しい。
上流工程で一度決定した要件や設計を後で変更することが難しいため、要件変更が発生しやすいシステムには不向きです。

・実際に動く成果物ができるまでに時間がかかる。
ウォーターフォール開発では設計→開発→テストと工程がきまっているため、それぞれの工程を完了してからでないと次の工程に進めません。
そのため、実際に動く成果物を確認するまでに時間が必要となります。

ウォーターフォール開発は、プロジェクトの計画や管理面でメリットがある一方で、柔軟性や手戻りのリスクがあります。
次章では、ウォーターフォール開発のリスクを軽減するために重要なポイントを解説します。

3.システム開発における上流工程の重要性

ウォーターフォール開発は、要件が初期段階で確定しやすく、変更の可能性が少ないプロジェクトに適しています。
基幹システムなどの業務系システムなど、確実性や安定性が求められ、品質管理が重視されるプロジェクトで有効です。

ウォーターフォール開発では要件定義・基本設計の上流工程が重要なポイントになります。
これは上流工程が、開発するシステムの要件・スケジュール・予算などのプロジェクト成功に大きな影響を与えるためです。

上流工程の品質がプロジェクト全体の進行やシステムのクオリティを左右するため、重要な役割を担っています。
上流工程を疎かにした場合、下流工程では次のようなリスクが発生します

  • 仕様変更や手戻りにより、予算やスケジュールが大幅に超過する。
  • テスト工程で不具合が多発し、修正に膨大な工数が必要になる。
  • 完成したシステムがユーザーの要件に合わず、プロジェクト失敗や再構築となる可能性がある。

上流工程でシステム開発側とより密にコミュニケーションがとれているかが非常に重要となり、要件の把握と仕様の具体化、完成後のイメージの認識共有が成功へのカギとなります。

リスクの見極めと管理、リソースとスケジュールの計画など、上流工程をしっかり行うことで、プロジェクト全体がスムーズに進行します。
上流工程を適切に進めることで、後続工程の作業を効率化し、システム全体の品質向上につなげることができ、最終的に満足度の高いシステムを構築することにつながります。

4.まとめ

ウォーターフォール開発は各工程の流れやタスクが明確になっていることから、要件が定まっていて、かつゴールがはっきりしているプロジェクトが向いているといわれています。

つまり、始めに要件をしっかりと決定する必要があるため、入念な要件定義が必要となります。
今一度、上流工程の重要性を理解した上で、システム開発側とのコミュニケーションを意識してみてはいかがでしょうか。

システムエグゼでは、基幹システムなどの業務系システムのスクラッチ開発を得意としており、大規模開発に向いているウォーターフォール開発の実績が豊富にあります。

当社ではウォーターフォール開発のデメリットを軽減するためにも、要件定義・基本設計でモックアップやプロトタイプを作成するなどし、手戻りが発生しない進め方を行っております。

業務システムの検討の際には、ぜひシステムエグゼにご相談ください。