システム開発の手順(流れ)や失敗しやすい理由、成功のコツを解説

0

2024年01月25日 12:51

image
最先端のテクノロジーが一般の人々でも簡単に使えるようになり、自社に必要なシステムを開発して業務効率化を狙う企業が増えています。

本記事をご覧になられている方の中には、企業全体の業務改善や効率化をアップするために、システム開発を検討しているという人も多いのではないでしょうか?

しかし、実はプロジェクトの約69%は失敗に終わっていると言われており、しっかりと準備しなければシステム開発に時間と予算をかけたとしても無駄になってしまう可能性が高いです。

そこで今回の記事では、システム開発を行う上で知っておきたい流れや失敗しやすい理由、成功するためのコツについて解説していきます。

そもそもシステム開発とは?

image
そもそもシステム開発とはどのような目的で行われるのか、具体例とともに詳しく解説していきます。

システム開発の目的

システム開発とは、企業の抱えている問題点や課題を解決するために必要な「仕組み」を作り上げることです。単純にホームページを開設したり、プログラムを作成したりすることだけがシステム開発ではありません。

例えば、現在ビジネスを展開しているほとんどの企業が「新しい事業を生み出して利益を得たい」「現在の仕事をできるだけ効率化してコストを削減したり、人手を確保したりしたい」といった目標や課題を抱えています。

このような目標や課題を解決するために、コンピューターやインターネットのシステムを活用して「仕組み」を作ることがシステム開発です。

あくまでもプログラムやWebサイトというのは、企業が目標としているものや抱えている課題を解決するための道具にすぎません。目標や抱えている課題を明確にして、それを達成するために必要な「道具」を最小限度のコストで作り出すことがシステム開発なのです。

システム開発の具体例

システム開発の具体例としては、スーパーマーケットのレジシステムをより効率化するために新しくシステムを構築したり、在庫を一括管理できるようにツールを作成したりなどが挙げられます。

システム開発の流れ(手順)を7STEPで解説

image
どのような開発手法であったとしても、システム開発を行う場合は次のような流れで行われます。

  1. 要件定義
  2. 外部設計
  3. 内部設計
  4. プログラミング
  5. システムのテスト
  6. システムリリース
  7. システムの運用とサポート

システム開発を始める前に、どのような流れで進んでいくのか把握しておくと、各プロセスでの進捗状況のチェックや問題への対処がやりやすくなります。以下では、それぞれのステップでどのようなことを行うのか具体的に解説していきます。

STEP1.要件定義

システム開発で1番最初に行われるのが要件定義であり、一連の流れにおいてもっとも重要なプロセスとなります。要件定義とは「システム開発をする目的に基づいて実装したい機能や納期、必要な工数などをまとめた設計図」のようなものです。

要件定義を行う段階で、ユーザーの求めているニーズを明確に把握して、システムに必要な機能とそうでないものを明確に決める必要があります。要件定義を行う際は、まず次のような項目に関して詳しく定めた要件定義書を作成します。

【要件定義書で定める内容の例】

  • 開発するシステムの内容や性能
  • 必要な機能
  • 運用する方法
  • テスト方法
  • 開発コスト
  • システム開発チームの人員

image
image
引用:失敗しない要件定義とリスク対策|独立行政法人情報処理機構

STEP2.外部設計

システム開発における基本的な構成を設計する段階であり、基本設計とも呼ばれています。

外部設計の段階では、システムやサービスを提供するためのサーバー、ユーザーが利用するクライアント、システムに必要なハードウェアなどを決定します。

さらに、システムで利用するネットワークやミドルウェアと呼ばれる中間のソフトウェア、プログラムに使用する言語などのソフトウェアについても検討しなければいけません。

STEP3.内部設計

外部設計よりも踏み込んだ設計を行う段階であり「詳細設計」とも呼ばれています。

内部設計の段階では、システムを利用するユーザーが操作する画面の裏で、内部的に実行される処理の仕組みやロジック、データの構造などについても細かく定義しなければいけません。

この内部設計をもとにして開発者によるプログラミングが行われます。

STEP4.プログラミング

内部設計によって決まった内容をもとに、実際にシステムのプログラムを作っていく段階です。プログラミングは「コーディング」とも言われています。

作成するシステムの規模にもよりますが、一般的には複数のプログラマーが同時かつ平行にプログラミングを行って開発を進めます。

STEP5.テスト

