システム開発の現場で耳にすることの多い上流工程という言葉。システム開発における企画や設計段階を指すものですが、具体的にどのような業務が発生するのか、その線引きが曖昧なケースも少なくありません。
また、上流工程の手続きを曖昧なまま進めてしまうと、後になって大きなトラブルをもたらす可能性もあるものです。この記事では、そんな上流工程とはどんな業務が発生するプロセスなのかについて、内容や詳しいスキルとともに解説します。
上流工程とは
上流工程は、簡単に言えばシステム開発全体を捉えた際の前半部分を指す工程です。
システム開発はいきなりコードを書いて、すぐに完成というわけには行きません。はじめに企画を構想し、設計を書きます。その後設計や要件に基づきコーディングして、テストを実施した上でシステムの導入は完了です。
上流工程とは、そんな導入過程における企画や設計部分を担うプロセスで、下流工程の業務にも多大な影響を与えます。
上流工程の段階では、開発するシステムのニーズが丁寧に反映された企画や設計を実現しなければなりません。実際の河川を参考にしても、上流で作られたフローが下流でいきなり変容することはないものです。
上流工程は、そのプロジェクトのの完成度を大きく左右する、重要性の高いプロセスと言えるでしょう。
上流工程の4つのプロセス
上流工程は大きく分けて、
- システム企画・要求分析
- 要件定義
- 基本設計
- 詳細設計
という4つのプロセスを順番にこなしていくことで下流工程にバトンタッチを促します。それぞれのプロセスでどのような業務が発生するのか、順に見ていきましょう。
システム企画・要求分析
システムを開発するためには、そもそも「なぜそのシステムを開発するのか」「どんなシステムが欲しいのか」という要求を企画として整理する必要があります。
システムを必要とする背景や、どんな機能を求めているのかといった要求事項を洗い出して、企画書に落とし込みます。システム開発会社によっては、要求事項を丁寧にクライアントから聞き出し、分析を行いながら固めていくこともサービスに含まれるものです。
実際にシステムを開発するにあたっては、実装までにかかる時間や予算の都合から、必ずしも全ての要求が盛り込まれるとは限りません。
とはいえシステム企画を通じてクライアントはどんなシステムが欲しいのか、どれくらいのシステムなら導入ができそうなのかを整理するきっかけにもなり得ます。上流の上流とも呼ばれるシステム企画のプロセスこそ、丁寧に取り組んでおけば後の工程をスムーズに進められるでしょう。
要件定義
要件定義は、企画段階で洗い出した要望を整理し、具体的に開発するシステムのイメージを固めていく工程です。
どんな問題を解決するためのシステムなのか、目的達成のためにどのような機能でユーザーをサポートするのかを、開発者と依頼者がコミュニケーションをとりながらまとめていきます。
この段階で作成された要件定義書を元に、システムの骨組みとなる基本設計を作成します。要件定義に書かれていることがそのプロジェクトの全てとなり、要件に書かれていない機能などは盛り込まれないと考えなければなりません。
そのため、要件定義の段階で必ず欲しい機能や仕様は確実に明文化するなど、丁寧に仕上げることが求められます。
また、要件定義の段階でシステムの開発にかかる具体的な予算や、納品までのスケジュールも決まるのが特徴です。どれくらいのボリュームのシステムになるのかで費用や開発期間が決まるので、必要な機能とそうでない機能を明らかにしておく必要もあるでしょう。
基本設計
基本設計は、システムのベースとなる部分の設計を要件定義書をもとに実施するプロセスです。
基本設計は外部設計と呼ばれることもあります。システムの外側、つまりユーザーの目に見える部分の設計は、この段階で実施するのが特徴です。いわゆるユーザーインターフェースの設計や、ユーザビリティの設計、帳票のデザインなどが含まれます。
なお、上流工程はこの基本設計までを指す言葉であるケースも多いものです。この後に続く詳細設計は、下流工程に含まれることがあるのも知っておきましょう。
詳細設計
詳細設計は内部設計とも呼ばれる工程です。基本設計の段階で作成された納品物に基づき、実用性のあるシステムへと仕上げていきます。
基本設計ではシステムの外側の部分を固めていく作業が数多く発生していました。一方の詳細設計は、ユーザーの目の届かない、システムの中身を作っていくのが特徴です。具体的にどんなプログラムを実装して動かしていくのかということを、詳細設計のステップで考え、設計します。
詳細設計のプロセスを通じて、実際にシステムを組み上げていくプログラマーに具体的な指示を送ることができるわけです。
下流工程との違い
以上が上流工程における主な業務の内容ですが、これ以降のプロセス、つまり下流工程ではどのような業務が発生するのでしょうか。下流工程は上流工程とは異なり、あらかじめ用意された設計書に基づき、確実にシステムを組み上げる正確さが問われるプロセスです。上流工程のように細かくコミュニケーションをとったり、意思決定が求められたりする機会が少ないのが特徴です。
下流工程におけるプロセスは、基本的には
- コーディング
- テスト
- 実装・納品
の3ステップです。
上流工程で作られた設計を元に、コードを書くことで形にしていきます。コーディングが完了したら、デバッグを行い正しく動作するか、エラーが発生しないかを確認します。
正しく動作することがテスト段階を通じて確認できたら、本番環境への実装、納品を行い、プロジェクトは完了です。
そのため、上流工程と下流工程は別の組織が担当することも珍しくありません。上流工程は一次取引先が担当し、下流工程は二次受けの企業が対応するような流れです。
質の低い上流工程が招くリスク
下流工程は上流工程のような意思決定権や仕様変更などの手続きが発生しないぶん、上流工程の品質がシステムの品質を大きく左右します。上流工程を適切な委託先やエンジニアに任せることができないと、以下のようなリスクを被る可能性があります。
コスト増加やスケジュールの遅延
上流工程の段階で正しくプロセスをこなすことができていないと、コストの増加やスケジュール遅延を招く恐れがあります。
要件定義の段階で正しく必要な機能が盛り込まれていなかったり、逆に不要な機能が含まれていたりすることで、下流から上流への差し戻しが発生するリスクがあるためです。このような事態に発展すると、想定よりも多くの開発コストがかかったり、日数を必要としたりする事態に発展しかねません。
上流工程の業務は上流の段階で完結しておけるよう、丁寧な対応が必要です。
満足度の低いシステムの開発
十分に企画や設計が練られていないと、例えシステム納品までに問題がなかったとしても、仕上がりに満足がいかない場合があります。
システムを現場に導入してから仕様に不便を感じたり、欲しかった機能が含まれていなかったりすることに気づくというのは、避けるべき事態です。
上流工程を通じて、実際の使用シーンを丁寧に想定し満足度の高い仕上がりを求めなければなりません。
その他予期しないトラブルの発生
システムの具体的な動作や機能については、下流工程の範囲で責任を負うことが一般的です。ただ、よくある動作不良や想定していない処理の発生については、上流の段階で想定・把握できることもあります。
下流工程の業務を円滑にし、質の高いシステムを納品するためには、上流の設計段階で回避できるよう促すことも重要です。
トラブルを回避して上流工程を成功に導くためのポイント
上流工程を高いレベルでこなし、下流工程におけるトラブルを回避したり、質の高いシステムを納品する上では、以下のポイントを押さえるよう意識しましょう。
現場を想定したコミュニケーションを意識する
システム開発におけるトラブル発生の主要な原因は、不十分なコミュニケーションです。開発者がクライアントから十分に要望を聞き取ることができていなかったり、逆に不要な機能を盛り込んでいたりするといった事態です。
このような問題を回避するには、システム導入先の現場の業務を踏まえた設計を行うことです。実際の業務ベースでシステムの要件を固めることで、過不足をなくせます。
実現性を重視する
あまりにもクライアントの要望が多すぎたり、予算や技術力と乖離したりしていることは、健全な開発を阻害する恐れがあります。クライアントの要求をそのまま受け止めるのではなく、要求の奥にある真のニーズを汲み取り、制約の範囲内で機能を実装していくことが重要です。
ドキュメントの標準化を行う
フィルムサイネージには高輝度のLEDが使用されているため、電気料金も考慮する必要があります。特に、大型のフィルムサイネージを長時間使用する場合、電気代の増加が経済的な負担となる可能性があります。
この問題に対処するためには、エネルギー効率の高いモデルを選ぶことが一つの方法です。
また、適切な使用時間の設定や、昼間は自然光を活用してフィルムサイネージをオフにするなどの工夫も考えられます。さらに、太陽光発電などの再生可能エネルギーを併用することで、電力消費を削減し、環境への配慮にもつながります。
まとめ
この記事では、上流工程とはどのような業務が発生するのか、下流工程とどのような違いがあるのかについて解説しました。上流工程を正しく実行することは、開発するシステムの仕上がりと大きく関係しているため、非常に重要です。
上流工程における業務内容や想定されるリスクを把握し、質の高いシステムへと仕上げられるよう環境を整えましょう。