こんにちは!私は現在「基本情報技術者試験」に向けて勉強中です!
基本情報技術者試験は長い学習時間が必要で、同様に勉強されている方も多いのではないでしょうか?
そこで私が勉強ついでに「システム開発ライフサイクル」のカテゴリーが難しかったので最近勉強を始めたばかりの人向けに私なりに簡単ではありますがご紹介させていただきます!

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

 システム開発ライフサイクル(Systems Development Life Cycle
SDLCは、高品質なソフトウェアの生産を可能にし関連するさまざまな段階を定義するプロセスです。
SDLCは、開発の速度が向上し、低コスト低リスクでプロジェクト全体の改善にもなります。

システム開発ライフサイクルの歴史

 1950年代と1960年代にコンピュータサイエンスが急速に成長してきました。
この急速な成長の開発フレームワークを得て最終的に私たちが知るSDLCにまで成長したのです。

 1950年代後半以前は、コンピューティングはSDLCを必要とするほど精巧ではありませんでした。時代が進歩するにつれてプログラミングが複雑になり構造化プログラミングの概念が開発されます。
 構造化プログラミングにはより詳しい開発モデルが必要になったためSDLCが誕生しました。

(引用:techopedia|Software Development Life Cycle

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

 システム開発ライフサイクルは大きく分けて6つのフェーズに分かれます。一つ一つのフェーズを見ていきましょう。

システム開発ライフサイクルの6つのフェーズを表した図

フェーズ1:要件の収集と分析[Requirement collection and analysis]
フェーズ2:設計[Design]
フェーズ3:コーディング[Coding]
フェーズ4:テスト[Testing]
フェーズ5:インストール/展開[Installation/Deployment]
フェーズ6:メンテナンス[Maintenance]


フェーズ1:要件の収集と分析[Requirement collection and analysis]

 要件分析は、SDLCプロセスの最初の段階です。すべての関係者及び専門家から意見や情報を収集したのち、チームの上位メンバー(プロジェクトマネージャー)によって実施されます。品質保証要件の計画とプロジェクトに関連するリスクの特定もこの段階で行われます。

フェーズ2:設計[Design]

 要件を収集分析し、計画手順を実行した後は、「SRS」ドキュメントと呼ばれる「ソフトウェア要件仕様」を使用してシステムを設計していきます。
 SRSには、設計者が開発する上で最適なシステムアーキテクチャ※1を導入します。

※1システムアーキテクチャとは…
設計するシステムへ求められていることを効率的に実行するために必要な機能やデータ更新のルールについての枠組み

フェーズ3:コーディング[Coding]

 設計の次はコーディングです。開発者はプログラミングツールで定義されたガイドラインに従い、コードを作成していきます。
 C言語、C++、Java、PHPなどのプログラミング言語を使用することもあります。選択した言語を使用してシステム全体の構築を開始します。

フェーズ4:テスト[Testing]

 テストフェーズはテストチームが行います。完成したシステムをテスト環境に展開し、システム全体の機能のテストを開始します。完成したシステムにバグや欠損がないか徹底的にテストを行い、もしもミスが見つかった場合は開発チームが修正し再テスト、回帰テストを繰り返します。

フェーズ5:インストール/展開[Installation/Deployment]

 テストが終了し、システムにバグ等が残っていない場合に最終的な展開が行われます。またプロジェクトマネージャーからのフィードバックに基づいて、システムが導入され、展開に問題があるかどうかがチェックされます。

フェーズ6:メンテナンス[Maintenance]

 システムを本番環境に導入した後、定期的にメンテナンスを行います。システムを使用するにあたり問題が発生して修正が必要な時は、バグ修正・アップグレード・拡張を行う必要があります。

システム開発ライフサイクルのモデル/手法

ここではSDLCのいくつかの最も重要なモデル/手法を紹介します。

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

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

 ウォーターフォールモデルは、SDLCで最も一般的で広く受け入れられてきたモデルです。または線形順次モデルとも呼ばれてます。
 ソフトウェア開発のプロセス全体が別々のフェーズに分割されます。 このモデルは、通常1つのフェーズの結果が次のフェーズの入力として機能します。

V字モデル

V字型モデル
V字モデル

 V字モデルは、検証と妥当性確認と呼ばれています。このモデルは、開発とテストが並行して行われます。
つまりは、左側に開発フェーズを並べ、右側にテストフェーズを並べ最終的にコーティングへ結合されます。

プロトタイピングモデル

プロトタイプ
プロトタイピングモデル

 プロトタイピングモデルは、開発の早い段階でプロトタイプ(試作品)を開発し、エンドユーザーがプロトタイプを評価することでシステムの設計を開始する手法のことを言います。

アジャイル開発

アジャイル型
アジャイル開発

 アジャイル開発は、迅速にソフトウェア開発を行う手法です。
計画→設計→実装→テストといった工程を期間内に小さいサイクルで何度も繰り返します。

反復型開発

反復型
反復型開発

 反復型開発は、小さい機能にソフトウェア開発を反復することにより、ソフトウェアを完成する方法です。
分析、要件、設計、実装、テストといった一連の工程を繰り返し行い、ソフトウェアを完成させます。

最後の考え…

今回はシステム開発ライフサイクル(SDLC)について見ていきました。今後はより高速で新しいSDLCの導入がされ、組織は古いウォーターフォールモデルから離れ、新しい開発プロセスにおけるスピードに対する要求がますます高まる中、自動化が重要な役割を果たしています。IT業界でプロジェクトマネージャーになった場合に最新のSDLCモデルを覚えておくといいでしょう。

作者情報
いろんなことに趣味がある多趣味なITエンジニア初心者です! 今まで趣味にしてきたことは数知れず… 今はITパスポートと日商簿記2級の取得に向けて勉強中です。