システム開発の工程と4つの手法|開発コストを抑える方法も解説
目次[非表示]
- 1.システム開発の工程とは
- 2.システム開発の基本的な工程
- 2.1.①要件定義
- 2.2.②基本設計(外部設計)
- 2.3.③詳細設計(内部設計)
- 2.4.④プログラミング
- 2.5.⑤テスト
- 2.5.1.■単体テスト
- 2.5.2.■結合テスト
- 2.5.3.■システム(総合)テスト
- 2.5.4.■運用テスト
- 2.6.⑥システム移行(リリース)
- 2.7.⑦運用・保守
- 3.システム開発で使われる4つの手法
- 3.1.ウォーターフォールモデルの特徴
- 3.1.1.ウォーターフォールモデルとV字モデルとの違い
- 3.2.アジャイル開発の特徴
- 3.2.1.DevOpsとアジャイル開発との違い
- 3.3.スパイラルモデルの特徴
- 3.4.プロトタイプモデルの特徴
- 4.システム開発にかかる費用相場
- 5.システム開発を外注するメリット・デメリット
- 6.システム開発のコストを抑える方法
- 7.まとめ
システム開発の工程とは
システム開発とは、企業が定める目標を達成するための仕組み作りのことを言います。例えば、新規事業を立ち上げたいと考えた場合に、数多くの課題が浮き彫りになります。それらの問題点を、PCやインターネットといったITを活用して解決することがシステム開発の目的です。
システム開発の工程とは、企業が抱える問題の洗い出しから始まり、問題を解決するために必要なシステムの作成・運用までの流れを言います。
システム開発の基本的な工程
システム開発は、基本的に次の工程で行われます。
- 要件定義
- 基本設計(外部設計)
- 詳細設計(内部設計)
- プログラミング
- テスト
- システム移行(リリース)
- 運用・保守
「要件定義」「基本設計(外部設計)」「詳細設計(内部設計)」を上流工程と呼び、「プログラミング」「テスト」「システム移行(リリース)」「運用・保守」を下流工程と呼びます。
これらの工程を、以下で詳しく解説します。
①要件定義
システム開発の中で、最上流に位置しているのが要件定義です。要件定義では、顧客はシステムを使ってどのような問題を解決したいのかなど、顧客の要望を吸い上げることが目的です。
顧客の要望を抽出したうえで、どのような機能が必要かなどをまとめたものを「要件定義書」と呼びます。
要件定義は、システム開発の成否を分ける重要な工程と言っても過言ではありません。
- 顧客が何を求めているのか
- なぜシステムが必要なのか
- システムを利用して何をするのか
これらのことを顧客側と綿密に話し合い、お互いの認識を一致させることが必要です。
▼要件定義のポイントは、こちらを参考にしてみてください。
→5分でわかる!システム開発の成功の鍵を握る「要件定義」とは?進め方や項目、発注成功のポイントまで詳しく解説!
②基本設計(外部設計)
基本設計(外部設計)では、システムの操作画面となるUI(ユーザーインターフェース)など、ユーザーの目に入る部分を設計します。UIは、システムの操作性や利便性など、ユーザビリティに大きな影響を与えます。顧客側の使用感や作業効率にも直結する部分でもあるため、機能や性能に漏れがないように、顧客としっかりとした打ち合わせが必要です。
基本設計(外部設計)で必要な機能等をまとめたものを「基本設計書」と言います。
③詳細設計(内部設計)
基本設計(内部設計)で作成した基本設計書を基に、どのように実装するかを設計する工程です。システムに必要な機能や性能の詳細を決定し、プログラマーへの指示書となる「機能仕様書」を作成します。
■関連記事:
④プログラミング
上流工程で作成した要件定義書や機能仕様書などを基に、システムエンジニアやプログラマーがプログラミングを行います。
⑤テスト
プログラマーやシステムエンジニアが作成したプログラムを検証する段階です。システムが要件通りに動くか、不具合がないかなどを以下の方法でテストします。
■単体テスト
作成したシステムが要件通りに動くかを、個々の機能ごとにテストします。不具合が見つかり次第、修正が行われます。
■結合テスト
単体テストで不具合が発見されなかったら、次に複数の機能を組み合わせて正常に動作するかのテストが行われます。
■システム(総合)テスト
単体テストと結合テストを終えたら、システム全体で問題がないかをテストします。主に処理速度や耐久に関するテストもこの段階で行われます。
■運用テスト
システム(総合)テストで問題がなければ、最後に本番を想定した運用テストが行われます。他のテストとは違い、顧客側がテストを行います。実際の業務と同じように使用して、正しく動作するかを検証します。開発側が想定していなかった操作で、どのような不具合が出るかをチェックすることも目的となります。
■関連記事:
⑥システム移行(リリース)
全てのテストをクリアしたら、完成したシステムをリリースします。顧客側の都合や戦略によって、一括でリリースするか、段階を踏んでリリースするかが決められます。
⑦運用・保守
リリースしたシステムを正常に稼働させ続けるために、運用・保守が行われます。不具合の発生を未然に抑えるためにアップデートをしたり、不具合が出た際に対応することが目的となります。
■関連記事:
▼システム開発のポイントは、こちらを参考にしてみてください。
→システム開発の要となる上流工程の流れや下流工程で失敗しないためのポイントを解説
システム開発で使われる4つの手法
システム開発の工程は、要件定義から始まり、運用・保守で終わります。ですが、そこに至るまでの開発手法はひとつではありません。
次のようにシステム開発には4つの手法があります。
- ウォーターフォールモデル
- アジャイル開発
- スパイラルモデル
- プロトタイプモデル
以下では、各手法の流れや特徴を解説します。
ウォーターフォールモデルの特徴
上流工程の要件定義から下流工程の「運用・保守」まで、「waterfall(滝)」のように上から下へと順番に開発を進める手法です。ひとつの工程を終えてから次の工程に進み、基本的に前の工程に戻ることはありません。世界中で採用されており、システム開発では基本の手法となっています。
◯ウォーターフォールモデルの長所
- 工程が分かりやすい
- 進捗状況を把握しやすい
- コストの管理がしやすい
- スケジュールを組みやすい
◯ウォーターフォールモデルの短所
- 開発の途中で仕様変更ができない
- 開発に時間がかかる
- 大きなトラブルが起きると納期が遅れる
ウォーターフォールモデルは、開発工程の全体像を把握しやすいのが特徴です。ゴールが明確に決まっているため、納期内に完成を目指すのに最適な手法です。
一方、柔軟性に欠けるのがデメリットと言えます。工程に沿って順番に進めていかなくてはならないため、顧客から要求の追加や変更が生じると、全てやり直しになってしまいます。
ウォーターフォールモデルとV字モデルとの違い
ウォーターフォールモデルに似ている手法に、V字モデルがあります。ウォーターフォールモデルは、要件定義から運用・保守までを上から下に進めていきます。
対してV字モデルは、次のような流れで開発が行われます。
- 要件定義→システムテスト
- 基本設計→結合テスト
- 詳細設計→単体テスト
- プログラミング
要件定義などの上流工程は、ウォーターフォールモデルと同様に上から下に辿ります。プログラミングが終わった後は、要件定義、基本設計、詳細設計を、それぞれテストすることになります。この流れがVの字に見えることから「V字モデル」と呼ばれているのです。
ウォーターフォールモデルとの違いは、テスト工程が把握しやすい点です。
- 単体テストでは詳細設計の内容が盛り込まれているかをチェック
- 結合テストでは基本設計の内容が盛り込まれているかをチェック
- システムテストでは要件定義の内容が盛り込まれているかをチェック
上記のように、各テストの目的やゴールが分かりやすいのがメリットです。
▼システム開発の工程・手法は、こちらを参考にしてみてください。
→システム開発の工程と4つの手法|開発コストを抑える方法も解説
アジャイル開発の特徴
「agile(機敏な)」という名前の通り、短期間の開発に適している手法です。アジャイル開発には、「スクラム」「エクストリーム・プログラミング」「ユーザー機能駆動開発」の3つの手法があります。
- スクラム
チーム間でコミュニケーションを取りながら開発します。アジャイル開発の中でも代表的な手法です。 - エクストリーム・プログラミング
顧客をチームの一員として参加させて開発する手法です。顧客の要望に合わせて、開発途中でも仕様や要求を追加・変更しながら開発を行います。 - ユーザー機能駆動開発
顧客が必要とする機能を繰り返し開発し、一定の間隔でリリースする手法です。
アジャイル開発は、ウォーターフォールモデルと違い、最初にシステムの仕様や要求をある程度決める「リリース計画」を行います。リリース計画で決められた内容は、あくまで方向性を定めたものでしかありません。リリース計画を基に、優先順位の高い機能から「設計」「プログラム」「テスト」の工程を機能単位で繰り返します。機能単位で行われる一連のサイクルを「イテレーション」と言います。ひとつのイテレーションは、1〜4週間ほどで設定されるのが一般的です。
◯アジャイル開発の長所
- 仕様や要求の変更に柔軟に対応が可能
- 短期間の開発に向いている
- 顧客に寄り添った開発ができる
◯アジャイル開発の短所
- 要求定義が明確でないため結果がブレがち
- スケジュール管理が難しい
- 全体の把握がしづらい
- 納期の遅れが発生しやすい
アジャイル開発は、柔軟性に富んでいるのが最大のメリットです。要件定義を明確に決めていないため、顧客から要求の追加があっても対応が可能です。しかし、要求定義が決められていないため、出来上がったシステムが要求からブレることも少なくありません。さらに、開発状況の全体像が把握しづらく、スケジュール管理が難しい点はデメリットです。結果として、納期が遅れることも少なくありません。
▼アジャイル開発は、こちらを参考にしてみてください。
→アジャイル開発とは?概要から進め方、メリット・デメリット、開発手法について
DevOpsとアジャイル開発との違い
DevOpsとは、開発側と運用側が協力して開発し、継続的にシステムの価値を高めるべきという概念です。
開発側と運用側は、考え方の違いから対立しがちです。開発側は効率的に開発を進めたいと考える一方、運用側はテストに時間をかけたいと考えているからです。
DevOpsの考え方を取り入れることで、開発側と運用側が互いに協力して開発を行えるため、効率的に開発が行えるようになります。つまり、アジャイル開発はシステム開発の手法であり、DevOpsは効率的に開発するための考え方や仕組みのことを言います。
スパイラルモデルの特徴
スパイラルモデルでは、システムをいくつかのサブシステムに分割して、設計からテストまでを行う手法です。「要件定義」「設計」「プログラム」「テスト」「評価」の工程が螺旋を描いてることから、「スパイラルモデル」と呼ばれています。
スパイラルモデルは以下の工程で進められます。
- システムをサブシステム1、2、3といった具合に分ける
- サブシステム1の要件定義~テストまで行う
- 完成したサブシステムを顧客に評価してもらう
- サブシステム2の要件定義~テストまで行う
- 完成したサブシステムを顧客に評価してもらう
システム全体が完成するまで、上記の工程を繰り返します。
◯スパイラルモデルの長所
- サブシステムごとに開発するため要求の変更・追加がしやすい
- 顧客のチェックを受けながら開発するため品質が高い
◯スパイラルモデルの短所
- 開発状況の全体像が把握しづらい
- 追加・修正にコストがかかる
スパイラルモデルは、アジャイル開発のように柔軟な開発ができるのが魅力です。しかし、全体像の把握がしづらい点や、修正や追加が増えるにつれて開発が長期化し、コストがかかる点はデメリットです。
プロトタイプモデルの特徴
開発の初期段階で、機能や性能を簡略化した「プロトタイプ(試作品)」を作成します。完成したプロトタイプを顧客に評価してもらい、意見を参考にしながら開発を進める手法です。
プロトタイプモデルでは、「要件定義」「基本設計」「詳細設計」まではウォーターフォールモデルと同じですが、以降はプロトタイプの作成と顧客による評価が行われます。
顧客の意見を基に修正を繰り返し、顧客が求める機能や性能を詰めて要件定義を決定します。それから本開発に入るのがプロトタイプモデルの特徴です。
◯プロトタイプモデルの長所
- 完成形をイメージしやすい
- 要件の追加や修正を回避しやすい
- 品質の高いシステム開発ができる
◯プロトタイプモデルの短所
- 開発コストがかかることも
- 開発期間が長期的になりがち
プロトタイプモデルは、顧客側の要件定義が明確でない場合に有効な手法です。最初にある程度の完成形を視覚化できるため、顧客側も性能や機能を把握しやすく、要件の追加も回避できます。
しかし、プロトタイプを作成してから本開発に入るため、開発コストが膨らみがちです。また、開発期間が長期化しやすいのもデメリットと言えます。
システム開発にかかる費用相場
システム開発にかかる費用は会社によって違います。なぜなら、SEやプログラマの技術力によって、60万〜100万程度と人件費が上下するためです。
例えば、日本でシステム開発をする場合、一人あたりのプログラマの相場は以下のようになります。
- 初級:60~80万円
- 中級:80~120万円
- 上級:100~160万円
加えて、実装する機能やクオリティの高さによっても違いが生じるため、相場を明確に出すのは困難とされています。ですが、システム開発にかかるおよその費用は、次の方法で算出可能です。
・作業単価×作業時間+固定費用=システム開発費用
作業単価とは、SEやプログラマを1か月稼働させた場合の費用になります。これに作業期間と機材費を加えた額が、システム開発費用のおよその額になります。
一方、海外の相場も日本と大差はありません。例えばアメリカでシステム開発をすると、内訳は以下のようになります。
- コンサルタント:450万円
- システムエンジニア:300万円
- プログラマ:200万円前後
日本に比べると、システムエンジニアとプログラマーにかかる人件費は割高になっています。
しかし、中国やインドに代表されるオフショア開発を得意とする東南アジアの国々にシステム開発を外注した場合、人件費を格段に抑えられます。例えば、ベトナムに外注した場合、一人あたりの人件費は25〜50万円ほどが目安となります。
システム開発を外注するメリット・デメリット
システム開発を外注することで、以下のようなメリット・デメリットがあります。
◯システム開発を外注するメリット
- 人件費を安く抑えることができる
- 高い技術力を持ったSEやプログラマに頼める
- 新たに技術者を育成する手間が省ける
- 開発に必要な設備投資が必要ない
◯システム開発を外注するデメリット
- 技術力や理解力次第で成果物の品質が悪くなる
- システム開発のノウハウを蓄積することができない
- コミュニケーション不足がヒューマンエラーを引き起こす
- 情報漏洩のリスクが少なからずある
システム開発を外注することで、人件費を安く抑えることが可能です。高い技術力を持ったSEやプログラマに開発を任せられるのが最大のメリットと言えるでしょう。
ただし、コミュニケーションを必要とする点や、情報漏洩などのリスクがある点などはデメリットになります。
システム開発のコストを抑える方法
システム開発にかかる費用は、請け負う会社によってピンからキリまでありますが、システム開発にかかるコストは8割が人件費と言われています。つまり、人件費を抑えられれば、システム開発にかかるコストも抑えられます。
そこでおすすめなのが「オフショア開発」です。オフショア開発とは、海外にシステム開発を依頼することで、人件費を安く抑える開発手法です。
例えばベトナムやフィリピンは、プログラマーやSEのスキルが高く人件費が安いため、システム開発のコストを抑えられます。
▼「オフショア開発」については、下記の記事もぜひ参考にしてみてください。
→【2022年最新版】IT業界のオフショア開発とは
まとめ
それでは最後に当記事のまとめをします。
システム開発は、基本的に以下の工程で行われます。
- 要件定義
- 基本設計(外部設計)
- 詳細設計(内部設計)
- プログラミング
- テスト
- システム移行(リリース)
- 運用・保守
さらに、効率的にシステム開発を行うために用いられるのが、次のような手法です。
- ウォーターフォールモデル
- アジャイル開発
- スパイラルモデル
- プロトタイプモデル
これらの開発手法には、それぞれメリット・デメリットがあります。どのようなシステムをいつまでに開発したいのかに合わせて、最適な開発手法を選ぶことをおすすめします。
本記事では、将来的に進展が見込まれている新しいシステム開発の手法や流れを紹介してきました。
安心・高品質・最適価格なソフトウェア開発導入のため、システム開発で信頼できるパートナーをお探しですか?
コウェルの開発チームは、お客様のアイデアを現実へと変え、貴社のビジネスを向上させることサポートします。
開発プロジェクトについてのご相談は、ぜひコウェルにご連絡ください。
弊社のエキスパートたちが、その実現をお手伝いします。
なお、コウェルに関する詳細資料は以下でダウンロードすることが可能です。
このほか、弊社の具体的なサービスや導入事例については以下をご覧ください。
コウェルのサービスメニュー>>>
コウェルは、日本とベトナムから世界中のお客さまへ高品質なソフトウェアテスト・品質保証・オフショア開発サービスを提供しています。
コウェルの開発導入事例>>>
コウェルは情報通信、金融、流通・小売サービス、医療・ヘルスケアなど、さまざまな業界のお客様の導入を支援しています。