ソフトウェア開発の成功に向けての基盤は大いに整ってきましたが、それでもなお失敗の可能性があるプロジェクトは存在します。「ソフトウェア開発を進めているものの、なんだかうまく進まない」「納期が迫っているのに、まだ要件が固まらない」などは、ソフトウェア開発における失敗の兆候かもしれません。ソフトウェア開発は、その複雑さから失敗も多く、リスクは計り知れません。そのため、開発を進める前に、失敗の原因を知り、それを未然に防ぐことが重要です。そこで、この記事では、ソフトウェア開発の失敗事例とその原因、そしてそれを回避するための具体的な方法を解説します。また、具体的な失敗事例や成功・失敗の割合、そして失敗を回避するための具体的な手法についても触れるため、ぜひ参考にしてください。ソフトウェア開発の失敗事例で共通する6つの課題まず、ソフトウェア開発の失敗事例で共通し、課題としてよく取り上げられるのが以下の6つです。責任者の不在納期に無理がある依頼内容が確立されていないデータが足りない顧客からのレスポンスがない成果物の明確な規定がない責任者の不在ソフトウェア開発における最初の課題は、「責任者の不在」です。本来、プロジェクトの成功には全体を統括し、必要なアクションを指示する責任者の存在が不可欠のはずです。しかし、責任者がいない、もしくは役職だけあって具体的なアクションをとってくれないマネージャーや管理層がついているプロジェクトは、ことごとく失敗に終わります。その理由は、作業の進捗管理がままならないため、プロジェクトが後ろ倒しになり、結果的に納期を守ることができないからです。例えば、みずほ銀行のシステム障害は、プロジェクトの管理体制の問題が原因とされています(※)。※…1999〜2019年、日経XTECH:https://xtech.nikkei.com/atcl/nxt/column/18/01972/030300001/納期に無理がある次に、ソフトウェア開発でよく見られる課題が「納期に無理がある」ことです。通常、無理な短期の納期で引き受けることはなく、短いこと自体は問題ではありません。しかし、短い納期でも成果物を完成させるための工夫がない場合、プロジェクトは遅れるリスクが高まります。例えば、開発期間が何か月と短期間であっても、アジャイル開発のような手法の導入によって納期を守るといったことが可能です。しかし、そのような工夫がない場合、開発は遅れがちになり、結果的に失敗につながります。依頼内容が確立されていない3つ目のソフトウェア開発における問題が「依頼内容が確立されていない」ことです。システム要件が不確定で、クライアント側が開発担当者に何を求めているか不明な場合に発生します。その多くは、開発内容が右往左往して似たような作業が増えることで無駄な工数も増加し、結果として開発の失敗率を高める大きなリスクともなります。要件を確定せずに開発を進めると、結果的に訴訟に発展することも少なくありません。データが足りない4つ目のソフトウェア開発で共通する課題は、「データが足りない」ことです。必要なデータが網羅されていないとテストも十分にできず、リリース後の不具合が頻発してしまいます。例えば、みずほ銀行のシステム障害は、テストデータの不足が一因とされています(※)。この事例からもわかるように、テストデータの不足は深刻なリスクをはらんでいるものだということです。※…2019年、日経XTECH:https://xtech.nikkei.com/atcl/nxt/column/18/00867/071600008/顧客からのレスポンスがないソフトウェア開発では、「顧客からのレスポンスがない」ことも課題です。この場合、開発が停滞するだけでなく、完成した成果物がクライアントの期待を満たせなくなります。クライアントは依頼のプロではないため、開発側で相手の要望を適切に聞き出す必要があります。また、レスポンスが遅い場合はきちんと管理し、必要な情報を適切なタイミングで得られる状態にしなければ納期遅れも発生するでしょう。成果物の明確な規定がない最後の課題が、「成果物の明確な規定がない」ことです。ソフトウェア開発においては、何を作り、何を完成とするかは契約段階できちんと擦り合わせることが必要です。これが不十分だと、「思っていたものと違う」という結果になりかねないでしょう。以上、6つの失敗からみる課題をお伝えしました。では、実際にどのようなトラブルに発展するのか、次項で紹介します。【関連記事】【返済必須】技術的負債とは?意味や実際の事例をわかりやすく解説ソフトウェア開発の失敗事例に多い3つのトラブルソフトウェア開発の失敗事例に多いトラブルは、以下の3つが代表的です。機能不備におけるトラブル開発要件の追加・変更にまつわるトラブル納期に関するトラブル機能不備におけるトラブルソフトウェア開発の失敗事例としてもっとも多いのが、機能不備によるトラブルです。指定された要件(機能)が実装されていない途中段階で追加する予定だった要件が入っていないなどは、典型的な例です。この場合、開発側が「指示されていなかったから」と主張しても、依頼者側は「依頼したものの性質上、付いていて当たり前の機能がないのは不備」とし、訴訟が起こることもあります。この問題の根本的な原因は、要件定義の不備です。開発側と依頼者側で共有するべき情報が十分に共有されていないため、開発が進むにつれて新たな要件が発生して機能不備も生じるのです。開発要件の追加・変更にまつわるトラブル次に多いトラブルは、開発要件の追加や変更によるものです。開発が進むにつれて新たな要件が追加され、それによって開発内容が膨らみ、結果的に納期が遅れます。この問題は、開発要件が定まらない、追加ばかりで内容がまとまらず訴訟に至ることも少なくありません。この問題の解決策は、開発要件の確定を早めることです。開発開始前に要件をしっかりと確認し、変更が必要な場合はその都度確認を行うことで、開発要件の変更によるトラブルを回避できます。納期に関するトラブル最後に、納期に関するトラブルです。ソフトウェア開発では、納期遅延が発生し、開発側が依頼側から訴えられることも少なくありません。納期遅延となった原因は開発側だけではなく、依頼側にもあるとされます。納期遅延の原因は多岐にわたりますが、その中でも特に多いのが、開発要件の追加や変更によるものです。開発が進むにつれて新たな要件が追加され、それによって開発内容が膨らみ、結果的に納期まで遅れるという問題が起こります。この問題を解決するためには、開発開始前に要件をしっかりと確認し、変更が必要な場合はその都度確認を行うと良いでしょう。では、実際にソフトウェア開発の失敗率はどの程度なのでしょうか。次項では、失敗率と成功率について解説します。ソフトウェア開発の失敗率・成功率の例ソフトウェア開発において、成功に結びつく確率は必ずしも高いとは言えません。むしろ、多くのプロジェクトが何らかの形で失敗に終わるというのが現実です。では、具体的にどの程度の割合で失敗と成功が生じているのでしょうか。ここでは、その具体的な数値を見ていきましょう。工期が遵守されているのは3割弱近年では品質満足を示す成功率も低下傾向に※グラフはデータを参考にNOVELが作成工期が遵守されているのは3割弱ソフトウェア開発において、工期の遵守はプロジェクトを左右する課題の1つです。しかし、実際には工期を遵守したプロジェクトは全体の3割弱に過ぎません。この割合は、企業IT動向調査報告書2022で、プロジェクト規模を「100 人月未満」「100~500 人月未満」「500 人月以上」の 3 段階に分類し、それぞれの規模について工期の遵守状況を調査した結果です。年度予定どおり完了 (%)ある程度は予定どおり完了 (%)予定より遅延 (%)21年度34.449.616.120年度39.143.417.519年度45.639.714.718年度41.942.815.4年度予定どおり完了 (%)ある程度は予定どおり完了 (%)予定より遅延 (%)21年度17.750.731.620年度22.044.833.219年度29.342.028.818年度25.644.230.2年度予定どおり完了 (%)ある程度は予定どおり完了 (%)予定より遅延 (%)21年度13.940.146.020年度15.833.550.619年度21.432.845.818年度23.432.643.9この結果は、ソフトウェア開発におけるリスクの1つである「納期遅れ」がいかに現実的な問題であるかを浮き彫りにしているとも言えるでしょう。出典:https://juas.or.jp/cms/media/2022/04/JUAS_IT2022.pdf近年では品質満足を示す成功率も低下傾向にソフトウェア開発の成功とは、単に工期や予算が遵守されただけでなく、その成果物に対する品質満足度も指標です。しかし、近年では開発した成果物に対して満足であると回答した企業は年々減り、20%をきっています。年度満足 (%)ある程度は満足 (%)不満 (%)21年度23.068.18.920年度28.962.68.519年度39.752.08.318年度34.359.36.4年度満足 (%)ある程度は満足 (%)不満 (%)21年度15.066.818.120年度22.264.513.319年度31.752.815.518年度25.261.713.1年度満足 (%)ある程度は満足 (%)不満 (%)21年度10.665.923.520年度18.156.325.619年度24.654.221.218年度23.053.323.8この傾向は、ソフトウェア開発におけるもう1つのリスクである「品質への不満」が増えていることを示しています。開発したソフトウェアがビジネスのニーズを満たせなかったり、ユーザーの期待に応えられなかったりすると、そのソフトウェアは成功とは言えません。このような品質不満が生じる原因としては、開発前の要件定義の不備や、開発途中での仕様変更などが考えられます。ソフトウェア開発での失敗を未然に回避する6つの方法ソフトウェア開発は、その規模や複雑さから失敗事例も多いことがお分かりいただけたはずです。しかし、ここまでお伝えした事例を事前に把握し、対策を講じることで、開発の成功率を大幅に向上させることが可能です。以下に、ソフトウェア開発での失敗を未然に回避する6つの方法を紹介します。責任者の明確化リアルな納期設定要件の確定十分なデータの確保コミュニケーションの確保成果物の規定の明確化責任者の明確化ソフトウェア開発では、プロジェクトの責任者を明確にします。この責任者は、全体の進行管理を担当し、各メンバーに対して「誰が何をどのように行うか」を具体的に指示します。結果として、各メンバーの役割が明確化できれば、作業の効率化も図れるでしょう。リアルな納期設定次に、現実的なスケジュールを立て、余裕を持った納期を設定することも必要です。例えば、開発期間を何か月にするかに加えて、その中で各フェーズの期間も具体的に設定します。また、不確定要素が多い場合、バッファーを設けておくことも時には求められるでしょう。余裕のあるスケジュールは、開発の進行状況を把握しやすくし、必要に応じてスケジュールの調整を行える基盤を作る基本です。要件の確定要件定義が曖昧な場合、プロジェクト開始前にクライアントと十分な打ち合わせを行い、依頼内容を具体的かつ詳細に確立します。機能性能デバイスOS言語フレームワークなど、開発に関するすべての要素を明確にします。細かく決める際には時間がかかるものの、開発中に発生するトラブルを未然に防ぐことができます。十分なデータの確保そして、開発に必要なデータを事前に集め、不足がないようにすることも開発の成功に不可欠です。プロジェクトリーダーやデータアナリストが、開発に必要なデータをあらかじめリストアップし、その収集を行いましょう。例えば、ユーザーの行動データや市場の動向データなど、開発するソフトウェアの性質に応じたデータを集めることで、より適切な開発計画を立てられます。コミュニケーションの確保開発チームと顧客とのコミュニケーションは、開発の進行をスムーズに進めるために欠かせません。プロジェクトマネージャーやコミュニケーション担当者が、顧客と定期的に連絡を取り、進捗報告やフィードバックの収集を行います。顧客のニーズや要望を正確に把握し、それを開発に反映できれば、総じて満足度も高くなりやすいです。また、問題が発生した際には、早期に対応して大きなトラブルも防げます。成果物の規定の明確化最後に、開発する製品やサービスの仕様を明確にし、文書化します。プロジェクトマネージャーや設計担当者が、開発するソフトウェアの機能や性能、インターフェースなどを詳細に定義したものを文書に残すだけでも構いません。この際、丁寧に網羅するのではなく、わかりやすくを意識します。誰が見てもわかる状態で開発チーム全体で共有できれば、開発の進行に伴う誤解や齟齬を防げるでしょう。%3Cdiv%20style%3D%22background-color%3A%20%23eee%3B%20border%3A%201px%20solid%20%23ddd%3B%20padding%3A%2020px%3B%20margin%3A%20auto%3B%22%3E%0A%3Ca%20href%3D%22https%3A%2F%2Fn-v-l.co%2Fcontact%3Futm_source%3Dblog%26utm_medium%3Dbanner%26utm_campaign%3Darticle-inside-banner%22%20target%3D%22_blank%22%20rel%3D%22noopener%22%20style%3D%22display%3A%20block%3B%20text-decoration%3A%20none%3B%22%3E%0A%20%20%20%20%3Cimg%20src%3D%22https%3A%2F%2Fstorage.googleapis.com%2Fstudio-cms-assets%2Fprojects%2FmoWvdvrgq6%2Fs-2400x1000_v-frms_webp_d771ec1e-0c46-4bdc-97d1-622fc7e3da55.png%22%20alt%3D%22Job%20X%E3%83%90%E3%83%8A%E3%83%BC%22%20style%3D%22width%3A%20100%25%3B%20height%3A%20auto%3B%22%3E%0A%3C%2Fa%3E%0A%0A%20%3Cp%20style%3D%22color%3A%20%23555%3B%20line-height%3A%201.6%3B%22%3ETechUnit%EF%BC%88%E3%83%86%E3%83%83%E3%82%AF%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88%EF%BC%89%E3%81%AF%E3%80%81%E6%9C%88%E9%A1%8D%E5%88%B6%E3%81%A7%E9%96%8B%E7%99%BA%E6%94%AF%E6%8F%B4%E3%82%92%E8%A1%8C%E3%81%86%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%A7%E3%81%99%E3%80%82%3C%2Fp%3E%0A%20%3Cdiv%0A%20%20%20style%3D%22margin-top%3A%2020px%3B%20padding%3A%200%3Bbackground-color%3A%20%23fff%3B%20margin-bottom%3A%2010px%3B%20padding%3A%2010px%3B%20border-radius%3A%205px%3B%20box-shadow%3A%200%202px%204px%20rgba(0%2C0%2C0%2C0.1)%3B%22%3E%0A%20%20%20%3Cul%20style%3D%22list-style%3A%20none%20!important%3B%20%22%3E%0A%20%20%20%20%20%3Cli%3E%E2%9C%94%20%3Cspan%20style%3D%22color%3A%20red%3B%22%3E%20%E9%96%8B%E7%99%BA%E3%81%8C%E9%80%B2%E3%81%BE%E3%81%AA%E3%81%84%3C%2Fspan%3E%3C%2Fli%3E%0A%20%20%3Cli%3E%E2%9C%94%20%3Cspan%20style%3D%22color%3A%20red%3B%22%3E%20%E8%A6%81%E4%BB%B6%E3%81%8C%E6%B1%BA%E3%81%BE%E3%81%A3%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%81%AE%E3%81%A7%E6%9F%94%E8%BB%9F%E3%81%AB%E9%80%B2%E3%82%81%E3%81%9F%E3%81%84%3C%2Fspan%3E%3C%2Fli%3E%0A%20%20%3Cli%3E%E2%9C%94%20%3Cspan%20style%3D%22color%3A%20red%3B%22%3E%E4%BB%8A%E4%BE%9D%E9%A0%BC%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E9%96%8B%E7%99%BA%E4%BC%9A%E7%A4%BE%E3%81%AB%E4%B8%8D%E6%BA%80%E3%81%8C%E3%81%82%E3%82%8B%0A%3C%2Fspan%3E%3C%2Fli%3E%0A%20%20%20%3C%2Ful%3E%0A%20%3C%2Fdiv%3E%0A%0A%20%3Cp%20style%3D%22color%3A%20%23555%3B%20line-height%3A%201.6%3B%22%3E%0A%20%20%20%3Cspan%20style%3D%22color%3A%20%23007bff%3B%20font-weight%3A%20bold%3B%22%3E%E8%B2%BB%E7%94%A8%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%97%E3%81%AA%E3%81%84%E3%81%94%E7%9B%B8%E8%AB%87%E3%81%AE%E6%AE%B5%E9%9A%8E%E3%81%A7%E3%80%81%E3%82%B3%E3%83%B3%E3%82%B5%E3%83%AB%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%92%E8%A1%8C%E3%81%84%E3%80%81%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%AF%8E%E3%81%AB%E6%9C%80%E9%81%A9%E3%81%AA%E3%83%81%E3%83%BC%E3%83%A0%E3%82%92%E3%81%94%E6%8F%90%E6%A1%88%E3%81%97%E3%81%A6%E3%81%8A%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2Fspan%3E%0A%20%3C%2Fp%3E%0A%3Cp%20style%3D%22color%3A%20%23555%3B%20line-height%3A%201.6%3B%22%3E%0A%E3%83%97%E3%83%A9%E3%83%B3%E3%81%AB%E5%BF%9C%E3%81%98%E3%81%A6%E6%9F%94%E8%BB%9F%E3%81%AA%E9%96%8B%E7%99%BA%E4%BD%93%E5%88%B6%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%82%82%E3%81%A1%E3%82%8D%E3%82%93%E3%80%81%E9%96%8B%E7%99%BA%E7%8A%B6%E6%B3%81%E3%81%AB%E5%BF%9C%E3%81%98%E3%81%9F%E3%83%A1%E3%83%B3%E3%83%90%E3%83%BC%E3%81%AE%E5%A2%97%E6%B8%9B%E3%82%82%E5%8F%AF%E8%83%BD%E3%81%A7%E3%81%99%E3%80%82%3C%2Fp%3E%0A%0A%20%3Cp%20style%3D%22color%3A%20%23555%3B%20line-height%3A%201.6%3B%22%3E%0A%20%20%20%3Cspan%20style%3D%22color%3A%20%23007bff%3B%20font-weight%3A%20bold%3B%22%3E%E7%84%A1%E6%96%99%E7%9B%B8%E8%AB%87%E3%82%82%E6%89%BF%E3%81%A3%E3%81%A6%E3%81%8A%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2Fspan%3E%E3%81%BE%E3%81%9A%E3%81%AF%E3%81%8A%E6%B0%97%E8%BB%BD%E3%81%AB%E3%81%8A%E5%95%8F%E3%81%84%E5%90%88%E3%82%8F%E3%81%9B%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%EF%BC%81%3C%2Fp%3E%0A%20%3Cdiv%20style%3D%22text-align%3A%20center%3B%20margin-top%3A%2030px%3B%20margin-bottom%3A%2020px%22%3E%0A%20%20%20%3Ca%20href%3D%22https%3A%2F%2Fn-v-l.co%2Fcontact%22%0A%20%20%20%20%20target%3D%22_blank%22%20rel%3D%22noopener%22%0A%20%20%20%20%20style%3D%22display%3A%20block%3B%20background-color%3A%20%23ff9d00%3B%20color%3A%20white%3B%20padding%3A%2020px%2020px%3B%20text-decoration%3A%20none%3B%20border-radius%3A%205px%3B%20border%3A%201px%20solid%20%23d67c00%3B%20box-shadow%3A%203px%203px%205px%200px%20rgba(0%2C0%2C0%2C0.3)%3Bwidth%3A50%25%3Bmargin%3A%20auto%3B%22%3E%0A%20%20%20%20%20%E3%81%8A%E5%95%8F%E3%81%84%E5%90%88%E3%82%8F%E3%81%9B%E3%81%AF%E3%81%93%E3%81%A1%E3%82%89%20%20%20%3C%2Fa%3E%0A%20%3C%2Fdiv%3E%0A%3C%2Fdiv%3Eまとめソフトウェア開発は、その複雑性と多岐にわたる要求事項から、失敗のリスクが常に存在します。成功へ導くためには、過去の失敗事例から得られる教訓を活かし、計画段階から細心の注意を払うことが不可欠です。開発プロジェクトを成功に導くためのポイントをまとめると、以下のとおりです。対策説明責任者の明確化プロジェクトごとに明確な責任者を設け、全体の進行管理を徹底する。リアルな納期設定現実的なスケジュールを立て、余裕を持たせた納期を設定する。要件の確定プロジェクト開始前にクライアントとの十分な打ち合わせを行い、要件を具体的かつ詳細に確立する。十分なデータの確保開発に必要なデータを事前に集め、品質を確保する。コミュニケーションの確保開発者とクライアント間の定期的なコミュニケーションを保ち、進捗報告やフィードバックを活用する。成果物の規定の明確化開発する製品やサービスの仕様を明確にし、文書化する。ただ技術的な問題を解決するだけでなく、計画、管理、コミュニケーションの各面で優れた能力が求められるため、この要素をバランス良く管理することが、最終的な成果物の品質を左右するでしょう。ソフトウェア開発の失敗事例に関するFAQシステム開発に必要とされる期間は何か月程度?ソフトウェア開発の期間は、その規模や要件により大きく異なります。小規模な開発であれば、1~3か月程度で完成することもあります。一方、中規模の開発では、3か月から半年程度、大規模な開発では半年以上の期間が必要です。しかし、あくまで目安であり、開発の進行状況や問題点の発生により、納期が遅れることも珍しくありません。ソフトウェア開発が失敗する根本原因・問題点とは?ソフトウェア開発が失敗する根本原因は、開発担当者と依頼者側のコミュニケーション不足や、要件定義の不備などが挙げられます。依頼者側は、自身の要望を具体的に伝えることが求められますが、その一方で、開発担当者側も、依頼者の要望を正確に理解し、それを形にする能力が求められます。また、開発担当者が依頼者や納期をコントロールする術を持たない場合、開発が遅れたり、要望通りの成果物ができあがらないといった問題も生じます。みずほのソフトウェア開発失敗事例とは?みずほ銀行のソフトウェア開発失敗事例は、開発担当者と依頼者の間で起こるトラブルが、社内で起こった典型的な例です。この事例では、管理・経営者層がシステム開発について無理解であったことが原因とされています。年度トラブルの種類2002年4月大規模システム障害2011年3月大規模システム障害1999~2019年システム刷新プロジェクトの遅延2021~2022年連続システム障害この事例から学べることは、ソフトウェア開発におけるコミュニケーションの重要性と、開発担当者のマネジメント能力の必要性です。また、開発を依頼する側としては、自身の要望を具体的に伝え、開発の進捗状況を確認することが重要であるということも再認識させられます。出典:https://xtech.nikkei.com/atcl/nxt/column/18/01972/030300001/