システムのプログラムが完成したら、問題なく稼働するかテストを行います。テストでは、要件定義で定めたように稼働・機能するかチェックをします。

次の4つの段階に分けてテストを進めるのが一般的です。

  1. 単体テスト:分割して作成したプログラムがそれぞれ正しく動くかどうかのテスト
  2. 結合テスト:分割して作成した複数のプログラムを組み合わせて正しく作動するかのテスト
  3. 総合テスト:プログラム全体が要件定義で決められた通りに動いているかのテスト
  4. 運用テスト:システムを運用する現場の環境下で仕事に支障なく利用できるかを確認するテスト

STEP6.システムリリース

上記で行ったすべてのテストをクリアすれば、システムが完成するのでリリースとなります。なお、この段階で過去に使用していた古いシステムがあるのであれば、必要なデータなどをすベて移行しなければなりません。

必要なデータをすべて移行して新しいシステムが問題なく稼働すれば、リリース完了です

STEP7.システム運用と保守

一度システムを運用したら、その後は運用と保守を行う必要があります。新しいシステムが正しく稼働しているのか定期的にチェックして、トラブルなどが発生したのであれば対応しなければいけません。

また、ユーザーがより使い勝手が良くなるように、定期的にアップデートなども行う必要があります。なお、このシステム運用と保守に関しては、新しく作られたシステムが稼働している限りは永続的に続きます。

システム開発手法の違い・メリット・デメリット

image
システム開発には主に次の4つの手法があり、それぞれメリットやデメリット、工法の流れなどが若干異なります。

  • ウォーターフォール型
  • アジャイル型
  • プロトタイプ型
  • スパイラル型

それぞれの手法の特徴やメリット・デメリットについて、以下で詳しく解説していきます、

ウォーターフォール型

ウォーターフォール型とは、システム開発の流れで解説した手順を上流から下流工程まで都度順番に進めていくという方法です。1つの工程が要件定義や仕様通りにできているか確認してから次の工程に進むので、進捗管理やコスト管理をしやすいのが特徴となります。

ウォーターフォール型を採用するメリット・デメリットは以下の通りです。

【メリット】

  • 進捗管理やコスト管理がしやすい
  • 一つ一つ進めるので幅広い開発案件に対応可能
  • 人材確保がしやすい
  • クオリティが担保されやすい

【デメリット】

  • 急な変更などに対応しにくい
  • 開発期間が長くなりやすい
  • 納期遅れやコストオーバーが発生する可能性もある

アジャイル型

アジャイル型とは、システムの各機能ごとに小さめの開発サイクルを何度も行うという方法です。システムに必要な機能に優先順位をつけて、機能ごとに「設計〜リリース」までの流れを繰り返します。

ウォーターフォール型ではすべての機能が完成するまでリリースを待たなければならないですが、アジャイル型であれば基本の機能だけを先にリリースするということも可能です。

アジャイル型の手法を採用するメリット・デメリットは以下の通りです。
【メリット】

  • システムの一部の機能を短期間でリリースできる
  • 不具合や仕様変更があっても対応しやすい
  • ユーザーの要望が反映されやすい

【デメリット】

  • 当初の方向性から売れてしまう可能性がある
  • スケジュールや進捗の管理がしにくい
  • コストオーバーが発生する可能性もある

プロトタイプ型

プロトタイプ型は、ウォーターフォール型のデメリットを改善した開発手法です。ウォーターフォール型では、一番最初の時点で要件定義を細かく決めなければならず、開発途中でのシステムの仕様変更や修正作業などが柔軟に対応できないというのが問題でした。

プロトタイプ型は、まずシステム開発の初期段階でプロトタイプ=試作品を作成して、発注者のレビューを受けながら修正しつつシステムを完成させていくという手法です。

あらかじめ仕様変更や修正があることを念頭に置いているので、ウォーターフォール型よりも柔軟に対応できるのが特徴と言えるでしょう。

プロトタイプ型の手法を採用するメリット・デメリットは以下のとおりです。

【メリット】

  • 試作品を利用できるのでクライアントとの認識相違を防げる
  • 開発初期にシステムに求められる全てを決めなくても開発が始められる
  • エラーなどの早期発見がしやすい
  • クオリティが担保されやすい

【デメリット】

  • 開発が長引いてしまう可能性がある
  • コストがかかる
  • 開発側への負担が大きい

スパイラル型

