システム開発のトラブルについてこのようなお悩みはありませんか?
「システム開発の予算オーバーを解決したい」
「システム開発のバグや不具合を無くす方法は?」
「システム開発の要件定義の優先順位付けをしたい」
本記事では、システム開発のトラブルを防ぐためのさまざまな方法について解説していきます。
システム開発において要件漏れでの予算オーバーは当たり前?
要件漏れが発生したことが原因となりシステム開発会社から多額の追加費用が必要と言われた結果、予算オーバーしてしまい発注側担当者が青ざめるというお話を聞きますが、そもそも要件漏れが発生しないプロジェクトのほうがむしろ希少なのです。
重大な要件漏れ以外にも、小さな要件漏れはシステム開発において多くの場合で発生してしまうため、特に追加予算が許されないプロジェクトにおいては、予備費として予算を15%上乗せすることをおすすめします。
発注時の概算見積もりの段階でプロジェクトはスタートしますが、限られたスケジュールの中では要件定義をすべて網羅するのは困難ですので、要件定義終了後に改めて正式見積もりを開発会社に提示してもらうことで要件漏れをある程度は防ぐことが可能です。
しかし、この段階でも受入テスト時に要件漏れが発覚するケースがあるため、やはり正式見積もりに予算を15%上乗せしてIT投資予算を確保することが重要になります。
システム開発で追加予算が承認されないとどうなる?
システム開発において要件漏れが起こってしまい追加予算が費用になってしまった場合、予算オーバーで追加予算が承認されなければ、プロジェクトが最悪停止してしまいます。
プロジェクトが停止してしまうと発注側・受注側のどちらの責任かと問われることがありますが、そもそも双方に認識の違いがあるため、どちらかに責任を問うのはナンセンスです。
もちろん、発注者が要求を伝えずにあるものだと思い込んでいた場合や、システム開発会社の仕事が悪質である場合はどちらかの責任になりますが、そのようなケースは多くはありません。
システム開発の要件漏れを防ぐ対処法
システム開発の工程を進めるにあたり、発注側と受注側の認識の相違は多少出てきてしまうため、双方が努力してあゆみよることが大事です。
また、認識を相違せずに書類として残すためにRFP(提案依頼書)を整備することで要件漏れを防ぐことができるだけではなく、発注側と受注側双方の意見を成果物として残すことができます。
システム開発においてバグや不具合を解決する方法
システムに大金をかけてリリースしたが、バグだらけで使えないシステムだったという恐ろしいプロジェクトが存在します。
そもそも、バグやシステムの不具合、要求と違う機能もすべて、バグと確定する発注側に問題があるため、システム開発においてバグや不具合を起こさないためにさまざまな施策が必要になるのです。
システム開発で起こるバグや不具合を分類すると下記のようになります。
- 要件定義誤り、認識の相違や欠如
- 要件定義不完全
- 機能仕様誤り
- 機能仕様不完全
- 表記や記述の間違い
- 設計ロジックミス、処理ミス、処理不足、画面遷移ミス、ユーザビリティミス
- リソース誤り 初期化漏れ、メモリオーバーフロー
- DBやデータ誤り 定義ミス、フォーマットミス、操作ミス
- インターフェース誤り 連携仕様ミス、APIミス
- その他異常系処理、エラーチェック、セキュリティミス
このようにシステム開発のバグや不具合は多岐にわたりますが、システム開発の進め方はある程度の知識と経験が必要となるため、信頼できるコンサルティング会社への支援を得ながらシステムの依頼をすることが重要なのです。
システム開発の失敗例と解決方法
システムがいつまでたっても完成せずに失敗するプロジェクトがあり、開発プロジェクトの7割ほどが失敗するという統計もありますが、なぜシステム開発は失敗することが多いのでしょう?
システム開発が失敗してしまう理由は下記の通りです。
- 追加費用が発生して開発会社ともめる
- 大幅にリリースが遅延していつまでたってもシステムが完成しない
- 要件を検討・承認する人が多くて意見がまとまらない
それぞれの失敗例と解決方法について解説していきます。
1. 追加費用が発生して開発会社ともめる
要件定義と設計開発が終わり、受入テストをする段階になってから発注側が要件定義では、発注側が機能や画面がイメージできなかったという理由から「思っていたシステムと違う!」という状態になることがあります。
このような状態を解決するためには、ITの知識がないクライアントに対して、発注側と受注側の開発会社の間に入って交通整理や翻訳をおこなうことや、ITの専門家やコンサルティング会社を入れることが必要です。
発注側はITの知識がないことで開発会社との要件定義の工程で齟齬が生じますが、検知できずに受入テストやリリースを迎えてしまうことが大きな原因となっているため、専門的な知識が必要になります。
2. 大幅にリリースが遅延していつまでたってもシステムが完成しない
要件定義において、発注側が要件を決められない場合や現行業務を洗い出せない場合は、システム開発に必要な要件定義やテストがいつまでたっても終わらない事例も多々あります。
このような場合は受注側の開発会社が要件定義の要件を整理できないことや要件定義に優先順位を付けられない場合も多いため、要件に優先順位をつけることのできる専門家が必要です。
そもそもシステム開発をスムーズにおこなうためには、「システムの目的をまとめる」。「現状課題を洗い出す」、「優先順位を明確にする」という3つのポイントを正しくおこなう必要があり、これらなくしてはプロジェクトは失敗します。
ですので、例えば第1フェーズで「ここまでの機能をいつリリースする。理由はXXである。」と定め、第2フェーズで、「追加機能をいつリリースする。理由はXXである。」というように、業務に影響がないようなフェーズ分けが大事です。
また、予算についても複数回の予算を確保しますが、あくまで概算見積もりですので概算見積もりの1.5倍は確保するほうが無難になります。
3. 要件を検討・承認する人が多くて意見がまとまらない
意見が多すぎてまとまらない、反対する人が多すぎてスケジュールが遅れるというパターンや、現場のキーマンが会議に参加しないまま仕様を決めてしまいあとから追加機能が必要だったと発覚することもあります。
ですので、要件定義で検討するメンバーは現状の業務の担当者とキーマンのみで会議を開始し、承認を上層部や経営陣が参加する会議を別に設定することが必要です。
要望を出すことはいいことですが、取捨選択が必要であり切り分けができないのであれば無駄な機能をお金と時間をかけて開発したものの使えないシステムになってしまうため、体制図の精査が肝心になります。
システム開発の要件定義の優先順位をつける方法
システム開発を円滑に進めるためには、要件定義の優先順位をつけることが必要ですが、まずはヒアリングを慎重に行わなければなりません。
ヒアリングの内容は下記の通りです。
- 必須の機能要件はどれですか
- 必須の機能要件で優先順位をつけてください
- あれば便利という機能要件はどれですか
- あれば便利という機能要件で優先順位をつけてください
- フェーズをわけるとすれば、第一フェーズ、第二フェーズ以降でどう分類できますか
これらのヒアリングの内容をもとにして発注側は、下記のように分類自体も優先順位を決めておきます。
- 「業務の継続性」が優先順位1位、配点10点
- 「スケジュール」が優先順位2位、配点5点
- 「予算」が優先順位3位、配点3点
- 「品質」が優先順位4位、配点1点
- 点数を集計する際には各要望の機能に点数をつけますが、このときに分類の重みも精査するため分類も記載しておくことが大切です。
このようなロジックで優先順位をつけておけばシステム開発会社も提案からフェーズ分けの見積もりが可能になり要件定義の期間も短縮することができるため、スケジュールも高速化できます。
まとめ
本記事では、システム開発のトラブルを防ぐためのさまざまな方法について解説していきました。
システム開発ではさまざまなトラブルが想定できますが、信頼できるコンサルティング会社の支援を受けながら業務を進めていくことで多くのトラブルを解決することができます。
弊社でもシステム開発についての支援をおこなっているため、まずは一度ご相談ください。