最適な開発方法を選ぼう!システム開発の種類と進め方
2021/05/12
現代のシステム開発事業は、国内の専門会社に依頼もしくはオフショア開発を導入している企業がほとんどです。理由としてはリソースの不足やコスト削減目的などが挙げられます。
ただ外部に依頼するにしても、システム開発方法やその特性について最低限知っておかなければ、依頼先の選び方や基準がわからず損をしてしまう可能性があるのです。
本記事では、システム開発方法の種類とそれぞれの特徴、メリットや違いについて紹介していきます。今後システム開発の依頼を考えている人はぜひ参考にしてください。
【システム開発の種類】
システム開発の種類はスクラッチ開発とパッケージ開発の2つがあります。
1. スクラッチ開発
スクラッチ開発とは、自社オリジナルの方法でゼロからシステムを開発することです。
ゼロベースから始めるので、オリジナルのシステムを作ることができ、独自性は保たれることが最大の魅力です。
その反面、人件費・時間・労力・金銭面の負担が大きくなることが高いハードルになります。
2. パッケージ開発
パッケージ開発とは、ひな形となっている既存のシステムを活用する開発のことです。
気に入ったシステムがあればそのまま使用することも可能ですし、カスタマイズすることもできます。また、低コストで済む場合が多いのも特徴です。
しかし、独自性に関してはほぼ皆無で、既存システムにない機能を欲する場合は活用が難しいでしょう。
【システム開発の手法】
システム開発には、パッケージ開発・システム開発との2種類にわかれるほか、4つの手法があります。それぞれの特徴を併せて覚えておくと、依頼する会社を絞りやすくなるでしょう。
1. ウォーターフォール型開発
ウォーターフォール型開発とは、システム開発手法の中で最もスタンダードです。開発における工程を計画的に上から下へ順番に行なっていくのが特徴で、まるで水の流れのように進むことからこの名がついたといわれています。
2. アジャイル型開発
アジャイル型開発の「アジャイル」とは日本語で「素早い」「機敏」「頭の回転が速い」といった意味を持ちます。作業工程を小さく区切り、そのたびに実装とテストを繰り返し進めていくため、その名の通り開発期間の短縮、スピードアップにつながるのです。
3. プロトタイピング型開発
プロトタイピング型開発とは、ひとまず動作するシステムを早い段階で作成し、適宜細かい修正に対応する開発手法です。作成したいシステム構想や優先機能を明確に決めている場合、この手法で先にある程度のシステムを構築することで期間短縮が狙えます。
4. スパイラルモデル
スパイラルモデルとは、一通り決まった作業工程を繰り返し、上質なシステムを開発していく手法のことです。アジャイル型開発のように繰り返す部分は似ているものの、品質を保つためにユーザーの評価や分析を取り入れつつ進めているのが違いといえるでしょう。
【スクラッチ開発とパッケージ開発の違い】
スクラッチ開発とパッケージ開発は、「独自性の有無」と「コスト・企業側の負担」の両面に違いがあります。上述したようにスクラッチ開発はゼロベースでシステム開発を始めるため、独自性は生まれやすく新しいシステム機能を加えるには最適です。しかしコストに関してはパッケージ開発よりもはるかにかかると考えられます。
一方パッケージ開発は、既存のシステムを用いるためコストは安く済みます。しかし、独自性は失われ、既存のシステムにはないシステムを導入したい場合に不利です。
システム開発にかける予算、期間と相談してどちらが向いているかをしっかり考えましょう。
【開発手法別のメリット・デメリット】
従来、システム開発の手法はウォーターフォール型開発でしたが、2000年を超えてからはスピードを重視したアジャイル型に変化してきました。しかし、どの手法にするかはそれぞれのメリットとデメリットを見比べて考えた方が良いでしょう。
メリット | デメリット | |
ウォーターフォール型 |
・経験豊富な人材が多い ・着実な進行が可能 ・進捗の把握が容易 |
・工程のどこかで誤りがあった場合、すべてやり直しになる可能性が高い |
アジャイル型 |
・開発期間の短縮 ・要件が決まったものから開発できるため全体像が定まっていないシステム開発でも有効 |
・計画性が重視されるシステム開発には向いていない |
プロトタイピング型 |
・全体像が定まっていないシステムの開発でも有効 ・作りながら修正を加えるため柔軟性に富んでいる |
・計画性が重視されるシステム開発には向いていない |
スパイラルモデル |
・大規模システム開発に有効 ・修正に応じて随時アップデートされるため時代にあったシステム開発が可能 ・ユーザーの評価や工学的分析を行いつつ開発するためユーザー満足度が高い |
・修正点に対しその都度システム開発を行うためコストや企業負担が大きい |
【システム開発の進め方】
システム開発の一般的な流れは、以下の7ステップです。
1.要件定義
システム開発をするということは、そのシステムで実現したいことがあるはずです。その目的に合わせて、システムに求める機能などをまとめる必要があります。これが「要件定義」です。
要件定義を行うことで、開発が進む中で判断に迷う場面が出てきた際も、当初の目的から方向性をずらすことなく、正しい決断ができるようになります。
システム開発会社からは、この要件定義を行うためのヒアリングを受けることになるでしょう。可能であれば、RFP(Request For Proposal:提案依頼書)を作成することが望ましいです。RFPとは、システム開発などを発注する際に、複数の発注候補先から提案を受けるために作成する文書のことです。RFPを作成することで、依頼内容を整理できたり、システム開発との認識を合わせたりできるメリットがあります。
システム開発会社が要件定義を要件定義書にまとめ、スケジュールや費用とともに提案してくれるため、内容を精査して要望があれば伝えましょう。修正して折り合いがつけば契約を結びます。
2.設計
要件定義書を作成したら、求める機能を具体的な開発方法へ落とし込む工程である「設計」へと進みます。
設計は、機能ごとの設計を行う「基本設計(外部設計)」と、基本設計で設計した仕様に基づき、プログラミングができるほどに詳細な設計を行う「詳細設計(内部設計)」から成ります。
このフェーズで発注者側に発生する作業は特にありませんが、基本設計書、詳細設計書が納品されるため、確認しましょう。
3.構築
システム開発会社側で、設計した内容に基づき、実際にプログラミングを組むなどして、機能を実装します。
このフェーズも、発注者側に発生する作業はありませんが、適宜、進捗状況の報告を受けるなどして、スケジュール通りに進んでいることを確認しましょう。
4.テスト
システム開発会社側で、構築したシステムをテストします。
テストは、機能単位の動作などを確認する「単体テスト」、複数の機能単位を組み合わせて動作などを確認する「結合テスト」、システム全体の動きを確認する「総合テスト」、システムをリリースする前の最終工程である「運用テスト」から成ります。
単体テストから総合テストまではシステム開発会社側で行われるため、テスト結果をまとめた実施報告書が納品されたら確認します。
最後の運用テストは、発注者側で実際のユーザー部門の従業員を交えて行います。要件定義書の機能が漏れなく搭載されていること、動作が正しいことをチェックしましょう。
テスト結果に問題があればシステム開発会社側に修正してもらい、テストを行うという流れを繰り返します。
5.検収・納品
運用テストでシステムに問題がないことが確認できたら、システム開発会社からシステムが納品されます。
納品前に、もう一度、発注者側でテストを行います。「受け入れテスト」と呼ばれるもので、検収ともいいます。運用テストとは違い、不具合を見つける目的で行うものではないため、使い勝手はどうかなどを中心に確認します。
問題がなければ検収終了、納品となります。納品の際は、システム開発会社が初期設定や操作講習を行ってくれます。ユーザー部門の担当者にもレクチャーを受けさせましょう。
6.リリース(システム移行)
納品されれば、旧システムから新システムへとシステムを移行するリリースのフェーズです。
リリース(システム移行)には、平行移行、部分移行、一斉移行の3種類があります。システム開発会社と相談し、状況に合わせて最適な方法を選びましょう。
7.運用・保守
システムがリリースされて、実際に利用が開始されたら、システムを安定稼働させるために管理する必要があります。これが運用・保守です。
システム開発会社によっては、有償で運用・保守サービスを提供している場合もあります。自社に人員がいる場合は、自社で行うことも多いですが、業務効率化の観点から外部サービスを利用するケースも少なくありません。
システム開発会社が、リリース後に必要な保守内容をまとめた「フォロー計画書」を作成してくれている場合は、これに沿って運用・保守を行います。
【システム開発を進める際のポイント】
システム開発を進める際、システム開発を成功させるために、発注者側の担当者として工夫できるポイントは、以下の3点です。
1.要件定義に重点を置く
「システム開発の進め方」でご紹介した流れの多くのフェーズはシステム開発会社側が担うため、発注者側に発生する作業はそう多くありません。ただ、このうち最初の「要件定義」だけは、発注者側が注力すべきフェーズです。
仮に、構築が始まってしまってから、追加でどうしても必要な機能が出てきた場合、システム開発会社は、要件定義までさかのぼって業務をやり直す必要があります。手戻り工数が発生するため、人件費がかかります。これを、発注者側で補填しない場合はシステム開発会社の持ち出しとなるため、関係性は悪化するでしょう。何より、予定していた納品スケジュールが伸びる恐れがあります。
要件定義の段階までに必要な機能をすべて把握できるよう、ユーザー部門の担当者にヒアリングを実施するなどして入念に洗い出し、システム開発会社からのヒアリングにも時間と手間をかけることを意識しましょう。
2.システム稼働後の運用も考えておく
前項とも関連しますが、要件定義の段階で、システムが完成した後の運用を行うのは誰か、運用にかけられる費用はどのくらいかについても、確認・検討しておく必要があります。
メンテナンスのしやすさを考慮して構築してもらうことが基本になるものの、その他の要件との兼ね合いで、どちらを優先すべきか検討しなければならない場面が出てくる可能性もあります。その際、たとえば、「運用後は、運用・保守サービスを外注でき、ある程度の予算がつけられる」ということであれば、多少、保守性を下げてでも機能を優先するといった選択が取れるでしょう。
3.システム開発会社とのコミュニケーションを密に取る
システム開発会社とは、単に発注者と受注者の関係にとどまらず、パートナーとして連携し、一緒にシステム開発に取り組む姿勢が大切です。
スケジュールの進捗確認や疑問の解決、相談ごとなど、ささいなことでも細かくコミュニケーションを取ることで、問題が小さいうちに解消できる可能性が高まります。定例ミーティングのほかにも、随時、連絡を取って進めましょう。
【まとめ】
システム開発の種類と手法を知って、最適な開発方法を選ぼう
システム開発は、種類と手法によって特徴、メリット、デメリットが大きく異なります。そのため自社の規模やシステム開発にかける予算、期間、希望のシステムによって導入するべき手法が変わるでしょう。まずは、どんなシステム開発を希望するのか明確にしてみることをおすすめします。
VNEXTでは、400名以上のスタッフが開発を進めています。
様々な言語に対応し、サイト構築はもちろん、バックエンドのクラウドサーバ構築、モバイル開発にも対応。
年々変わっていく開発トレンドに合わせるように日々の技術変動もキャッチアップしております。
また、大手企業の中には一度行った開発で、そのままの運用長い間続けて、古いシステムが残っている場合などもあるかと思います。
VNEXTではそんな他社では難しいような古いシステムにも対応できる体制を整えており、どんなクライアントもご満足させることができます。
まずはお気軽にお問い合わせください。