MENU

03-6222-9506

受付時間 平日 : 9:00〜18:00(日本語対応)

Contactお問い合わせ
   

ホーム

     

ブログ

システム開発の上流工程とは?下流工程との違いやポイント・SEの必要スキルを解説

   

システム開発の上流工程とは?下流工程との違いやポイント・SEの必要スキルを解説

サムネイル画像

システム開発における上流工程とは?

システム開発の上流工程とは、システム開発の流れにおける実践前の段階のことです。つまり、システムの企画から詳細設計にあたる工程を指します。

上流工程はシステムの基盤になる部分ともいえるでしょう。この段階の作業で手を抜いた場合、開発が失敗する傾向があるため注意してください。上流工程では問題がなくても、下流工程にフェーズが移った後で問題が起こるケースもあります。例えば、機能に仕様変更が入っても反映できているか分からない、作成する画面の項目名や桁数の判別を行えないといったトラブルが挙げられます。

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

前述したとおり、上流工程とはシステム開発における前半の段階です。一方、下流工程とは上流工程に続く段階となります。

下流工程では上流工程で作成した設計に従って、システムの構築を行い、完成までの各種作業を行います。

大規模な企業の場合、下流行程を担当する社員は開発チームを行っている人たちと接する機会がほとんどで、顧客と実際に接する機会がないケースも珍しくありません。

 

上流工程管理の重要性とは

 

上流工程のSEは開発における初期の段階を担当します。そのため、開発においてミスがあった場合など、システムの不具合にもかかわる問題になるため注意が求められています。

上流工程では要件定義や設計、予算作成といった開発の基盤となる部分を行うことが一般的です。この部分でミスをしてしまうと、実際の作業が成り立たなくなることもあります。

顧客の要求をきちんと分析し、システムに落とし込めるように正確な設計が求められます。

 

システム設計における上流工程の内容と流れ

システム設計における上流工程は要件定義、アーキテクチャ設計、機能設計、内部設計の順で行います。

システム設計における上流工程の業務内容と流れを見ていきましょう。

①要件定義

システム開発と同様、必要な機能と性能をきちんと定義するうえで要件定義を行う必要があります。要件定義ではクライアントの要求や課題を解決に導けるよう、必要な機能の検討を行います。

要件定義においてまとめた情報は設計段階の資料、もしくはルールとして参照します。これらは下流工程の開発を行う際や、テストケースを作成する際にも参考になる情報源です。プロジェクトにおいて一貫して利用するためには正確に作成しなければなりません。

②アーキテクチャ設計

システム全体の構成を決定する設計をアーキテクチャ設計といいます。アーキテクチャにはソフトウェアのみならず、システムの実行環境、あるいはハードウェアも含みます。どの技術を使用すべきなのか検討を行うのもアーキテクチャ設計の段階における重要な業務です。

アーキテクチャでテストケースや、開発環境を決定することも多いです。開発状況に合わせて追加の作業や修正も行いますが、下流工程の方針の基盤になる不可欠ともいえる設計です。

③機能設計

機能設計は機能を実装するうえで具体性のある方法を決める設計全般をいいます。データの管理方法やプログラミングなど、開発をスムーズに行ううえでの重要な行程です。

その他にも、機能設計にはユーザーファーストの設計もあります。例として、ボタンや操作画面、リンクの配置などのシステムを快適に使うための設計が挙げられます。

④内部設計

内部設計とはシステム内部の実装についての設計です。作業を行う範囲にはシステムに存在する全処理が含まれています。機能間で連携を行うことはもちろん、書き出し速度やデータの送受信まで含まれます。

また、プロジェクトや開発現場ごとに内部設計の扱いが異なります。内部設計では機能の細部まで設計するため、機能設計の段階であわせて行われることも多いです。そのため、開発粒度の事前確認後、設計書の作成が一般的です。

 

システム開発における上流工程の内容と流れ

システム開発における上流工程はシステム企画、要件定義、基本設計、詳細設計、見積作成の順で行います。

システム開発における上流工程の業務内容と流れを見ていきましょう。

