上流工程とは?システム開発で起こり得るリスクと管理の重要性
システム開発工程において「上流工程」「下流工程」という言葉を耳にする機会があると思います。これは、システム開発全体の流れを大きく二分すると、上流工程と下流工程に分けられることを指しています。
この記事では、システム開発における上流工程の概要と工程の流れをご紹介しながら、上流工程での設計作業に際し想定されるリスクや課題、管理の重要性についてもご説明します。
上流工程とは
システム開発全体の流れを分けると、以下の6工程に分類されます。
- 要求分析
- 要件定義
- 外部設計
- 内部設計
- コーディング
- テスト
上流工程とは、上記6工程のうち前半である1から3、つまり要求分析、要件定義、外部・機能設計までの3工程を指しています。
下流工程との違い
上流工程と下流工程は 、システム開発を実施する順序を表していると考えると良いでしょう。
上流工程は、作りたいシステムの方針や設計図を作成し、下流工程に渡すまでの段階です。それを踏まえて実際にシステムを構築し、製品として完成させることが下流工程での作業です。
上流工程の流れ
ここからは、上流工程の3つの流れについて、作業内容などをさらに詳しくご紹介します。それぞれどのような業務を行っているのか具体的に知りましょう。
1.要求分析
何を目的として新たにシステムを作り、システムをどのように役立てたいのか、というシステムに対する要求を明確にするための、最初のステップです。
「こういうことを新しくできるようにしたい」、「使用中の既存システムのここをもっと良くしたい」などの要求を洗い出し、どのようなシステムが求められているのかをドキュメントに盛り込み、可視化します。
この工程では、クライアントと開発側が意思疎通を行い、開発側はクライアントのニーズをかみ砕いて理解する必要があります。また、最終的に作成されたドキュメントの内容について、双方が合意できることが大切です。
2.要件定義
1の要求分析で明確にされた、システムに対する要望をさらに仕組みとして実現できるよう具体化していく工程です。たとえば、1において「既存システムは処理に時間がかかりすぎるので高速化したい」という要求が明確になっていたとします。その場合、この工程では実際に既存システムの処理速度を測定し、改善の必要性を洗い出します。その上で、具体的に「新システムではこれぐらい高速化を図る(既存システムの2分の1とするなど)」と決定し、要件定義書に記載します。
このとき、システム開発にかけられる予算との兼ね合いも考慮する必要があります。その上で、必要性が明確になった要件のみが要件定義書に記載されます。この要件定義書の内容についても、クライアントと開発側の合意があることが重要です。
3.外部設計
2の要件定義で具体化され決定したシステムの機能に関して、さらに具体的に決定します。最終的には、完成したそれらの設計を下流工程に流してシステムの作成をすぐ実行できる状態にします。
【関連サービス】上流工程支援ツール XupperⅡ
上流工程のリスクと課題
上流工程で行う作業には、トラブルが発生するリスクもあります。ここからは、上流工程の作業不備により起こり得るリスクとして想定されるものを紹介します。
手戻りの発生と納期遅れ
上流工程での作業不備が、下流工程での開発作業中に設計の不具合が見つかり、修正が必要となる手戻りにつながります。この手戻りによって上流工程での再開発が必要となった場合、納期遅れが生じることもあります。
また上流工程での作業中も、クライアントとの合意が得られないなどで作業の遅れが発生し、下流工程での開発作業期間が押すことで納期が遅れるリスクも発生します。
コストの増大につながる
上流工程では、予算との兼ね合いを考慮しながら設計を行う必要があります。見積もりの設定が甘くなると、想定していない機能開発や追加の開発などで開発コストが増大する可能性もあります。
運用後にトラブルを引き起こす
開発後、実際にクライアントがシステム利用を開始してから運用が始まります。上流工程において運用フェーズを考慮していないことによるトラブル発生・発生後の対応や対応遅延といったトラブルも上流工程の不備によって引き起こるリスクといえます。
上流工程のトラブル防止に必要なスキル
上流工程での設計を不備なく完了させ、スムーズな開発作業につなげるためには、上流工程の担当者としてどのようなスキルが求められるのでしょうか。
クライアントと綿密なヒアリングを行う能力
クライアントの要望を可能な範囲内で最大限に実現するには、具体的な要件を的確に引き出す、ヒアリング能力が大切です。「現状の不満点」や、「既存システムで行っている作業工程」などを具体的にヒアリングし、正しい認識で整理を行って先方に提案していきましょう。
設計内容を可能な限り具体化するスキル
綿密にヒアリングを行って、どのようなシステムを作っていくか明確にし、クライアントとの合意を得ます。それを踏まえ具体的に基本設計を進めていくことになるため、上流工程で設計したことは、その後の作業や下流工程で行う開発の流れを左右します。
完成させる仕様書には、プログラミングやコーディングに関する具体的な指示までが必要です。それが欠けていると、下流工程からの手戻りが発生し工期を圧迫します。
場合によっては、上流工程との認識齟齬による開発でクライアントでは利用できないシステムが出来上がってしまう可能性もあります。
上流工程での設計がクライアントの要望通りにできていなければ、要望通りの成果物が完成しない事態につながります。設計の段階でも、可能な限りクライアントと綿密な意思疎通を行って、先方の要望に合致する基本設計に努めましょう。
上流工程管理の重要性
上流工程で発生した微細なミスが、下流工程での作業や出来上がったシステムの運用に大きな影響を及ぼしてしまうことがあります。上流工程で行う作業は、システム開発プロジェクト自体の在り方に関わる重要なものと考える必要があるでしょう。
システム開発を円滑かつ安定的に進めるためには、クライアントがどのようなシステムを求めているか明確かつ具体的に把握していなければなりません。初期段階から下流工程での開発作業開始まで、クライアントの合意を取りながら設計を進めていくことが重要です。
JBCCの上流工程設計手法
JBCCが提供する「Xupper(クロスアッパー)Ⅱ」は、システム開発における設計情報を可視化し、開発側とクライアントの意思疎通をスムーズに行えるよう支援します。業務体系(業務フローなど)と、データ体系(エンティティ関連図、ディクショナリなど)の双方を一元管理し、クライアントも最新の設計情報を常時把握可能に出来ます。
XupperⅡは、上流工程担当者の経験やノウハウに依存せずに、工程 遂行を支援するテンプレートと言えます。経験豊富な専門家の力に頼らなくても、不備や抜け漏れのない設計を行える仕組みで、情報システム部門の働き方改革をサポートします。
まとめ
上流工程で作られたシステムの設計図が、下流工程での作業や成果物自体のクオリティなど、業務と製品の品質全体に影響するため、システム開発における上流工程はプロジェクトの重要な計画立案を担っている工程といえます。
システム開発において、上流工程の経験が豊富で、多くのノウハウを持ち合わせたスタッフがいることは強みですが、そのスタッフ頼みになることで作業の属人化が生じて設計の品質にばらつきが出ることは避けたいものです。
システム開発における業務改善と品質向上を両立してこそ、本来の意味での働き方改革が達成できるといえます。業務とシステムの一元的と可視化により上流工程の品質が向上し、開発側とクライアントのコミュニケーションがスムーズになります。働きやすい作業環境と的確なシステム設計の実現をぜひご検討ください。
企業のIT活用をトータルサービスで全国各地よりサポートします。
JBCC株式会社は、クラウド・セキュリティ・超高速開発を中心に、システムの設計から構築・運用までを一貫して手掛けるITサービス企業です。DXを最速で実現させ、変革を支援するために、技術と熱い想いで、お客様と共に挑みます。