システム開発の工程・流れを徹底解説!【2024年最新版】
システム開発を依頼する前に、具体的な開発工程や流れを事前に把握しておきたいという方は多いのではないでしょう。そこで今回は、システム開発工程を10段階のフェーズに分けて紹介するとともに、各フローの具体的な作業内容や注意点を分かりやすくまとめます。さらに、気になる費用相場やおすすめのシステム開発会社など、事前に知っておくとためになる情報を合わせて紹介しますのでぜひ参考にしてください。
システム開発の工程は手法によって異なる
前提として、システム開発ではあらかじめ決められた工程に則って開発を進めるのが基本です。ただし、開発手法は複数存在し、手法ごとに具体的な工程は異なる点に注意が必要です。ここでは代表的なシステム開発の手法を5つ紹介しますのでチェックしてみましょう。
- ウォーターフォール開発
-
- ウォーターフォール開発
- アジャイル開発
- プロトタイプ開発
- スパイラル開発
- DevOps(デブオプス)
以下からは、更に詳しく解説します。
・ウォーターフォール開発
「ウォーターフォール=滝」という言葉の意味が表すとおり、上流工程から下流工程への流れに沿って進める開発手法
・アジャイル開発
開発に修正が出ることを事前に想定し、開発とテストを繰り返しながら開発を進める手法
・プロトタイプ開発
ウォーターフォール開発の改良版で、本開発の前に試作品を作成した上で修正・改善点を洗い出し、開発に入る手法
・スパイラル開発
ひとつの機能を開発してから次の機能へ、といった具合で、システムに備える機能ごとに分割しながら段階的に開発を進める手法
・DevOps(デブオプス)
Development(開発チーム)、Operations(運用チーム)、という言葉を組み合わせた造語で、開発チームと運用チームが連携しながら開発を進める手法
なお、今回の記事では上記開発手法の中でもシステム開発において主流である、ウォーターフォール開発を例に出して解説していきます。
システム開発の工程は10項目
システム開発の工程は大きく分けると以下10段階に分類されます。
-
- 要件定義(要求定義)
- 外部設計(基本設計)
- 内部設計(詳細設計)
- プログラミング
- 単体テスト
- 結合テスト
- システムテスト(総合テスト)
- 運用テスト
- システム移行(リリース)
- 運用・保守
ここから、上記10個の工程について、具体的な概要や注意点などをまとめますので順にチェックしてみましょう。
①要件定義(要求定義)
システム開発における要件定義とは、システムに実装する内容や範囲、開発で実施すべき業務内容などを分かりやすく整理する工程です。システム開発を進めるためには、システムの目的や目的達成に必要な要素を明確にしておく必要があるだけでなく、スケジュール、予算、人員なども初期段階で固めておく必要があります。
また、依頼者と開発側に食い違いが起きないように要件定義は両者を意見をすり合わせて行いましょう。
加えて、、要求定義とは、ユーザーから出されたシステムに対する要求を整理する作業を指します。流れとしては、まずユーザーからの要求を整理した上で要件定義を行うことによって、ユーザーニーズとのギャップを軽減しやすくなります。
②外部設計(基本設計)
外部設計とは、要件定義の内容に則り、目に見える部分以下のような部分の設計を行う工程です。
-
- 操作画面のデザイン、レイアウト
- 操作手順
- セキュリティ
- データ出力
これらは、実際にユーザーが目にしたり、操作したりする部分であることから「外部」と表現されますが、基本設計や概要設計と呼ばれることもあります。まずは目に見える仕組みを固めておくことで、開発にあたる関係者のイメージを固め、統一感を持って開発を進めやすくする効果があります。また、システムそのものの外部的な設計に留まらず、セキュリティ面や費用、スケジュールなどの詳細もこの工程で決定していく流れとなります。
③内部設計(詳細設計)
外部設計では操作画面や操作手順など、目に見える部分の枠組みを設計しますが、システムはそれだけで稼働しません。
データベース、機能などシステムの基盤となる部分を設計する内部設計を行います。システム内部を細かく設計するプロセスであることから「詳細設計」とも呼ばれますが、外部設計の内容を正しく反映させる必要があるのはもちろん、後の開発をスムーズに進めるための配慮も大切です。エンジニア視点を取り入れながら、開発をサポートする役割も担っているのが内部設計の大きな役割です。
④プログラミング
内部設計(詳細設計)まで完了すると、開発工程に入ります。システム作りで具体的に行われるプログラミングとは、JavaやPHPといったプログラミング言語(開発言語)を用いてシステムを構築していきます。
プログラミング言語はコンピューターを動かすための指示役を担っており、言語の組み合わせによってコンピューターへの指令が変わります。画像処理が得意な言語、記述自体がシンプルな言語、複雑なデータ処理と相性の良い言語、など各言語の特徴を踏まえて、開発するシステムと相性の良いものを選びます。
⑤単体テスト
プログラミングを通じて作り上げたシステムは、正常に作動するかどうかをテストする必要があります。このテストは複数の工程に分かれており、プログラム作成後にまず行われるのが単体テストです。
単体テストでは、可能な限り確認できる限りの不具合を洗い出すことを大きな目的としているため、機能ごとに分割して一つひとつ動作検証を行うことで不具合の有無をしらみつぶしにチェックしていきます。万が一バグが発生した場合は単体テストの段階で修正していけば、大きなバグが発生する可能性を軽減できます。
⑥結合テスト
結合テストとは、単体テストを終えた各要素を組み合わせた上で、想定した動作・挙動を示すかどうかをチェックするテストです。電化製品に例えると、単体テストで部品のチェックを行い、部品を組み合わせた後にきちんと動作するか確認するのが結合テストとイメージすると分かりやすいでしょう。
単体テストで一つひとつの要素はチェックしているものの、実際に組み合わせて見ない限り分からない挙動があるのも事実。実際に、単体テストでは不具合が起こらなかったにもかかわらず、結合後に問題のある挙動が発見されるケースも珍しくありません。そのため、負荷がかかった状態やイレギュラーな操作を実施した際など、さまざまなパターンの結合テストを実施してチェックする必要があります。
⑦システムテスト(総合テスト)
総合テスト(システムテスト)とは、要件定義の内容に則り、システムが適切に稼働するかをチェックする開発者側の最終テストです。システムテストでは、単体テスト・結合テストという2つの段階を経て進みますが、これらをクリアした後に「クライアントに納品する前の最終テスト」として総合テストは実施されます。
単体テスト・結合テストでは不具合の洗い出しや挙動などをチェックするのが大きな目的でしたが、総合テストでは要件定義で定められた仕様をしっかり網羅しているかを全体的な視点でチェックします。不具合チェックはもちろん、使いやすさや満足度などのユーザー目線での評価を行うことにより、システムの完成度を判断します。
⑧運用テスト
運用テストとは、これまで紹介してきた複数のテストにおいて最後を締める工程になります。単体テスト・結合テスト・システムテスト(総合テスト)と異なるのでは、「ユーザー側でテストを実施する」ところです。本番環境下で実際に使用するユーザーがテストを行うことにより、開発者側で想定していなかった操作までチェックができます。
例えば規程の手順を踏まずに保存しないままシステムを終了させるなど、ユーザーの操作には想定外の挙動が含まれる可能性があります。こうしたあらゆる可能性を実際に使用するユーザーに操作してもらった上でチェックすることにより、操作性や不具合の見通しなどを洗い出し、「納品できる状態であるか」を判断します。
⑨システム移行(リリース)
前述の4段階のテストをクリアした後は、システム移行(リリース)を行います。システム移行とは開発したシステムを本番環境へ移す工程のことで、事前に定めた移行計画に則って進める流れとなります。
特に既存システムからの入れ替えや他のシステムとの連携が必要な場合には、業務に支障をきたさないように数ヵ月から数年かけて慎重に計画を練るケースも珍しくありません。
システム移行をスムーズに進めるには、実施手順をあらかじめ立てておいた上でリハーサルを行っておくことが大切です。リハーサルで問題が発生した場合には改善を行い、懸念を払しょくした上で本番環境への移行を行うことであらゆるリスクを軽減できます。
⑩運用・保守
システムはリリースして終了ではありません。実際にシステムの運用をはじめてみるとトラブルが発生しシステム停止もやむを得ないケースが発生する可能性があります。この場合に重要なのが「保守」と呼ばれる作業です。
分かりやすくいえば、システムのサポート・フォローのような作業のことで、トラブル発生時の対処はもちろん、システムが正常に作動するために運用をサポートします。また、保守の中には既存システムのアップデートや改善も含まれるため、運用保守の段階では顧客と双方向的なコミュニケーションを築ける体制を構築しておくことが大切になります。
システム開発の発注・契約までの流れ
ここでは、システム開発を外部に発注してから契約するまでの以下5つの流れを解説します。
-
- 発注先を探す
- 開発範囲を決定して提案依頼書(RFP)をまとめる
- 発注先候補に対してオリエンテーションを行う
- 候補を絞り込んで決定
- 基本契約書締結
①発注先を探す
システム開発を外部に依頼するのであれば、当然ながら発注先を選定する必要があります。
以下のようなポイントを踏まえて、選定していきましょう。
-
- 費用面
- システム開発会社の得意分野
- 実績や経験
- 開発体制
- 開発スピード
ポイントとなる要素は複数存在しますが、システム開発はただでさえ専門的なスキルや経験が求められる分野であるため、発注先選びはプロに任せるのが安心です。
アイミツでは多種多様なシステム開発会社の情報を取り揃えており、お客様の要望やお悩みを踏まえた上で相性の良さそうな会社を紹介できます。また、気になる会社を手軽に比較検討することも可能ですので、システム開発を外注したい方はお気軽にご相談ください。
②開発範囲を決定して提案依頼書(RFP)をまとめる
提案依頼書(RFP)とは、システム開発時に依頼者(ユーザー)側が新システムに求める要件や実現したい業務、解決次第課題などをまとめた資料です。そもそも一口にシステム開発といってもシステムの種類は膨大であるため、開発会社は「どのようなシステムを開発すべきなのか」を踏まえた上で提案を行います。
したがって、依頼者としては事前に「どのようなシステムを作って欲しいのか」を、明確にするため、社内に存在する課題などの情報を洗い出しを行います。また、開発するシステムが社内全体に影響を与える場合は関連する部署への共有も重要になります。
システム開発を外注する際には非常に重要な資料となりますので、以下の書き方に関する例も参考にしながら用意しておきましょう。
③発注先候補に対してオリエンテーションを行う
発注先候補に対してオリエンテーションとは、前述の提案依頼書(RFP)に基づいた自社のニーズを説明する工程のことです。提案依頼書(RFP)にはシステムの要件をはじめとした自社のニーズがまとめられていますが、A4用紙で1枚ほどのドキュメントにまとめるケースが多いため、それだけで十分に依頼者側のニーズを伝えきるのは難しいのが現実です。
そこで、提案依頼書(RFP)の内容をより詳しく説明する機会としてオリエンテーションを実施します。この際、1社ずつオリエンテーションをすると内容にばらつきが出やすいため、発注先候補に対して一斉に説明する合同説明会のような形で開催するイメージを持つと良いでしょう。
④相見積もりを検討して候補を絞り込んで決定
相見積もりとは、複数の発注先候補から見積もりを取り寄せて価格や条件を比較する作業のことです。ただし、システム開発の場合、単純な金額だけで判断するのは危険です。事前に提示したRFPに対する開発会社の回答、具体的な提案内容、開発の流れやスケジュールなど、内容を細かくチェックして自社との相性を見極める必要があります。
特にシステム開発の場合、完成するシステムの仕様に大きな変わりがない場合でも開発会社によって費用が大きく変わるため、相見積もりによって「適正費用」を判断することが大切です。比較の際は条件をなるべくそろえた上で比べることにより、各社のメリット・デメリットを洗い出しやすくなるでしょう。
⑤基本契約書締結
基本契約書とは、継続的に取引を行う者同士が締結する契約書のことです。印紙税法上は契約期間が3か月を超える契約や更新期間のある契約が基本契約書とみなされています。
契約書であることは確かですが、「基本」という言葉が示すとおり、契約の目的や契約期間、報酬の支払い方法、秘密保持義務といった包括的な内容の取り決めを交わす契約となります。
そのため、実際にシステム開発を依頼する際には基本契約書だけでなく、詳細な内容を明記した個別契約書も作成する必要があります。個別契約書では、分担する作業の内容、共同で行い作業の内容など具体的な作業内容に加え、最終的な請負金額まで明記するため、基本契約書と個別契約書はワンセットだと考えましょう。
発注・契約までの流れという点においては、基本契約書の締結を行うことで完了となるため、ここまでが基本的な一連の手続きです。
システム開発の工程において重要なポイント
前述のとおり、システム開発ではいくつもの工程をクリアしながら進める必要があります。そこでここからは、システム開発で失敗しないための工程に関するポイントを解説しますので参考にしてください。
発注者と開発者の認識を合わせる
システム開発を外部に依頼する場合、発注者と開発者は別々の企業となるため、互いの認識にギャップが発生しないように注意する必要があります。
その上で大切になるのが、システム開発の柱となる「要件定義」。要件定義は発注者のニーズやシステムに対するイメージを具体化してまとめたものであるため、この段階でどれだけ明確にイメージを共有できるかが重要になります。したがって要件定義や設計段階には特に慎重になりながら、両者の認識を合わせていきましょう。
プロジェクトメンバー間での認識のズレをなくす
システム開発は複数のスタッフが各々の専門分野を活かして作業を分担しながら開発を進めるのが基本です。そのため、プロジェクトメンバー間で認識にズレが生じてしまうと、「スタッフAは適切な作業」「スタッフBは誤った作業」といった具合にミスが発生するリスクが高まってしまいます。こうした事態を防ぐためには、プロジェクトメンバー間で密なコミュニケーションを継続的に取りながら、認識にズレが出にくい環境を構築しておくことが大切です。
作業の進捗を見える化する
システム開発でスケジュールどおりに開発を進めるためには、以下のポイントを心掛けながら作業の進捗状況を見える化しておくことが大切です。
-
- 全体的なスケジュールだけでなく、細分化したスケジュールを見える化する
- 誰が何を担当するのか見える化する
- 細分化したタスクや工程の進捗度合いを分かりやすく見える化する
こうして誰もが進捗状況を把握できる環境を築いておくことで、スケジュールの遅延やタスクの見落としを防ぎやすくなります。
フェーズごとに区切ってテストを行う
システム開発の工程に不具合はつきものですが、不具合はなるべく早い段階で解消するに越したことはありません。不具合に気付かず開発を進めると、後のフェーズでエラーが発生し原因の追究に工数に時間が掛かってしまいます。したがって、システム開発時にはフェーズごとにテストを行うことにより、なるべく不具合や問題を早期発見できるように努めましょう。
システム開発の費用相場
システム開発の費用は、開発するシステムの種類によって大きく変わるため、代表的なシステムの種別ごとに費用相場をまとめて紹介します。
システム開発の種類 | 費用相場 |
Webシステム | 50万~500万円 |
業務システム | 300万~1,000万円 |
スマホアプリ | 50万~1,000万円 |
なお、完全オリジナルでシステム開発を依頼する場合の相場は400万円以上となるため、費用を抑えたい場合にはある程度パッケージ化されたシステム開発を検討すると良いでしょう。簡易的な業務ツールや顧客管理システムなら、10~50万円で開発できるケースもあります。
「自社にあった会社が見つからない」「会社選びに時間が割けない」とお悩みの方は、お気軽に「アイミツ」にお問い合わせください。数あるシステム開発会社からあなたの要望にあった会社をピックアップして無料でご紹介いたします。
おすすめのシステム開発会社5選
ここではおすすめのシステム開発会社を5社厳選して紹介しますが、システム開発を外注する場合はなるべくさまざまな会社を比較検討することが大切です。アイミツの調査によると、実際に問い合わせをした人の多くは、平均4~5社から見積もりを取っていますので、複数社から相見積もりを取りましょう。
株式会社野村総合研究所
予算感 | 要問い合わせ |
---|---|
従業員数 | 1000人以上 |
取引先情報 | auじぶん銀行 株式会社新生銀行 全国共済農業協同組合連合会 ソニー生命保険株式会社 |
会社所在地 | 東京都千代田区大手町1-9-2大手町フィナンシャルシティグランキューブ |
電話番号 | 03-5533-2111 |
個人商店ドットコム株式会社
予算感 | 要問い合わせ |
---|---|
設立年 | 2017年 |
会社所在地 | 大阪府大阪市此花区朝日2-18-8-3F163 |
株式会社ビジュアルソフト
こんな人におすすめ
・コンピュータソフトウェアの設計
・開発が得意な会社をお探しの方
・業界特有のシステム開発実績が豊富な会社をお探しの方
・システムの企画立案から開発までを一括して任せたい方
予算感 | 要問い合わせ |
---|---|
設立年 | 1996年 |
従業員数 | 100-499人 |
取引先情報 | 福井ユナイテッド 公益財団法人ふくい産業支援センター 医療法人珪山会鵜飼病院 株式会社エイチアンドエフ |
会社所在地 | 福井県福井市八重巻町314番地 |
電話番号 | 0776-56-3636 |
株式会社FORTE
こんな人におすすめ
・ブロックチェーン分野に強いシステム開発会社をお探しの方
・コストを抑えたブロックチェーン開発をご希望の方
・顧客の課題に合わせて柔軟に対応してほしい方
予算感 | 要問い合わせ |
---|---|
設立年 | 2018年 |
会社所在地 | 青海2-7-4 theSOHO836号室 |
【まとめ】システム開発の工程を把握したうえで依頼する会社を選ぼう
今回はシステム開発工程の流れやポイントなどを中心に解説してきましたが、システム開発は手法によって工程が変わります。また、工程自体の数が膨大であり、適切に進めるには専門的なノウハウや経験が求められるため、信頼できるプロの助けを借りるのがおすすめです。とはいえ、システム開発会社の特徴は千差万別であり、発注者の予算やニーズもさまざまですから、相性の良い発注先を絞り込むのには相当な労力が求められるでしょう。アイミツでは、多種多様な特徴を持つシステム開発会社の情報を取り揃えており、相見積もりや一括比較などを手軽に行えるだけでなく、お客様の要望を踏まえて相性の良さそうな会社をご紹介することも可能です。システム会社選びでお悩みの際は、お気軽にご相談ください。
システム開発について詳しくは以下の記事をご覧ください。
【関連ページ】
システム開発とは?手法、工程、費用、依頼先の選び方など徹底解説
システム開発会社探しで、こんなお悩みありませんか?
-
一括見積もりサイトだと
多数の会社から電話が・・・ -
相場がわからないから
見積もりを取っても不安・・・ -
どの企業が優れているのか
判断できない・・・
PRONIアイミツなら
発注先決定まで
最短翌日
- 専門コンシェルジュが
あなたの要件をヒアリング! - 10万件の利用実績から
業界・相場情報をご提供! - あなたの要件にマッチした
優良企業のみご紹介!
診断とヒアリングから
お探しします