①システム企画

システム企画では企業が掲げているIT戦略に基づいて、関係部署で方針に適した情報化の企画書の作成を行います。

システム企画は完全に内製化を行った社内開発を除き、ほとんどが開発をアウトソース化します。委託先である開発ベンダー側から見ると要件の源泉になる部分です。

②要件定義

要件定義とはシステム開発を推進するにあたって要望を整理する工程です。要件定義で整理するポイントは次の3つです。

・顧客が欲しているシステムはどのようなものか
・システムで実現したいことは何か
・実装したい機能/求めている性能は

要件の定義は顧客側で行うことが一般的です。しかし、顧客がシステム化するうえで必要な情報の一覧を作成できない場合は、開発ベンダーが代わりに行うこともあります。

また、要件定義の段階で顧客の要求について実現性の検討も行います。工程の後半における作業を円滑に進めるためにも、トレーサビリティマトリクスの作成がおすすめです。トレーサビリティマトリクスとは、要件がどの工程でどういった成果物に落とし込まれていくのかを可視化した資料です。

③基本設計

基本設計ではシステムの土台となる基本的仕様をまとめます。例えば、業務フローや前工程で作成した要求の一覧に基づき、システム化を行う部分の必要機能の一覧化や、入出力についての項目です。

他システムとの連携項目がある場合、他システムインタフェースも入出力項目に含まれます。後の工程に要件がきちんと反映されるよう、各要件がどの画面、あるいはどの帳票に反映されるのか関係性のチェックを行います。

④詳細設計

詳細設計では基本設計で作成した設計をベースにして、機能の実現性を考慮してプログラム単位の設計書を作成します。

例えば、商品名の入力で検索できるECサイトを作成したい場合、Webサイトのトップページに加えて、検索結果ページの画面や商品の在庫を管理するデータベースが必要です。

そこで、一覧や画面イメージ、あるいはデータベースのテーブル基本設計を作成します。詳細設計の段階では、トップページで検索語句を入力後、検索ボタンをクリックした時のプログラムの動きを設計できるようにします。

⑤見積作成

システム開発の概要が決定したら、予算と開発期間を計算して見積もりを出します。クライアントから同意を得られたら契約は成立です。下流工程での開発業務が始まります。

また、見積もり作成は上流工程における最終段階の業務です。スケジュール、開発現場の状況などの判断も必要ですので正確に行わなければなりません。

 

システム開発での上流工程のポイント

 

システム開発における上流工程のポイントを見ていきましょう。

クライアントとのコミュニケーション

クライアントはシステム開発について専門的知識を持たないことも多いです。クライアントは思うように説明できないケースも少なくないことを念頭に置き、認識の齟齬が生じないようにヒアリングを行わなければなりません。

開発側とクライアント側の理解に違いがある場合、開発の後戻りが必要になりコストや業務負担の増大が予想されます。また、仕様変更が必要な場合、納期の遅れの原因にもなります。

クライアントとのコミュニケーションはプロジェクト成功とトラブル回避のためにも不可欠なフェーズです。

各項目でのテスト

システム開発の上流工程では下記の3つのテストを行います。

1.要件定義⇔システムテスト
システムテストで機能要件や非機能要件に着目したテストを行うことで、顧客の要望に合ったシステムであるのか確認できます。

また、要件定義では顧客の業務に従った要望がきちんと出し切れているか点検しなければなりません。

2.基本設計⇔結合テスト
結合テストで入出力項目や他システム連携項目、画面表示に着目してテストを行うことで、基本設計に従ってシステムが完成しているか確認できます。

基本設計では業務フローから落とし込まれた必要画面や、他システムとの連携項目に欠如がないか点検しなければなりません。

3.詳細設計⇔単体テスト
単体テストでは単一機能として要件から落とし込まれた内容が組み込まれているかテストします。

また、詳細設計において要件の内容がトレースされているか、適切なエラーハンドリングが想定されているかなども点検します。

設計の標準化

設計フェーズは上流工程において重要なフェーズです。しかし、近年では、設計書の作成で共通の基準はありませんので、作成を行うシステムエンジニアごとに作成方法や表記、仕様は異なります。

