事業・サービス

ソフトウェア開発プロジェクトはなぜうまくいかないのか

効果的なプロジェクトマネジメントの取り組みが成功の鍵

システム開発プロジェクトにおいて、QCDを確保して無事にカットオーバーを迎えることは重要な課題であり、その課題解決のために「CMMI開発(CMMI-DEV)」のようなベストプラクティスをまとめたフレームワークを参考にしたプロセス改善が行われてきました。

しかし近年では、社会のあらゆる部分にITが普及した結果、一から新たにシステムを構築する機会は減少し、稼働中のシステムの保守や再構築を行う機会や、クラウド環境にシステムを置き換えて運用していくという機会が増えてきました。

そのため、システムという「有形の成果物」を構築することだけでなく、保守・運用という「無形のサービス」について、システムの価値を高めるように正しく効率的に改善していくサービスマネジメントの重要性が高まってきました。

なぜソフトウェア開発プロジェクトは失敗するのか

日経コンピュータが2018年に行った調査によると、システム開発のプロジェクトで満足度、コスト、納期のすべてが成功するのは52.8%程度で、約半数のプロジェクトは失敗しまう実態があるとのこと。なぜソフトウェア開発プロジェクトはうまくいかないのでしょうか?それはソフトウェア開発をとりまく以下のような問題点に起因しています。

不明確な要求、度重なる変更要求

ソフトウェアは完成するまでユーザーの目に見えません。そのため、完成形を想像しながら開発を進めるため、プロジェクトの初期段階ではどのようなソフトウェアを作るべきかわからず、要求が曖昧で不明確なことが多々あります。

また、ソフトウェアの成果物はプログラムコードという論理的な情報であり、物理的な製品や建築物等の作成とくらべて、プロジェクトの実施途中でも簡単に追加や修正がしやすいという特徴があります。

不明確な要求のままプロジェクトを開始した結果、プロジェクト実施中にユーザーからの度重なる変更要求を受け入れざるをえなくなり、スケジュールや品質がコントロール不能となり、失敗を引き起こすプロジェクトが後を断ちません。

大規模化、複雑化、短納期化

ITが発展し、多用で高機能なものを市場が望んだ結果、求められるシステムの規模はますます大きく複雑になってきています。加えて、インターネットで世界中がつながり、開発環境が一般にも広まった現代では、ソフトウェア市場参入の敷居が下がり、スピード感のある開発を行うことがビジネスの成否を決める要因となってきました。

複雑で大規模なシステムを市場にタイムリーに投入するという、難易度の高い開発が求められ、個人の能力や裁量に頼った開発方法だけでは立ち行かなくなってきました。

納期遅延、予算超過

上記のような問題から、プロジェクトがうまく進められず、納期遅延や予算超過を引き起こし、市場に不具合が流出してしまうことが発生しています。

プロジェクトを成功に導くためには

ソフトウェア開発プロジェクトの問題の多くは、効果的なプロジェクトマネジメントが実施できなかったことに起因しています。プロジェクトマネージャにより、適切な計画と制御を行うプロジェクトマネジメントが実施されれば、次の効果が期待できます。

スケジュールの確保

WBS(Work Breakdown Structure:作業細分化構造)に基づく必要な作業の設定と、利用可能な資源を考慮に入れたスケジューリングを行い、ライフサイクルフェーズ毎に管理していくことで、ほぼ当初の予定どおり開発を完了することができます。
もし要求の変更や要員の交替などの不測の事態が発生しても、影響を最小限にとどめることができます。

品質の保証

出荷する製品の品質を保証するためには、最終的な製品を評価するだけではなく、成果物を作成する途中の段階のプロセスを評価し、確実に品質が作り込まれていることを保証していくことが重要です。

品質を確保するために必要な作業や対象となる成果物を特定し、品質基準や標準、評価方法、評価するタイミングを計画します。そして、基準を満たしているかをタイムリーに、かつ客観的に評価していくことで、プロセスの品質を保証します。
また、品質の目標を定めて、定量的に実績を監視しながら、品質の予測と制御を行っていくことで、目標を達成する可能性を向上させます。

コストの抑制

スケジュールの確保と品質の保証を行っていくことで、予定したコスト通りにプロジェクトを遂行していきます。また、想定外の事象=リスクの発生を事前に予想し、リスクの軽減策をとっていくことで、コストを抑制していきます。

外注の適切な管理

外注先への依存、いわゆる丸投げにより、蓋を空けてみたらプロジェクトが破綻していた、といったことがあります。そのようなことが起こらないように、適切な外注先の選定、合意、コントロールを行うことで、問題発生を防ぎます。

