フォーカスノート
システム開発の工程は?流れやウォーターフォールモデルなどの種類を解説
目次
「システム開発を検討中なので基本的な工程を知りたい」
「システム開発を成功させるコツを知りたい」
システム開発を検討している方の中には、上記のような悩みを抱えている方も多いのではないでしょうか。まずシステム開発の大まかな流れを紹介すると、以下の通りです。
- 要件定義
- 設計
- プログラミング
- テスト
- 運用・保守
どれもシステム開発で重要なパートです。それぞれの役割や各パートですべきことを把握することにより、システム開発の成功確率を上げられることでしょう。
そこでこの記事では、システム開発の基本的な流れ・手法・成功させるコツまで詳しく解説します。最後にはシステム開発における『よくある質問』にも回答しているため、基本から確認したい方もぜひご参考ください。
システム開発の工程とは?流れを解説
こちらでは、以下2つの面からシステム開発の流れについて解説いたします。
- システム開発の基本的な流れ(フロー・スケジュール)
- 各工程の具体的な内容
システム開発の基本的な流れ(フロー・スケジュール)
システム開発の基本的な流れは、以下のように5段階に分かれています。
- 要件定義
- 設計
- プログラミング
- テスト
- 運用・保守
決められたプロセスに沿って進めていくことで、計画的に作業を進められたり、漏れを予防する効果を見込めます。そして、それぞれの工程ではさらに細かく分かれています。例えば設計には『内部設計・外部設計』の2種類あり、テストは『単体・結合・システム』の3種類あります。それぞれの役割を理解し、適切に開発作業を進めることが重要です。
またシステム開発と一言で言っても、すべての工程に関わる方は一握りです。プログラミングやテストの実施などは特に、それぞれの専門家が担当することが多くなっているでしょう。
なお、システム開発スケジュールの詳細は以下の記事をご参考ください。
システム開発のスケジュールは?WBSなどの作成方法・上手に管理するコツを解説
各工程の具体的な内容
実際に各工程の具体的な内容を見ていきましょう。
工程 | 主な内容 |
---|---|
1.要件定義 | ユーザーニーズなどの把握 システムが満たすべき機能などの設定 |
2.設計 | 外部設計:ユーザーインターフェース・画面遷移などを設計 内部設計:アルゴリズム・データベースなどを設計 |
3.プログラミング | 設計書をもとにシステムを動かすプログラムを制作 |
4.テスト | 単体テスト:個々のモジュールが仕様通りに動くか確認 結合テスト:各モジュールを連携させた際に正しく動作するか確認 システムテスト:完成したシステムの性能などを確認 |
5.運用・保守 | システムが正常に動作するか定期的にチェック トラブル時の対応など |
要件定義とは、クライアントがシステムに望む機能を定義する段階です。現場からのヒアリングなどで判明したニーズに基づき、必要な機能を明確にしていきます。以降のステップは、この要件定義で決められたことをもとに進んでいくので、最も重要なポイントとも言えるでしょう。選ぶ開発手法によっては、厳密に定義することが求められます。
続いて、クライアントの要望を盛り込んで考える『外部設計』と、システムを実際に作動させるために必要な『内部設計』を行います。簡単に言えば、外部設計はシステムのハードウェアを指し、内部設計はシステムそのものを指すと言えるでしょう。内部設計は、以降のプログラミングにおける仕様書ともなるので、この段階で詳細に設定します。
プログラミングは、実際にシステムを動かすプログラムを作成する段階です。システム開発の場では『コーディング』と呼ばれることもあります。さまざまなコンピューター言語を用いてプログラムを組んでいきますが、1文字違っただけでもシステムはうまく動かないことから、正確さが求められる作業です。
プログラミングが終われば、仕上がったシステムが正確に動作するかをテストします。各テストの具体例は以下の通りです。
テスト名 | 具体例 |
---|---|
単体テスト | 関数の確認 ログイン機能の確認 データベースの確認 |
結合テスト | ログインプロセスが全体として正しく機能するかを確認 一連の注文処理が正常に機能するか確認 フロントエンドUIとバックエンドAPIがデータ交換できるか確認 |
システムテスト | 全体のアプリとしてユーザー要件を満たしているか確認 さまざまなデバイスやブラウザで適切に動作するか確認 通常使用下でのパフォーマンスや安定性を確認 |
これらのテストは、システムの品質と信頼性を保証するために重要な役割を果たします。各テストの目的を理解し、適切なテスト方法を実施することで品質を向上させられるのです。
テストで問題がなければリリース・運用を開始します。ただしシステムにトラブルはつきもので、早期感知・早期対応のためにも定期的なモニタリングは必要です。場合によってはトラブル対応に追われることもあるでしょう。モニタリングや対応によって得たデータは開発チームに共有し、システムの改善に役立てるのが一般的です。
以上がシステム開発における一般的な工程です。次からはシステム開発手法について解説します。
ウォーターフォールなど!システム開発の種類
システム開発には以下のモデルがあります。
- ウォーターフォールシステム開発モデル
- アジャイルシステム開発モデル
- スパイラルモデルシステム開発モデル
- V字システム開発モデル
- W字システム開発モデル
なお各手法の詳細は以下の記事をご参考ください。
システム開発の手法は?ウォーターフォールなどのメリット・デメリットを解説
ウォーターフォールシステム開発モデル
ウォーターフォールシステム開発モデルとは、伝統的で基本的なシステム開発の手法だと言えるでしょう。ウォーターフォールの開発手順は以下の通りです。
- 要件定義
- 設計
- プログラミング
- テスト
- 運用・保守
ウォーターフォールシステム開発モデルにおいては、先述した基本的な工程と同じ流れということがわかります。そんなウォーターフォールシステム開発モデルのメリット・デメリットは以下の通りです。
メリット | デメリット |
---|---|
進捗管理を行いやすい 長く利用されてきた実績がある | 仕様変更を行いにくい フィードバックをもらいにくい |
進捗管理を行いやすい点が大きなメリットです。ウォーターフォールシステム開発モデルは段階的なアプローチを採用しており、各フェーズが一定の順序で進行します。これにより、プロジェクトの進行状況を追跡しやすくなります。
一方、仕様や設計が固まっているからこそ、突発的な仕様変更や修正が起こった際に対応が遅れやすい面もあります。またクライアントやユーザーからのフィードバックを得るのが後のフェーズまで遅れるため、正確に要件を掌握できていないままプロジェクトが進むと、後々になって要件のミスマッチが生じるかもしれません。
要件が明確で変更が少ないプロジェクトに向いている開発モデルだと言えるでしょう。
アジャイルシステム開発モデル
アジャイルシステム開発モデルは、柔軟性と効率性を重視した開発モデルです。アジャイルシステム開発モデルにおける開発手順は以下のようになります。
機能A | 機能B | 機能C | 機能D |
---|---|---|---|
1.要件定義 | 1.要件定義 | 1.要件定義 | 1.要件定義 |
2.設計 | 2.設計 | 2.設計 | 2.設計 |
3.開発 | 3.開発 | 3.開発 | 3.開発 |
4.テスト | 4.テスト | 4.テスト | 4.テスト |
5.リリース | 5.リリース | 5.リリース | 5.リリース |
※アジャイルシステム開発モデルでは、各機能を同時進行で開発するのが一般的
アジャイルシステム開発モデルはウォーターフォールとは異なり、小さな単位の機能(スプリント)を繰り返して開発・リリースする開発モデルです。リリース後は要件定義に戻り、再び設計・開発・テスト・リリースを行います。必要とされる機能を1つずつ、かつ短期間で開発・リリースと繰り返すのが特徴です。
そんなアジャイルシステム開発モデルのメリット・デメリットは以下の通りです。
メリット | デメリット |
---|---|
メリット | デメリット |
柔軟性が高い 顧客満足度を上げやすい | 開発の方向性がぶれやすい 予算やリソースを管理しづらい コスト増のリスク |
『設計・開発・テスト・リリース』を頻繁に繰り返すため、プロジェクトの進行中に新しい要件や変更を容易に組み込むことが可能です。その際は顧客のニーズを取り入れるため、最終的には、より効率的に、求める機能を備えたシステムをつくりあげることができるでしょう。
一方、柔軟な対応が可能になる代わりに、開発の方向性がぶれやすいというデメリットがあります。その都度ニーズを取り入れるため、プロジェクトの要件や優先順位が頻繁に変わりやすいからです。これにより、元々の目的やビジョンから逸脱するおそれがあります。
また機能ごとに開発を行っていくため、全体の予算やリソースを確認しづらいという点もデメリットと言えます。例えば、とある機能の仕様が知らぬ間にどんどんアップデートされた場合、コストは膨れ上がるでしょう。このようなケースが複数にて発生した場合、プロジェクトの範囲・期間・コストが当初の計画から大きく逸れるかもしれません。
要件が不確定または変化しやすいプロジェクトに向いている手法と言えるでしょう。
スパイラルモデルシステム開発モデル
スパイラルモデルシステム開発モデルとは、リスク管理・質の向上を重視する開発手法です。具体的な手順は以下の通り。
1.スパイラル1 | 要件定義 設計 プロトタイプの開発 テスト 発注者からフィードバックを受ける |
2.スパイラル2 | 要件定義 設計 プロトタイプの開発 テスト 発注者からフィードバックを受ける |
3.スパイラル3 | 要件定義 設計 プロトタイプの開発 テスト 発注者からフィードバックを受ける |
4.リリース | 最終的な商品をユーザーに確認してもらう |
スパイラルモデルの進行プロセスは、複数のフェーズを繰り返し行うことが特徴です。各スパイラルの終わりには、システムの一部分またはプロトタイプが完成し、フィードバックに基づいて改善されていきます。
そんなスパイラルモデルシステム開発モデルのメリット・デメリットは以下のようなものが挙げられます。
メリット | デメリット |
---|---|
リスク管理をしやすい 顧客の意見を取り入れやすい | 開発コストが高くなりやすい 管理の難易度が高い |
スパイラルモデルシステム開発モデルではプロトタイプを実際に操作して検証することで、システムの潜在的なリスクを洗い出します。リスクを早期発見して対処することが可能になるでしょう。また開発プロセス中に、継続的に顧客のフィードバックを取り入れることができるのもメリットです。顧客が満足するような、高い品質のシステム開発を期待できます。
ただし、スパイラルモデルシステム開発モデルの反復ごとにつくるプロトタイプは、あくまでクライアント・ユーザーのフィードバックを次の工程に活かしシステムのリスクを低減するためのものとして活用されます。システムの要求をより正確に反映して開発することを目的とした手法となっていますので、ご注意ください。
一方デメリットとして把握しておきたい点は、開発コストが高くなりやすいことです。リスク分析などを何度も繰り返せば、品質が上がると同時にどうしてもコストがかさみます。また各スパイラルでリスク分析・プロトタイプの作成・フィードバックの取り込みなど多くのステップを含むため、これらを的確にスケジューリングし続けることは難しいでしょう。進捗管理しやすいウォーターフォールと比べて、管理する側の難易度は高いと言えます。
以上のことから、スパイラルモデルシステム開発モデルはリスクの高いプロジェクトや、顧客意見をベースにしたプロジェクトに適している手法と言えるでしょう。
V字システム開発モデル
V字システム開発モデルとは、開発と検証を密接にリンクさせる手法のことです。対応する開発工程とテスト工程は以下のようになります。
上流工程 | 下流工程 |
---|---|
1.要件定義 | 7.システムテスト |
2.基本設計 | 6.結合テスト |
3.詳細設計 | 5.単体テスト |
4.開発 |
V字システム開発モデルは各設計の内容が正しく実装されているかを、単体テストや結合テストで確認・検証します。そして、要件定義の内容が正しく実装されているかを、システムテストで最終確認します。
そんなV字システム開発モデルを活用するメリット・デメリットは以下の通りです。
メリット | デメリット |
---|---|
メリット | デメリット |
テストフェーズを明確にしやすい 品質を強化しやすい | 柔軟性が低い ユーザーのフィードバックを受けにくい |
V字システム開発モデルでは、各開発フェーズに対応するテストが明確に定義されています。これにより、システムの各コンポーネントが要求を満たしているかどうかを効率的かつ徹底的に検証できます。また明確な開発プロセスにより、プロジェクトチームが品質に焦点を当てやすくなります。各段階での品質基準が明確であるため、品質保証活動を効率的に計画し、実施できるでしょう。
一方、V字システム開発モデルでは一度完了したフェーズに戻って変更を加えることが難しいです。これにより、プロジェクト進行中に要件を変更することが難しくなります。また開発の終盤まで製品の実際の動作を見たり触れたりすることができないため、ユーザーのフィードバックを積極的に取り入れることが難しいです。その結果、最終製品がユーザーの期待に合わないおそれが生じます。
V字システム開発モデルは要件が明確で安定しており、品質保証を重視するプロジェクトに向いているでしょう。
なおV字システム開発モデルの詳細は以下の記事をご参考ください。
システム開発のV字モデルとは?工程・メリット・W字モデルとの違いを解説
W字システム開発モデル
W字システム開発モデルは、開発工程とテスト工程を同じタイミングで行うシステム開発管理モデルを指します。対応する開発工程とテスト工程は以下のようになります。
上流工程 | 下流工程 | ||
1. 要件定義 | 2. 担当者からのフィードバック システムテスト設計 | 12. システムテスト | 13. 修正 |
3. 基本設計 | 4. 担当者からのフィードバック 結合テスト設計 | 10. 結合テスト | 11. 修正 |
5. 詳細設計 | 6. 担当者からのフィードバック 単体テスト設計 | 8. 単体テスト | 9. 修正 |
7. 開発 |
基本的な流れはV字システム開発モデルと同じです。異なる点は、上流工程にて担当者からフィードバックやシステム設計を行うことにあります。
そんなW字システム開発モデルを行うメリット・デメリットは以下の通りです。
メリット | デメリット |
---|---|
メリット | デメリット |
気付きにくいバグを早期に発見しやすい 品質を向上させやすい | 並行作業の管理が難しい 変更への対応が難しい |
W字モデルでは、上流段階からテスト担当者のチェックが入ります。そのため、現場目線だから気づける問題点やミスを早期に発見できる点が大きなメリットです。また、V字モデルと同様に開発の各段階でのテストに重点を置いているため、全体的な品質向上を期待できます。
ただしW字モデルのデメリットとして、並行作業になるため管理が難しくなる点が挙げられます。またテストと各設計が密接に連携しているため、開発プロセスの途中で要件が変更された場合、これらの変更を組み込むのが難しいかもしれません。
W字システム開発モデルは品質が非常に重視されており、比較的早い段階でバグやエラーを見つけておきたいプロジェクトに向いていると言えるでしょう。
システム開発を成功させるコツを解説
システム開発を成功させるには、以下4つのポイントが重要だとされます。
- システムの開発目的を明確にする
- 自社に最適な開発手法を選ぶ
- 関係者間でコミュニケーションを頻繁にとる
- 仕様確定は可能な限り上流工程で行う
システムの開発目的を明確にする
システム開発の成功には、開発目的を明確にすることが重要です。開発目的が明確であれば、具体的な要件を定義しやすくなるためです。
「とにかく生産性を向上させるシステムが欲しい」と言っても、目的があいまいなままではシステム開発者は何を開発すべきなのか不鮮明なままになります。そして、あいまいな情報だけでは、システム開発者は手探りで開発を進めるしかないでしょう。結果、思っていたものとは違ったシステムができあがってしまうかもしれません。このような事態になれば、システムが使えないだけではなく、開発にかかった費用や時間が無駄になってしまうでしょう。
したがって「メールで送られた請求書の内容を会計ソフトに自動で転記したい・現場が発注した材料の費用と商品名を自動で経理に転送したい」など、具体的な目的を提示することが必要です。
目的を明確にするには、対象業務の何を改善・向上させたいのかを言語化することが重要です。自分1人で目的を明確にできない場合は現場にヒアリングし、ニーズを明確にすると良いでしょう。
自社に最適な開発手法を選ぶ
自社に最適な開発手法を選ぶことも、システム開発を成功させるポイントです。なぜなら合わない手法を選ぶと、コストだけがかさみ満足できない結果になるおそれがあるからです。
例えば「厳密な要件定義や機能は様子を見ながら決めたい」のように考えているのであれば、途中での仕様変更や機能追加を比較的行いやすいアジャイルが適しているとわかります。柔軟性に乏しいウォーターフォールは避けるべきでしょう。自社に最適な開発手法を選ぶことで、システム開発の成功確率が上がります。
なお、もし自社で判断ができない場合はコンサルティングに依頼をするのも1つの方法です。
関係者間でコミュニケーションを頻繁にとる
関係者間でコミュニケーションを頻繁にとることも重要だと言えるでしょう。システム開発は個人ではなく、チームで行うプロジェクトだからです。
各々がプロフェッショナルとして仕事をすれば良い。このような考え方でプロジェクトが進むと、チーム内で意思の疎通ができません。結果的に、不具合だらけのシステムができあがってしまうことも考えられます。
このような事態を避けるためにも、定期的なミーティングの実施・チャットの活用などちょっとした疑念や不可解な点を相互に確認し合える環境をつくるのがおすすめです。
仕様確定は可能な限り上流工程で行う
仕様確定を可能な限り上流工程で行うこともポイントです。採用する手法にもよりますが、後期での変更はコストと時間の両面で高くつくことが多いからです。
例えばオンラインショッピングシステムを開発する際、途中でカート機能の要件が変更されたとします。この変更は、すでに開発された他の機能にも影響を与えるおそれがあります。具体的には商品詳細画面・注文確認画面・支払い画面・関連プログラムなどを変更する必要があるでしょう。
要するに1つの変更により、それに連鎖して多くの変更点が生まれる可能性が高いということです。これは変更したタイミングが下流工程であるほど多くなることが考えられます。下流になるほど、実装済みの機能が多いからです。そして変更点が多くなれば、修正コストや対応時間が増えるのは明らかです。このような事態は好ましくありません。可能な限り上流工程での仕様確定がおすすめです。
なお仕様を早い段階で確定させるには、やはり要件定義を厳密に定めるのが良いでしょう。ワークショップなどを実施し、フィードバックに基づき要件を定めてください。
システム開発にてよくある質問を解説
ここではシステム開発にてよくある質問についてご解説いたします。
- システム開発とシステム構築の違いは何ですか?
- システム開発にいくらぐらいの費用がかかるのですか?
- システム開発にて頻繁に使う用語を教えてください
システム開発とシステム構築の違いは何ですか?
システム開発とシステム構築は同じ意味で使われることもありますが、厳密には意味が異なります。
システム開発は新しいシステムやソフトウェアのアイデアを具現化し、実装可能な形にすることが目的です。基本的にイチから新しいものを作り上げることを『開発』と呼ぶと考えて良いでしょう。自社専用システムやツールの新規開発などが具体例として挙げられます。
一方でシステム構築は、開発されたシステムを実際の運用環境に配置・稼働させるプロセスを指す言葉です。いわば今あるものを組み合わせて、仕組みを構築していくようなイメージです。具体例として、ハードウェアの設置・ソフトウェアのインストール・ネットワークの設定などが挙げられます。
システム開発にいくらぐらいの費用がかかるのですか?
システム開発にかかる費用は、開発するシステムによって大きく異なります。場合によっては、規模で変わることもあるでしょう。システム連携の有無、イチから作るか否かによっても費用が異なります。
システム開発のコストを下げる方法は、複数ベンダーで相見積もりを取る方法などがあります。取引先を吟味することによって、費用を抑えることも可能です。また開発したいシステムによっては、1から開発するよりも既存のシステムを導入し、足りない部分だけ開発する方が良いこともあるでしょう。
システム開発費用の詳細は以下の記事で解説していますのでご参考ください。
システム開発費用の相場は?コストを抑える方法・成功ポイント・補助金などを解説
システム開発にて頻繁に使う用語を教えてください
システム開発で頻繁に用いられる用語に、オープン系システム・汎用系システム・Web系システムがあります。
オープン系システムは様々なハードウェアやオペレーティングシステム上で動作し、標準化された技術やオープンな規格に基づいて構築されるシステムのことです。互換性や拡張性が高いことが特徴です。
汎用系システムは、大規模なシステムや高性能なシステムを構築するのに適しているシステムのことです。また、汎用系システムは、安定性や信頼性が高い特徴があります。
最後にWeb系システムは、Webブラウザを介して利用されるシステムです。Web系システムは、インターネットに接続できる環境であれば、場所やデバイスを問わずに利用することができます。
各システムの詳細は以下の記事をご参考ください。
システム開発の手法(種類)は主にオープン系・Web系・汎用系の3つ!特徴も解説
なお、その他にも以下のような用語が使われることがあるかもしれません。
用語例 | 正式名称 | 意味 |
---|---|---|
用語例 | 正式名称 | 意味 |
SP | System Planning | 企画 |
SA | Requirements Analysis | 要求分析 |
RD | Requirements Definition | 要件定義 |
UI | User Interface | ユーザーと道具をつなぐもの |
BD | Basic Design | 基本設計 |
SS | System Structure Design | 構造設計 |
FD | Function Design | 機能設計 |
DD | Detail Design | 詳細設計を行う工程 |
PS | Program Structure Design | 詳細設計 |
M | Manufacturing | 製造 |
CD | Coding | コーディング |
UT | Unit Testing | 単体テスト |
IT | Integration Testing | 結合テスト |
OT | Operational Testing | 運用テスト |
システム開発の場では、普段は聞かないような専門用語も使われます。上記表の用語を足掛かりに、少しずつ覚えていきましょう。
まとめ
今回はシステム開発について、基本的な流れ・開発手法・成功させるポイントまで解説しました。一言でシステム開発と言っても、さまざまな工程を経て作成されていることがわかったのではないでしょうか。
システム開発の目的を明確にする、適切な開発手法を選択するなど、システム開発を滞りなく進めるにはいくつかのポイントもあります。これらは自社でシステムを開発する際はもちろん、他社にシステム開発を依頼する際にも有効な方法です。ぜひお試しください。
またシステム開発を行いたいが自社内ではリソースが足りない場合などは、お気軽に当社にご相談ください。