システム開発【2018年最新版】要件定義から開発依頼の基本の流れまで!失敗しないシステム開発とは

システム開発【2018年最新版】要件定義から開発依頼の基本の流れまで!失敗しないシステム開発とは

更新日:2018年05月16日 | 公開日:2018年05月16日

「システム開発をベンダーに依頼しよう」と考えたとき、ユーザーである企業側の担当者が、システム開発の詳細について知っておくことは非常に重要です。
システム開発のアウトソーシングを依頼する場合には、一定の知識を持っていなければ思わぬ失敗につながるケースもあります。

今回は、システム開発とはどのようなものか、知っておきたい基礎知識や、開発を依頼する場合の基本まで、失敗しないシステム開発を実現するための知見を網羅的にまとめていきます。

システム開発の基礎知識

まずはシステム開発の基礎知識について、詳しく見ていきましょう。

システム開発とは?

システム開発とは、そもそもどのようなものでしょうか。
簡潔に「システム開発」についての工程をまとめると、以下の3つのステップが挙げられます。

① 既存業務の仕組みから、新しい業務の仕組みを考える
② 新しい業務の仕組みに合わせ、コンピューターで制御可能なシステムを作る
③ システムを利用して業務を効率化し、業務の効果を上げる


つまり、システム開発とは一定の業務を効率化・最適化し、新しい業務の仕組みを実現させることが最大の目的であると言えます。

もともと、システムには「方法」「手順」といった意味があり、企業にとってのシステム開発とは「新しい業務の仕組みづくり」を意味するものです。
現在では、多くの企業が自社の業務管理在庫管理といった社内業務などを、ソフトウェアプログラムによってシステム化しています。

システム開発の業種にはどんなものがある?

システム開発と一言で言っても、その業種には様々な種類があります。
システム開発における業種の種類を、以下にまとめてみました。

・システムインテグレーター

システムインテグレーターとは、システムを企画・立案・開発し、納品するまでの業務を担当している企業を意味します。外注先・ベンダーなど、システム開発のアウトソーシング先となっている会社は、このシステムインテグレーターに分類されます。
ひと昔前までは、システム開発といえば、社内でシステムエンジニアを抱えて、開発および運用管理を行うのが主流でした。
しかし、社内のみで人員を賄うにはコスト面・規模面などで限界が出てくるため、システムインテグレーターにシステム開発や運用管理をアウトソーシングする流れが生まれてきました。なお、システムインテグレーターに所属するシステムエンジニアの業種の種類は「情報通信業」「情報サービス業」にあたります。

・社内システムエンジニア

一方、社内システムエンジニアは、システムインテグレーターから派遣されたエンジニア達をとりまとめて指揮する役割を持ちます。システム開発のプロジェクトチームを動かして、ディレクションを行ってシステム開発を完成まで導き、運用管理なども行います。

企業に所属して社内でシステム開発を行うシステムエンジニアの業種の種類として代表的なものは、「製造業」「金融業」「小売業」「農業」などが挙げられます。

システム開発の「オープン系」「汎用系」「WEB系」の違いとは?

システム開発の技術の種類では、大きく分けて「オープン系」「汎用系」「WEB系」の3種類が挙げられます。

・オープン系のシステム開発とは?

オープン系のシステム開発とは、技術的な仕様(ソース)が公開されているOS、サーバー、周辺機器(ルータ、スイッチなど)、各種ソフトウェアを組み合わせて行うシステム開発のことです。
UNIXWindowsベースのワークステーションPC業務用システムを開発する場合に用いられ、プログラム言語としては主に、C、C++、Java、Visual Basicなどが利用されます。
汎用系のシステムと比較されることが多く、汎用系システムほどに高速化の必要がなく、各企業に合わせた柔軟なシステム開発が必要な場合に用いられることが多い技術手法です。

・汎用系のシステム開発とは?

汎用コンピューターホストコンピューターと呼ばれるハードウェアを利用して開発されるものを、汎用系のシステム開発と呼びます。
汎用系のシステム開発では、ホストコンピューターなどのハードウェアに特化した技術が必要となるため、オープン系システムのようにシステム開発の仕様変更などに柔軟に対応するのが難しいのが特徴となります。
なお、汎用系のシステムではソフトウェア開発がマシン語に近い言語(COBOL、PL/1など)にコンパイルされるため、オープン系システムよりも高速な処理ができます。

・WEB系のシステム開発とは?

