システム開発の手順(流れ)や失敗しやすい理由、成功のコツを解説
2024年01月25日 12:51
最先端のテクノロジーが一般の人々でも簡単に使えるようになり、自社に必要なシステムを開発して業務効率化を狙う企業が増えています。
本記事をご覧になられている方の中には、企業全体の業務改善や効率化をアップするために、システム開発を検討しているという人も多いのではないでしょうか?
しかし、実はプロジェクトの約69%は失敗に終わっていると言われており、しっかりと準備しなければシステム開発に時間と予算をかけたとしても無駄になってしまう可能性が高いです。
そこで今回の記事では、システム開発を行う上で知っておきたい流れや失敗しやすい理由、成功するためのコツについて解説していきます。
そもそもシステム開発とはどのような目的で行われるのか、具体例とともに詳しく解説していきます。
システム開発とは、企業の抱えている問題点や課題を解決するために必要な「仕組み」を作り上げることです。単純にホームページを開設したり、プログラムを作成したりすることだけがシステム開発ではありません。
例えば、現在ビジネスを展開しているほとんどの企業が「新しい事業を生み出して利益を得たい」「現在の仕事をできるだけ効率化してコストを削減したり、人手を確保したりしたい」といった目標や課題を抱えています。
このような目標や課題を解決するために、コンピューターやインターネットのシステムを活用して「仕組み」を作ることがシステム開発です。
あくまでもプログラムやWebサイトというのは、企業が目標としているものや抱えている課題を解決するための道具にすぎません。目標や抱えている課題を明確にして、それを達成するために必要な「道具」を最小限度のコストで作り出すことがシステム開発なのです。
システム開発の具体例としては、スーパーマーケットのレジシステムをより効率化するために新しくシステムを構築したり、在庫を一括管理できるようにツールを作成したりなどが挙げられます。
どのような開発手法であったとしても、システム開発を行う場合は次のような流れで行われます。
システム開発を始める前に、どのような流れで進んでいくのか把握しておくと、各プロセスでの進捗状況のチェックや問題への対処がやりやすくなります。以下では、それぞれのステップでどのようなことを行うのか具体的に解説していきます。
システム開発で1番最初に行われるのが要件定義であり、一連の流れにおいてもっとも重要なプロセスとなります。要件定義とは「システム開発をする目的に基づいて実装したい機能や納期、必要な工数などをまとめた設計図」のようなものです。
要件定義を行う段階で、ユーザーの求めているニーズを明確に把握して、システムに必要な機能とそうでないものを明確に決める必要があります。要件定義を行う際は、まず次のような項目に関して詳しく定めた要件定義書を作成します。
【要件定義書で定める内容の例】
引用:失敗しない要件定義とリスク対策|独立行政法人情報処理機構
システム開発における基本的な構成を設計する段階であり、基本設計とも呼ばれています。
外部設計の段階では、システムやサービスを提供するためのサーバー、ユーザーが利用するクライアント、システムに必要なハードウェアなどを決定します。
さらに、システムで利用するネットワークやミドルウェアと呼ばれる中間のソフトウェア、プログラムに使用する言語などのソフトウェアについても検討しなければいけません。
外部設計よりも踏み込んだ設計を行う段階であり「詳細設計」とも呼ばれています。
内部設計の段階では、システムを利用するユーザーが操作する画面の裏で、内部的に実行される処理の仕組みやロジック、データの構造などについても細かく定義しなければいけません。
この内部設計をもとにして開発者によるプログラミングが行われます。
内部設計によって決まった内容をもとに、実際にシステムのプログラムを作っていく段階です。プログラミングは「コーディング」とも言われています。
作成するシステムの規模にもよりますが、一般的には複数のプログラマーが同時かつ平行にプログラミングを行って開発を進めます。
システムのプログラムが完成したら、問題なく稼働するかテストを行います。テストでは、要件定義で定めたように稼働・機能するかチェックをします。
次の4つの段階に分けてテストを進めるのが一般的です。
上記で行ったすべてのテストをクリアすれば、システムが完成するのでリリースとなります。なお、この段階で過去に使用していた古いシステムがあるのであれば、必要なデータなどをすベて移行しなければなりません。
必要なデータをすべて移行して新しいシステムが問題なく稼働すれば、リリース完了です
一度システムを運用したら、その後は運用と保守を行う必要があります。新しいシステムが正しく稼働しているのか定期的にチェックして、トラブルなどが発生したのであれば対応しなければいけません。
また、ユーザーがより使い勝手が良くなるように、定期的にアップデートなども行う必要があります。なお、このシステム運用と保守に関しては、新しく作られたシステムが稼働している限りは永続的に続きます。
システム開発には主に次の4つの手法があり、それぞれメリットやデメリット、工法の流れなどが若干異なります。
それぞれの手法の特徴やメリット・デメリットについて、以下で詳しく解説していきます、
ウォーターフォール型とは、システム開発の流れで解説した手順を上流から下流工程まで都度順番に進めていくという方法です。1つの工程が要件定義や仕様通りにできているか確認してから次の工程に進むので、進捗管理やコスト管理をしやすいのが特徴となります。
ウォーターフォール型を採用するメリット・デメリットは以下の通りです。
【メリット】
【デメリット】
アジャイル型とは、システムの各機能ごとに小さめの開発サイクルを何度も行うという方法です。システムに必要な機能に優先順位をつけて、機能ごとに「設計〜リリース」までの流れを繰り返します。
ウォーターフォール型ではすべての機能が完成するまでリリースを待たなければならないですが、アジャイル型であれば基本の機能だけを先にリリースするということも可能です。
アジャイル型の手法を採用するメリット・デメリットは以下の通りです。
【メリット】
【デメリット】
プロトタイプ型は、ウォーターフォール型のデメリットを改善した開発手法です。ウォーターフォール型では、一番最初の時点で要件定義を細かく決めなければならず、開発途中でのシステムの仕様変更や修正作業などが柔軟に対応できないというのが問題でした。
プロトタイプ型は、まずシステム開発の初期段階でプロトタイプ=試作品を作成して、発注者のレビューを受けながら修正しつつシステムを完成させていくという手法です。
あらかじめ仕様変更や修正があることを念頭に置いているので、ウォーターフォール型よりも柔軟に対応できるのが特徴と言えるでしょう。
プロトタイプ型の手法を採用するメリット・デメリットは以下のとおりです。
【メリット】
【デメリット】
スパイラル型とは、開発の工程を何度も繰り返しながらアップデートを繰り返す開発手法です。その時々の流行をシステムに反映することができるので、クオリティ向上を期待できるのがスパイラル型の特徴となります。
また、クライアントの声を反映させながら修正をしやすいので、満足度の高いシステムが提供されやすいのも魅力です。
スパイラル型の手法を採用するメリット・デメリットは以下のとおりです。
【メリット】
【デメリット】
東証1部上場企業とそれに準ずる企業の計4499社を対象とした調査結果である「企業IT動向調査報告書2022」によると、企業のシステム開発プロジェクトの失敗率は極めて高いことが分かっています。
引用:企業IT動向調査報告書2022|一般社団法人日本情報システムユーザー協会
工数・予算・品質に関して予定通りに完了した場合を見てみると、それぞれおおよそ約3割程度となっており、逆を言うと何かしらの原因で満足いかない状態でプロジェクトが終了しているのが約69%近いということが分かります。
同調査では「なぜうまくいかなかったのか」という点についても調査が行われており、多くは計画時の考慮漏れや仕様変更の多発、システムの複雑性などが挙げられています。
引用:企業IT動向調査報告書2022|一般社団法人日本情報システムユーザー協会
大規模なプロジェクトになればなるほど計画通りに行くというのは難しいですが、計画時の考慮不足や仕様変更の多発などは、要件定義の段階である程度防ぐことができます。
システム開発が失敗することを防ぐためにも、まずはプロジェクトの初期段階である要件定義からしっかりと依頼側と開発側で話し合いをすることが重要なのです。
プロジェクトが失敗に終わりがちなシステム開発を成功させるために、知っておきたいコツは以下の5つです。
それぞれ以下で詳しく解説していきます。
システム開発は、常に1番最初のステップで行う要件定義によって定められた「システムの仕様」に基づき進んでいきます。
そのため、要件定義をしっかりと行うことができていなければ、求めているシステムが出来上がることはありません。また途中で大幅なシステム変更をしてしまうと、開発に悪影響を与えてしまう可能性が高いです。
例えば、要件定義の段階では想定していなかった「システムにある機能を備え付けたボタンを追加することになった」としましょう。
ユーザー側からするとあまり大した変化ではないと思われるかもしれませんが、システムの内部では「データ定義の変更」「データ処理をするためのロジック変更」「エラー処理の追加」など、膨大な修正業務が発生します。場合によっては、システムの設計を1からやり直さなければならないケースもあるのです。
そのため、要件定義の段階からこれ以上詰めるところはないというほど、ユーザー側と開発者側で確認を行う必要があります。
システムを開発する目的は、開発することそのものではなく、業務の効率化や企業の生産性向上を図るためです。そのため、システム開発を新しく行う場合は、事前に目的や成し遂げたいことを明確にすることが重要となります。
達成する目的が明確に定まれば、ゴールから逆算して開発を設計するだけです。また、明確な完成形のイメージができていれば「どのような開発手法を採用すれば開発をスムーズにできるのか」という点についてもスムーズに検討できます。
あくまでもシステム開発は手段である、ということは絶対に忘れないようにしてください。
システム開発においては、人件費がコストの大部分を占めることになります。そのため、できるだけコスト削減のために人件費を抑えようとする企業も多いですが、これは避けた方が良いでしょう。
人件費を抑えようとした場合、スキルや経験に乏しいメンバーばかりがアサインされてしまう可能性があるためです。
システム開発に関係するメンバーのクオリティは、システム開発が成功するかどうかに大きく影響します。メンバーの実績やスキルをしっかりとチェックした上で、適切な価格と人材をアサインしてもらうように注意しなければいけません。
ユーザーと開発側の要件定義が終わって、実際にシステム開発が始まった後もコミュニケーションは密に取れる環境を作るようにしましょう。
システム開発を進めていく上では、必ず想定していなかった問題が発生します。設計の時には想定できなかった技術上の制約や市場の変化に対する対応、法律の変更など、どちら側にも責任がない問題が生じるケースも多いです。
何か問題が発生した場合、合理的かつ建設的に問題を解決するためには、常にコミュニケーションをきちんと取れている必要があります。コミュニケーションを密に取れる環境ができていれば、問題が大きくなる前に素早く対処することも可能です。
ほとんどのシステム開発は上記で解説した手順で進んでいきます。そのため、プロセスを明確に分けて管理することが、、システム開発を成功させる上では重要となるのです。
プロセスを決めることなく自由に開発を進めてしまった場合、そもそも要件定義が定まっておらず、完成したシステムは全く役に立たないという結果に終わってしまう可能性が高いです。
また、プロセスを明確に分けて管理することによって次のようなメリットもあります。
システム開発を行う際は、プロセス(流れ・手順)を明確に分けて、それぞれのステップでどのようなことを行えば良いのか、担当者が把握しつつ管理することが重要です。
ここまでシステム開発の手順や方法について解説してきましたが、まだ事前に知っておくべきことがあります。それは、システム開発で使われることの多い略語や略称とその意味です。
あらかじめ主な略語や略称について把握しておくと、開発側との間でコミュニケーションが円滑に進み、各プロセスがスムーズに進んでいきます。
主な略語と略称に関して以下に表でまとめたので、システム開発を行う際の参考にしてください。
システム開発に必要なコストは、仮にソフトウェアを開発する場合、大部分が人件費となります。システム開発の見積もりでは、人件費は「人月」という単位で表記されるのが一般的です。
人月とは、1人のスタッフが1ヶ月稼働する場合の工数を指します。例えば「5人月」であれば、1人が5ヶ月か、5人が1ヶ月稼働するという意味です。
この人月も、システム開発に必要なスタッフのスキルや経験によって単価が異なってきます。そのため、システム開発におけるコストを明確に把握するためには、どのようなスタッフが開発プロジェクトに参画するのか理解しておかなければなりません。
システム開発に参画する主なスタッフの種類と業務内容について、以下に表でまとめたので参考にしてください。
主なスタッフの種類 | 業務内容 | 必要なスキル |
---|---|---|
プロジェクトマネージャー | 1.プロジェクト実行計画の立案やスケジュール管理 2.リソース管理 3.コスト管理 | 1.問題解決能力 2.コミュニケーションスキル 3.システム開発に関する知識 |
システムエンジニア | 1.システムの要件定義・設計・開発 2.ユーザーへのヒアリング | 1.プログラミングに関する知識 2.コミュニケーション能力 3.ビジネスに関する知識 |
プログラマー | 1.プログラミング | 1.プログラミング能力 2.ITスキル |
多くの企業でデジタル化やIT化が進んでいる中で、自社に適したシステムを導入するための開発が積極的に行われるようになりました。しかし、今回紹介したように、大手企業であってもシステム開発のプロジェクトは「約69%」が失敗に近い形で終わっていることもわかっています。
システム開発を成功に導くためには、プロジェクト担当者が「開発の流れはどのように進んでいくのか」「開発手法でどのような違いがあるのか」「自社に適している開発方法はどれなのか」に関して、しっかりと理解しておく必要があるでしょう。
また、システム開発に必要なコストやプロジェクトメンバーなどについても、大まかに想定しておくことが重要です。
「自社が欲しているシステムを開発するためにはどれくらいの期間が必要で、どんなメンバーがいれば良いのか」を明確にした上で、不足している部分は外部に委託したり、採用を強化したりなどの解決策を講じる必要もあります。
診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。
目次を見る