スパイラル型とは、開発の工程を何度も繰り返しながらアップデートを繰り返す開発手法です。その時々の流行をシステムに反映することができるので、クオリティ向上を期待できるのがスパイラル型の特徴となります。

また、クライアントの声を反映させながら修正をしやすいので、満足度の高いシステムが提供されやすいのも魅力です。

スパイラル型の手法を採用するメリット・デメリットは以下のとおりです。

【メリット】

  • 仕様変更しやすい
  • 開発計画のスケジュールを変更しやすい
  • クオリティが担保されやすい

【デメリット】

  • プロジェクトの全体像が把握しにくくなりやすい
  • 開発コストがかさんでしまう可能性もある

システム開発が失敗しやすい理由

image
東証1部上場企業とそれに準ずる企業の計4499社を対象とした調査結果である「企業IT動向調査報告書2022」によると、企業のシステム開発プロジェクトの失敗率は極めて高いことが分かっています。
image
引用:企業IT動向調査報告書2022|一般社団法人日本情報システムユーザー協会
工数・予算・品質に関して予定通りに完了した場合を見てみると、それぞれおおよそ約3割程度となっており、逆を言うと何かしらの原因で満足いかない状態でプロジェクトが終了しているのが約69%近いということが分かります。

同調査では「なぜうまくいかなかったのか」という点についても調査が行われており、多くは計画時の考慮漏れや仕様変更の多発、システムの複雑性などが挙げられています。
image
引用:企業IT動向調査報告書2022|一般社団法人日本情報システムユーザー協会
大規模なプロジェクトになればなるほど計画通りに行くというのは難しいですが、計画時の考慮不足や仕様変更の多発などは、要件定義の段階である程度防ぐことができます。

システム開発が失敗することを防ぐためにも、まずはプロジェクトの初期段階である要件定義からしっかりと依頼側と開発側で話し合いをすることが重要なのです。

システム開発を成功させるための5つのコツ

image
プロジェクトが失敗に終わりがちなシステム開発を成功させるために、知っておきたいコツは以下の5つです。

  • 要件定義は明確にする
  • システム開発の目的を明確にする
  • 参画メンバーの実績やスキルをチェックする
  • コミュニケーションを密に取れる環境を作る
  • プロセスを明確に分けて管理する

それぞれ以下で詳しく解説していきます。

要件定義は明確にする

システム開発は、常に1番最初のステップで行う要件定義によって定められた「システムの仕様」に基づき進んでいきます。

そのため、要件定義をしっかりと行うことができていなければ、求めているシステムが出来上がることはありません。また途中で大幅なシステム変更をしてしまうと、開発に悪影響を与えてしまう可能性が高いです。

例えば、要件定義の段階では想定していなかった「システムにある機能を備え付けたボタンを追加することになった」としましょう。

ユーザー側からするとあまり大した変化ではないと思われるかもしれませんが、システムの内部では「データ定義の変更」「データ処理をするためのロジック変更」「エラー処理の追加」など、膨大な修正業務が発生します。場合によっては、システムの設計を1からやり直さなければならないケースもあるのです。
そのため、要件定義の段階からこれ以上詰めるところはないというほど、ユーザー側と開発者側で確認を行う必要があります。

システム開発の目的を明確にする

システムを開発する目的は、開発することそのものではなく、業務の効率化や企業の生産性向上を図るためです。そのため、システム開発を新しく行う場合は、事前に目的や成し遂げたいことを明確にすることが重要となります。

達成する目的が明確に定まれば、ゴールから逆算して開発を設計するだけです。また、明確な完成形のイメージができていれば「どのような開発手法を採用すれば開発をスムーズにできるのか」という点についてもスムーズに検討できます。

あくまでもシステム開発は手段である、ということは絶対に忘れないようにしてください。

参画メンバーの実績やスキルをチェックする

システム開発においては、人件費がコストの大部分を占めることになります。そのため、できるだけコスト削減のために人件費を抑えようとする企業も多いですが、これは避けた方が良いでしょう。

人件費を抑えようとした場合、スキルや経験に乏しいメンバーばかりがアサインされてしまう可能性があるためです。

システム開発に関係するメンバーのクオリティは、システム開発が成功するかどうかに大きく影響します。メンバーの実績やスキルをしっかりとチェックした上で、適切な価格と人材をアサインしてもらうように注意しなければいけません。

コミュニケーションを密にとれる環境を作る