WEB系のシステム開発では、文字通りインターネット上にシステムを作るという特性上、インターネット接続を前提としたシステム開発を行うのが特徴となっています。
WEB系のシステム開発の言語では、Java、PHP、Ruby、Python、Perlなどが用いられることが多く、ホームページ上にテキスト・画像・動画などの情報を載せたり、動的な処理を行ったりする場合に利用します。

SNS、掲示板サイト、通販サイト(EC)などが、WEB系のシステムによって情報処理され、世の中に広くサービス提供を行っています。

システム開発とアプリ開発の違いとは?

システム開発とアプリ開発の違いについても知っておきましょう。

・WEBシステムとは

WEBシステムの開発とは、前出のとおりユーザー企業における「新しい業務の仕組みづくり」であり、特にWEBシステムの場合は、ネットワーク上の通信を介して動作する業務の仕組みを意味します。
つまり、ユーザー企業向けのWEBシステムを開発する場合には、ユーザー企業の社内業務の把握や、新しい業務の仕組みをシステムに落とし込む仕様の決定、的確なプロセスの整理などが重要となります。

・WEBアプリとは

WEBアプリとは、WEBアプリケーションの略です。
種類としては、ポータルサイトおよび検索サイト(Yahoo!、Googleなど)、通販サイトおよびECサイト(Amazon、楽天など)、SNS(Twitter、Facebook、Instagramなど)、掲示板サイト、ブログ、オークションサイトなどが挙げられます。

WEBアプリ開発では、主にインターネットを介してユーザーにサービスを提供するため、サービスコンセプトの設計などが大切になってきます。
また、ユーザビリティを考えるために、5W1HをイメージしたWEBアプリ開発を行うことも需要です。

システム開発の技術のトレンドとは?

システム開発技術の提供の仕方としては、「受注開発」「パッケージソフトウェア(PP)」の2つが挙げられますが、現在、システム開発技術の提供方法のトレンドとしては「パッケージソフトウェア(PP)」が増加しています。

「受注開発」では、ユーザーとなる企業からの依頼を受け、個々の企業の要件に合ったシステムを開発します。

一方、「パッケージソフトウェア(PP)」では不特定多数のユーザー企業に共通する業務用システムを提供することができるため、汎用性が高く、需要も伸びています

初心者ならば知っておきたい!システム開発の基礎と入門

ここでは、システム開発入門のための基礎知識や、システム開発を学ぶための方法をお伝えしていきます。
ここから登場するシステム開発用語についても、どれもメジャーなものばかりですから、英語表記も含めて暗記しておくと良いでしょう。

システム開発の関係者と役割

システム開発を行う場合の主な関係者とその役割については、以下のとおりとなります。

システム開発の
関係者
役割
ユーザー企業 新しい業務のイメージを発案して、システム開発の外注先に要望を出し、コンピューターシステムで実現したい新しい仕組みに対する期待を伝える
SE(システムエンジニア) ユーザー企業から得たイメージをもとに、業務の仕組み全体を設計し、企業とコンピュータシステムとの連携方法を整理する
プログラマー SEが整理した設計内容をもとに、コンピュータシステムに対して期待されている動作を、プログラミングによって実現する
PM(プロジェクトマネージャ) ユーザー企業から得たイメージをもとに、システム開発の計画を立てて、SEやプログラマーに指示を出し、企業の業務刷新の開発進捗およびスケジュールの全体をコントロールする

システム開発のPMO(プロジェクトマネジメントオフィス)の役割とは?

システム開発の関係者の中で、開発全体を牽引するプロジェクトマネージャという存在がいることは前出しましたが、実際のシステム開発の流れの中では、プロジェクトマネージャ一1人に責任が集中しないようにPMO(プロジェクトマネジメントオフィス)を設置します。

・システム開発プロジェクトの可視化
・システム開発におけるコミュニケーションの促進
・システム開発の意思決定の支援
・システム開発の完成までの正確なディレクション


これらのサポートを提供するのがPMOの役割であり、円滑にシステム開発プロジェクトをディレクションし、完成に向けて進めていくために重要な仕組みとなります。

PMOのチームメンバーには、「PMOアドミニストレーター(=事務担当者)」、「PMOエキスパート(=データ分析担当者)」、「PMOマネージャ(=マネジメント担当者)」などが在籍し、プロジェクトを支えます。

システム開発の営業の役割とは?

