1. ホーム
  2. ブログ
  3. System
  4. システム開発工程とは?作業工程を決める重要性とフェーズの概要を解説

システム開発工程とは?作業工程を決める重要性とフェーズの概要を解説

システム開発工程とは?

システム開発は、アイデアを形にするための複雑で重要なプロセスです。成功させるためには、綿密な計画と段階的な進捗管理が欠かせません。そこで重要となるのが、システム開発工程です。

この記事では、システム開発工程の基礎知識から、具体的な工程、そして現場でよく使われる略語まで、わかりやすく解説していきます。開発工程を理解することで、プロジェクトをスムーズに進め、高品質なシステムを構築することができます。

システム開発工程とは

システム開発工程とは、システム開発に必要な一連のプロセスの集まりです。要件定義や設計など各工程を分類化し、各プロセスに対して計画を立て、効率的に開発を行います。

開発工程は上流工程と下流工程に分かれています。

上流工程と下流工程の違い

なお、工程をどこまで細分化するかは開発する対象によって異なるため、厳密なルールはありません。

システム開発工程の流れ

システム開発工程の流れ

システム開発工程は、要件定義から始まり、運用・保守まで、さまざまな工程を経て完成します。

1.要件定義

つくりあげるシステムに求める機能や開発スケジュールを事前に決める工程です。この工程で決めた内容に則って開発が行われるため、発注者側と開発側の上層部が担当します。双方の認識に齟齬が生じないよう、お互いに納得する設計図作りを心がけることが大切です。

予算・運用方法・開発期間など重大な項目を決定するため、最も重要な工程といえます。

要件定義は大きく下記5つの構成に分かれます。

  • 機能要件
  • 性能要件
  • 品質要件
  • 実行要件
  • 非機能要件

要件定義については以下の記事で詳しく紹介しています。

2.外部設計

外部設計とは、システムのインターフェースを決める工程です。要件定義に則って、システムの見た目にあたる部分を、ユーザーが使いやすいよう作り上げます。一度作った設計は発注者側にフィードバックをもらい、改善を繰り返しながら完成させます。

設計においてはユーザーの立場を考えて、使いやすいインターフェースを心がけていきましょう。

3.内部設計

内部設計とは、システムの中身や機能にあたる部分です。要件定義や外部設計に応じて、各インターフェースおよびシステムに機能を割り当て、プログラムの大枠を組み立てる工程です。上流工程にあたるため、プロジェクトのなかでも実力・経験のあるエンジニアが担当することが多いです。

「機能仕様書・データフロー図」など設計をプログラムごとに割り当て、設計書を作成します。

4.単体テスト

コーディングが完了すれば、プログラムが正常に動作するかどうかテストを行います。正常に動かなければ問題を特定したうえで修正を行い、要件定義に則った動作をするまで続けます。

テストはコーディングした本人やチームで行うこともあれば、専任のテスターが担当する場合もあります。プログラムが完成すれば、プログラム同士を連携させた動作をテストする結合テストに移行します。

5.結合テスト

単体テストが完了すれば、機能同士を結合し、その上でシステムが正常に動くかどうかを確認します。プログラム単体で正常に動作しても、組み合わせにより未知のトラブルが生じる場合があるため、プログラム同士の干渉によってどのような反応をするか確認しなければならないでしょう。

データの受け渡し・不具合の有無・インターフェースとのズレなど、主に連携面を重視してチェックします。

6.総合テスト

単体・結合テストが完了すれば、システム全体が正常に反応するかどうかを確認します。この工程では機能の要件を満たしていることはもちろん、アクセス耐久性や処理速度など、実用性を意識してテストを行うことが重要です。実際に使うユーザーの立場で考えながら、チェックを行いましょう。

7.運用テスト

総合テストが完了すれば、実際にシステムを動作環境内に設置し、動作をテストします。実用性を重視するため、発注後の会社の環境で正常に動けば成功となります。リリース直前の工程にあたるため、発注者側に使ってもらいながら、要件定義に沿った仕様になっているか細かくチェックしてもらうのがおすすめです。

8.システム移行

発注側の環境でシステムが正常に動くことを確認できれば、システムを移行します。システムの移行は旧システムから刷新する方法と、徐々に機能を部分的に移行する方法があります。

一気に移行すると現場に混乱を招きやすいため、徐々に移行するのを推奨します。システム移行においてはトラブルの発生が発注者側の業務停止につながるため、手順などのマニュアルを徹底したうえで慎重に取り組みましょう。

9.運用・保守

システムの移行後にトラブルや誤作動が生じる場合があるため、開発側は、発注者側で保守・運用を行い、現場でスムーズに活用できるようサポートする必要があります。基本的には、システム開発会社側が担当するのが一般的です。保守はトラブルシューティングを担い、運用はアップデートや仕様変更を担います。どちらも安定した稼働環境の提供につなげる必要があります。

システム開発で工程が重要な理由

