上流工程とは 4つのプロセスと下流工程、おろそかにした場合のリスクも解説

上流工程とは 4つのプロセスと下流工程、おろそかにした場合のリスクも解説
システムやソフトウェアの開発プロセスにおける初期段階、「上流工程」。この記事では、上流工程内の主要な4つのプロセス「企画」、「要求定義」、「要件定義」、「外部設計(基本設計)」の概要と、その後に続く「下流工程」との違いなどを解説します。上流工程で行うべきポイントや、この工程をおろそかにした場合のリスクもあわせて紹介しますので、プロジェクト成功のための知識として、ご活用ください。この記事は、デザインワン・ジャパン DX事業本部でシステム・アプリ開発に携わる泉川学が作成しました。

目次

上流工程とは 下流工程との違い

「上流工程」とは、システム開発の流れにおける前半のフェーズのこと。企画や要求定義、要件定義、外部設計などの工程を総称して指し、システム開発をする上での方針や必要とする機能(画面・帳票など)を決定していきます。ここではシステムの全体像から細部の仕様まで、「どのようなシステムを作るのか」を明確にする必要があります。 

一方、下流工程は、上流工程で決まった内容を実際にシステム化していくプロセス。システム開発の流れにおける後半部分を指します。作業としては、コーディングや、プログラムに不具合がないかを確認するためのテストなどの実施が含まれます。

 つまり、上流工程あっての下流工程と言えるでしょう。そのため、上流工程は、システム開発の基礎となるプロセスであり、このプロセスのアウトプットである外部設計の仕様があいまいになっていると、上流工程で決めた仕様と異なるシステムが下流工程で製作されてしまったり、またシステムトラブル発生の元となるリスクがあります。その結果、システム開発自体が失敗に終わってしまいかねないため、上流工程はシステム構築において非常に重要なプロセスと言えます。

上流工程 主要な4つのプロセス

ここでは、上流工程の主要なプロセスとして、実現したいシステムの開発目的・方針を決定る「企画」、企画を実現するために必要な機能やニーズをを発注側にヒアリングし、発注側と開発側の企業ですりあわせていく「要求定義」、開発企業側で実装する機能や仕様などを定める「要件定義」、画面や帳票などの外見やデザイン・操作性、使い勝手に影響する部分を設計する「外部設計(基本設計)」の4つを解説していきます。

 

企画

「企画」は、実現したいシステムの内容を検討し、計画するプロセスです。システム開発の方向性を決めます。「このシステムを開発する目的は何か」、「自社の仕事にとって、このシステムはどのようなメリットがあるのか」、「このシステムを開発することで、どの程度のコストがかかり収益が見込めるのか」などといった、開発の意義を明確にしていくフェーズです。

事業の根幹に関わる部分となるため、開発企業頼みにせず依頼する発注企業側で決定することが大切です。このプロセスのアウトプットが明確になっていないと、システム開発が完了しても使われないシステムとなってしまう懸念があるため、発注企業で十分に検討することをおすすめします。

 

要求定義

「要件定義」は、開発したいシステムについて、「何をどうしたいか」を明確にするプロセスです。ここでは、発注企業が開発企業と打ち合わせしながら、実装する機能要件や仕様を、認識をすり合わせながら決めていきます。開発企業は発注企業側の要望を「要件定義書」としてまとめ、この後のプロセスはこの要件定義書に沿って進めていくことが一般的です。そのため、発注側の企業が、あらかじめ要件定義を作成=要件を明確にまとめておき、開発側の企業に共有できる形を作っておけば、かなりスムーズに次のプロセスに入っていくことが可能です。逆に、ここが明確になっていないと、修正が何度も発生して開発スケジュールの遅延、最終的な開発費用が当初の想定よりも超過するなどの問題につながってしまいますので、非常に重要な工程です。

 

要件定義

発注企業からの要求定義を踏まえて、実装する機能や仕様などを開発企業が検討を担当するフェーズです。具体的には、必要な機能や非機能要件・予算や開発スケジュールなどをまとめていきます。

 