システム開発の花形はエンジニアであり、PMOが実質的な開発の中核を成すことはもちろんですが、営業も縁の下の力持ちとして重要な役割を担っています。
特に、クライアントであるユーザー企業との渉外には営業が当たるケースもあるため、システム開発に関わる営業は、コミュニケーションの円滑化についての役割も大きいです。
システム開発に関わる営業には、「パッケージ営業(=パッケージソフトウェアの販売)」、「受託開発営業(=企業毎のシステム開発)」、「SES営業(=システムエンジニアリングサービスの提供)」などの種類があります。

システム開発の基礎的な手順の流れ

システム開発における基礎的な手順の流れは、大きくわけて3つあります。
詳細は後出しますが、ここではシステム開発の3ステップで何が行われるのかを簡単にまとめます。

①業務の仕組みを考えて仕様をまとめる

ユーザー企業が、システム化を検討する新しい業務の仕組みを考え、その要望をまとめます。
そこで得た要望をもとに、プロジェクトマネージャがSEに指示を出し、プロセスモデル、データモデルと呼ばれるモデルを専用の書式で表現して、設計図を作っていきます。
設計に先立つ検討工程を「超上流工程」、設計の工程を「上流工程」と呼びます。

②新しい業務の仕組みに合わせてコンピューターシステムを作る

コンピューターシステムの仕様をまとめた設計図をもとにして、プログラマーが参加して実際にコンピューターシステムを作っていきます。
プロジェクトマネージャ、SE、プログラマーそれぞれの技量が問われる工程となります。

ここで重要なのは、極力、システムの仕様変更が起こらないようにすることです。
「ほんの少しの変更」が、コンピューターシステムのプログラムでは全体に大きく影響する場合があり、大幅にコストがかかったり、スケジュールが遅れるケースもあったりするため、「作りながら考える」といったことが起こらないよう、事前の要件洗い出しが重要です。

③システムを導入して業務の効率化を実現する

最終的に、出来上がったシステムをユーザー企業の業務へ実際に導入して、正確かつ効率的に機能するかを確認する必要があります。
導入前の動作テストを入念に行い、導入後にもユーザー企業側で設計どおりに作られているかの検品および検収に時間をかけます。

そして、導入後には実際に業務が効率化され、どの程度の運用にかかるコストが削減されたのかといった具体的な導入効果を検証します。
ここまでが、システム開発における基礎的な手順の流れです。

※①〜③までの工程を図解すると、以下のようになります。

システム開発と保守の違いとは?

システム開発が完了したら、保守を行う必要があります。

システム開発は文字通り、新しいシステムを開発する業務ですが、保守は開発したシステムを維持するための業務です。主な保守の業務としては以下が挙げられます。

・システム障害への対応

たとえば、WEBシステムであればアクセス過多によるサーバーの不具合および接続障害が起こったり、第三者の不正アクセスによるサービス利用の支障が発生したりといったケースが考えられます。

これらのシステム障害に対し、障害そのものの発見、原因の検証および特定、解決から再発防止に至るまでを対応するのが、保守の重要な役割です。

・システムのメンテナンス作業

システム障害は、システムを運用するにおいては本来起きてはならない出来事です。
深刻なシステム障害そのものが起こらないように、日常的にシステムメンテナンスを行うのも保守の大切な仕事です。

システム開発と運用の違いとは?

システム開発が完了したシステムを実際に利用し、日常的な取り扱いを行うのが運用です。

システムの運用保守は似ていますが、一般的に、システム運用は基本的な業務遂行を支え、サービスを提供することを意味します。

システム運用で行う主な業務は、以下があります。

・マシンの電源を管理
・ソフトウェアの起動および停止
・データのバックアップや出入力
・システムの監視

 など

なお、実際のシステム担当者は運用と保守を兼任する場合も多く、中には、システム開発、運用、システム障害の復旧などの保守、メンテナンスによる障害対策などのすべての業務を担当するエンジニアもいます。

システム開発をブランコで表したユニークな例

システム開発では、前出の関係者の役割でお伝えしたとおり、システム開発を発注する側のユーザー企業であるクライアントの要望を聞いて、システム開発会社がそれを正しく理解し、システムを構築する必要があります。

しかし、発注する側のユーザー企業が当初説明していた要件がそもそも完成型からずれていたために、システム開発会社が作ったものが期待通りに完成しないというケースが往々にしてあります。

以下の風刺画は、ユーザー企業自身が、求めているシステム開発のゴールが想定できていない場合に、システム開発で起きる齟齬をブランコで表しているユニークな例です。

