システム開発作業の工程には、上流工程と下流工程があることをご存知でしょうか。どちらの工程も非常に重要な役割をもちます。本記事ではその中の上流工程に焦点を合わせ、仕事内容や流れや、よくある失敗例などをわかりやすくご紹介します。上流工程についての知見を深めるため、ぜひ参考にしてください。
エンジニアが担当する「上流工程」とは?
上流工程とはシステム開発作業の工程の中のひとつで、主に作業の初期段階のフェーズを指します。
どのような製品を作成するかの企画を固め、それの実現のために必要な作業やリソースを確認して洗い出す作業がメインとなります。具体的な流れについては次章で後述しています。
上流工程は、基礎的な骨組みとなるフェーズです。ここでしっかり基礎を固めておかないと、作業途中での修正や出戻りの対応に追われる可能性が上がってしまいます。
したがって、プロジェクトの成功は上流工程にあるといっても大げさではありません。
一般的な上流工程の流れ
この章では、上流工程の一般的な流れについて見ていきます。
システム企画
まずシステム開発会社は、クライアントの要望やゴールを明確にヒアリングします。それを社内に持ち帰り、必要な機能や人員、期間や予算を綿密に練ります。
また練った企画が的確で、確実に実現が可能かどうかを詰めて議論し、見通しが立ったら開発作業を開始します。
この企画での方向性がズレていたり不備があったりすると、後になってからプロジェクトに影響が出て、工数が増えてしまうため、綿密な話し合いが必要とされます。
要件定義
システム開発会社は、社内で企画を練ったのち、それを発注したクライアントに伝えなければなりません。ここでお互いの認識が合致していないと、完成後に認識のアンマッチが発覚してしまうリスクもあるためです。
そのためシステム開発会社は、以下のことも具体的に伝える必要があります。
- どの機能がどこの工程でどう実装されるのか。
- 要求に変更が生じた場合、どの部分で影響が出てくるのか
お互いの認識のズレがもっともリスクが大きく、かつよくある話です。発注したクライアント側としても、不明点は理解するまで質問しましょう。
基本設計
要件定義で共有した内容に沿って、プロジェクトの全体の概要や、実装する機能、実装の方法などを設計します。ネットワークの構成や、データベースのテーブルの定義・ER図といったものを作成し、発注クライアントへの共有を行います。
詳細設計
主に以下のような工程の詳細を設計します。
- 各機能の実装処理の手順
- 全体のフローチャート図の作成
- 画面や帳票の詳細の確認
前述した基本設計との大きな違いは、クライアントに見える部分かどうか、です。
基本設計はクライアントと開発会社が一緒になって確認を行うことが一般的です。一方の詳細設計の場合は、クライアントへの確認をとくに意識せず、あくまで開発会社だけが開発作業に必要な工程を設計します。
「上流工程」と「下流工程」の違い
冒頭で、システム開発作業の工程には上流工程と下流工程がある、と前述しました。この章では、双方の違いをそれぞれ見ていきます。
上流工程
上流工程は、開発作業工程の初期段階のフェーズを指します。クライアントの要望やゴールを明確にし、それに必要なリソースを選定し、スケジュールを練って、クライアントに共有するのが主な流れです。
クライアントと認識のズレのないようヒアリングを行い、プロジェクトの方向性を決定していきます。そのため、初期段階にしてプロジェクト成功のカギを握るフェーズとも呼ばれます。
下流工程との大きな違いは、クライアントとの直接的なコミュニケーションが発生することが挙げられます。そのため下流工程以上にIT業界での経験やスキル、豊富な知識が明暗を分けます。
下流工程
下流工程は、開発作業工程の中期~終盤の工程を指します。上流工程で完成した設計書に沿って、プログラミングを行って実装し、さまざまなケースに応じたテストを繰り返します。
上流工程との大きな違いは、考えるというより、作る作業がメインになることです。上流工程に比べて経験やスキルを必要としないものの、プログラミングやその他周辺知識がなければ、務まらない仕事でもあります。
上流工程のよくある失敗パターン
上流工程を行ううえで、よくある失敗パターンをご紹介します。
納期がギリギリ or 間に合わない
上流工程にて、特定の機能の実装難易度や手間を理解できてないケースです。ゆえに適切なスケジューリングができず、納期に間に合わない事態が発生します。
実装の難易度や実現のビジョンがわからない場合、無理に応答せずいったん開発作業に持ち帰り、相談することも大切です。
開発コストが割に合わない
クライアントから求められているシステムの規模感や実装レベルを理解できていないケースです。かんたんな実装だと思い込んで安い金額を提示するものの、実はかなりの工数を要する実装だと後で発覚することもあります。
上流工程を担当する方なら、さまざまな機能の実装難易度、必要な予算を瞬時に算出する知識や経験は備えておくべきです。
納品後のトラブルが相次ぐ
システムを納品したものの、納品後にトラブルが相次ぐケースです。
原因の大半は、設計書とは異なる実装をしていることが挙げられます。一見、下流工程エンジニアによる不備と思われますが、設計書の記載や伝達にミスがある可能性も否めません。
システムに不具合が生じると、クライアントの業務は大きく滞ります。あらゆるパターンを想定し、テストを繰り返すことが大切です。
エンジニアの上流工程で必須となるスキル
この章では、上流工程で必須となるスキルについて見ていきます。
設計や開発における幅広い知識
上流工程をこなすうえで、設計や開発の幅広いスキルは必須です。クライアントを前にしてあらゆることがわからず、慌てているようではとても務まりません。
一般的に上流工程を担当するのは、下流工程に深く携わった経験のある人です。直にクライアントとコミュニケーションをとる役割ですので、下流工程以上に豊富な経験や知識が問われます。
現状把握およびスケジュール管理スキル
現状把握、およびスケジュール管理スキルも必須です。的確なスケジューリングができないと、納期に間に合わないプロジェクトが始まってしまうリスクがあります。
いくら開発会社に人員があって納期に間に合いそうでも、全員が必ずしも手が空いている状態とは限りません。現状をしっかり把握して今動ける人を選定し、的確な納期を設定できるスケジュール管理能力は必須です。
コミュニケーションスキル
コミュニケーションスキルなくては、上流工程は務まりません。クライアントの要望を汲み取り、それをもれなく開発会社に伝える必要があるためです。
話を聞くこと、伝えること、どちらも正確にできないとどこかで認識のズレが生じます。両者の仲介として、人並み以上にコミュニケーション能力が求められます。
以上でご紹介したスキルを持った人材にシステム開発を依頼したい、という企業様はぜひ弊社へご相談ください。しつこい営業電話などは一切いたしませんので、お気軽にお問合せください。経験豊富なスタッフがご相談に乗らせていただきます。