システム開発を行う上で作業を円滑に行うために”開発工程”を分けて行うのが基本となっております。システム開発工程を呼ぶ名称はシステム開発を行う業界内で共通言語となっているため覚えておく必要があります。こちらの記事ではシステム開発の工程や各プロセスの内容、専門用語について解説をしていきます。
システム開発を進める上で開発プロセスの集合体を適切な順序に整理したものをシステム開発工程と呼びます。各工程を分けて進めることで品質、コスト、スケジュールの管理をすることが目的です。
システム開発工程において最も有名なウォーターフォールモデルに基づいて各開発プロセスとその内容を解説していきます。
『システムの概要を決定する』
お客様からシステム開発の依頼を請けシステム企画の作成に着手します。
主にシステムの概要、開発期間、開発費用など決める工程です。
新規システムの開発や既存システムの改修など問題点をヒアリングし、それに基づき、システムの企画を行い、お客様にプレゼンテーションを行ったりします。
システム企画の一般的な取り組み手順と必要な要素を簡単に解説>>
『お客様の要件を明確にし、開発見積りを決定する』
システム開発を行う際にお客様の要望をヒアリングし実装すべき機能や満たすべき性能などを調査、分析した上で業務要件とシステム要件を明確に定義します。
お客様はシステムに関する知識が少ないケースが多いため、要望に矛盾や欠陥が合った場合でも実現可能な内容へとまとめあげる必要があります。最終的にお客様とシステム開発者側との要件認識をしっかりと合わせる非常に重要な工程です。
要件定義の一般的な取り組み手順と必要な要素を簡単に解説>>
『画面や帳票などのユーザーインターフェースを設計する』
要件定義の内容をもとに画面や帳票などのユーザーインターフェースを設計します。
ユーザーインターフェースとは、画面などの実際に利用する側が目にする見た目のことです。ユーザーにとって使いやすいシステムを開発するために非常に重要な工程です。
基本設計の一般的な取り組みに必要な要素を簡単に解説>>
『プログラムの設計など、開発者側からの視点でシステムを設計する』
外部設計の内容をもとに開発するシステムを大まかな機能ごとに分割し、それらのコンポーネント間をつなぐインタフェースの仕様などを設計します。外部設計でのユーザー側視点と反対に内部設計においてはプログラム設計など、開発者側の視点でシステム設計をします。
この内部設計の工程でプログラムの仕様が細かく綺麗に書かれていると、どんなプログラマーがプログラミングを対応しても品質にズレの生じないシステムが実装されます。
詳細設計の一般的な取り組みに必要な要素を簡単に解説>>
『設計書に基づき、プログラムの作成を実行する』
内部設計をもとにプログラム言語を用いてプログラム(モジュール)の作成を実行します。この作業をコーディングとも呼ばれる場合はあります。
『モジュールごとにテストを実施する』
作成したモジュールが設計書で要求された機能を満たしているかどうかを検証します。
不具合が見つかった場合には修正をし、テスト結果のフィードバックを実施します。
単体テストの一般的な取り組みに必要な要素を簡単に解説>>
『各モジュールを結合してテストを実施する』
複数のモジュールを組み合わせて検証をします。主にモジュール間のインターフェイスが正しく機能するかやモジュールを結合した状態でのブラックボックステストの2つの種類を確認します。
結合テストの一般的な取り組みに必要な要素を簡単に解説>>
『すべてを含めた(要件定義通りか?)テストの実施をする』
システムが全体をとして要求された機能や性能を満たしているかどうかを検証します。この際、本番に近いデータを用いてテストを実施します。
システムテスト(総合テスト)の一般的な取り組みに必要な要素を簡単に解説>>
『実際の業務運用に沿って動作検証を実施する』
実際の業務の流れに沿って利用してみて問題なく動作するかを検証します。
本番稼働の前段階と位置づけられております。
運用テストの一般的な取り組みに必要な要素を簡単に解説>>
『実際の稼働環境へシステムを移す』
実際に使えるように、旧システムから新システムへと切り替えを実施する工程です。ある時点で旧システムから新システムへ一気に切り替える一斉移行や、システムの機能単位ごとに新システムへ切り替えていく順次移行などの方法があります。
システム移行の一般的な取り組み手順と必要な要素を簡単に解説>>
『継続して良い状態でシステム利用出来るよう、メンテンナンスを実施する』
「運用」はシステムの起動や停止、そして日々動かしていく作業を指します。運転状況の監視、CPUやメモリの利用状況などシステム資源の監視も実施します。
「保守」とはシステムを改善・変更する作業を指します。主にシステムの障害や改善要望に伴うプログラムやデータの改修を実施します。また周辺機器のリプレースやアップデートなども行います。
システム運用・保守の一般的な取り組みに必要な要素を簡単に解説>>
システム開発工程において代表的な2種類の開発モデルウォーターフォールモデルとアジャイル開発について紹介します。
ウォーターフォールモデルというその名は滝という名称通り、水が上から下に流れ落ちるように各工程を順番に進めて行くという意味が込められております。
前述で説明の通り開発プロセスを各工程ごとに明確に定義し一括で管理した上で、順番通りに仕上げていきます。
参照:コトバンク
アジャイルというその名は「素早い」や「機敏な」という意味があります。
アジャイル開発では、システムをいくつかの機能に分割し、1ヶ月程度の短期間でユーザーが重要とみなす機能から順に作り上げて行きます。ユーザーの声を作業過程で適宜取り込みながら行えるその開発手法はまさにウォーターフォール開発の欠点を補うための手法とも呼べるでしょう。
参照:コトバンク
システム開発モデルにおいて非ウォーターフォールモデルの中でも代表的なモデルであるプロトタイプモデルとスパイラルモデルについてご紹介します。
プロトタイプモデルというその名は「試作機」から用いられております。
実際に本番開発に望む前に、試作機をお客様に利用してもらうことで、お客様の要望を反映し認識のズレを最小限に抑えます。本番開発前に設計や性能の検証を行えるためリスクを抑えることを目的とした開発モデルです。
参照:コトバンク
スパイラルモデルというその名は開発工程が「螺旋」のように繰り返されることから用いられております。スパイラルモデルでは機能単位で”要件→設計→製造→テスト”を実行し、お客様の合意が取れた上で次の機能へ開発を進めるという特徴があります。仕様変更などに対応しやすい成長型モデルと呼ばれております。
参照:コトバンク
システム開発に関わる業界では各作業工程を略語で呼ぶ場面があります。この場合にコミュニケーションロスが発生しないようにするためにも覚える必要にある代表的な名称を表にまとめましたので是非参考までにご覧ください。
システム開発工程における各プロセスの役割と内容を理解することはシステム開発に携わるものとしての必須条件と言えるでしょう。特にウォーターフォールモデルのプロジェクトに携わる場合には各プロセスの重要度が非常に高く、次工程への影響度も大きいです。全体像を理解し、各プロセスの要点をしっかりと抑えて作業を実施しましょう。