このように、当初のユーザー企業が求めているシステムについての説明がそもそもずれている場合、様々な人員がそれぞれに解釈を誤って、まったく思い通りにシステムが完成しないという最悪の結果になるケースがあります。

失敗しないシステム開発を行うためには、

・関係者の意思疎通を明確なものとする
・システム開発会社がクライアントの要望を聞いて、要望そのものが正しいか検証する
・システム開発への着手前の段階である「超上流工程」を綿密に行う
・明確なシステム開発のゴール設定が決まった段階でシステム構築を行う


といったことが重要となります。

システム開発について初心者が学ぶならば本も参考に

初心者がシステム開発について知識を深めたい場合には、専門の参考書などの本を参考にすることも大切です。

インターネット上で調べることのできる情報はすぐに知りたいことがわかるために便利ですが、本に記載されている知識の場合は綿密に検証されており、最も信頼できる情報となるため、システム開発に関わる人間として基礎を作るならば、本の購入も検討してください。
ジャンルとしては、システム開発技術そのものに関わる本のほか、システムの開発紛争のハンドブック、システム開発の受諾契約の教科書なども参考にすると良いでしょう。
なお、システム開発の技術は英語圏からの発信が最先端であるケースもあるため、英語が堪能な方は海外のシステム開発の新書なども読むと、さらに知識が深まります。

システム開発の依頼先を探している担当者の方は、ぜひともアイミツコンシェルジュまでご相談ください。
アイミツなら、システム開発会社の一括見積もりが無料で可能です。

システム開発の基本的な流れを企画~完成まで徹底解剖!

システム開発

システム開発に関する基礎的な概要は、前出の項目で大まかにご理解いただけたと思います。
ここでは、システム開発の企画から完成までに至る全体の流れを、フェーズごとに詳しく説明していきます。

システム開発の企画

システム開発は「企画」からスタートします。
どんなフェーズなのかを見ていきましょう。

初期の段階で最も重要!システム開発の要件定義

企画段階で最も重要となる工程が、システム開発の要件定義です。

要件定義とは、システム設計・実装作業を行う前にシステム開発の前提条件をまとめる工程であり、前出の「上流工程」の段階で行われるものです。

・ユーザー企業がシステムに期待する要件をまとめること
・ユーザー企業が求めるシステムの目的を整理して、ゴールを明確にすること
・ユーザー企業の求める期待をシステム化するために機能、条件、性能をまとめること


なお、前出のとおり、この要件定義の段階でズレが生じていた場合は、システム開発そのものが失敗する恐れがあるため、ユーザー企業およびシステム開発会社双方のコミュニケーションが大切となります。

システム開発の契約

ユーザー企業がシステム開発会社に発注を決定した場合、システム開発の契約を行います。

システム開発の契約書を交わすときは要注意!

ユーザー企業がシステム開発を外注ベンダーである開発会社に依頼する場合は、必ず契約書を取り交わします。

この際に、契約書の内容にはしっかりと目を通しておくことをおすすめします。
システム開発契約の取り交わしがいい加減だったために「紛争が泥沼化する」というケースが往々にしてあるためです。

実際にシステム開発がうまく進まなかった場合、法律的な紛争になるケースまで考えられるため、そうしたトラブルを未然に防止するためにも契約書の作成や内容の確認は必須です。

システム開発の契約には「請負契約」「委託契約」の2種類がある

システム開発の契約には「請負契約」と「委託契約」の2種類があり、それぞれの要件に沿ってシステム開発請負契約書、システム開発委託契約書が作られます。

・システム開発の請負契約とは?

システム開発の請負契約では、システムの完成責任および瑕疵担保責任をシステム開発会社(受注者)が持ちます。
そのため、納期およびシステムの品質が法律的に担保されるので、ユーザー企業(発注者)にとっては望ましい契約であると言えます。

ただし、システム開発会社が完成までの責任を負う分、明確な要件定義が必須となります。
そのため、要件定義までの段階では後出の委託契約ですすめ、設計段階から請負契約にスイッチするケースがあります。

・システム開発の委託契約とは?

システム開発の委託契約では、請負契約と違って、システム開発会社(受注者)はユーザー企業(発注者)に対し、「システム開発業務の提供」が契約の主な目的(準委任契約)となります。

別途費用が発生する場合もありますが、仕様変更などに柔軟に対応してもらうことができるため、ユーザー企業側での要件定義が明確でない場合などには利便性の高い契約となります。

