photo
photo
  1. トップ
  2. システム開発
  3. システム開発の工程とは?ウォーターフォールとアジャイルの流れについて解説

システム開発の工程とは?ウォーターフォールとアジャイルの流れについて解説

IT分野のシステム開発では、計画工程、開発工程、運用・保守工程といった、システムを作るための一連の流れ、ライフサイクルがあります。

代表的な開発モデルとして、「ウォーターフォール」や「アジャイル」というモデルがあり、これらのモデルをもとに計画的なシステム開発が行われています。

ここでは、システム開発の工程と開発の流れ、さらに現場で知っておくべき略語などについて詳しくまとめます。

そもそもシステム開発の工程とは?

顧客より情報システムの開発要求があってから、実際にシステムの運用に至るまでには、いくつかの工程があります。

単に「システムを開発する」と言っても、どこから手を付ければよいかわからないという方も多いかもしれません。そこで、例えば以下のように工程を分けることで、進捗や品質の管理がしやすくなり、効率的にシステム開発を行えます。

  • 顧客の要求を分析し、求められているシステムを検討(要件定義)
  • どのようにすれば作成できるのかを計画(設計)
  • 実際にプログラミング(開発・実装)
  • 不備がないかなどをテストし、確認する(テスト)
  • システムをリリース後、継続して整備をする(運用・保守)

上記のような、システム開発を進めていく手順を「開発工程」といいます。

実際の現場では、開発工程は、計画(要件定義)、開発(設計やプログラミング、テスト等)、運用・保守などの工程に分けられ、これらの工程を通じて、顧客が必要とするシステムを開発します。

なお、開発モデルや担当する企業ごとに、具体的な開発の工数(作業ステップ数)は異なります。しかし、何らかの業務を別の企業に外注するなどの場合であっても、計画的にシステム開発を進めるために、原則として開発工程をもとに進めます。

 

システム開発の基本工程:2種類の手法とは?

システムの開発モデルには、ウォーターフォールモデルやアジャイルモデル、スパイラルモデル、契約モデル、成長モデル、プロトタイプモデルなど、さまざまな方法があります。

以下に、代表的な開発モデルとして「ウォーターフォールモデル」と「アジャイルモデル」について詳しくまとめます。

ウォーターフォールモデル

ウォーターフォールモデルは、システム開発における工程を、初めから終わりまで順番に行う方法です。システム開発における最も基本的なモデルで、世界中で広く利用されています。

顧客の要求を理解する「要件定義(分析)」、全体の計画を立てる「設計」、プログラミングを行う「開発(実装)」、完成したシステムの「テスト」、使用をサポートする「リリースおよび運用・保守」などのフェーズに分かれています。各フェーズの終わりに検証を行うことで、次のフェーズにできるだけバグを持ち込まないようにします。

工程がシンプルで分かりやすく、チーム内での状況共有もしやすいため、多人数での共同作業に適しています。

ウォーターフォール開発工程

ウォーターフォールモデルでは、滝の水が上流から下流に流れるように、あらかじめ定めた工程計画を順番にこなします。次のフェーズへ移ったら、後戻りはしません。

そのため、下流フェーズで上流フェーズの不具合が見つかった場合には、修正が困難であるというデメリットもあります。

また、テストフェーズまで進まなければシステムの動作確認ができず、動作確認まで長時間を要します。

アジャイルモデル

アジャイル(agile)は「素早い」という意味の英単語です。

アジャイルモデルでは、システムの要件定義と設計、開発、テスト、リリースを小さな単位で繰り返し、顧客とコミュニケーションを取りながらシステム開発を行います。

まず、システムの大まかな仕様を決定し、システム全体を、1週間から4週間程度で開発できる規模の機能に分割します。分割した機能ごとに、要件定義、設計、開発、テストをし、完成したら機能の単位でリリースします。

この一連のサイクルをイテレーションと言い、イテレーションを繰り返してシステムを完成させるのが、アジャイルモデルです。

アジャイル開発工程

アジャイルモデルは、はじめにリリースされるまでの期間が短いことが特徴です。顧客とのコミュニケーションを密にし、修正しながらシステムの実装とテストを進めていくため、途中での仕様変更にも柔軟に対応できます。

また、アジャイルモデルは、初めにリリースした段階で高い品質の機能を実装し、さらに要望に応じて機能を拡張、追加できるため、品質の高いシステムを構築できます。

一方で、初めに開発の終着点を明確にしておかなければ、必要以上に修正してしまったり、開発の方向性がぶれてしまったりという危険性もあります。

アジャイルモデルについて、詳しくは「アジャイル開発とは?主流の開発手法「スクラム」もくわしく解説!」をご覧ください。

 

そのほか、アジャイルモデルと同様に、分析、設計、実装、検証を繰り返すモデルとしてスパイラルモデルがあります。

アジャイルモデルが機能ごとに完成系に近い形でリリースし、次のリリースで別の機能を追加していくのに対して、スパイラルモデルでは、仕様上のすべての機能を簡易的に実装したプロトタイプのシステムを作成し、それぞれの機能を徐々に完成系に近づけていきます。 機能ごとに完成させていくのではなく、機能を同時並行で進めるという点で異なります。

 

各システム開発の工程・流れについて知っておこう

