システム開発のプロジェクトを成功に導くためには、適切な計画と設計が不可欠です。その基盤となるのが「上流工程」です。この段階をおろそかにしてしまうと、後々大きな問題に発展する可能性があります。
本記事では、システム開発の上流工程の重要性や、具体的な流れ、起こりうるリスクとその対策などについて、詳しく解説します。
目次
システム開発の上流工程とは
システム開発の成功には、上流工程における適切な計画と設計が不可欠です。ここでは、上流工程の定義や役割、具体的な流れについて詳しく解説します。また、上流工程の不備がもたらすリスクや、成功のためのポイントについても触れていきます。
上流工程は要件定義や設計といった前半フェーズのこと
上流工程とは、システム開発の前半部分の工程を指します。開発を進めていく上での計画や方針を構想・決定し、設計を行うフェーズです。
上流工程で策定した内容がシステムの基盤となるため、このプロセスでしっかりと土台を固めておかないと、続く工程で意図と異なる製作が進められたり、システムが正常に作動できなくなったりするリスクがあります。
その結果、発注者とのトラブルに発展したり、システム開発自体が失敗に終わる可能性もあるため、システム開発成功のカギを握る工程といっても過言ではありません。
上流工程と下流工程の違い
上流工程は、システムの目的や機能、さらには全体像や仕様について設計するという、方針や方法を決定づける役割を担います。
一方、下流工程は上流工程で策定された要件定義にもとづいて、各種設計書に沿ってプログラミングをすすめます。システムの動作や品質の確認も下流工程に含まれます。
それぞれの担当者も、以下のように異なります。
上流工程 | システムエンジニアやプロジェクトマネージャーシステム全体を決定して管理するため大手のシステムインテグレーターが担当する |
下流工程 | プログラマーやテスターシステム開発の一部を担当するので、下請けや関連会社が行う |
システム開発の上流工程の流れ
システム開発における上流工程の流れは、上図のとおりです。それぞれの工程について、詳しく見ていきましょう。
企画(コンサルティング)
まずは、発注者の課題や要求を明確にし、ヒアリング内容にもとづいて、必要となる予算や開発期間をまとめた企画書を作成します。その内容が妥当かどうかを審議し、発注者からの合意を得たらシステム開発をスタートします。
企画段階で詰めが甘かったり認識がずれている場合には、発注者のニーズにマッチせず、結果的に使われないシステムとなってしまうかもしれません。システム開発の根幹となる部分であるため、双方の意図をしっかりすり合わせ、慎重に審議する必要があります。
また、システム開発の見積もりは、2段階見積もりで行うのが一般的です。第1段階目として、企画段階でおおよその見積もりを提示するケースもありますが、この段階の見積もりはあくまで概算であり、設計書の作成を進めていく中で金額が変動する可能性は少なくありません。
企画段階での綿密な検討と明確なコミュニケーションは、プロジェクトを成功に導くために欠かせない要素です。
要件定義
要件定義とは、依頼内容を踏まえて、システムの概要や要件を明確にしていくことです。
この過程では、システムに実装する機能に関する情報である「機能要件」と、性能や使用性、メンテナンス性などの「非機能要件」をそれぞれ洗い出し、予算やスケジュールを踏まえ、要件定義書を作成していきます。
要件定義書の作成に際しては、発注者側があらかじめ要件、すなわち「システム化にあたって求める情報」のリストを作成しておくのが望ましいですが、難しい場合には開発者側で代行しても良いでしょう。
要件定義書は後の設計や開発の大元となるため、発注者の要望と定義書の内容にズレがないか双方で確認し、最終的に発注者の合意を得られたら次のプロセスへ進みます。適切な要件定義は、プロジェクトの方向性を明確にし、後工程での手戻りを防ぐ重要な役割を果たします。
基本設計(外部設計)
基本設計とは、システムの土台となる部分の設計を行うプロセスです。
システムの構造や仕様、画面のデザインや操作性、入出力などユーザーの目に触れる部分の設計を行う工程であることから「外部設計」とも呼ばれます。
基本設計と続く詳細設計は、下流工程の進行効率および最終的なシステムの品質や有用性に大きな影響を及ぼすため、非常に大切なプロセスです。
この段階で、システムの全体像を明確にし、ユーザビリティを考慮した設計を行うことで、使いやすく効果的なシステムの基盤を築くことができます。
詳細設計(内部設計)
詳細設計とは、基本設計で決定した内容にもとづいて、機能を大まかに分割し、システム内部動作やプログラムの構造や処理などを設計していくことです。
ユーザーの目に見えない部分に関わる設計であることから、「内部設計」とも呼ばれます。開発効率の向上とシステムの品質確保に直結する重要な工程です。
詳細設計は実際のプログラミングの指針となり、コーディング作業やシステムの完成度に大きくかかわります。続く下流工程において齟齬のないように進められるよう細部まで綿密に設計し、具体的かつ簡潔な詳細設計書を作成することが大切です。
見積もり
詳細設計が終わったら、2段階見積もりの、第2段階目の見積もりを行います。
概算を提示した第1段階の見積もりに対し、この段階ではシステムの規模や仕様、各設計の内容を踏まえ、専門的な手法を用いて詳細な費用を算出します。
上流工程の最後のプロセスとなるこの見積もりが、開発費用に関する正式な見積もりです。そのため、スケジュールや開発現場の状況も踏まえながら、正確な見積もりを提示してください。適切な見積もりは、プロジェクトの予算管理と顧客との信頼関係構築に不可欠な要素です。
なお、2段階目の見積もりは、詳細設計の前の基本設計後に行うケースも多いです。
システム開発の上流工程の不備が原因で起こりうるリスク
上流工程での不備は、システム開発において様々なリスクを引き起こす可能性があります。
ここでは、上流工程の不備によって起こりうる主なリスクについて詳しく解説します。これらのリスクを認識することで、より慎重かつ効果的な上流工程の実施につながるでしょう。
開発スケジュールが遅れる
上流工程はシステム開発の前半フェーズに位置しています。そのため、「発注者からなかなか要望を聞き出せない」「機能や費用について発注者から合意を得られない」などの理由で遅れが生じると、必然的に後工程でも遅れが生じます。
さらに、上流工程の完了が遅延したにもかかわらず最終的な納期を後ろ倒しできない場合には下流工程の短縮を迫られ、テストが不十分となり、結果的にバグが内在するシステムを納品することになりかねません。
また、システム全体の設計書づくりの役割を担う上流工程において要件定義や設計の曖昧さが原因で不備が生じた場合、途中で修正をしなければならず開発日数が伸びてしまいます。
不備に気づいたのがシステム完成間近だった場合には、最悪の場合もう一度上流工程をやり直さねばならず、納期が大幅に遅延するといったリスクもあります。
開発コストが増大する
当初のスケジュールより開発期間が延びたり、機能の追加や仕様の変更が生じると、開発コストが増大します。
システムの開発費用は原則として工数×システムエンジニアの人件費をもとに算出されるため、機能や仕様の追加や手戻りの発生により工数が増えた場合には、追加のコストが生じます。
企画時の初期見積もりに比べ大幅に開発コストがかさんでしまった場合には、発注者が開発費用を用意できず、プロジェクトそのものが無くなる可能性も否定できません。
このようなコスト増大のリスクを回避するためにも、上流工程での綿密な計画と正確な見積もりが重要となります。
リリース後にシステムトラブルが発生する
システムは開発して終わりではなありません。リリース後、発注者の手にわたり運用されてからが本当のスタートです。
上流工程の段階で運用されるときのことを想定していないと、実際に利用されてからトラブルが起こるおそれがあります。
上流工程での曖昧さや見通し不足は予期せぬバグの発生を引き起こし、トラブルへの対応遅延、ひいては発注者からの信用損失そして取引停止にも繋がりかねないため、綿密な構想・詳細設計が重要です。
システム開発の上流工程で大切なポイント
上流工程を成功させるには、いくつかの重要なポイントがあります。ここでは、上流工程を効果的に進めるために意識しておきたい、2つのポイントを見ていきましょう。
発注者とコミュニケーションを徹底する
上流工程では、発注者とのコミュニケーションをしっかりと行い、発注者が抱える課題や要望を引き出すことが大事です。
発注者が求めていることをそのままシステム化するのではなく、「システムによってどんなことを実現したいのか」「既存システムではどのようなことをしているのか」「どんな点を改善したいのか」といった希望を突き詰め、設計書に落とし込みましょう。
また、上流工程では発注者とだけでなく、開発者同士のコミュニケーションも大切です。
発注者とのやりとりや各種設計の内容、開発の進捗状況などをプロジェクトメンバー間で共有し、認識をすり合わせることで、予期せぬ仕様変更の発生や、納期の遅延、余分なコストの発生といったトラブルを回避できます。
発注者、プロジェクトメンバーとコミュニケーションをとる場合にも、曖昧な表現を避け、具体的かつ相手に伝わる表現を意識し、疑問がある場合には確認を徹底するようにしましょう。
実現性があるかを検討する
発注者からのヒアリングを基に設計書に落とし込む際には、仕様や機能として実現性があるかを検討しなければなりません。
いくら丁寧なヒアリングを実施し発注者と認識のすり合わせを行っても、実現が難しい要望や仕様を安請け合いして受注してしまうと、結果としてプロジェクトの失敗や大きなトラブルに発展するリスクが高まります。
そのため、上流工程の担当者は、下流工程、そしてその先の運用段階まで見据え、実現可能な要望なのか、自社に整合性のある案件なのかを精査し、検討してください。
仮に実現が難しい、または自社で請け負うのが難しいと判断した場合には、はっきりと発注者に伝えましょう。上流工程では、システム開発を成功させるためにも、プロジェクトの窓口として発注者に伝えづらいことを敢えて伝えることも大切な役割です。
まとめ
システム開発の上流工程は、プロジェクトの成功を左右する重要な段階です。
上流工程での不備は、スケジュールの遅延、コストの増大、リリース後のトラブルなど、様々なリスクを引き起こす可能性があります。これらのリスクを回避するためには、発注者とのコミュニケーションの徹底と実現性の慎重な検討が不可欠です。
relationでは、ICT戦略の企画提案、デザイン設計、システム構築までワンストップでご提供しています。開発規模にかかわらず、お客様ごとに専属チームを編成し、開発から運用までサポートいたします。
システム開発でお悩みの方、効率的かつ効果的な開発をお求めの方は、relationにご相談ください。