ただし、請負契約と違って、委託契約はシステム開発会社にシステムの完成責任および瑕疵担保責任がない準委任契約であるため、品質が悪かったり、スケジュールが遅れたりした場合も、発注側であるユーザー企業の責任となります。

システム開発の契約書のチェックポイント

システム開発の契約書を結ぶ際に、確認しておきたいチェックポイントとしては、以下の3つが挙げられます。

①報酬の支払い時期はいつなのか

システム開発の報酬の支払い時期については、「システム開発の完成時」「システム開発の労務提供後」かの2パターンがあります。
どちらのパターンに該当するのかを事前に確認しておきましょう。

②契約の内容は明確に記されているか

システム開発の契約書は、先ほど説明したとおり、システム開発請負契約書およびシステム開発委託契約書の2種類があるため、その内容に沿ったものとなっているかを確認するのは必須です。

また、たとえば「問題」「手段」といった文言があった場合には、「何の問題なのか」「どの手段なのか」といった明確性を意識的に確認し、不明点がある場合にはその都度、協議するようにしましょう。

③プロジェクトマネジメント業務と、ユーザー企業との協力業務について記載されているか

システム開発でトラブルが生じた場合には、ベンダーであるシステム開発会社側には要因を発見したり、対処したりするプロジェクトマネジメント業務が発生し、ユーザーである企業側にはベンダーから提示された懸念事項に対処する協力業務が発生します。

これらの対応義務が明確に記載されているか、もしも義務を果たさなかった場合に損害賠償責任を負うなどの事項が記載されているかなど、詳しく確認しましょう。

システム開発の設計

システム開発の契約を締結したら、いよいよシステム開発の具体的な設計に入っていきます。

システム開発の「外部設計」と「内部設計」について

システム開発には、要件定義で決定した内容をもとに「外部設計(External Design、ED)」「内部設計(Internal Design、ID)」を行います。

・外部設計(External Design、ED)とは?

外部設計とは、要件定義で決定したシステムの機能、性能、制約条件などをもとに、システム開発の基本となる部分の設計を行うことを意味します。

ユーザーインターフェース部分の仕様決定、セキュリティおよび運用の規定、システム開発スケジュールおよび予算の決定など、主にユーザー企業に対する仕様を固めるのが外部設計です。

・内部設計(Internal Design、ID)とは?

内部設計とは、外部設計をもとにして、システム内部の動作、機能、物理データの取り扱いといったプログラムレベルの詳細部分の設計を行うことを意味します。

内部設計は内部システムに特化した詳しい設計となるため、詳細設計(SS工程、DD工程)と呼ばれる場合もあります。
外部設計で定められた結果を、プログラミングによって実行しやすくまとめるのが内部設計の役割です。

システム開発のドキュメントは一覧で管理すること

システム開発では、設計の段階で大量のドキュメントが発生するため、いつでも見返せるように一覧で管理することをおすすめします。

システム会社から提案をもらうための「提案依頼書(RFP、Request For Proposal)」または「システム開発調達仕様書」、システムの要件をまとめた「要件定義書」、要件定義書をもとにシステム開発の仕様をまとめた「システム開発仕様書」など、システム開発に関連するドキュメントは多岐に渡ります。

システム開発が進んだ段階で、ドキュメント管理が煩雑な場合はトラブルにつながる可能性もありますので、入念に一覧で管理しましょう。

システム開発の流れ

システム開発の設計が完了したら、いよいよ実際の開発に入っていきます。
ここでは、システム開発の流れについて、詳しく説明していきます。

システム開発の手法の種類とは?

システム開発の流れの主流となる手法には、どんな種類があるのかを見ていきましょう。

・システム開発ライフサイクル(Systems Development Life Cycle、SDLC)とは?

システム開発のライフサイクルとは、コンピューターシステム開発におけるモデルまたは方法論のことを意味します。
コンピューターシステムの複雑化と共に、複数のソフトウェアベンダーがシステム開発に関わるケースが増えてきたため、開発工程を管理するために様々なモデルや方法論が生まれました。

ウォーターフォールモデル、スパイラルモデル、反復型開発、ソフトウェアプロトタイピングなど、多種多様なシステム開発方法論がありますが、ここでは最も代表的な「ウォーターフォールモデル」をご紹介します。

・ウォーターフォールモデル

ウォーターフォールモデル
出典SE虎の巻

ウォーターフォールモデルはソフトウェア工学で古くからあるポピュラーなシステム開発モデルで、「要件定義」→「外部設計」→「内部設計(詳細設計)」→「開発プログラミング」→「テスト」→「運用」までの流れをトップダウンで分割するのが特徴です。
工程の進捗管理がしやすいため、広く用いられているシステム開発手法となっています。

