ソフトウェア開発ライフサイクル(SDLC)

ソフトウェア開発ライフサイクル(SDLC)とは

ソフトウェア開発ライフサイクル(SDLC)とは、ソフトウェアを開発する段階に分けたものです。

ソフトウェア開発は情報システムビジネスで中心となります。ソフトウェア開発はモデル化されており、開発工程は6段階にわかることで整理することができます。メンテナンスが終わったら、また要件定義に戻ります。こうしてソフトウェアはより大きくなっていきます。

  1. 要件定義(planning) どんなソフトウェアにする?
  2. 設計(design) こうしたら実現できそうだ
  3. コーディング(implementation) よし作ろう
  4. テスト(testing) ちゃんとできたかな
  5. デプロイ(deployment) ユーザに使ってもらおう
  6. メンテナンス(maintenance) ちゃんと動いているかな

各フェーズを明確に定義することで、各フェーズでの確認する作成物を認識合わせすることができ、顧客の期待を満たすシステムを開発することに繋がります。

多くのシステム開発手法はこのSDLCのフェーズの定義を利用しています。スクラムプロジェクトでは、数週間のスプリント内でSDLCフェーズを通過します。ウォーターフォールプロジェクトは、フェーズを完了するのに数か月かかるような定義がなされます。

設計ではRFCに則っているのか、どれだけ標準的な構成であるのかなどを確認し、コーディングのフェーズでは開発者自身がセキュアなコーディングテクニックを熟知しているかが重要です。

各フェーズにおいてセキュリティを確保するために工夫があり、セキュリティが得られるように開発するすべを知っておく必要があります。

フレームワークによって組み分けが違う

SDLCは基本的にやることは同じですが、定義している団体やフレームワークによって若干呼び名が変わります。

NIST SDLC

  1. セキュリティ計画の準備
  2. 初期
  3. 設計/開発
  4. 実装
  5. インストール
  6. テスト
  7. 認定
  8. 稼働/保守
  9. 廃棄

DOJ SDLC

  1. 初期
  2. 要件定義
  3. 計画
  4. 必要事項の分析
  5. ユーザ設計
  6. システム設計
  7. 統合とテスト
  8. 実装
  9. 稼働と保守
  10. 廃棄

どのような定義を使うのかは状況によりますが、基本的に十する内容に差異はありません。