
知ってるようで知らないプロジェクトライフサイクルを分かりやすく解説
本記事では、プロジェクトライフサイクルの全体像と各フェーズの内容を、分かりやすく解説していきます。
SES営業として押さえておくべきポイントも合わせて紹介しますので、ぜひ最後までご覧ください。
1. プロジェクトライフサイクルの重要性.
プロジェクトライフサイクルは、ウォーターフォールやアジャイルなど開発手法によって多少の違いはありますが、一般的に計画、要件定義、設計、実装、テスト、移行、運用保守といったフェーズに分かれています。
各フェーズでは異なる経験やスキルが必要となります。
SES営業がプロジェクトライフサイクルを理解しておくことは非常に重要です。
なぜなら、クライアントのニーズに合ったシステム開発を適切に提案・支援するためには、開発の全体像を把握しておく必要があるからです。
例えば、クライアントの課題に対して最適なソリューションを提案する際、現在どのようなフェーズで何の開発手法を取り入れているのかを認識しておかなければなりません。
各フェーズでどのような作業が行われ、どのようなリソースが必要になるのかを理解することで、より現実的で実効性の高い提案ができるようになります。
2. プロジェクトライフサイクルのフェーズとスキルセット.
プロジェクトライフサイクルの各フェーズで必要となるスキルセットは大きく異なります。
SES営業は、プロジェクトの進行状況によって適切な提案ができるよう、各フェーズの内容を熟知し、それぞれのフェーズで求められるスキルセットの理解が不可欠です。
以下、各フェーズの概要と必要なスキルセットについて解説していきます。
2-1. 計画フェーズ
計画フェーズは、プロジェクトの目的、スコープ、体制、スケジュール、リソース、リスク、予算などを詳細に計画する最も重要なフェーズです。
計画が曖昧だと後々大きな問題に発展する可能性があります。
そのため、クライアントのニーズをキャッチアップし、プロジェクトの目的や要件を明確に定義できる能力や、クライアントに最適なプロジェクトの構成や体制、手法などを提案するために、様々な選択肢を比較検討できる提案力が求められます。
2-2. 要件定義フェーズ
計画フェーズで洗い出した要件をさらに詳細化し、機能要件と非機能要件に分けて定義書にまとめていきます。
そして、ユースケース図を描いて、システムの機能や振る舞いをモデル化を行います。これらの要件をまとめたものを要件定義書と呼びます。
要件定義フェーズでは、業務分析力、要件理解力、モデリング能力などが求められます。
また、要件レビューの重要性を認識し、ステークホルダー間で要件の統一を図るファシリテーション能力も必要です。
2-3. 設計フェーズ
設計フェーズでは、要件定義書を基にシステムの設計を行います。
論理設計と物理設計の2段階に分かれ、システム全体の構成、データベースの構造、UIデザインなどを設計します。
設計フェーズで求められるエンジニアは、システム設計、データベース設計、UI設計などの設計技術に関する専門知識を有していることが前提となります。
さらに、提案された設計案を適切に評価し、問題点を指摘できるレビュー能力が求められます。
2-4. 開発フェーズ
実際にアプリケーションの実装を行うフェーズです。
プログラミングやデータベース構築、画面UIの実装などの作業を行い、単体テストと結合テストを通して基本動作を確認しつつ開発を進めていきます。
開発フェーズでは、基本的なプログラミングスキルとテスト設計能力が必要です。
設計書から実装の内容を把握し、品質を保ちながら設計通りに実装できることが重要です。
2-5. テストフェーズ
テストフェーズでは、機能テスト、非機能テスト、総合テスト、受入テストなどのテストケースの作成と実施を行い、要件定義書や設計書に記載された内容が実装に反映されていることを確認します。
テストフェーズでは、業務のシナリオに沿ったテストだけでなく、非機能テストの観点(性能、セキュリティ、信頼性など)を理解し、テストケースの妥当性をレビューできる能力が必要です。
2-6. 移行フェーズ
テストが完了したシステムを本番環境にリリースするフェーズです。
移行計画に基づいて段階的なリリースを実施したり、既存システムからのデータ移行作業、本番切替作業(カットオーバー)などを行います。
移行フェーズは、移行計画の立案能力と移行リスク分析力が重要なスキルセットとなります。
段階的リリースや移行手順を適切に設計し、移行に伴うリスクを特定して対策を立てられることが求められます。
3. 代表的な開発モデル.
プロジェクトの規模やクライアントの要求によって最適な開発モデルは異なりますが、本記事では代表的な4つのアプローチを解説します。
3-1. ウォーターフォールモデル
ウォーターフォールモデルは、プロジェクトを順序立てて進めていく古くからある開発手法です。
各フェーズを順番に完了させ、次のフェーズに進むため「ウォーターフォール(滝)」と呼ばれています。
フェーズを明確に区切ることで、進捗の管理がしやすいというメリットがありますが、一方で、要件の変更が難しいことが欠点と言えます。
そのため、ウォーターフォールモデルは、要件が明確で安定しており、開発途中の大幅な変更が想定されないような、次のようなプロジェクトに適しています。
3-2. アジャイルモデル
アジャイルモデルは、反復的な開発アプローチを取るモデルです。
スプリントと呼ばれる1週間から2週間の短いサイクルを繰り返し、要件を柔軟に取り入れながらシステムを徐々に成長させていきます。
クライアントの要望に柔軟に対応できるのがメリットですが、進捗管理が難しいことが欠点と言えるでしょう。
アジャイルモデルは、要件が不確実でスピーディーな開発が求められる、Webサービスやモバイルアプリなどのスタートアップ系の開発プロジェクトによく用いられます。
3-3. スパイラルモデル
スパイラルモデルは、ソフトウェア開発のプロセスモデルで、開発の柔軟性が特徴です。
システム全体の仕様を詰めずに、サブシステムごとに要件定義、設計、開発・テスト、評価・改善のループを繰り返し、らせん状にシステム全体を作り上げます。
メリットとしては、臨機応変にスケジュール調整や仕様変更に対応できる点があります。
一方、デメリットとしては、システムの全体像を把握しにくい、コストの肥大化リスクがあるなどがあります。
スパイラルモデルは、新規技術や組み込みソフトウェアなど技術的な課題やリスクが高く、段階的なリスク分析が重要となる、次のようなプロジェクトに向いています。
3-4. プロトタイピングモデル
プロトタイピングモデルは、プロトタイプ(試作品)を実際に作ることから始まるアプローチです。プロトタイプを元に要件を詰めていき、最終的な製品につなげていきます。
要件がわかりにくい場合に有効で、ユーザの理解も進みやすいというメリットがあります。
ただし、プロトタイプを捨てずに製品に発展させられるかが課題になります。
プロトタイピングモデルは、UIやUXを重視するクライアントや、要件が曖昧なプロジェクトで有効です。
4. まとめ.
プロジェクトライフサイクルとは、システム開発の一連の流れを段階に分けて管理するためのフレームワークです。
開発手法によってフェーズの順番は多少変わりますが、全体のプロセスは同じです。
各フェーズで行われる作業内容を理解し、そこで求められるスキルセットを身につけていなければ、クライアントのニーズに沿った適切な提案ができません。
プロジェクトライフサイクルに関する深い理解は、SES営業にとって極めて重要なスキルです。
プロジェクトマネジメントの知識を学び続け、クライアントに最高のサービスを提供できるよう努めていきましょう。