外部設計(基本設計)

「外部設計」は、基本設計とも呼ばれることがある、UI(ユーザーインターフェース)の設計のことです。外部設計では、画面・帳票の外見やデザインなど、操作性、使い勝手に影響する部分を設計していきます。

要件定義した内容をもとに機能や仕様などを設計していきますが、「外部」という言葉が表すように、システムの外側であるユーザーの目に触れる部分や操作する部分を主に設計していくプロセスです。

 なお、この後の工程として「内部設計(詳細設計)」がありますが、外部設計までが上流工程と捉えられるケースが多いようです。

外部設計がユーザーの利便性などを重視した設計であるのに対して、内部設計は、ユーザーが直接的に見たり操作したりすることのない、機能や動作の「中身」に関する設計を行います。システム開発を実際に担うプログラマーが実際にプログラミングするための設計、と言えるでしょう。

 

上流工程は徹底的に考えるべき!おろそかにした場合のリスク 

上流工程をおろそかにすると、続いて行う下流工程で何度も手戻りが発生してスケジュールが遅れてしまったり、想定外のコストがかかってしまう可能性があります。懸念されるリスクを具体的に解説します。

 

機能追加や仕様変更による開発スケジュールの遅延

上流工程は、システム開発の「設計図づくり」と捉えることもできます。設計図があいまいであればあるほど、開発途中で軌道修正をしなければならない事態に陥ってしまうケースが散見されます。作り直しや修正が発生すれば、その分スケジュールは遅延してしまうので注意が必要です。

 

想定外の開発コストの発生

開発途中で機能追加や仕様変更が発生すると、スケジュールが遅れるだけでなく、開発コストがかさむことにもつながります。開発費は基本的に、システムエンジニアの人件費×工数で算出されるからです。工数がかさむほど、エンジニアを拘束する時間が増えるので、追加費用が発生します。

 ただし、一定期間エンジニアを確保して準委任契約にて開発を進める「ラボ型開発」であれば、追加費用の発生を抑えることが可能です。

詳しくは、ラボ型開発・ラボ契約とは メリデメや請負型との違いを図解で紹介していますので、参考にしてみてください。

 

リリース後の運用の不便さ

システムは、開発が完了し、リリースした後からが本番と言えます。リリースしたはいいものの、運用するためにとてつもない人件費がかかる、といったことは避けたいですよね。

 そのような事態を回避するには、やはり企画の段階で「このシステムが自社のビジネスにどう寄与するのか」を徹底的に考えなければなりません。例えば、ローンチ後も、そのシステムの規模を拡大させていくのか否かなどによって、運用の方法は変わってきます。

運用コストは、中長期的に発生するコスト。リリース後の運用も想定した上で、企画・要求定義し、開発を進めるようにしましょう。


上流工程とは まとめ

システム開発会社に発注する場合、各プロセスで行うことを細かく理解する必要はないかもしれません。しかし、上流工程は、発注企業が実現したい「思い」を形にする部分。どのような目的のためにシステムを作りたいのかを自社で徹底的に計画、検討することが、開発後の運用や失敗しないシステム開発につながるでしょう。

 

アプリ・システム開発するなら実績豊富な当社へ

デザインワン・ジャパンは、アプリ・システム開発の実績が豊富なベトナムのダナンとフエに開発拠点を持つ日本の東証スタンダード上場企業です。御社とベトナムの開発チームとの間にはブリッジSEをアサインするため、まるで日本のIT企業に発注しているかのようにコミュニケーションもスムーズ。コストと品質のバランスが取れた開発が特徴です。IT人材のリソース確保にお悩みの企業様や、国内企業に委託するよりも費用を抑えたい企業様におすすめです。

事例はこちらの資料で紹介しています。詳しくはこちらの無料ダウンロード資料でご覧ください。


お見積りはこちらから、お気軽にお問い合わせください。

contact お気軽にご連絡下さい。