システム開発ライフサイクルにはどのような段階がありますか？
システム開発ライフサイクル

記事
トーク
読む
編集する
履歴を見る

道具
フリー百科事典『ウィキペディア（Wikipedia）』より
この記事は、システム開発ライフサイクルに関するものである。IBMのコンピュータ通信プロトコルについては、同期データリンク制御を参照のこと。

ソフトウェア開発ライフサイクルのモデル。
システム工学、情報システム工学、ソフトウェア工学において、システム開発ライフサイクル（SDLC）は、アプリケーション開発ライフサイクルとも呼ばれ、情報システムを計画、作成、テスト、展開するためのプロセスである。システムはハードウェアのみ、ソフトウェアのみ、またはその両方の組み合わせで構成されるため、SDLCの概念はさまざまなハードウェアとソフトウェアの構成に適用されます。このサイクルには通常6つの段階がある：要求分析、設計、開発とテスト、実装、文書化、評価。

概要
システム開発ライフサイクルは、システムエンジニアやシステム開発者が情報システムを提供するために使用する、明確な作業フェーズで構成される。組立ラインで製造されるものと同様に、SDLC は、予定された時間枠と見積もりコスト内でシステムを納品することによって、要件に基づいて、期待以上の高品質のシステムを製造することを目的としています。コンピュータシステムは複雑で、多くの場合、さまざまな起源を持つコンポーネントをリンクしています。ウォーターフォール、スパイラル、アジャイル、ラピッドプロトタイピング、インクリメンタル、シンクロナイズ＆スタビライズなど、さまざまなSDLCの方法論が生み出されてきた。

SDLC の方法論は、アジャイルから反復的、逐次的までの柔軟性の範囲に収まる。XPやスクラムのようなアジャイルな方法論は、迅速な変更を可能にする軽量なプロセスに焦点を当てている。ラショナル統一プロセスや動的システム開発手法のような反復的方法論は、プロジェクトの範囲を安定させ、製品を反復的に拡大または改善することに重点を置く。ウォーターフォールのような逐次モデルやビッグデザインアップフロント（BDUF）モデルは、より大規模なプロジェクトを導き、成功し予測可能な結果を得るためのリスクを制限するために、完全で正しい計画に焦点を当てる。

プロジェクトマネジメントでは、プロジェクトはプロジェクトライフサイクル（PLC）と SDLC の両方を含むことができ、その間に発生する活動は多少異なる。Taylor (2004) によると、「プロジェクトライフサイクルはプロジェクトのすべての活動を包含し、システム開発ライフサイクルは製品要求の実現に焦点を当てる」。

SDLC は方法論そのものではなく、方法論が取り組むべきフェーズの記述である。フェーズのリストは確定的なものではありませんが、典型的には、計画、分析、設計、構築、テスト、実装、メンテナンス/サポートが含まれます。たとえば、スクラムフレームワークでは、1つのユーザーストーリーが2週間のスプリント内でSDLCのすべてのフェーズを通過すると言うことができます。対照的に、ウォーターフォールの方法論では、すべてのビジネス要件[要出典]が機能/機能の記述に変換され、その後、通常数ヶ月またはそれ以上の期間にわたって実装されます[要出典]。

歴史
Elliott & Strachan & Radford (2004)によると、SDLC は「大規模なビジネスコングロマリットの時代において、大規模な機能的ビジネスシステムを開発するために1960年代に生まれた。情報システム活動は、重いデータ処理と数値計算ルーチンを中心に展開された。

構造化システム分析・設計手法（SSADM）は、1980年代に英国政府商務庁のために作成された。それ以来、Elliott (2004)によると、「システム開発に対する伝統的なライフサイクルアプローチは、伝統的なSDLCの本質的な欠陥のいくつかを克服しようとする代替的なアプローチやフレームワークとますます置き換えられてきた」。

モデル

システム開発ライフサイクルの10フェーズバージョン
SDLCは、システム設計者と開発者が従うべき一連のフェーズ/ステップ/アクティビティを提供する。各フェーズは、前のフェーズの結果の上に構築される。すべてのプロジェクトでフェーズを連続させる必要はありません。小規模で単純なプロジェクトでは、フェーズを組み合わせたり、重複させたりすることもあります。

ウォーターフォール
最も古く、最もよく知られているのがウォーターフォールモデルである。ウォーターフォールには様々な種類がある。そのひとつは次のようなものである：

予備分析
予備的分析を行い、代替案を検討し、コストと便益を見積もり、提言とともに予備的計画を提出する。

