ソフトウェア開発ライフサイクル(SDLC )とは
ソフトウェア開発ライフサイクル(SDLC)は、ソフトウェア開発プロセスと呼ばれることもあり、高品質なソフトウェアの生産にかかる時間を短縮し、全体的なコストを削減するための標準的なプロジェクト管理フレームワークです。ソフトウェア開発におけるSDLCのアプローチは、通常、既存のシステムに潜伏する不具合を探すことから始まり、新しく改善されたシステムの要件を定義してからそのシステムのソフトウェアの設計と作成を行います。
SDLCアプローチを導入することで、企業の目標が明確になり、ソフトウェアプロジェクトをより効果的に管理することができます。チームメンバーが離脱してもプロジェクトの継続性は確保でき、実稼働前にソフトウェアを適切にテストして、プロジェクトを計画通りに予算内で完了できる見込みが高まります。SDLCは繰り返しが可能なプロセスでもあり、後半のフェーズが初期にフィードバックされるため、企業はアプリケーションを継続的に改良して改善することができます。
ソフトウェア開発ライフサイクル(SDLC)の7つのフェーズ
現在、多くのSDLCモデルが使用されており、それぞれに独自の利点と制約があります。SDLCアプローチの中には、柔軟で段階的な反復が特徴のアジャイル手法や、より直線的で逐次的なウォーターフォール手法のものなどがあります。
SDLCのフレームワークは、企業やソフトウェア開発の目的に応じて5から7つの異なるフェーズで構成するのが一般的です。ソフトウェアの設計、開発、テスト、導入に関するフェーズがSDLCの通常のコアフェーズです。
SDLCアプローチでよく見られる一般的な7つのフェーズは次の通りです。
- プランニング製品マネージャーとプロジェクトマネージャーがプロジェクトの範囲について話し合います。この段階で、プロジェクトのプラン、スケジュール、コスト見積もり、調達要件など、初期の書面による成果物を作成することがあります。
- 要件技術エキスパートが、ビジネスステークホルダーから要件を収集します。以前のシステムが残っていれば、不具合を検証して新しいバージョンで対処すべき修正点を洗い出します。ソフトウェアが新規のものであれば、要件定義だけを進めます。いずれの場合においても、最終製品の目的を詳細に定義することが目的となります。
- 設計とプロトタイプの作成ソフトウェア開発者が、収集した要件をソフトウェアの設計計画に書き換えます。ソフトウェアのアーキテクチャの概要を作成し、開発に必要な技術、チームリソース、作業期間、予算などを指定します。
- 開発開発者がソフトウェアを作成し、ステークホルダーと調整しながら必要な要件を満たしていることを確認します。このフェーズの終了時には、必要な機能を備えたソフトウェアが完成しており、テスト後に導入することができます。
- テストSDLCの中でも重要なこのフェーズでは、製品の品質を確保することが重視されます。コード品質、ユニットテスト、統合テスト、性能テスト、セキュリティテストなど、さまざまなテスト手法を用いてソフトウェアが期待通りに動作することを確認します。開発段階では発見できなかった不具合やバグを検証し、改修した上で最終製品の導入を行います。
- デプロイメントすべての問題が修正された後、ソフトウェアは本番環境での稼働を開始します。このプロセスは、大企業環境では自動化されていますが、中小企業や規制の厳しい業界の企業では、導入の前に最終サインオフステップを追加することがあります。
- 運用と保守ソフトウェアの導入後も、潜在的なバグ、不具合、セキュリティの脆弱性がないか継続的に監視します。このフェーズでは、現在本運用中のソフトウェアが継続的に改良、改善されているため、SDLCの初期のステップにソフトウェアをループバックさせることもあります。
アプリケーションセキュリティとソフトウェア開発ライフサイクル(SDLC)
市場での機会を最大化するため、企業の多くが新しいコードをできるだけ早く使用したいと考えますが、この考え方ではセキュリティ上の懸念を払拭できないことがあります。自社や顧客のデータを重大な危険にさらすような意図せぬ脆弱性を企業が発見することがあります。近年新聞の見出しに登場した深刻な情報漏洩のうち何件かは、関係企業がSDLCの早い段階でセキュリティ上の懸念に十分な優先順位を付けていなかったために発生しています。
近年、アプリケーションセキュリティの重要性への認識が高まり、より多くの企業がセキュリティに関する問題をSDLCの早い段階から考慮するようになりました。そうすることで、潜在的なリスクの軽減、バグやユーザーエクスペリエンスの問題の早期発見が可能となり、ソフトウェア開発プロセスの後半でこれらの問題の修正にかかった場合のコストを削減することができます。DevSecOpsは、ソフトウェアの設計と導入というDevOpsの一般的な概念をセキュリティを重視して進化させたものです。アプリケーションセキュリティのベストプラクティスをSDLCの早い段階で明確に取り入れることを目指しています。
ソフトウェア開発ライフサイクルを成功に導く3つのヒント
- 早い段階でセキュリティに取り組みます。サイバー犯罪者がウェブアプリケーションを標的にする事件が増えており、SDLCの早い段階でセキュリティ問題を優先して対処する必要があります。問題のソフトウェアがミッションクリティカルであればなおさらその必要があります。ウェブアプリケーションのセキュリティスキャナの利点を活用し、プロセスの早い段階で他のWebアプリケーション セキュリティ テストを実施することでビジネスリスクを軽減します。発生した問題が大きな問題になる前に解決できるためコストを削減することができます。
- DevSecOpsアプローチを検討してください。アプリケーションセキュリティとは、SDLCの終盤(上述したようにその多くがテスト段階)にとって付けたように単一チームに押し付けられるものではなく、セキュリティ、IT運用、開発チーム全体で共有すべき責任です。SDLCに取り残されたアプリケーションセキュリティを早期の時点に動かすことで、遅滞することなくソフトウェアを安全に導入することができます。
- コラボレーションを推進します。効果的な連携が重要です。関係者が異なる言語を使う場合や問題を見る視点が異なる場合は特に重要です。例えば、セキュリティチームは脆弱性をビジネスにとっての大きな脅威と見なしますが、開発チームは修正すべきバグととらえる傾向があります。さまざまなチームが連携して、問題について早い段階で話し合い、仲間意識を向上させる共通のツールやワークスペースを作り上げていくことは、SDLCを成功に導きます。
SDLCはソフトウェアを設計、作成するための効果的な手法ですが、すべてのステークホルダーがセキュリティ上の懸念を優先し、早い段階でセキュリティテストを重視した時にその効果が発揮されます。SDLCでセキュリティを重視したアプローチを意識的に導入し、チーム間の効果的な連携を強化することで、高品質なソフトウェアを少ないストレスと短時間で市場に投入することができます。