システム開発の工程を徹底解説!ウォーターフォールとアジャイルの違いとは?

  • このエントリーをはてなブックマークに追加
システム開発の工程を徹底解説!ウォーターフォールとアジャイルの違いとは?

システム開発は複数の企業がプロジェクトに参画し、分業しながら進めていくことが多いです。開発工程は多岐にわたり、一人ですべてを行うことはほとんどありません。 本記事では、SESの営業の方へ向けて、システム開発の工程や全体像について詳しく解説していきます。

■□■□プロジェクト×エンジニアのマッチングを最適化するSES営業の次世代ソリューションサービス『FTS Future Connect(Fコネ)』詳しくはこちらから■□■□

システム開発の工程はどんなものがある?

要件定義

システム開発の最上流工程であり、プロジェクトの全体をどのように進めていくかを決める工程です。
この要件定義によってプロジェクトの成功を大きく左右することがあります。

  • どのようなシステムを開発するか
  • 開発手法、導入・運用方法
  • 予算や開発期間の決定
  • ユーザーのニーズや業務要件の明確化
  • 関係者との合意形成

基本設計

システム全体の構造や機能の関連性を定義し、専門的すぎないクライアントが確認できるレベル感で資料にまとめていきます。

  • システムの全体像を図や文書で整理
  • UI/UXの設計
  • 外部システムとの連携仕様
  • データベースの論理設計

詳細設計

各機能の具体的な実装方法を決め、「機能仕様書」「データフロー図」「データベース物理設計書」などの専門的な資料を作成します。

  • プログラムのロジックを細かく設計
  • 使用する開発技術やフレームワークの決定
  • API仕様やデータベーススキーマの詳細化

プログラミング(実装)

開発会社のエンジニアやプログラマーが詳細設計書に基づき、プログラムコードを作成し、実際にシステムを作成していきます。

  • ルールに基づいたコーディング
  • プログラムのバージョン管理(Gitなど)
  • コードレビューによるコードの品質管理

テスト

システムが正しく動作することを確認するため、以下のテストを実施します。

  • 単体テスト:モジュール単位でテストし、修正・フィードバックを実施
  • 結合テスト:複数のモジュールを組み合わせ、不具合の有無をチェック
  • システムテスト:要件通りに動作するか、セキュリティ・耐久性などを検証
  • 運用テスト:ユーザー環境で実際の運用を想定し、不具合や誤操作を防ぐ
  • ユーザーテスト(UAT):実際のユーザーがテストし、フィードバックを反映

リリース(システム移行)

開発が完了したシステムを実際の運用環境に導入します。

  • 一斉移行:旧システムから新システムへ一括で切り替え
  • 段階移行:部分的に新システムへ移行しながら適用範囲を拡大
  • 並行運用:新旧システムを同時に稼働させ、移行後の問題を最小限に抑える

運用・保守

開発したシステムの安定運用や、バグ修正、セキュリティ対策、機能追加を継続して行います。

  • 定期的なシステム監視
  • セキュリティパッチの適用
  • バグ対応やトラブルシューティング
  • 新機能の追加やパフォーマンス改善

プロジェクトの開発工程が分かれている理由

品質向上

工程ごとにテストを実施することで、バグの早期発見・修正が可能になります。これにより、最終的なシステムの安定性と信頼性を高めることができます。

タスク管理の効率化

長期プロジェクトでは、進捗を明確にするために工程ごとにゴールを設定します。各フェーズごとに成果物を作成し、次の工程へスムーズに引き継ぐことで、計画的に開発を進められます。

人員配置の最適化

各工程ごとに求められるスキルセットが大きく異なります。例えば、要件定義や基本設計には業務知識が豊富なシステムアーキテクトが必要ですが、プログラミングフェーズでは開発経験豊富なエンジニアが求められます。適切な人員配置を行うことで、効率的な開発が可能になります。

リスク管理

