システム開発はどう進める?基本の流れと7つの工程を詳しく解説!
公開日:2024.08.29 最終更新日:2024.08.29
システム開発では、内製や外注など開発の方法に関わらず、開発の流れや工程などのプロセスを正しく把握しておくことが大切です。
そこで本記事では、システム開発を行うときの流れを紹介していきます。
また、代表的な開発手法の概要と、手法による工程の違いなどもまとめているので、ぜひ参考にしてみてください。
システム開発でプロセスが重要と言われる理由
システム開発でプロセスが重要だと言われる理由は以下のとおりです。
- クオリティを確保するため
- 納期に間に合わせるため
- 開発にかかわるメンバーの認識を統一するため
それぞれ詳しく解説していきます。
クオリティを確保するため
システムのクオリティは、正しいプロセスで開発を進めることで初めて担保されます。たとえば、要件定義を行わずにいきなりプログラミングを始めても、まともなシステムを開発できません。
システム開発には4つの手法がありますが、それぞれの正しいプロセスで開発を進めていくようにしましょう。
納期に間に合わせるため
システム開発を正しいプロセスで進めると、スケジュールの設定や進行管理が行いやすくなり、納期に間に合わせられるようになります。納期内で開発することは、余計なコストの削減につながります。
開発にかかわるメンバーの認識を統一するため
プロセスが決まっていると、開発にかかわるメンバーの認識が統一され、同じ方向を見て開発を進められるようになります。プロセスが明確になることで進捗の把握が容易になり、自分のやるべきことをスムーズに進められるのも大きなメリットです。
システム開発で用いられる略語一覧
システム開発の現場では、以下のような略語がよく用いられます。
略語 | 意味 | 正式名称 |
RD | 要件定義 | Requirement Definition |
RA | 要求分析 | Requirement Analysis |
SA | システム方式設計 | System Architectural Design |
SP | システム企画 | System Planning |
BD | 基本設計 | Basic Design |
DD | 詳細設計 | Detail Design |
ED | 外部設計 | External Design |
ID | 内部設計 | Internal Design |
FD | 機能設計 | Function Design |
PD | プログラム設計 | Program Design |
PS | プログラムの構造部分の設計 | Program Structure Design |
SS | 構造設計 | System Structure Design |
UI | UI基本設計 | User Interface |
PG | プログラミング | Programing |
CD | コーディング | Coding |
ST | システムテスト | System Test |
UT | 単体テスト | Unit Test |
IT | 結合テスト | Integration Test |
OT | 運用テスト | Operation Test |
PT | 総合テスト | Product Test |
これらの略語は工程表に記載されていることもあるので、把握しておきましょう。
システム開発における7つの工程
システム開発には7つの工程があり、以下のような流れで進められていきます。
- 要件定義
- 外部設計
- 内部設計
- 実装
- テスト
- リリース
- 運用・保守
それぞれの工程を詳しく解説していきます。
1. 要件定義
要件定義では、目標や解消したい課題・問題、システムの内容を明確にします。
決めるべき内容は以下のとおりです。
- システムの性能や仕様
- 実装する機能
- 運用方法
- 必要な人員や工数
- 開発予算
- 開発の期間・スケジュール
要件定義は、これから開発するシステム全体の設計図を作っていく作業です。ミスや食い違いが起こると、システムの開発そのものが失敗しかねないため、慎重に進める必要があります。
IPA(独立行政法人情報処理推進機構)のホームページでも要件定義について解説されているので、チェックしてみてください。
2. 外部設計
外部設計では、要件定義の内容を元に、
- システムの構造
- UI(ユーザーインターフェース)
- データの取得方法
- 取得したデータの取り扱い方法
など、システムの見た目や仕様などを設計していきます。
土台を設計していく作業でもあるので、「基本設計」と呼ばれることもあります。
システムを使用したときのユーザーの印象に影響するUIは、とくに重要です。いかに優れたシステムであっても、UIが悪く、使いづらいと感じられるようなシステムはユーザーに好まれません。
見た目のデザインだけにこだわるのではなく、ユーザーが「使いやすい」「わかりやすい」と感じるシステムを設計することが重要です。
3. 内部設計
内部設計では、外部設計で決めたシステムをどう実装していくかを設計します。
内部設計では、
- 詳細設計書
- 機能仕様書
- データベース物理設計書
- 画面遷移図
- 状態遷移図
など、実装の段階で必要になる書類を作成していきます。
システムを実装する開発者の視点で設計する意識が重要です。
4. 実装
設計が完了したら、外部設計や内部設計で作成した資料を元に実装していきます。
ここで行われるのが、プログラミングやコーディングと呼ばれる作業です。要件定義で決めた開発言語を用いてシステムを開発していきます。
5. テスト
実装が完了したら、不具合がないか確かめるためにテストを実施します。実施するテストの種類と概要については以下のとおりです。
テストの種類 | 概要 |
単体テスト | プログラミングの対象単位であるモジュールごとに実施するテスト それぞれのモジュールが想定どおりに正しく動作するかチェックする |
結合テスト | 単体テストでそれぞれのモジュールが問題なく動作するのが確認できた後に行うテスト 複数のプログラムを結合させた上で動作をチェックする |
総合テスト | 作成したすべてのプログラムが想定どおりに動くかどうかをチェックするテスト このときに、ユーザーがアクセスしたときの処理速度や耐久性についてもチェックする |
運用テスト | 実際にシステムを運用する環境下で行うテスト ここまでのテストは開発者側で行うが、運用テストは実際にユーザーにシステムを使ってもらいながら進めていく |
これらすべてのテストを実施しながら、要件定義で決めたとおりにシステムが動作するか細かくチェックしていきます。
6. リリース
すべてのテストを実施し問題ないことが確認できたら、開発したシステムをリリースします。
既存のシステムから新しいシステムに変更する場合は、移行も必要です。稼働している古いシステムから新しいシステムにデータを移動させ、問題なく動作すれば、リリース完了となります。
7. 運用・保守
システム開発では、リリース前にテストを実施しますが、すべてのバグや不備を取り除けるわけではありません。リリース後にバグや不備が見つかることもあるので、運用・保守を行い、不具合をその都度取り除いていきます。
また、ユーザーの意見を取り入れ改善を行うなどのアップデートも実施していきます。
システム開発の代表的な4つの手法
システム開発を行う際に用いられる代表的な手法は、以下の4つです。
- ウォーターフォール型
- アジャイル型
- スパイラル型
- プロトタイプ型
それぞれの開発手法の概要と流れについて解説していきます。
ウォーターフォール型
ウォーターフォール型は、先述した流れどおりに進めていく開発手法です。上流工程から下流工程まで流れるように進めていく様子が、滝が流れるさま(waterfall)のように見えることから、こう呼ばれています。
ウォーターフォール型のシステム開発では、複数の工程を同時に進めることはせず、それぞれの工程を完了させてから次へと進めていきます。
ウォーターフォール型のメリット・デメリット
ウォーターフォール型の手法でシステム開発に取り組むメリットには、
- スケジュールの設定や管理がしやすい
- 予算や人員を手配しやすい
- 品質を担保しやすい
などがあげられます。
ウォータフォール型は、上流工程にあたる要件定義からそれぞれの工程を一つずつ確実に進めていく、スケジュールの目処が立ちやすい開発手法です。そのため、要件定義が決まりさえすれば、比較的簡単にスケジュール設定や管理を行えるようになります。
要件定義の段階でタスクの種類や内容が明確になるため、予算や人員の手配もしやすいです。
また、決められた工程を完成させてから次の工程に進むことで、一定の品質を担保できるのもです。
一方、以下のようなデメリットもあります。
- 完成まで時間がかかる
- 仕様や計画の変更に対応しづらい
- トラブルに弱い
それぞれの工程を完成させてからでないと次に進めないため、どうしても完成までに時間がかかります。細かいところまで決めてからスタートする性質上、仕様や計画の変更にも柔軟に対応できません。
また、緻密に計画を立てた上で開発を進めるので、修正やトラブルに弱いというデメリットもあります。
ウォーターフォール型での開発が適しているケース
ウォーターフォール型での開発が適しているケースは、
- 要件や仕様が明確になっているケース
- 品質が重視されるケース
- 大規模プロジェクト
などです。
要件や仕様が明確になっているシステムは、変更や修正が発生する可能性が低いのでウォーターフォール型での開発に最適です。各工程を完成させて進めていくという性質上、トラブルが起こりづらいので、品質が重視される開発にも適しています。
また、緻密な計画が必要で、進行管理のしやすさが求められる大規模プロジェクトにも向いています。
アジャイル型
アジャイル型は、Agile(素早い)という意味をもつ開発手法で、スピード感を持ってシステム開発を進めたいときに用いられます。システムにはさまざまな機能が実装されていますが、アジャイル型は、必要な機能に優先順位をつけ、優先度の高い機能から開発していきます。
機能ごとに、
- 設計
- 開発
- テスト
- リリース
のサイクルを回し、徐々に機能を充実させていくため、短期間でのリリースが可能です。
アジャイル型のメリット・デメリット
アジャイル型の手法でシステム開発に取り組むメリットは、
- 変更に柔軟に対応できる
- 後戻りの工数を抑えられる
- スピード感をもって開発に取り組める
などです。
アジャイル開発は、開発中の仕様変更を前提としている開発手法なので、急な変更にも柔軟に対応できる強みがあります。
また、後戻りが発生しても開発サイクルを一つ戻すだけで対応できるので、後戻りの工数を最小限に留められます。優先度の高い機能から実装してその都度リリースすることで、スピード感をもって開発に取り組めるのもメリットです。
一方、以下のようなデメリットもあるため注意が必要です。
- スケジュール管理がしづらい
- システム開発の方向性がズレやすい
アジャイル型の開発では、仕様変更に柔軟に対応できますがその分、スケジュールの把握や進行管理はしづらくなります。
また、計画や仕様変更を受け入れることでシステム開発の方向性がズレやすいというデメリットもあります。
アジャイル型での開発が適しているケース
アジャイル型での開発が適しているケースには、
- 要件や仕様が明確になっていないケース
- 計画や仕様の変更が発生しやすいプロジェクト
- 短期間で製品をリリースしたいケース
などがあげられます。
アジャイル型では、事前に緻密に計画を立てないので、要件や仕様が明確になっていないようなケースがおすすめです。開発したいシステムに対して漠然としたイメージはあるものの、どのような機能を実装すればいいかわからないようなケースにも適しています。
また、短期間で製品をリリースしたいときにもうってつけだと言えるでしょう。
スパイラル型
スパイラル型は、システムの仕様を機能ごと(サブシステム)に分割しながら開発を進める手法です。「設計」「開発」「テスト」「レビュー」のサイクルを繰り返しながら、重要度の高い機能から順番に開発していきます。
細かな開発のサイクルを繰り返す様子が螺旋(スパイラル)のように見えることから、スパイラル型と名付けられました。
サイクルごとにプロトタイプを開発し、フィードバックをもらいながら開発を続けていくのもスパイラル型の特徴です。機能を分けて開発するさまはアジャイル型に似ていますが、アジャイル型の場合、サイクルごとにプロトタイプを開発しません。そのため、アジャイル型よりも優れたシステムを開発しやすい手法とされています。
プロトタイプ型
プロトタイプ型は、プロトタイプ(試作品)を開発してリリースするシステム開発の手法です。プロトタイプをリリースしてユーザーに使ってもらい、ユーザーの意見を参考に、修正を加えながらシステムの完成を目指していきます。
プロトタイプ型のメリットは以下のとおりです。
- 試作品ではあるものの早い段階で製品をリリースできる
- ユーザーの声を反映させながらシステムを完成させられる
- 明確なイメージがなくてもシステムの開発を始められる
要件や仕様が細かく決まっていない状態でも開発に着手できるのは、プロトタイプの大きなメリットです。
一方で、プロトタイプ型には以下のようなデメリットがあります。
- 試作品といえどもある程度使えるレベルの製品を用意する必要がある
- 試作品を作ってから本開発に取り組むため工数がかかる
試作品を用意してから本開発に取り組む性質上、工数がかかり、コストがかさんだり納期が延びてしまう傾向がある点には注意が必要です。
システム開発の工程表の作り方とスケジュールの考え方
システム開発に取り組む際は、WBS(業分解構成図)とガントチャートを作成して工程表として活用していきます。
WBSは、開発に必要な作業項目を一覧にしたものです。開発に必要なタスクをすべて洗い出し、種類やボリューム、粒度で分け、ツリー構造で表します。
WBSでタスクを洗い出したら、それぞれのタスクに対し、
- 担当者・担当チーム
- 開始日
- 締切日
などを決め、工程やスケジュールを見える化していきます。
スケジュールは開発に関わる人数や個々のスキルによって異なりますが、具体的な工期は要件定義の後に設定することが重要になります。
また、システム開発では予期せぬトラブルが発生することも少なくありません。リカバリ期間を設け、余裕をもって開発に取り組めるスケジュールを組むようにしましょう。
まとめ:システム開発は正しい手法とプロセスで進めることが重要
システム開発には、
- ウォーターフォール型
- アジャイル型
- スパイラル型
- プロトタイプ型
などの手法があり、それぞれ開発するときの流れが異なります。
最適な手法を選んで正しい流れで取り組まないと、品質の定価や納期に間に合わないなどのトラブルが発生しかねません。よりよいシステムをなるべく早くリリースするためにも、最適な手法を選び、正しいプロセスで開発に取り組むようにしましょう。
この記事を書いた人
hata