予備分析の実施組織の目的を特定し、プロジェクトの性質と範囲を定義する。プロジェクトが目的に合致していることを確認する。
代替案を検討する：従業員、顧客、サプライヤー、コンサルタントへのインタビューや競合分析から代替案を導き出す。
費用便益分析：プロジェクトのコストと便益を分析する。
システム分析、要件定義
プロジェクト目標[clarification needed]を定義された機能および操作に分解する。これには、事実の収集と解釈、問題の診断、変更の推奨が含まれる。エンドユーザーの情報ニーズを分析し、矛盾や不完全性を解決する：

事実を収集する：ドキュメントレビュー、クライアントインタビュー、観察、アンケートなどにより、エンドユーザーの要求を入手する。
既存のシステムを精査する：長所と短所を特定する。
提案システムの分析課題解決策を見つけ、適切なユーザー提案を盛り込んだ仕様書を作成します。
システム設計
このステップでは、画面レイアウト、ビジネスルール、プロセス図、擬似コード、その他の成果物を含め、希望する機能や操作を詳細に説明します。

開発
コードを書きます。

統合とテスト
テスト環境でモジュールを組み立てる。エラー、バグ、相互運用性をチェックする。

アクセプタンス、インストール、デプロイメント
システムを本番稼動させる。これには、ユーザーのトレーニング、ハードウェアの配備、以前のシステムからの情報のロードなどが含まれる。

保守
システムを監視し、継続的な適合性を評価する。必要に応じて、適度な変更と修正を行う。

評価
システムとプロセスをレビューする。関連する質問には、新しく実装されたシステムが要件を満たし、プロジェクトの目標を達成しているかどうか、システムが使用可能かどうか、信頼性／可用性があるかどうか、適切に拡張されているかどうか、耐障害性があるかどうかなどが含まれる。プロセスのチェックには、タイムラインや経費の見直し、ユーザーの受け入れなどが含まれる。

廃棄
耐用年数が終了した時点で、システムを廃止し、代替システムに移行するための計画を策定する。関連情報やインフラは、セキュリティを適切に保護しながら、再利用、アーカイブ、廃棄、または破棄されなければならない。

以下の図では、これらの段階を、IT作業成果物の定義から作成、変更までの10段階に分けている：

システム分析と設計
システム分析と設計（SAD）は、メタ開発活動と考えることができ、ステージを設定し、問題を束縛する役割を果たす。SADは、競合する高レベル要件のバランスをとるのに役立つ。SADは、分散エンタープライズ・アーキテクチャ、エンタープライズI.T.アーキテクチャ、ビジネス・アーキテクチャと相互作用し、パーティショニング、インターフェース、ペルソナと役割、配備/運用モデリングなどの概念に大きく依存して、高レベルのシステム記述に到達する。このハイレベルな記述は、その後、ビジネス目標を達成するために個別に分析、設計、構築され、統合されるコンポーネントとモジュールに分解されます。SDLC と SAD は、フルライフサイクルの製品およびシステム計画の基礎である。

オブジェクト指向分析と設計
オブジェクト指向分析・設計（OOAD）とは、問題領域を分析し、開発の指針となる概念モデルを開発するプロセスである。分析フェーズでは、プログラマーは利害関係者とのインタビューを通じて、文書化された要件と正式なビジョン文書を作成する。

OOADの結果として得られる概念モデルは、通常、ユースケース、クラス図、相互作用図で構成される。また、ユーザーインターフェースのモックアップも含まれることがある。

出力成果物は、オブジェクト指向設計の入力として機能するために完全に定義されている必要はありません。分析と設計は並行して行われることもあります。実際には、1つの活動の結果がもう1つの活動の反復プロセスに反映されることもあります。

OOADのためのいくつかの典型的な入力成果物：

概念モデル：概念モデル： 概念モデルは、オブジェクト指向分析の結果である。これは、問題ドメインの概念をキャプチャしたものである。概念モデルは、実装の詳細から明確に独立している。
ユースケース：ユースケースは、必要なタスクを完了させる一連のイベントの記述である。各ユースケースは、システムがアクター（ユーザー）とどのように相互作用すべきかを伝えるシナリオを提供する。アクターは、エンドユーザーである場合もあれば、他のシステムである場合もあります。ユースケースは、ダイアグラムを使用してさらに詳細化することができます。このようなダイアグラムでは、アクターと、アクターが実行するプロセスを特定します。
システム・シーケンス図：システム・シーケンス図（SSD）は、特定のユースケースについて、アクターが生成するイベントとその順序（システム間イベントを含 む）を示す図です。
ユーザー・インターフェース・ドキュメント：ユーザー・インターフェースを示し、説明する文書。
データモデル：データ・モデルは、データ要素が互いにどのように関連しているかを記述する。データ・モデルは設計フェーズの前に作成されます。オブジェクト指向設計はデータモデルから直接マッピングする。リレーショナル設計はより複雑です。
システムライフサイクル
システム・ライフサイクルとは、システムの構想、設計・開発、生産・構築、流通、運用、保守・サポート、引退、段階的廃止、廃棄など、システムまたはシステム案が存在するすべての段階を対象とする見方である。