システム開発のためのWBSとは?

システム開発の流れを管理するために重要なのが「WBS(Work Breakdown Structure)」です。
WBSとは、プロジェクト進行計画を立てるための代表的な手法であり、システム開発の工程や役割分担を表にしたものです。

WBSを詳細に作り込んでいくためには、システム開発の業務をフェーズ(工程)ごとに分けていく必要があります。

なお、システム開発のWBSの資料サンプルや、システム開発のためのWBSの作り方などについては、インターネット上に様々な事例が出ていますので、ぜひとも検索してみてください。

システム開発のフェーズ(工程)について

システム開発のフェーズは、以下のように細かくフローを分けていくことで、プロセスを可視化していくことができます。

・システム開発プロジェクト全体の大まかなフェーズ分け事例

システム開発プロジェクトの大工程として、大まかにフェーズを分けた場合、以下のようになります。

1) 計画
2) 要件分析
3) 基本設計
4) 開発
5) テスト
6) 導入


ここから、さらに大工程を中工程に分けていきます。

・基本設計を例にしたシステム開発の中工程のフェーズ分け事例

たとえば、「3) 基本設計」の中工程をさらに細かくフェーズ分けすると、以下のようになります。

3.1) 画面帳票設計
3.2) DB設計
3.3) 共通部品設計
3.4) プロセス設計
3.5) 外部インターフェイス設計
3.6) 運用設計
3.7) 移行設計
3.8) スケジュール


このように、システム開発をフェーズごとに細かく分けていくことで、もれなく業務フローを管理して進めていくのが、システム開発の流れの基本となります。

システム開発で納品されるフェーズごとの成果物について

システム開発工程では、フェーズごとに納品される「開発プロセス成果物」「管理プロセス成果物」があります。
以下に、システム開発における納品される成果物の一覧をまとめました。
一例となりますので、参考までにご確認ください。

納品される成果物一覧

システム開発の検証と品質管理

システム開発が完成に近づいた場合に行うのが、検証および品質管理です。
システム開発のフェーズでいえば、「テスト工程」のプロセスにあたります。
品質保証(QA、Quality Assurance)、品質マネジメントシステム(QMS、Quality Management System)などといったシステム開発の品質管理指標の観点からも、テスト工程は重要なものであると言えます。

ここでは、システム開発のテスト工程とは、具体的にどのようなフェーズなのかをご紹介していきます。

システム開発の「V字モデル」と「W字モデル」について

システム開発のテストに至る代表的なフローとして、「V字モデル」「W字モデル」があります。
以下に、それぞれを簡潔に説明します。

・システム開発の「V字モデル」

V字モデルでは、システムの開発工程を右下がりに並べ、テスト工程を右上がりに並べます。
こうすることで、実施されるテスト工程がどの開発工程を検証しているのかが簡単にわかります。
システム開発のチェックリストをもとにした振り返りのレビューなどを行う場合、進行段階の把握がしやすいため、ポピュラーなモデルの一つとなっています。

・システム開発の「W字モデル」

W字モデルは、システム開発の上流工程の段階からテスト設計を始めます。
開発とテストのプロセスを同時に進める方法で、早期段階からテストを実施することによって、システムのバグや障害を発見した場合の戻りを減らすことができます。

システム開発のテストフェーズの例

ここでは、ウォーターフォールモデルでのテストフェーズを例に、システム開発のテストにおけるプロセスを簡単にまとめます。

・単体テスト
UT(Unit Test)、PT(Program Test or Part Test)、CT(Component Test or Coding Test)などと呼ばれ、プログラムや機能単体でのテストを指します。

・結合テスト
IT(Integration Test)、ITa(Integration Test A)、ST(String Test)、JT(Joint Test)、CT(Combined Test)、LT(Link Test)などと呼ばれ、単体テストをクリアしたプログラム同士を組み合わせたテストを意味します。

・総合テスト
ST(System Test)、PT(Product Test)などと呼ばれ、本番業務を滞りなく完了できるかをテストします。

・ユーザー受け入れテスト
UAT(User Accept Test)、UT(User Test)、AT(Accept Test)、OT(operations test)などと呼ばれ、開発したシステムのソフトウェアをユーザー企業のシステム上に受け入れたうえで、各プロセスをテストします。
このテストに合格すれば、晴れてシステム開発は完了となります。

システム開発における開発標準について