システム開発には多くの不確実性が伴います。工程を分けることで、問題が発生した際に特定のフェーズで対処し、全体への影響を最小限に抑えることができます。また、段階的なレビューを実施することで、開発の方向性を随時確認しながら進めることが可能になります。

開発モデルについて

開発モデルとは、システム開発を進めていく上での手順や進め方を示すものです。代表的なシステム開発モデルとしては、下記のようなものがあります。

ウォーターフォールモデル

「ウォーターフォール」は、日本語で「滝」という意味です。全工程を順序立てて進行する方法で、上流から下流に向かって進んでいく、一方通行の開発プロセスです。

  • メリット
    各フェーズが明確に区切られ、一つのフェーズが完了してから次のフェーズに着手するため、進捗の把握が管理しやすく、品質を担保しやすい。
  • デメリット
    ミスや不具合があった場合、それをリカバリーするのに時間やコストがかかる。スピード感を求められる場合には向かない。
  • 適用場面
    長期プロジェクトや大規模プロジェクト、比較的仕様が明確な案件。

アジャイルモデル

「アジャイル」は日本語で「俊敏な」という意味です。柔軟かつ迅速な対応が求められるプロジェクトに適しており、小さな機能単位での開発とリリースを繰り返すことで、ユーザーのフィードバックを反映しながらシステムを進化させていきます。

  • メリット
    変更要求や新しいアイデアにも対応しやすく、開発プロセスが流動的。
  • デメリット
    工程の進捗や状況を把握するのが難しいため、管理しづらい。対応できる開発会社が少なく、開発実績が少ないため、クライアントへの提案が難しいことがある。
  • 適用場面
    スタートアップや新規開発、変化が多いプロジェクト。

スパイラルモデル

リスク管理を重視した反復型の開発モデルです。システムを複数のサブシステム(機能)に分割し、設計・開発・テストをスパイラル状に繰り返し実行していきます。

  • メリット
    サブシステムごとに計画を立てるため、途中で計画変更があっても柔軟に対応しやすい。
  • デメリット
    不具合や修正が多いと何度も開発の工程を踏まなければならず、プロジェクトの進捗を把握しづらい。サブシステムが多いほど開発コストや開発期間が増える。
  • 適用場面
    複雑な大規模システム開発、長期プロジェクト

システム開発の現場でよく使われる用語・略語

システム開発の現場では、さまざまな専門用語や略語が飛び交っています。
SESの営業を行っていてもクライアントやエンジニアとのやり取りや資料の中に、これらの用語が登場する場面があります。
これらの用語を理解していることで、次の提案や課題発見が必要な場でもスムーズにコミュニケーションを取ることができます。ここではシステム開発工程の現場でよく使われる略語について紹介します。

SP(System Planning):企画

SA(System Architectural design、Service Analysis、System Analyze):要求分析

RD(Requirements Definition):要件定義

BD(Basic Design):基本設計

SS(System Structure Design):構造設計

FD(Function Design):機能設計

DD(Detail Design):詳細設計

PS(Program Structure Design):詳細設計

UT(Unit Test):単体テスト

CD(Cording):コーディング

PG(Programing):プログラミング

IT(Integration Test):結合テスト

ST(System Test):システムテスト

OT(Operation Test):運用テスト

まとめ

システム開発は多くの企業や専門家が協力しながら進める大規模なプロジェクトです。 開発工程を適切に分割し、それぞれのフェーズで品質を確保することが成功のカギとなります。

また、プロジェクトの特性に応じて、ウォーターフォール、アジャイル、スパイラルなどの開発モデルを選択することが重要です。

SES営業の方は、システム開発の全体像や各工程の役割を理解し、クライアントとの円滑なコミュニケーションや適切な提案ができるようにしましょう。

■□■□プロジェクト×エンジニアのマッチングを最適化するSES営業の次世代ソリューションサービス『FTS Future Connect(Fコネ)』詳しくはこちらから■□■□

  • このエントリーをはてなブックマークに追加