システム開発の手法別のメリット・デメリットを解説
公開日:2021.05.25 最終更新日:2023.11.14
システムの開発には、大きく分けて6種類の手法があります。
システムを発注する場合は、常に、開発予算を抑え、期間は短く、利用者に喜ばれるように開発したいと考えています。開発依頼する内容によっては、開発手法が、メリットやデメリットの原因となる場合があります。
発注側は、開発手法を詳細に理解する必要はありません。ただ、特徴や違いを理解して、最適な開発手法を選ぶことが大切です。
そこで6種類の開発手法のメリット・デメリットを紹介します。
【手法別】システム開発のメリット・デメリット
一般的にシステム開発の手法には、次の6つがあります。
- 手法①ウォーターフォール型開発
- 手法②アジャイル型開発
- 手法③プロトタイプ型開発
- 手法④スパイラル型開発
- 手法⑤MVCモデル
- 手法⑥DevOps
順番にメリット・デメリットについて、解説していきます。
手法①ウォーターフォール型開発
ウォーターフォールの語源は、英語の「waterfall(滝・瀑布・落水)」です。
この開発は、「要件定義」・「設計」・「開発」・「テスト」・「導入」の順番に開発が進む手法です。滝つぼに落ちる水のように、上(要件定義)から下(導入)へ開発が順番に進んでいきます。
特徴として各工程が100%完成しないと、次の工程に進むことができないという特徴があります。
この開発手法は、古くから最も多くのプロジェクトで利用されてきました。
特にこの手法に向いているのは、大規模なシステム開発が多いです。
たとえば「銀行の入出金処理」、「電力会社の配電処理」など要件定義後に機能追加などがほとんど発生しない開発となります。
ウォーターフォール開発のメリット
プロジェクトが計画通りに進めやすいことです。
進捗状況や情報把握がしやすい特徴があります。
1つの工程が完了したら次の工程に進む手法です。
あと戻り作業が発生しないため、工程スケジュールを詳細に作ることができ、計画通りに進めることができます。
また、工数や参加人員の想定が簡単に試算できます。
ウォーターフォール開発のデメリット
変更が発生した場合や作業ミスが発生した場合は、前工程に戻って修正作業を行います。作業工数および時間がかかってしまいます。
たとえば、導入前に仕様漏れ等が判明した時は、要件定義まで戻って作業を行います。よって、トラブルやミスの発生時には大幅な工数および時間がかかってしまいます。
手法②アジャイル型開発
アジャイルの語源は、英語の「agile(機敏な・俊敏な)」です。
アジャイル型開発は、最初に「おおまかな要件定義」を作成します。そこから2〜3週間で利用開始できる単位に分割します。
重要な機能から「設計」・「開発」・「テスト」・「利用開始」を1つのサイクルとしてイテレーション(反復・サイクル)を繰り返しシステムの完成を目指す手法です。
開発規模を小さくまとめるため、利用開始までの期間が短くできるのが特徴です。
つまり、機能追加等があることを前提にした開発手法です。
特にこの手法に向いているのは、機能追加等が多いWebサービス・モバイルアプリやゲームなどのプロジェクトが多いです。
要件が、固まっていないプロジェクトなどもこの手法が用いられます。
アジャイル開発のメリット
利用開始までの期間を短縮できることです。
機能変更に臨機応変に対応しやすいという特徴があります。
アジャイル開発は、利用者側が積極的に参加する手法です
必要な機能追加や使い勝手など、利用者側のニーズを吸収しながら短いスパンで開発とレビューを繰り返します。
重要な機能から開発できるため、短納期でユーザーに自社サービスを届けられます。
アジャイル開発のデメリット
変更が頻繁に加えられることにより、スケジュール管理・工程管理が困難になり、その結果利用開始が遅れる場合があります。
当初の要件からかけ離れたものが、出来上がる可能性も懸念されます。
また、利用者側が積極的に参加し機能変更に対応した結果、本来の必要なニーズから離れてしまう場合があります。また、その結果、開発コストが当初の想定より膨らんでしまうことも考えられるでしょう。
利用者側の参加がない場合は、完成したシステムが思ったものと違うことになり失敗する場合があります。
手法③プロトタイプ型開発
プロトタイプの語源は、英語の「prototype(試作品・原型)」です。
プロトタイプ型開発は、最初に試作機を作成します。
プロトタイピング型と記述する場合がありますが、意味は同じです。
利用者は、試作機を利用して自分が考えているシステムかどうか確認します。試作機に変更や機能追加をおこない、システムを完成に近づけていく手法です。
アジャイル開発は、こまめに利用を繰り返す手法ですが、プロトタイプ型は、試作機に機能が追加され、すべて完成するまで利用開始されません。
特にこの手法に向いているのは、まったくの新規事業・新規サービスのように参考となるサービスがなくUI(ユーザーインターフェース)など、手探りで開発していかなくてはならないプロジェクトです。
プロトタイプ型開発のメリット
試作機のレビュー・修正を繰り返すため、開発者と利用者の認識のずれが起こりにくいことです。
また、機能不足や不具合を開発の初期段階で回避できる特徴があります。
イメージがぼやけた状態でも開発をスタートできます。
プロトタイプ型開発のデメリット
試作機への機能変更に簡単に対応できるため、頻繁に機能変更が発生し、スケジュール通りに進められない可能性があります。
試作機に多くの費用と時間が、かかってしまいます。
大規模なプロジェクトには向いていません。
手法④スパイラル型開発
スパイラルの語源は、英語の「spiral(渦巻・らせん)」です。
ハイブリッド型と同じ意味を持ちます。
スパイラル型の進め方は、大まかな仕様を決め、機能ごとに分けたものを、優先度の高い順にまとめておきます。
優先度の高いものから順番に、設計から開発まで本番に近い機能を実装し試作機を作ります。
利用者は、試作機を確認し問題なければ次の試作機の作成へ進みます。
そのため、開発段階にて利用者と開発者側での認識の齟齬を回避することが可能となります。
スパイラル開発は、試作機で機能確認を随時行い開発していく手法です。
機能ごとに毎回テストを行い、利用者が確認作業を行います。その結果、評価やレビュー、改善をおこないシステムの品質を高めます。
アジャイル型との大きな違いは、システムが完成するまで利用開始されないことです。
特にこの手法に向いているのは、品質を重視する大規模プロジェクトです。また、仕様が変更する可能性があるプロジェクトとなります。
その都度、試作機を作成するため開発費が肥大化します。そのためあまり利用されていません。
スパイラル型開発のメリット
コンパクトな機能を実装した試作機を作成することです。
利用者は、試作機を使用して確認を行い、その結果、機能変更等を行うことができます。
機能変更に対しては、柔軟に対応できます。試作機から認識のズレを修正できます。工程の戻り作業も減らせます。結果的に、クオリティーを高められる点がメリットです。
スパイラル型開発のデメリット
スパイラル型は、一見、クオリティーが高く柔軟性に富んだ開発の手法と思われます。
しかしプロジェクトの長期化やコストが膨らんでしまうリスクがあります。
特に大規模システムの場合、機能が多く試作機のレビュー回数が多くなります。プロジェクトが長期化し開発コストが膨らんでしまう点もリスクと言えるでしょう。
手法⑤MVCモデル
MVC は、Webフレームワークで一般的に取り入れられている、アプリケーション設定を整理するための概念の一つです。
MVCモデルのMVCとは、「Model(モデル)」、「View(ビュー)」、「Controller(コントローラー)」の頭文字から名付けられています。プログラミングの中身をわかりやすく整理するために用いる手法です。
モデル(M)では、データベースにアクセスする要求が来ます。
その時、データベースから読みだしたデータに変換を行って、次の処理に渡すような役割を担っています。
ビュー(V)では、Webブラウザに表示するHTMLを動的に生成する部分です。
コントローラー(C)では、端末から来たリクエストURLに対して、事前に設定している処理を行います。リクエストURLと処理を関連付け、次の処理に渡すような役割を担っています。
MVCはWebフレームワークにおける設計思想のようなものです。
PHP のフレームワークには、「Ruby on Rails」や「CakePHP」があります。
また、Windowsのフレームワークには、「ASP.NET MVC 5」など、MVCの考え方に基づいて設計されたフレームワークが数多くあります。
MVCモデルは機能ごとに開発を分ける特徴を持っているため、小規模な開発には不向きとなります。
MVCモデルのメリット
分業で開発を進めやすいことです。
また、開発者が変わっても開発を引き継ぎやすい点もメリットの一つでしょう。
MVCモデルは、コードがモデル・ビュー・コントローラーに分かれているため、理解しやすいのが特徴です。開発者が変更になってもすぐに開発に着手できます。その結果、効率の良い開発ができるため、スケジュール停滞が起こりにくい手法であると言えます。
ビューに問題が起きた場合は、ビューのみ確認することで他のモデルやコントローラーには影響しません。
MVCモデルのデメリット
全体を理解しモデル・ビュー・コントローラーに分けて、コードを作成します。そのため時間やコストがかかる場合があります。
Controllerを介してModelは、データベースへのアクセスやそのデータを変換する処理を行います。処理負担が大きくなることによりボトルネックとなり、処理速度が遅くなってしまう可能性が生じます。
また、Controller から Model へのリクエストが多すぎると、Model と Controller間のアクセスが多くなり、MVCモデルの機能ごとの独立性が保てなくなる恐れがあります。
手法⑥DevOps
DevOpsは「デブオプス」と読みます。
「Dev」は、Development(開発、作成)、「Ops」は、Operations(運用、作業)を表します。2つの文字を組み合わせた造語です。
アプリケーションの開発者と運用者が協力しあうことにより、柔軟なサービス提供を迅速に行うための考え方や仕組みをDevOpsと呼びます。
開発者は、アプリケーションの機能アップを進めたいと考えています。運用者は、機能はそのままでも安定運用を目指したいと考えている場合があります。意見の相違が生じてしまうことが多いです。これらの問題を解決するために、DevOpsの考え方が生まれました。
DevOpsの手法は、開発者と運用者の連携を重要視します。開発では、アジャイル開発を導入することが多く、利用開始後まで拡大して、ライフサイクルを回していきます。
DevOpsのメリット
システム開発にとどまらず開発後も運用(保守運用)、モニター(ユーザーからの評価、要望などを確認)を行い、利便性と安定性を両立しやすいことです。
開発者と運用者が連携し合うことにより、「開発スピードの向上」、「生産性の向上」、「信頼性の向上」、「拡張性の向上」、「セキュリティの向上」が実現できるようになります。
DevOpsのデメリット
開発者と運用者が協力し合うことにより、メリットが得られますが、どちらか一方に問題が生じると、全体が進まなくなる危険をはらんでいます。
その結果スケジュールが遅れることによる経費の増大、利用開始の遅れなど影響がでてしまうことがあります。
システム開発会社を選ぶ際のポイント
開発をスムーズに進めるには、適切な開発手法を選ぶだけでなく、業者選びも大切です。
以下は、重視すべき4つのポイントとなります。
- ポイント①個人か法人どちらに依頼するかを決める
- ポイント②自社開発の割合は高いか
- ポイント③開発担当者と打ち合わせができるか
- ポイント④企業自体の業績が安定しているか
システム開発業者は、目的や開発するシステムの規模にあわせて、個人か法人か、どちらに依頼するかを決めます。また、開発会社が、自社で開発業務を行っているかどうか、その割合も含めて確認が必要です。開発フェーズでは、担当者が責任をもって開発ヒアリングから利用開始まで行ってくれるかどうかも重要となります。最後に依頼する開発業者の業績はどうかなど、重視する4つのポイントを意識して業者選定を行ってください。
「EMEAO!」をご活用いただくのも一つの手です。
コンシェルジュが希望条件や要件に即した複数の優良業者を選定して紹介してくれます。
システム開発の手法に迷ったとき
システム開発の6つの手法とそれぞれのメリット・デメリットについて解説しました。
システム開発にはさまざま手法があり、目的・要件・規模・期間などにより最適な開発手法が異なります。
それぞれにメリット・デメリットがあるため、事前にシステム内容を確認したうえで開発手法を選択することが大切です。
「システム開発したいが方法がわからない」とお悩みの方は、EMEAO!にご相談ください。
専任コンシェルジュにお悩み・要望をお聞かせください。
この記事を書いた人
編集部員 濵岸
編集部員の濵岸と申します。コンテンツ作成と取材を主に担当しております。身長が低いため学生時代は「お豆」と呼ばれていました!豆らしく、皆様の役に立つ記事を「マメに豆知識を!」の意識で作成します!どうぞよろしくお願いいたします!