概念設計
概念設計段階は、特定された必要性が検討され、潜在的な解決策の要件が定義され、潜在的な解決策が評価され、システム仕様が作成される段階である。システム仕様書は、システム設計の全体的な指針となる技術要件を表す。この文書によって将来のすべての開発が決定されるため、概念設計レビューによってシステム仕様が動機となるニーズに適切に対応していると判断されるまでは、この段階を完了することはできない。

概念設計段階における主なステップは以下の通りである：

ニーズの特定
実現可能性分析
システム要件分析
システム仕様
概念設計レビュー
予備システム設計
システムライフサイクルのこの段階では、システム仕様に準拠して、必要なシステム機能を実行するサブシステムが設計・仕様化されます。サブシステム間のインターフェイスが定義され、全体的なテストと評価の要件も定義されます。この段階が完了すると、詳細設計と開発を行うのに十分な開発仕様書が作成される。

予備設計段階の主なステップは以下の通り：

機能分析
要件の割り当て
詳細なトレードオフ研究
システム・オプションの合成
エンジニアリングモデルの予備設計
開発仕様
予備設計レビュー
例えば、あなたはヴィティ銀行のシステムアナリストとして、現在の情報システムを調査する任務を与えられている。Viti Bankはフィジーで急成長している銀行です。地方の遠隔地に住む顧客は、銀行のサービスにアクセスするのが難しいと感じています。銀行サービスを利用するために、何日も、あるいは何週間もかけて現地に行かなければならないのです。顧客のニーズを満たすというビジョンのもと、同銀行は現在のシステムを調査し、そのニーズを満たすために現在のシステムをどのように提供すればよいか、解決策や推奨事項を提示するよう、御社に依頼しました。

詳細設計と開発
この段階には、初期設計作業を仕様書として完成させる詳細設計の開発が含まれます。この作業には、システムと想定される環境との間のインターフェースの仕様や、システムのロジスティクス、メンテナンス、サポート要件の包括的な評価などが含まれる。詳細設計と開発は、製品、プロセス、材料の仕様を作成する責任があり、開発仕様を大幅に変更する可能性がある。

詳細設計・開発段階での主なステップは以下の通り：

詳細設計
詳細合成
エンジニアリング・モデルとプロトタイプ・モデルの開発
開発仕様の修正
製品、プロセス、材料の仕様
クリティカル・デザイン・レビュー
生産と建設
製造および/または建設の段階では、製品は、製品、プロセス、および材料仕様で指定された要件に従って構築または組み立てられ、運用目標環境内で展開され、テストされる。システム評価は、欠陥を修正し、継続的な改善のためにシステムを適合させるために実施される。

製品構築段階における主なステップは以下の通り：

システムコンポーネントの製造および/または構築
受入試験
システムの配布と運用
運用試験と評価
システム評価
利用およびサポート
完全に配備されたシステムは、意図された運用役割のために使用され、運用環境内で維持される。

利用およびサポート段階における主なステップは以下の通り：

ユーザー環境でのシステム運用
変更管理
改善のためのシステム修正
システム評価
段階的廃止と廃棄
システムの有効性と効率性を継続的に評価し、製品が最大有効ライフサイクルに達した時期を判断しなければならない。検討事項には以下が含まれる：運用上の必要性の継続、運用要件とシステム性能の一致、システムの段階的廃止と保守の実行可能性、代替システムの利用可能性。

フェーズ