ここまで、システム開発における流れを詳しく見てきましたが、開発方法はシステム開発会社によって千差万別であり、非常に複雑化してきています。

そのため、煩雑化するシステム開発方法を標準化するべく、情報処理推進機構(IPA)は「共有フレーム」(参照:https://www.ipa.go.jp/files/000027415.pdf)の提唱を行なっており、システム開発全般の流れを包括的に規定しています。

もちろん、「共有フレーム」を利用するだけでは個別のシステム開発には対応できないため、開発標準をベースとしたシステム開発の完成には、まだ課題が多くあるのが現状です。

システム開発におけるQCDと生産性向上

システム開発では、生産管理においてQCDという言葉が重要視されます。

Q…品質(Quality)
C…コスト(Cost)
D…納期(Delivery)


「品質は高く、コストは安く、納期は早く」という意味合いがあり、QCDはプロジェクトの評価指標としても用いられます。

また、プロジェクトの評価指標としては、システム開発による「生産性向上」も重要視されます。
システム開発の生産性向上の計算方法として、以下のような式が用いられます。

生産性=価値(Value)/コスト(Cost)

この計算式からもわかるように、システム開発の生産性とは、単にコストを下げるだけでなく、価値を高めることでも向上します。
つまり、システム開発の一般的なゴールは、価値ある品質の高いシステムを生み出し、それによってコスト削減を成功させることであると考えられます。


システム開発会社について、もっと詳しく知りたい場合には、アイミツコンシェルジュまでお気軽にご相談ください。
一括見積もりを無料で対応できるだけでなく、システム開発の依頼における様々なお悩みにもお答えします。

失敗しないためのシステム開発の依頼方法・システム開発会社の選び方とは

契約成立 握手

ユーザー企業としてシステム開発を外注する場合、システム開発ベンダーである開発会社を厳選したうえで、アウトソーシングの依頼を出す必要があります。
ここでは、システム開発の依頼先の選び方で失敗しないための基礎知識をまとめていきます。

システム開発の見積もりについて

システム開発を依頼する場合、依頼先を選ぶ上で重要な資料に「見積書」があります。
ここでは、見積書を確認する上で重要なポイントをお伝えします。

システム開発の見積もりの根拠とは?

システム開発の見積もりを正確なものかどうか把握するためには、見積もりに記載されているコストの根拠となる確認項目の内容を明確にすることが重要となります。

システム開発の見積もりをするにあたって、工数算出で必要となる確認項目は以下の4つが挙げられます。

① システム開発プロジェクトの期間
② 開発および改修対象となるシステムの範囲
③ 開発したシステムを使用する環境
④ システム開発で依頼するフェーズ(システム開発のどのフェーズを依頼する予定なのか)


上記の内容を鑑みたうえで、システム開発会社から算出された工数を確認し、見積もりの内訳が適正かどうかを判断する必要があります。

見積もりを確認する場合には、

・システム開発の見積もり工数の妥当性はどこなのか
・システム開発の備品や物品のコストも含まれているのか
・システム開発のプロセスの管理、調査、分析にかかる工数も含まれているのか


などを確認し、見積もりが納得のいく根拠によるものなのかどうかを、しっかりとシステム開発会社側との打ち合わせで確認し、認識を合わせるようにすべきでしょう。

システム開発の見積書の項目事例とサンプル

ここでは、システム開発の見積書の項目事例とサンプルをご紹介します。

・システム開発の見積もりの項目事例

システム開発の見積もりの項目事例としては、以下の9つが挙げられます。
なお、こちらはあくまでも一例ですので、参考までにご確認ください。

① 要件定義費用
② 設計費用
③ デザイン費用
④ 開発費用
⑤ テスト費用
⑥ 導入費用
⑦ 導入支援費用
⑧ 購入費
⑨ 交通費


・システム開発の見積書のサンプル

システム開発の見積書のサンプルは以下となります。
参考までにご確認ください。

見積書 サンプル

システム開発の費用相場について

アイミツでは、毎月3,000枚以上の見積書の確認および分析を行っており、毎月の見積書で確認した数値をもとにした費用相場を算出しています。
2018年5月現在、アイミツが把握している見積もりをもとにしたシステム開発の平均費用相場は233万円となっています。

なお、システム開発に関わる人員の1人月の費用単価相場は以下のとおりです。

・上級システムエンジニア→100万円〜160万円程度
・初級システムエンジニア→60万円〜100万円程度
・大手企業所属プログラマ→50万円〜100万円程度
・下請け企業または個人事業主プログラマ→40万円〜60万円程度


具体的な費用相場の詳細について知りたい場合には、アイミツがまとめた「システム開発の平均費用と料金相場」の記事を参考にしてください。

システム開発会社を選ぶときの比較項目

システム開発会社を選ぶときの比較項目として、以下の点に留意しましょう。

・システム開発の実績が豊富かどうか
システム開発会社として、実績が豊富かどうかは第一に確認したいところです。
なお、ユーザー企業が発注したいシステムと類似の内容で実績があることが前提となります。
システム開発は業種によって必要な技術が異なってくる場合があるので、この点は注意が必要です。

・システム開発の役割分担は明確か
システム開発では、適切な役割分担をしたうえで、ひとつのシステムを作り上げます。
そのため、システム開発におけるユーザー企業側とベンダー側の役割分担を明確に説明してくれるかどうかは比較項目として重要です。
請負契約なのか、業務委託契約なのかなど、契約書の内容の説明がきちんとされるかどうかも確認しましょう。

・システム開発におけるコミュニケーションは円滑にできるか
システム開発は、要件に齟齬が生まれないようにするためにも、ユーザー企業側とベンダー側のコミュニケーションが非常に重要です。
たとえば、昨今、中国、ベトナム、フィリピン、インドネシア、ミャンマーなど、海外に人件費の安いエンジニアを抱えるオフショア開発を行うベンダーも増えています。
コスト面で有益な一方、中には意思疎通がうまく取れずにシステム開発を進める上で苦労するケースもあるため、事前に確認をしておくべきでしょう。

システム開発会社のおすすめ一覧

アイミツでは、様々なジャンルのシステム開発会社のおすすめ情報を厳選し、一覧でまとめています。
以下は、アイミツおすすめのシステム開発会社をまとめた記事です。
システム会社をお探しのユーザー企業の担当者様は、ぜひとも以下を参考にしてください。

失敗しないシステム開発の依頼についてのまとめ

ここまで、システム開発を外注依頼する場合に知っておくべき基礎知識を網羅的にお伝えしてきましたが、いかがだったでしょうか。
以下では、その他、補足の知識についてまとめていきます。

その他に必要な知識

システム開発のリスク対策は?

一例では、システム開発の成功率は52.8%と、約5割が失敗しているというデータもインターネット上では発表されています。
こうしたデータからも、システム開発における開発の遅れや要件からのズレ、著作権の侵害などに対するリスク管理、炎上対策、訴訟対策は必須であるといえるでしょう。

システム開発は内製化すべき?

システム開発のアウトソーシングには様々なリスク対策も必要となるため、内製化すべきではないかと考える場合もあるでしょう。

もちろん、社内でシステム開発のリソースを賄えるならばそれに越した事はありませんが、実際はシステムエンジニアの求人は厳しく、採れたとしても40代〜50代の古参エンジニアだったり、システム開発の5段階スキルの内でも低いレベルだったりなど、納得のいくシステムエンジニア採用は難しいのが現状です。

そのため、システム開発の外注は、賢く利用するのが得策だといえるでしょう。

システム開発の将来とは?

システム開発は現在、AI(人工知能)の開発領域にも足を踏み入れてきています。
また、システム開発業務の遂行そのものにも、AIが進出し、自動化が進む可能性も考えられます。

たとえば、10年前はiPhoneがまだ開発されたばかりだったことを鑑みると、システム開発の10年後は、私たちの想像が及ばないほどに進化している可能性もあり得ます。

英語に堪能な方は、最新の海外のシステム開発論文などもチェックしつつ、動向を注視してみるのも面白いのではないでしょうか。

システム開発の事務処理について

最後に、システム開発の事務処理について補足です。
システム開発を経費計上する場合、勘定項目はどうなるのか、減価償却は可能なのかなどについては、開発するシステムやソフトウェアの用途・内容によって変化します。
また、システム開発の契約書に印紙が必要かどうかなどについても、契約書内容によります。
そのため、システム開発の事務処理の詳細については税理士や会計士などの専門家に確認をするのがベストです。


システム開発の外注ベンダー探し、アウトソーシング依頼については、アイミツコンシェルジュにお任せください。
入念な相見積もりによって、御社の条件に合ったシステム開発会社をご紹介させていただきます。

いま知りたいこと
コンシェルジュが解決します!

コンシェルジュサービスは
5万社以上が利用している無料の相談サービスです。

コンシェルジュ