システム開発の工程は、納期を守る、成果物の品質を確保する、メンバー内での認識を統一する、そしてスキル・ノウハウの蓄積のために重要です。

納期を守るため

開発工程では、予期せぬトラブルで当初スケジュールから変更や修正が起こる可能性があります。開発期間が遅れると納期に間に合わない場合もあるでしょう。各工程に沿って計画を立てれば、スケジュールを組み立てやすくなります。

全体でみるよりどこに問題や遅れが生じているのかわかりやすく、トラブル発生時の対応もスムーズになります。工程だけでなく運用方式や予算においても事前に決めておくことが大切です。

成果物の品質を確保するため

各工程ごとで確認やレビューを行うことで、品質の向上につながります。開発工程が細分化されていないと、テストした場合にどこに不具合があるのかわかりません。トラブルを少しでも減らすためにも、工程ごとにテストを行い、品質の保持と問題の早期特定を目指していきましょう。

メンバー内での認識を統一するため

各工程がまとめられていないと、先方やチーム内で認識に齟齬が生じます。発注者とのすり合わせを行うためにも各工程の詳細はまとめておきたいところです。システム開発工程には、発注者と開発会社側の両者に責任の所在を明確化する役割を担うことも重要です。

スキル・ノウハウの蓄積のため

事前に工程が細分化されてスケジュールを組むことで、チームメンバーの経験値にできます。今の開発を経験することで、同様のケースで開発するときにより短く高品質なものにつなげられるでしょう。

発注者側も開発会社に丸投げするのではなく、お互いに仕様を理解することで開発の知識を養い、状況把握や経験の蓄積につながります。

システム開発工程の種類

システム開発工程にはさまざまな種類があり、それぞれのモデルが持つ特徴を理解しておくことが重要です。

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

文字通り「滝」のように上流工程から下流工程にかけて順番通りに各工程を完成させて、次のフェーズへ移行するモデルです。メンバーや関係者同士で進捗状況が見やすく、品質を担保しやすいです。そのため規模が大きく複雑なシステム開発にむいています。

しかし、前工程で重大なミスが生じると大幅な修正が生じるリスクもあるため、トラブルの発生は納期の遅延につながりやすいという側面もあります。

アジャイル開発モデル

アジャイルとは、小さな開発サイクルを繰り返しながら完成に近づける手法です。「アジャイル」には素早い・俊敏といった意味があります。途中での仕様変更や修正にも対応しやすいのが特徴です。

設計・開発・テスト・リリースを1つのサイクルとし、それを繰り返すことで機能の充実と早期完成を目指します。

プロトタイプモデル

早期にプロトタイプとなるシステムを作り、発注者側とメンバーでレビューを行ってブラッシュアップを繰り返す手法です。最初から完成品を目指すのではなく、修正を前提とするモデルのため、仕様変更に対して柔軟に対応できます。

トラブルや認識の齟齬の防止にはつながりやすいですが、開発側の負担は大きいという点に注意が必要です。

スパイラルモデル

ウォーターフォールとアジャイルを取り込んだ手法です。開発工程が全て完了した後にリリースする代わりに、機能ごとの開発アジャイルを取り入れます。

アジャイルとの違いは、機能の完成でリリースするのではなく、開発サイクルが1巡したときにリリースし、レビューを受けてサイクルを再開することです。未完成品を一度リリースする点はプロトタイプに近いと言えるでしょう。

それぞれの開発手法について下記の記事で詳しく解説しています。

システム開発工程で使用される略語

システム開発においては専門用語や略語を用いるケースが多いです。現場でよく使う用語を覚えておくと、打ち合わせでもスムーズに対応できます。

SPSystem Planningシステム企画
SASystem Architectural design要求分析
RDRequirement Definition要件定義
UIUser InterfaceUI基本設計
BDBasic Design基本設計
SSSystem Structure Design構造設計
FDFunction Design機能設計
DDDetail Design詳細設計
PSProgram Structure Designプログラム設計
MManufacture製造
UTUnit Test単体テスト
CDCordingコーディング
PGProgramingプログラミング
ITIntegration Test結合テスト
STSystem Testシステムテスト
OTOperation Test運用テスト

チームでスムーズに開発を行うためにも、頻出する用語は事前に覚えておきましょう。

まとめ

システム開発工程は、システム開発を成功に導くための重要なプロセスです。各工程をしっかりと理解し、計画的に進めることで、納期を守り、高品質なシステムを開発することができます。開発工程の種類やそれぞれのメリット・デメリットを理解し、プロジェクトに最適なモデルを選択することが重要です。

SHARE

この記事を書いた人

eyone

シニアマネージャー

eyone

開発業界、サポート業界、SIer、コンサル、製造業と練り歩いてきた異端のスキルセットを持つ人。
特徴は知らないことをやりたいという、好奇心中心の生活をしています。社外でも社内でも、なんでも問題解決屋になれるべく仕事に取り組む毎日!