このセクションには、参考文献、関連文献、外部リンクのリストが含まれていますが、インライン引用がないため、出典が不明確なままです。より正確な引用を導入することで、このセクションの改善にご協力ください。(2023年1月）（このテンプレートメッセージを削除する方法とタイミングを学ぶ）
システム調査
このステップでは、影響を受けるであろう現在の優先事項と、それをどのように処理すべきかが検討される。実現可能性調査では、新しいシステムや改善されたシステムを作ることが適切かどうかを判断する。これは、コスト、便益、リソース要件、特定のユーザーニーズを見積もるのに役立つ。

実現可能性調査では、運用、財政、技術、人的要因、法律／政治的な懸念に対処する必要がある。

分析
分析の目的は、問題の所在を明らかにすることです。このステップでは、システムを断片に分解し、プロジェクトの目標を分析し、作成する必要があるものを分解し、ユーザーを巻き込んで要件を定義します。

設計
システム設計では、画面レイアウト、ビジネスルール、プロセス図、その他の文書など、機能と操作について詳細に説明します。モジュール設計では、複雑さを軽減し、サブシステムの集合体としてシステムを記述することができます。

設計段階では、すでに定義されている要件を入力とします。各要件に対して、設計要素のセットが作成されます。

設計文書には通常、機能階層図、画面レイアウト、ビジネス・ルール、プロセス図、擬似コード、およびデータ辞書を含む完全なデータ・モデルが含まれます。これらの要素は、開発者やエンジニアが最小限の追加入力でシステムを開発し提供できるように、システムを十分に詳細に記述します。

テスト
コードは、ソフトウェアテストにおいて様々なレベルでテストされる。ユニットテスト、システムテスト、ユーザー受け入れテストが一般的に実施される。テストには多くのアプローチが採用されている。

以下の種類のテストが関連するかもしれない：

経路テスト
データセットテスト
ユニットテスト
システムテスト
統合テスト
ブラックボックステスト
ホワイトボックステスト
回帰テスト
自動化テスト
ユーザー受け入れテスト
ソフトウェア性能テスト
トレーニングと移行
テストによってシステムが安定したら、SDLC は、サポートスタッフやエンドユーザにシステムを移行する前に、適切なトレーニングが準備され、実行されることを保証する。トレーニングは通常、サポートスタッフ向けの運用トレーニングとエンドユーザ向けのトレーニングを含みます。

トレーニングの後、システムエンジニアと開発者はシステムを本番環境に移行する。

運用とメンテナンス
メンテナンスには、変更、修正、機能強化が含まれます。

評価
SDLC の最後のフェーズは、システムの有効性を測定し、潜在的な機能拡張を評価することです。

ライフサイクル
管理と制御

管理統制に関連する SDLC フェーズ
このセクションでは、SDLC フェーズの目標について、主要な成果物、推奨されるタスクの説明、および、効果的な管理のための関連する管理目標の概要とともに説明する。プロジェクトマネジャーは、プロジェクトを実施する間、管理目標を設定し、監視することが重要である。管理目標は、望ましい結果や目的を明確に示すものであり、プロジェクト全体を通じて定 義し、監視する必要があります。管理目標は、大きな分類（ドメイン）にグループ化することができ、図に示すように、SDLC のフェーズに関連します。

実質的なSDLCの取り組みを管理し、コントロールするために、作業内訳構造（WBS）は作業を捕捉し、スケジュールします。WBSとすべてのプログラム資料は、プロジェクトノートの "project description "セクションに保管されるべきです。

この図は、対象範囲がSDLCの多数のフェーズにまたがっていることを示していますが、関連するMCD[clarification needed]は、SDLCフェーズへのマッピングを示しています。例えば、分析と設計は、主に取得と実装ドメインの一部として実行され、システム構築とプロトタイプは、主に納品とサポートの一部として実行されます。

作業内訳の構造化組織

作業内訳構造
WBSの上段は、プロジェクトのスコープとタイムラインの概要を示す。また、主要なフェーズとマイルストーンを要約します。中間セクションは、SDLC のフェーズに基づいています。WBS の要素は、実施すべき活動ではなく、マイルストーンと完了すべきタスクで構成され、期限があります。各タスクには、測定可能なアウトプット（例えば、分析文書）があります。WBSのタスクは、1つまたは複数のアクティビティ（コーディングなど）に依存することがある。請負業者からの支援が必要なプロジェクトの一部には、作業明細書（SOW）を作成する。SOWの作成は、SDLCの特定のフェーズで発生するのではなく、コントラクターが実施する可能性のあるSDLCプロセスの作業を含むように作成されます。

ベースライン
ベースライン[clarification needed]は、SDLCの5つのフェーズのうち4つのフェーズの後に確立され、このモデルの反復的な性質にとって重要である。ベースラインはマイルストーンになる。

機能ベースライン：概念設計フェーズの後に確立される。
割り当てベースライン: 予備設計フェーズの後に確立される。
製品ベースライン：詳細設計・開発フェーズの後に設定される。
更新された製品ベースライン：生産建設段階の後に確立される。
システム開発ライフサイクルには7つのフェーズがある。すなわち、システム調査、分析、設計、テスト、訓練と移行、運用と保守、評価である。