システム開発ライフサイクル(SDLC)とは何か?概要とモデルを解説

2020年1月25日

システム開発ライフサイクルとは

システム開発ライフサイクル(Systems Development Life Cycle、以下SDLCと略記)は、高品質のソフトウェアを設計し、開発し、テストをするために使用するアイデアのことで、システム開発が完了するまでに、どのようなフェーズを経るのかをまとめたものです。
SDLCはSoftware Development Life Cycle(ソフトウェア開発ライフサイクル)の略としても使われますが、指す意味や内容は同じであると捉えて大過ないでしょう。

システム開発ライフサイクルの各フェーズ

SDLCの10のフェーズ

SDLCの10のフェーズのイメージ画像(Wikipediaより)

SDLCでは、ソフトウェア開発のライフサイクルを分けていくと、以下にまとめた10のフェーズがあるとしています。

  • 予備分析:Preliminary analysis
  • システム分析、要件定義:Systems analysis, requirements definition
  • システム設計:Systems design
  • 開発:Development
  • 統合とテスト:Integration and testing
  • 受け入れ、インストール、展開:Acceptance, installation, deployment
  • メンテナンス:Maintenance
  • 評価:Evaluation
  • 廃棄:Disposal

何かのソフトウェアの開発や、外部で開発されたものを取得したいと考えた場合、まずは市場にどのようなソフトウェアがあるのかを調査するなどの予備分析を行い、どのようなシステムを作るのかというシステム分析、要件定義を行い、次いでシステム設計でより細部を設計していきます。
設計が終われば開発を進めていき、各モジュールの統合を行い、ソフトウェアのテストをしていきます。
テストが終わり、ソフトウェアが使える状態になったと判断されたら受け入れを行い、必要に応じてインストールやソフトウェアの展開をしていきます。
受け入れが終わると、実際の運用が始まるとともにメンテナンスのフェーズが始まります。また前後してこのソフトウェアやソフトウェアを開発したプロジェクトの評価を行います。
ソフトウェアの開発から月日が流れ、ソフトウェアが業務に合わなくなったり、セキュリティ的な問題がでてきはじめたりしたら、ソフトウェアを廃棄することを検討していきます。
このように最初の予備分析から廃棄までの一連の流れをシステム開発ライフサイクルと呼んでいます

SDLCのフェーズ(簡易版)

システム開発ライフサイクルの簡易版

今日ではSDLCの中の10のフェーズの似ているフェーズを統合させたりし、6~7のフェーズで開発のライフサイクルを考えることもあります。
以下、上の図で紹介した6つのフェーズについて、簡単に解説していきます。

要件の収集と分析

要件の収集と分析では、顧客や営業担当者、業界の専門家、プログラマーを含むすべての利害関係者(ステークホルダー)から意見を得ながら、「どんなITシステムが必要なのか?」、「組織はどのようなITシステムが欲しいのか?」を考えていきます。
こうした要求事項をまとめ、要件を定義し、最終的には要件仕様書にまとめていきます。

設計

設計では求めているITシステムをどのように開発していくかを考えていきます。
要件仕様書をもとに、基本設計書や外部設計書、内部設計書などの各種文書を作成しながら、ITシステムの設計を行っていきます。

実装

実装では実際にITシステムを開発していきます。

テスト

実装の段階で開発したITシステムをテストしていきます。
あらかじめ定めていた要件や品質基準を満たしているかをここで確認していきます。

展開

展開では、テストまで完了し、いつでも使用できる状態のITシステムを受け入れていきます。

メンテナンス

メンテナンスでは、実際に使用しているITシステムが誤作動を起こさないように監視したり、陳腐化して問題を起こさないようにアップデートを行ったりしていきます。

システム開発ライフサイクルのモデル(開発アプローチ)

これまではシステム開発がどのようなフェーズを経て進んでいくかを見てきましたが、これからは「開発のライフサイクルをどのようにして進めていくか」ということを考えていきます。
ライフサイクルの進め方をシステム開発ライフサイクルの「モデル」と呼びます。PMBOKの中では「開発アプローチ」とも呼ばれ、以下5つのモデルが紹介されています。

  • 予想型
  • 反復型
  • 漸進型
  • 適応型
  • ハイブリッド型

これら5つのモデルを使ってプロジェクトを進めていきますが、この中で馴染み深いのは予想型と適応型です。
今日よく聞くウォーターフォール型のプロジェクト進行は「予想型」、アジャイル型のプロジェクト進行は「適応型」にカテゴライズされます。
以下、これらPMBOKで紹介されている5つのモデルについて見ていきましょう。

予想型ライフサイクル

予想型ライフサイクルでは、 プロジェクトの初期段階でプロジェクトのスコープやスケジュール、コストが決定されます[1]PMBOK第6版、19頁。
この予想型ライフサイクルでは1つのフェーズの完了に呼応して、次のフェーズが開始します。この性質からウォーターフォール型とも呼ばれます。
プロジェクトの初期に作成された文書や決定事項が重要視され、その変更は慎重にマネジメントされます。
シンプルで進行しやすい一方で、不測の事態に対応し辛いという欠点を持ちます。

反復型ライフサイクル

反復型ライフサイクルは、プロジェクト・スコープはプロジェクトの初期に決定されるものの、そのコストやスケジュールは日常的に変更されます。この理由は、プロジェクトの進捗とともにプロジェクト・チームのプロジェクトへの理解が深まるため、日常的に変更したほうがコストやスケジュールの精度が高まるためです。

漸進型ライフサイクル

スパイラル型のイメージ(Wikipediaより)

漸進型ライフサイクルも反復型ライフサイクルと同じで日常的にプロジェクトに変更を加えていきますが、反復型はコストとスケジュールを変更していたのに対し、漸進型はプロジェクト・スコープにもある程度手を加えていきます。
スパイラル型の開発モデルは上記の反復型や漸進型に属していると言えるかもしれません。

適応型ライフサイクル

適応型ライフサイクルは、今日ではアジャイル型と呼んだほうが理解しやすいでしょう。
アジャイル型ライフサイクルでは、開発しようとするソフトウェアを使用可能なパーツに分割し、それらを迅速に開発していきます。開発された成果物に対してフィードバックを行い、さらに開発を進めていきます。この開発とフィードバックを繰り返すことにより、ソフトウェアの開発を進めていきます。

ハイブリット型ライフサイクル

ハイブリット型ライフサイクルでは予想型ライフサイクルと適応型ライフサイクルの組み合わせでプロジェクトを進めていきます [2]PMBOK第6版、19頁。。つまり、プロジェクトの内容が十分に把握できている部分については予想型ライフサイクルで進めていき、 まだまだ未確定・不明瞭な点が多い部分については適応型のライフサイクルに従ってプロジェクトを進めていきます。

システム開発ライフサイクルのモデルは日々進化している

今回はシステム開発ライフサイクルについて見ていきました。
システム開発ライフサイクルが「システムはどのように生まれ、どう死んでいくのか」という一連のフェーズをまとめたものですが、その中でシステム開発ライフサイクルのモデルは「どのように人生を過ごしていくのか?」というものをまとめたものです。
PMBOKには予想型、反復型、漸進型、適応型、ハイブリット型の5つの開発ライフサイクルのモデルが紹介されていますが、システム開発ライフサイクルのモデルは日々進化し、様々なモデルが紹介されています。
ITシステムのプロジェクト・マネジャーになった場合は、最新のシステム開発ライフサイクルのモデルをキャッチアップしておくとよいでしょう。

参考リンク

1,2PMBOK第6版、19頁。