ウォーターフォールモデルとアジャイルモデルでは、開発に取り掛かる手順が異なります。

ここでは、それぞれのモデルの工程・流れについて詳しくまとめます。

ウォーターフォール開発の流れ

システム開発は、実施するチームによって細かい工程が異なりますが、ウォーターフォール開発では、概ね以下のような流れになります。

ウォーターフォール開発の流れ
  • 要件定義

まず、顧客と打ち合わせを行い、どのような機能を持つシステムを開発するのかを決定します。

先述の通り、ウォーターフォールモデルでは工程の逆流はできず、さらに工程の後半にならなければユーザーの要求を検証できません。そのため、特に要件定義でしっかりヒアリングを行うことが重要です。

  • 開発(実装)

要件定義の後、開発に移ります。

まず、システムの全体構成や、システムの外見を構成するUI(ユーザーインターフェース)など、外部から見たシステムの全体像を設計します(外部設計)。

次に、システム内部ではどのような実装を行えばよいかを考え、ユーザーにとって使いやすいUIやデータベースなどの詳細設計を行います(内部設計)。

それをもとに、システムをモジュールと呼ばれる単位に分割し、モジュールの仕様やモジュール間のインターフェースを決定(プログラム設計)。

最後に、実際にシステムが動くようコードを書きます(プログラミング)。

  • テスト

プログラミングが終わると、まずはモジュール単体で動作するかを試験します(単体テスト)。そして、問題がなければ各モジュールを統合して全体の動作確認を行います(結合テスト)。

予定通りに動作すれば、ユーザーの要求と照らし合わせて性能試験を行い(システムテスト)、最後に、実際にユーザーが使用するのと同じ環境下で不具合が無いかどうかをテストします(運用テスト)。

  • リリース~運用・保守

すべての工程が終わればシステムはリリースされ、運用・保守に移ります。 ただし運用開始直後に、バクや仕様上で修正した方がよい箇所が見つかることも多くあります。

リリース後はサービスの改善のため、中・長期的にシステムの修正を行います。

アジャイルモデル開発の流れ

アジャイルモデルでは、イテレーションと呼ばれるサイクルを繰り返すことで、システム開発を行います。

  • リリース計画の策定

はじめに、顧客の要望をヒアリングし、開発するシステムの概要を決定します。

工程途中で発生する仕様変更に対応するため、ここでは、まだ細部までは決定しません。

  • システム計画の分割

開発するシステムを機能ごとに分割し、各機能の性質を鑑みて、開発する手順を決定します。

それぞれの機能は1週間から4週間程度で開発できる規模に設定されることが多く、機能ごとに要求定義、設計、テスト、実装、リリースを行います。

  • イテレーション

上述した「要求定義→設計→テスト→実装→リリース」をイテレーションと呼び、各機能においてイテレーションを行うことで、システムの完成を目指します。

イテレーションが終了すると、さらに機能を追加するか、開発を終了するかを顧客とともに判断します。

 

システム開発の工程で設計・テストに使われている略語

システム開発の現場では多くの略語が用いられます。代表的な略語を覚えておかなければ、コミュニケーションロスが発生する可能性もあります。

以下の一覧表で、システム開発における代表的な略語についてまとめます。

工程 略語 英語表記
基本設計 BD Basic Design
コーディング CD Coding
詳細設計 DD Detail Design
外部設計 ED External Design
機能設計 FD Function Design
内部設計 ID Internal Design
結合テスト IT Integration Test
運用テスト OT Operations Test
プログラム設計 PD / PS Program Design /
Program Structure Design
プログラミング PG Program / Programing
プログラム(構造)設計 PS / PD Program Structure Design
総合テスト PT Product Test
要件定義 RD Requirement Definition
要求分析 SA System Architectural design /
System Analysis /
System Analyze
システム企画 企画 SP System Planning
構造設計 SS System Structure Design
システムテスト ST System Test
UI基本設計 UI User Interface
単体テスト UT Unit Test

 

この記事では、ウォーターフォールモデルとアジャイルモデルの開発工程とその流れについて、詳しくまとめました。

細かい作業工程は開発チームによって異なりますが、基本的な流れは変わりませんので、ぜひシステム開発の場面でお役立てください。

 

エンジニアに役立つ目的別講座

Pythonの基本~応用をマスター

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

現役シリコンバレーエンジニアが教えるPython入門講座。Python3の基本を取得できます。

Webサイトのコーディングができるように

ウェブ開発入門完全攻略コース - プログラミング をはじめて学び創れる人へ!未経験から現場で使える開発スキルを習得!
ウェブ開発入門完全攻略コース - プログラミング をはじめて学び創れる人へ!未経験から現場で使える開発スキルを習得!

HTML, CSS, Bootstrap, JavaScript, MySQL, Ruby, Ruby on Rails, AWS Cloud9, Git, GitHubを用いたWebアプリケーション開発の方法を総合的に学べます。

AWSを基礎から学ぶ

これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版)
これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版)

AWSの基本資格「AWS 認定ソリューションアーキテクト – アソシエイト試験」を合格を目指し、そのための知識や経験を獲得できるように!

オリジナルのウェブサイトを作ろう

WordPress開発マスター講座
WordPress開発マスター講座

WordPressのカスタマイズ手法を身につけ、自身のサイト構築や開発案件の受託などを目指しましょう。