こうした状況は属人化を招く原因となるため注意しましょう。内容が分かるのは作成者のみとなってしまうと、業務が一人に依存してしまうことになります。その結果、プロジェクトの進行に遅れが生じることもあります。

システム開発のプロジェクトをスムーズに進めていくためには、設計書の標準化や、各種設計書の作成方法、品質の統一が重要なポイントです。

実現性

クライアントはシステム開発についての知識がないことも多く、実現性のない要望を伝えてくることもあるでしょう。この場合、クライアントとコミュニケーションをきめ細やかに取っていても、要求された要件に従えないこともあります。

上流工程を担当する場合、依頼を受け付ける前にクライアントの要求は実現可能なのかきちんと検討しなければなりません。実現できそうにない場合、クライアントには理由とともに難しい旨を伝える必要があります。

 

上流工程でよくある失敗と課題

上流工程でよくある失敗やリスク・課題を見ていきましょう。

顧客からの要望を受けきれていない

顧客からの要望を受けきれていないケースとして2つのパターンがよくあります。

・顧客の要望を誤って理解している
・要件に変更が加わったものの、コントロールができていない

顧客の要望を誤って理解している場合、完成したシステムを受け取った顧客からクレームが入ることもあります。また、顧客との信頼関係にもかかわる問題ですので気をつけましょう。

その他にも、要件に変更があったものの対応しきれないというケースもあります。

これらはトラブルを防ぐための用意ができていないために起こることも少なくありません。管理台帳を作成する、顧客に繰り返し確認するなどの工夫が必要です。

顧客の要望を受け入れすぎている

顧客の要望を受け入れすぎることもトラブルにつながります。繰り返しになりますが、顧客のなかにはシステム開発の知識がなく、開発の実現性を考慮せずに希望のみを伝えてくる人もいます。

こうした顧客の場合、全ての要望を聞き入れてしまうと、想定していたシステムから乖離して立ち行かなくなってしまうでしょう。

変更点のコントロールや管理不足

変更点が追加された場合、従来の範囲に関係することなのか、それとも追加の要望であるのかといった影響範囲を明確にする必要があります。

顧客から変更点の追加を伝えられた場合、手戻りの必要性や料金、納期などの相談が再度必要になるケースも多いです。

また、要件が明確になっていない状態で推進している場合は、プロジェクトを一旦ストップすることも重要です。

不具合の発生による納期の遅れ

上流工程でミスが生じた場合、このフェーズで修正などを行い解決しておく必要があります。不具合を解決しないと、下流工程にも受け継がれることになります。結果として、修正が必要になり納期が遅れることにもなりかねません。

上流工程での不備や遅れはプロジェクト全体に影響を与えるため、期限を守りつつ、正確に作業しなければなりません。

見積もりの設定ミスによる開発コストの増大

見積もりでミスがあると、開発コストの増大につながります。クライアントと予算の上限について必ず話し合い、設計は予算に余裕がある範囲で行うことが重要です。

また、見積もりにおいて詰めが甘いと、思ってもいなかった機能を追加しなければならなくなるケースもあります。それに伴い、予定外の修正も多々出てくるでしょう。

リリース後のトラブル

システムのリリース後、トラブルが発生するケースも少なくありません。クライアントが仕様にない動作を行ったためにミスが生じるケースもありますが、間違った処理が行われた状態で納品していたことが原因で起こるトラブルも多いです。

開発が原因のトラブルは、下流工程での作業不備によるとは言い切れません。上流工程で想定し、防止できるケースも多いです。

 

上流工程でのトラブルを防ぐためにSEに求められるスキルとは

上流工程を担当するSEはトラブルを防ぐために、業務に直結する技術や専門知識以外にも求められるものがあります。

ここでは、上流工程を担当するSEに求められるスキルを見ていきましょう。

ヒアリングスキル

クライアントのニーズを汲み取ったシステムを開発するには、クライアントの要望を引き出すためのヒアリングスキルが重要です。要件の洗い出しを行い、課題を解決できるような設計に結びつけます。

