上流工程は、システム開発の要件定義から計画立案までを行うプロセスであり、その後のプログラミング開発など下流工程に大きな影響を与えます。
上流工程をおろそかにすると、開発や納品後の運用フェーズでトラブルが発生する可能性が高くなります。
今回は、上流工程の概要やリスク、上流工程でのトラブルを防ぐために必要なスキルについてご紹介します。
目次
初めてプロジェクト担当者になった方向け
プロが教える「IT基礎知識・用語集」プレゼント
上流工程とは?
上流工程とは、システム開発・設計において最初に行う初期の段階のことです。
いくつかの要件に分けることができ、主に含まれるのは「要件定義」「機能定義」「構成管理」「計画立案」などの工程です。要件定義では、クライアントが求めているシステムの内容をヒアリングし、要件としてまとめます。機能定義で要件を具体的な機能として決定し、構成管理では定義した機能を提供できるシステム構成や構造を管理します。計画立案は、制作物のスケジュールの全行程を計画する工程です。
システム設計までが上流工程、プログラム開発以降を下流工程とするのが一般的です。効率的に短期間で開発が完了できるかどうかは、上流工程によって左右されるといっても過言ではありません。上流工程には、設計物の品質や方向性を決める重要な役割があるのです。
下流工程では何を行う?
下流工程では、どのような作業を行うのでしょうか。下流工程を理解することで、より上流工程の重要さが理解できます。
下流工程は、上流工程で決められた仕様や機能、プログラミング言語を活用してシステム開発や実際の製造を行う段階です。名称の由来は、ソフトウェア開発モデルの一つである「ウォーターフォールモデル」から来ており、その名の通り、滝の如く上流から下流へ流れるように一直線にシステム開発が進んでいくことを表現しています。
下流工程に含まれる主な要件には、「実装(コーディング)」「テスト」「導入」などがあります。実装(コーディング)では、定められた機能・プログラミング言語通りに開発を行い、テストでは完成した機能が想定通りに実際に動いてレスポンスを返すかどうかを確認します。導入は、最終的に本番環境へリリースし、クライアントの環境で実際に動作するのかを確認する工程です。
上流工程で定義された内容を作り込み、その通りに動作するのかを下流工程でテストします。そのため、下流工程まで進んだプロジェクトは機能そのものの修正が難しくなります。万が一、下流工程で機能や構成の変更を行えば、「他機能と整合性が取れない」「クライアントが必要な機能が提供されていない」という問題が発生する可能性があるからです。
それだけ上流工程は重要な役割を担っているということです。
上流工程のリスクと課題
ITの分野では、これまで手作業で行っていた多くの工程がシステム化されており、システムの大規模化、複雑化に伴ってトラブルの発生数も増大しています。重要な工程だからこそ、確認を怠るとプロジェクトに大きな問題が発生します。
●上流工程の作業不備が引き起こすトラブル
上流工程の作業不備によって起こるトラブルは、下流工程に行くほど深刻になる場合があります。上流工程の不備によって引き起こされるトラブルの一例を見てみましょう。
<工期の遅れ>
「クライアントからのヒアリングが完了しない」「仕様がクライアントと合意できない」など上流工程で遅れが生じると、下流工程に大きな影響が発生します。工期が遅れているにもかかわらず納期を延長できない場合、下流工程の期間を十分に確保できず、バグが大量に内存するシステムを納品してしまうリスクがあります。バグが内存していると、運用フェーズなるなどしてでさらに大きなトラブルへとつながる可能性もあります。
また、下流工程で未然にトラブルに気づけたとしても、それがシステム全体に影響のある部分だった場合、上流工程をもう一度やり直さなければならなくなります。そうなると、その時点で開発が止まり、工期が短くなるなどして納期に大きな影響を与えるリスクもあります。
<開発コストの増大>
見積もりの設定が甘くなると、想定していない機能開発や不可能な仕様が発見されたりして、開発コストが増大するリスクがあります。その場合、追加の開発が発生し、それに伴う開発コストが用意できないなどのトラブルが生じて、開発プロジェクト自体が頓挫してしまうおそれもあり得ます。
<運用後のシステムトラブル>
システムは、開発が終わったら「完了」ではありません。開発後、実際にクライアントが利用し始めてから運用がスタートします。上流工程において運用フェーズを考慮していないことによるトラブルの発生、発生後の対応遅延、コミュニケーションエラーといったトラブルも上流工程の不備が引き起こすリスクといえます。
●課題
上流工程におけるトラブルの原因のほとんどは、クライアント側とのコミュニケーション不足によって発生します。例えば、クライアントが1日100回以上もオペレーションするシステムにもかかわらず、セキュリティ強化のために1オペレーションごとにパスワードの入力を求めるシステムは、クライアントが本来求めている要件とは異なるはずです。
そのため、上流工程では、システムを発注するクライアント側とシステムを開発する側の協調が不可欠なのです。
上流工程のトラブル防止に必要なスキル
上流工程のトラブルを未然に防ぐためには、どんな点に気をつければ良いのでしょうか。トラブル防止に必要なスキルを解説します。
●クライアントの要望を正確に引き出す
上流工程で最も重要なことは、クライアントの要望を正しく引き出すことです。クライアントからのヒアリング内容をそのまま設計に組み込むのではなく、本当にクライアントが求めているシステムのイメージを考えることが大切です。そのため、ヒアリングは形式的な内容だけではなく、「どんな実作業をしているのか」「どのような点に不満があるのか」といった具体的な要望を聞き出し、整理することが必要です。
●具体的な基本設計
ヒアリングした内容からシステムのイメージを確立したら、具体的な基本設計に落とし込んでいきます。上流工程で決めた基本設計は、その後の上流工程作業や下流工程の指針となります。例えば、仕様書に細かいサーバー要件やプログラミング言語の指定がなかったために、下流工程独自の判断で開発した結果、最終的にクライアントの本番サーバーではプログラミング言語が利用できないといったトラブルも想定できます。
基本設計にズレがあると、クライアントが求めるシステムとは異なるものになってしまうため、基本設計に関しても事前にクライアントの合意を得るようにしましょう。
上流工程がシステム開発の安定的な推進のカギ
上流工程はシステム開発プロジェクトの重要な計画立案を担っています。
システムの品質を左右する重要な役割があり、その後の下流工程や運用フェーズすべてに影響する工程です。
上流工程の小さなミスが、その後の下流工程で大きなトラブルを引き起こす要因となる可能性もあります。
システム開発を安定して進めるために、クライアントと十分にコミュニケーションを取り、本当に求める要件を汲み取ることが大切です。
システム開発の最適な発注先をスムーズに見つける方法
システム開発会社選びでお困りではありませんか?
日本最大級のシステム開発会社ポータルサイト「発注ナビ」は、実績豊富なエキスパートが貴社に寄り添った最適な開発会社選びを徹底的にサポートいたします。
ご紹介実績:22,000件(2024年10月現在)
外注先探しはビジネスの今後を左右する重要な任務です。しかし、
「なにを基準に探せば良いのか分からない…。」
「自社にあった外注先ってどこだろう…?」
「費用感が不安…。」
などなど、疑問や悩みが尽きない事が多いです。
発注ナビは、貴社の悩みに寄り添い、最適な外注探し選びのベストパートナーです。
本記事に掲載するシステム会社以外にも、最適な開発会社がご紹介可能です!
ご相談からご紹介までは完全無料。
まずはお気軽に、ご相談ください。 →詳しくはこちら
初めてプロジェクト担当者になった方向け
プロが教える「IT基礎知識・用語集」プレゼント
■システム開発に関連する記事
システム開発の成功を左右する「要件定義」とは?必要な進め方のコツ
機能要件とは?システムの品質向上にかかわる非機能要件との違い