これらのプロジェクトマネジメントを個人の力量や裁量だけに頼らず、組織レベルで確実に実践していくためには、プロジェクトマネジメントを含む組織プロセス改善のベストプラクティスをまとめたプロセスモデルが参考になります。
自分たちのプロジェクトマネジメントのやり方=プロセスの問題点を見定め、見直し、実践し、組織に定着させていくのが、有効かつ効率的な方法になります。
そのプロセスモデルの代表的なものとして、CMMI(Capability Maturity Model Integration 能力成熟度モデル統合)があります。

CMMIのプロジェクトマネジメント

CMMIは、米国カーネギーメロン大学のソフトウェア工学研究所(SEI)が開発した、プロセスを改善するためのモデルで、世界中のソフトウェア開発を行う組織で適用され、組織レベルでのプロセス改善を行うデファクトスタンダードとなっています。

最新版のCMMI V2.0は、ソフトウェア開発プロセスの改善に役立つベストプラクティスを集めた25個のプラクティス領域で構成されます(2020年1月時点)。各プラクティス領域は、4つの区分(実行、管理、支援、改善)と、10個の能力領域(品質の確保、成果物のエンジニアリングと開発、サービスの提供と管理、供給者の選定と管理、作業の計画と管理、事業レジリエンスの管理、人材の管理、実施の支援、習慣と持続性の維持、実績の改善)に分類されます。

この中で特にプロジェクトマネジメントに関係が深い能力領域は、「作業の計画と管理」です。「作業の計画と管理」には、「見積もり」、「計画」、「監視と制御」のプラクティス領域が含まれます。これらの概要をご紹介します。

プロジェクトマネジメント能力領域と概要

作業の計画と管理(Planning and Managing Work)

この能力領域では、必要な作業の量を判定し、作業の計画とスケジュールの設定を行い、それらに従って確実に作業が実施されるようにします。また、計画とスケジュールに見合うように、必要十分な資源を確保します。

見積もり(Estimating)

ソリューションの開発、取得、または提供に必要となる、作業と資源の規模、工数、期間、および費用を見積もります。見積もりは、コミットメントの形成、計画の策定、および不確実性の低減に向けた基盤を提供し、早い段階での是正処置を可能にするとともに、目標達成の見込みを高めます。

  • レベル1では、作業を実施するための概算見積もりを作成します。
  • レベル2では、見積もり対象のスコープを作成し、規模、工数、期間、費用を見積もって論理的根拠を明確にします。
  • レベル3では、見積もりのための手法を作成し、組織で蓄積した測定リポジトリやプロセス資産を使用して見積もりを行います。

計画(Planning)

組織の標準と成約のなかで、作業を完遂させるために何が必要かを計画します。費用、機能性、および品質を最適化することで、目標を達成する可能性を高めます。

  • レベル1では、タスクの一覧を作成し、タスクに人員を割り当てます。
  • レベル2では、作業の完遂に向けたアプローチ、必要な知識とスキル、予算、スケジュール、利害関係者の関与、運用と支援への移行を計画し、策定したプロジェクト計画をレビューし、要素間の首尾一貫性を確保し、利害関係者のコミットメントを獲得します。
  • レベル3では、組織のプロセスからテーラリングしたプロジェクトプロセスを開発し、組織で蓄積した測定リポジトリやプロセス資産を計画策定に使用します。
  • レベル4では、統計的な技法を使用して、プロジェクトプロセスや定量的な品質目標を策定します。

監視と制御(Monitoring and Control)

実績が計画より著しく逸脱する場合に適切な是正処置がとれるよう、プロジェクトの進捗を理解できるようにします。早めに処置を行うことで、目標達成の可能性を高めます。

  • レベル1では、タスクの完了を記録し、課題の特定および解決を行います。
  • レベル2では、実際の結果を、規模、工数、スケジュール、資源、知識とスキル、予算の見積もりに照らして追跡し、利害関係者の関与とコミットメントを追跡し、運用と支援への移行を監視し、結果が計画より著しく逸脱する場合は、是正処置をとって終結まで管理します。
  • レベル3では、プロジェクトのプロセスを使用した管理、重要な依存関係の管理、作業環境の監視を行い、そして利害関係者と共に課題の解決を行います。

CMMI V2.0では、各プラクティス領域ごとにレベルの概念があり、レベルが上がるほど高い価値を創出することができますが、求められる活動も高度になってきます。自組織に合ったレベルからはじめていくことがポイントです。

これらのプラクティス領域内のターゲットとするレベルに含まれるプラクティスと、自組織のプロジェクトマネジメントのプロセスを比較し、ギャップが見出される部分について改善し、実践していきます。そうすることで、組織的に効果的なプロジェクトマネジメントが継続的に実践され、プロジェクトの成功率を向上させることが期待できるでしょう。