ユーザーと開発側の要件定義が終わって、実際にシステム開発が始まった後もコミュニケーションは密に取れる環境を作るようにしましょう。

システム開発を進めていく上では、必ず想定していなかった問題が発生します。設計の時には想定できなかった技術上の制約や市場の変化に対する対応、法律の変更など、どちら側にも責任がない問題が生じるケースも多いです。

何か問題が発生した場合、合理的かつ建設的に問題を解決するためには、常にコミュニケーションをきちんと取れている必要があります。コミュニケーションを密に取れる環境ができていれば、問題が大きくなる前に素早く対処することも可能です。

プロセスを明確に分けて管理する

ほとんどのシステム開発は上記で解説した手順で進んでいきます。そのため、プロセスを明確に分けて管理することが、、システム開発を成功させる上では重要となるのです。

プロセスを決めることなく自由に開発を進めてしまった場合、そもそも要件定義が定まっておらず、完成したシステムは全く役に立たないという結果に終わってしまう可能性が高いです。

また、プロセスを明確に分けて管理することによって次のようなメリットもあります。

  • プロセスに沿って開発しているのでクオリティを維持しやすい
  • プロジェクトメンバー内で認識の統一が図れる
  • 進捗管理がしやすく納期遅れを防ぐことができる
  • あらかじめ工数と開発機関が明確になるのでコスト削減しやすい

システム開発を行う際は、プロセス(流れ・手順)を明確に分けて、それぞれのステップでどのようなことを行えば良いのか、担当者が把握しつつ管理することが重要です。

知っておきたい!システム開発使われることが多い略語・略称

image
ここまでシステム開発の手順や方法について解説してきましたが、まだ事前に知っておくべきことがあります。それは、システム開発で使われることの多い略語や略称とその意味です。

あらかじめ主な略語や略称について把握しておくと、開発側との間でコミュニケーションが円滑に進み、各プロセスがスムーズに進んでいきます。

主な略語と略称に関して以下に表でまとめたので、システム開発を行う際の参考にしてください。
image

システム開発に必要なプロジェクトメンバーとコスト

image
システム開発に必要なコストは、仮にソフトウェアを開発する場合、大部分が人件費となります。システム開発の見積もりでは、人件費は「人月」という単位で表記されるのが一般的です。

人月とは、1人のスタッフが1ヶ月稼働する場合の工数を指します。例えば「5人月」であれば、1人が5ヶ月か、5人が1ヶ月稼働するという意味です。

この人月も、システム開発に必要なスタッフのスキルや経験によって単価が異なってきます。そのため、システム開発におけるコストを明確に把握するためには、どのようなスタッフが開発プロジェクトに参画するのか理解しておかなければなりません。

システム開発に参画する主なスタッフの種類と業務内容について、以下に表でまとめたので参考にしてください。

主なスタッフの種類業務内容必要なスキル
プロジェクトマネージャー1.プロジェクト実行計画の立案やスケジュール管理
2.リソース管理
3.コスト管理
1.問題解決能力
2.コミュニケーションスキル
3.システム開発に関する知識
システムエンジニア1.システムの要件定義・設計・開発
2.ユーザーへのヒアリング
1.プログラミングに関する知識
2.コミュニケーション能力
3.ビジネスに関する知識
プログラマー1.プログラミング1.プログラミング能力
2.ITスキル

まとめ|システム開発はプロセスを明確にすることが重要

image
多くの企業でデジタル化やIT化が進んでいる中で、自社に適したシステムを導入するための開発が積極的に行われるようになりました。しかし、今回紹介したように、大手企業であってもシステム開発のプロジェクトは「約69%」が失敗に近い形で終わっていることもわかっています。

システム開発を成功に導くためには、プロジェクト担当者が「開発の流れはどのように進んでいくのか」「開発手法でどのような違いがあるのか」「自社に適している開発方法はどれなのか」に関して、しっかりと理解しておく必要があるでしょう。

また、システム開発に必要なコストやプロジェクトメンバーなどについても、大まかに想定しておくことが重要です。

「自社が欲しているシステムを開発するためにはどれくらいの期間が必要で、どんなメンバーがいれば良いのか」を明確にした上で、不足している部分は外部に委託したり、採用を強化したりなどの解決策を講じる必要もあります。

# Angular
# AWS
# C#
# Groff
# JavaScript
# Nuxt.js
0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。

目次を見る