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

ソフトウェア開発ライフサイクル(略してSDLC)は、目的のソフトウェア製品を開発するための、ソフトウェアエンジニアリングにおける明確に定義された構造化された一連の段階です。

SDLC活動

SDLCは、ソフトウェア製品を効率的に設計および開発するために従うべき一連のステップを提供します。SDLCフレームワークには、次の手順が含まれます。

コミュニケーション

これは、ユーザーが目的のソフトウェア製品の要求を開始する最初のステップです。彼はサービスプロバイダーに連絡し、条件の交渉を試みます。彼は書面でサービス提供組織に要求を提出します。

要件の収集

このステップ以降、ソフトウェア開発チームはプロジェクトの遂行に取り組みます。チームは、問題領域のさまざまな利害関係者と話し合いを行い、彼らの要件について可能な限り多くの情報を引き出すように努めます。要件は検討され、ユーザー要件、システム要件、および機能要件に分けられます。要件は、与えられたいくつかのプラクティスを使用して収集されます-

  • 既存または廃止されたシステムとソフトウェアを研究し、
  • ユーザーと開発者へのインタビューの実施、
  • データベースを参照するか
  • アンケートから回答を集める。

フィージビリティスタディ

要件を収集した後、チームはソフトウェアプロセスの大まかな計画を立てます。このステップで、チームは、ユーザーのすべての要件を満たすようにソフトウェアを作成できるかどうか、およびソフトウェアが役に立たなくなる可能性があるかどうかを分析します。プロジェクトが組織にとって財政的、実用的、技術的に実行可能であるかどうかがわかります。開発者がソフトウェアプロジェクトの実現可能性を結論付けるのに役立つ多くのアルゴリズムが利用可能です。

システム分析

このステップで、開発者は計画のロードマップを決定し、プロジェクトに適した最適なソフトウェアモデルを提示しようとします。システム分析には、ソフトウェア製品の制限の理解、システム関連の問題や既存のシステムで行われる変更の事前学習、組織や人員へのプロジェクトの影響の特定と対処などが含まれます。プロジェクトチームはプロジェクトの範囲を分析し、スケジュールを計画し、それに応じてリソース。

ソフトウェア設計

次のステップは、要件と分析に関する知識全体を机の上に置き、ソフトウェア製品を設計することです。ユーザーからの入力と要件収集フェーズで収集された情報は、このステップの入力です。このステップの出力は、2つの設計の形式で提供されます。論理設計と物理設計。エンジニアは、メタデータとデータディクショナリ、論理図、データフロー図、場合によっては擬似コードを作成します。

コーディング

このステップは、プログラミングフェーズとも呼ばれます。ソフトウェア設計の実装は、適切なプログラミング言語でプログラムコードを記述し、エラーのない実行可能プログラムを効率的に開発することから始まります。

テスト

見積もりによると、ソフトウェア開発プロセス全体の50%をテストする必要があります。エラーは、ソフトウェアをクリティカルレベルからそれ自体の削除まで台無しにする可能性があります。ソフトウェアテストは開発者によるコーディング中に行われ、徹底的なテストは、モジュールテスト、プログラムテスト、製品テスト、社内テスト、ユーザー側での製品のテストなど、さまざまなレベルのコードのテスト専門家によって行われます。エラーの早期発見とその解決策は、信頼できるソフトウェアの鍵です。

統合

ソフトウェアは、ライブラリ、データベース、およびその他のプログラムと統合する必要がある場合があります。SDLCのこの段階は、ソフトウェアと外界のエンティティとの統合に関係しています。

実装

これは、ユーザーのマシンにソフトウェアをインストールすることを意味します。場合によっては、ソフトウェアはユーザー側でインストール後の構成を必要とします。ソフトウェアは移植性と適応性についてテストされ、統合に関連する問題は実装中に解決されます。

運用と保守

このフェーズでは、効率の向上とエラーの減少という観点からソフトウェアの動作を確認します。必要に応じて、ユーザーは、ソフトウェアの操作方法およびソフトウェアの操作を維持する方法に関するドキュメントのトレーニングまたは支援を受けます。ソフトウェアは、ユーザーエンド環境またはテクノロジーで発生する変更に応じてコードを更新することにより、タイムリーに維持されます。このフェーズでは、隠れたバグや実際の未確認の問題による課題に直面する可能性があります。

配置