ヒアリングスキルがない場合、クライアントが想定している内容とは異なるシステムを開発してしまうことにもなりかねません。

また、クライアントのなかには要望を上手く伝えられない人もいるため、クライアントの立場になってニーズを憶測する力も必要です。

マネジメントスキル

下流工程のメンバーと上手く連携し、開発を進めていかなければなりません。

また、特に、年齢を重ねるとメンバー全体をまとめるマネジメントスキルが重要になります。スケジュール調整やタスク管理の他、開発がスムーズに進むよう指揮を執る必要があります。

設計スキル

設計を行う際は下流工程をよく考慮します。実現可能な道筋と目標の設定はもちろんですが、ミスが起こらないよう設計することも重要です。

設計の段階で不備があるとプロジェクト全体が上手くいかず、手戻りなどが必要になるので注意してください。

 

ハイブリッドテクノロジーズのシステム開発

ハイブリッドテクノロジーズでは上流工程で起きやすい問題への対策を徹底しております。
開発前は日本人PMがクライアント様と要求や機能のすり合わせを密に行い、開発チームマネージャーが見積もることで、見積もりの精度を担保します。また企画チームがリリース後の運用を考慮した提案をすることで、リリース後の問題発生を抑制します。
開発中はアジャイルスクラムに則り、スプリントごとに成果物や開発予定物の確認を行うことで予算、機能、品質、スケジュールなどのコントロールを行います。
弊社には開発前から開発後まで、クライアント様に寄り添う体勢が整っています。

 

<ハイブリッドテクノロジーズが選ばれる理由>

弊社ではクライアント企業様及びエンドユーザー様の声を聞き、UIUXを意識したビジネスデザインを行なっております。 テーマを決めて分析し、仮説を立ててビジネスデザインを行い、プロトタイピング、検証、フィードバックを受け、再度分析から始める。 この一連の流れを、アジャイルスクラム開発に精通した500名以上のエンジニアが光速で回していくことにより、最速でより良いものを実現していきます。 ハイブリッドテクノロジーズには市場の声を現実にするための仕組みとメンバーが揃っています。

 

まとめ

システム開発の上流工程は開発における基盤ともいえる部分です。フローの流れにおいては設計や予算案の作成など、実際の開発に入る前の段階を指します。

上流工程でミスがあったり、あいまいな設計しかできなかったりすると、下流工程でミスやトラブルが発生することもあるので注意しましょう。

上流工程を担当するSEには設計する力だけでなく、顧客と円滑にコミュニケーションを取る力や顧客の要望を正確に理解する力、さらにはマネジメント力も求められます。

  • この記事を書いた人
  • この記事の監修者
執筆者画像

窪田 陽介

はじめまして!ハイブリッドテクノロジーズの窪田です。 当社は、次世代テクノロジー開発で世界をリードするベトナム人エンジニア700名(日系企業最大規模)を有し、ビジネスデザインを日本国内で、開発をベトナムで行う「ハイブリッド型開発」により、EC、モバイルアプリケーション、HRシステム、ポータルサイトなど長期運用が必要とされるサービス提供を行う企業のシステム設計、開発、運用業務に加え、デジタルトランスフォーメーション(DX)推進によるお客様の事業成功をコミットしています。

監修者画像

窪田 陽介

はじめまして!ハイブリッドテクノロジーズの窪田です。 当社は、次世代テクノロジー開発で世界をリードするベトナム人エンジニア700名(日系企業最大規模)を有し、ビジネスデザインを日本国内で、開発をベトナムで行う「ハイブリッド型開発」により、EC、モバイルアプリケーション、HRシステム、ポータルサイトなど長期運用が必要とされるサービス提供を行う企業のシステム設計、開発、運用業務に加え、デジタルトランスフォーメーション(DX)推進によるお客様の事業成功をコミットしています。

Download

ダウンロード

ダウンロードバナー画像

この資料をダウンロード

ご相談、資料請求はお気軽にお問合せください。

   Contactお問い合わせ