時間の経過とともに、ソフトウェアはパフォーマンスの面で低下する可能性があります。完全に廃止されるか、大幅なアップグレードが必要になる場合があります。したがって、システムの大部分を排除する差し迫った必要性が生じます。このフェーズには、データと必要なソフトウェアコンポーネントのアーカイブ、システムのシャットダウン、廃棄アクティビティの計画、およびシステムの適切な終了時にシステムを終了することが含まれます。

ソフトウェア開発パラダイム

ソフトウェア開発パラダイムは、開発者がソフトウェアを開発するための戦略を選択するのに役立ちます。ソフトウェア開発パラダイムには、明確に表現され、ソフトウェア開発ライフサイクルを定義する独自のツール、方法、および手順のセットがあります。ソフトウェア開発パラダイムまたはプロセスモデルのいくつかは、次のように定義されています。

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

ウォーターフォールモデルは、ソフトウェア開発パラダイムの最も単純なモデルです。SDLCのすべてのフェーズが次々と直線的に機能すると書かれています。つまり、最初のフェーズが終了すると、2番目のフェーズのみが開始されます。

このモデルは、すべてが前の段階で計画どおりに完全に実行および実行され、次の段階で発生する可能性のある過去の問題について考える必要がないことを前提としています。前のステップで問題が残っていると、このモデルはスムーズに機能しません。モデルのシーケンシャルな性質により、アクションに戻って元に戻したり、やり直したりすることはできません。

このモデルは、開発者が過去に同様のソフトウェアをすでに設計および開発していて、そのすべてのドメインを認識している場合に最適です。

反復モデル

このモデルは、ソフトウェア開発プロセスを繰り返しリードします。SDLCプロセスのすべてのサイクルの後にすべてのステップを繰り返す循環的な方法で開発プロセスを投影します。

ソフトウェアは最初に非常に小規模に開発され、考慮されたすべてのステップが実行されます。その後、次の反復ごとに、より多くの機能とモジュールが設計、コーディング、テストされ、ソフトウェアに追加されます。すべてのサイクルでソフトウェアが作成されます。ソフトウェアはそれ自体で完全であり、前のものよりも多くの機能を備えています。

各反復の後、管理チームはリスク管理に取り組み、次の反復の準備をすることができます。サイクルにはソフトウェアプロセス全体のごく一部が含まれるため、開発プロセスの管理は簡単ですが、より多くのリソースを消費します。

スパイラルモデル

スパイラルモデルは、反復モデルとSDLCモデルの1つを組み合わせたものです。SDLCモデルを1つ選択し、それを循環プロセス(反復モデル)と組み合わせているように見えます。

このモデルはリスクを考慮しますが、他のほとんどのモデルでは気付かれることはほとんどありません。モデルは、1回の反復の開始時にソフトウェアの目的と制約を決定することから始まります。次の段階は、ソフトウェアのプロトタイピングです。これにはリスク分析が含まれます。次に、1つの標準SDLCモデルを使用してソフトウェアを構築します。次の反復の計画の第4フェーズで準備されます。

V –モデル

ウォーターフォールモデルの主な欠点は、前のステージが終了したときにのみ次のステージに移動し、後のステージで問題が見つかった場合に戻る機会がなかったことです。V-Modelは、逆の方法で各段階でソフトウェアをテストする手段を提供します。

すべての段階で、テスト計画とテストケースが作成され、その段階の要件に従って製品を検証および検証します。たとえば、要件収集段階では、テストチームは要件に対応してすべてのテストケースを準備します。その後、製品が開発されてテストの準備ができたら、この段階のテストケースで、この段階の要件に対するソフトウェアの有効性を検証します。

これにより、検証と妥当性確認の両方が並行して行われます。このモデルは、検証および妥当性確認モデルとも呼ばれます。

ビッグバンモデル

このモデルは、その形式で最も単純なモデルです。それはほとんど計画、たくさんのプログラミングとたくさんの資金を必要としません。このモデルは、宇宙のビッグバンを中心に概念化されています。科学者が言うように、ビッグバンの後、たくさんの銀河、惑星、星がイベントのように進化しました。同様に、私たちがたくさんのプログラミングと資金をまとめれば、あなたは最高のソフトウェア製品を達成するかもしれません。

このモデルの場合、必要な計画はごくわずかです。それはいかなるプロセスにも従わないか、時には顧客は要件と将来のニーズについて確信が持てません。したがって、入力要件は任意です。

このモデルは大規模なソフトウェアプロジェクトには適していませんが、学習や実験には適しています。

SDLCとそのさまざまなモデルの詳細については、ここをクリックしてください。