会社のシステム開発を行う場合、外部の専門会社に依頼することが多くあります。
しかしシステム開発の工程に関する知識がないと、打ち合わせができないだけでなく、何を依頼すればいいのかさえわからないでしょう。
今回はシステム開発の工程について解説します。
目次
システム開発における工程(プロセス)とは?まずは概要を解説
システム開発における工程とはシステム開発の手順のようなものです。
システム開発は既存の業務(在庫管理など)を、ソフトウェアプログラムを使って効率改善や最適化したり、新たな業務の仕組みを作ったりすることです。
システム開発を行う際に開発の手順が決まっていないと、何から手をつければいいのかがわからず、良いものを作れません。
そこで、工程を細かく分けて分担することで、効率的にシステム開発を行えるようになります。
システム開発の基本的な工程(プロセス)と流れ
システム開発の工程にはいくつか種類があります。
今回は最もスタンダードな「ウォーターフォールモデル」の流れを紹介します。
基本的な流れは次の通りです。
・要件定義(要求定義)
・外部設計
・内部設計
・プログラミング
・単体テスト
・結合テスト
・システム(総合)テスト
・運用テスト
・システム移行(リリース)
・運用・保守
要件定義(要求定義)
開発するシステムに、どんな要素を取り入れるのかを明確に決定します。
この決定内容をもとに、予算や人員、期間、開発の目的、ターゲットなど、より具体的な詳細を決めます。
ウォーターフォールモデルは、その名の通り水が流れるように作業を進めるため、途中で前の工程に戻ることはありません。
よって、最初の工程である要件定義は最も重要な項目です。
漏れがないように依頼者と受託者でしっかりと打ち合わせをしましょう。
外部設計
外部設計では、ユーザーインターフェース(UI)を設計します。
ユーザーインターフェースとは、画面などの外見的な見た目です。
例えば、ホームページの場合はアイコンや画像の配置やデザインなどです。
ユーザーの使い勝手の良さに繋がる要素です。
内部設計
内部設計では、プログラミングの設計を行います。
プログラミンはシステムを動かすための仕組みです。
例えば、ホームページの場合はこのアイコンをクリックするとどのページに移動するかを決めることです。
プログラミング
内部設計で設計したプログラミンをもとに、実際にプログラムを作成します。
単体テスト
単体テストでは、実際に作成したプログラムの1つひとつが、最初に決定した要件定義の基準を満たしているかを確認します。
テストはプログラミングの対象単位(モジュール)ごとに実施します。
結合テスト
結合テストでは、単体テストを行った各プログラムを組み合わせたときに、うまく機能するかを検証します。
例えば、ホームページの場合はページの移動やデータの保存などが正常に連携するかを確認します。
システム(総合)テスト
システムテストでは、すべてのプログラムが要件定義の通りに動くかを確認します。
結合テストは各プログラムの連携でしたが、システムテストは多くのアクセスに対する耐久性や処理速度などを確認します。
運用テスト
運用テストでは、実際に業務に取り入れることができるかを確認します。
実際にシステムを運用する環境下でシステムに不具合がないかを確認するので、より実用性に重点をおいたテストです。
システム移行(リリース)
システム移行では、旧システムからの切り替えを行います。
一気に切り替える一斉移行や徐々に切り替える順次移行などの方法があります。
運用・保守
運用・保守では問題なく運用できるように、メモリの利用状況などを確認します。
また、よりよい状態でシステムを利用できるようにシステムのアップデートも行います。
システム開発工程(プロセス)の2つのモデル「ウォーターフォール」と「アジャイル」の違い
システム開発工程にはいくつかの種類があります。
今回「ウォーターフォールモデル」と「アジャイルモデル」の違いを説明します。
ウォーターフォールモデル
ウォーターフォールモデルの特徴は、上流工程から下流工程へと順番に行っていくことです。
先程紹介した10個の工程を順番に行っていくことになります。
ウォーターフォールモデルのメリットは、進捗状況を把握しやすい、品質が担保しやすいことがあります。
その理由は、1つ前の工程が完了しないと次の工程に進むことはなく、1つひとつ確実に工程を進めるからです。
スケジュール管理が必要な大規模なシステム開発に向いています。
一方で、デメリットは比較的時間を要することです。
スピード感を重視する新規事業などには向いていません。
アジャイルモデル
アジャイルモデルの特徴は、スピード感のある開発です。
アジャイルモデルは、各工程を1つずつ進める決まりがなく、全体を作りつつ随時変更や修正を行います。
アジャイルモデルのメリットは、スピードです。
短期間でシステムを作る場合や、要件定義が明確に決まっておらずとりあえず作ってみたい場合に向いています。
一方で、システム開発の目的(ゴール)が明確になっていないと、必要以上に修正が入ったり、方向性がぶれてしまう危険性があります。
また比較的新しいモデルのため、アジャイルモデルでの実績を持っている会社が少なく、「依頼したシステムがきちんと完成するのだろうか」といった不安があります。
その他のモデル
ウォーターフォールモデルやアジャイルモデル以外の開発工程モデルを2つ紹介します。
プロトタイプモデルとスパイラルモデルです。
プロトタイプモデルは開発初期に試作品を作成し、クライアントや関係者に確認してもらった上で開発を進めます。
認識のずれを最小限にできるのがメリットです。
スパイラルモデルはウォーターフォールモデルの各工程を同時に進める方法です。
各工程ごとにプロトタイプモデルのように試作品を作成するので、クライアントと完成図を共有しながら開発を進められるメリットがあります。
システム開発の工程(プロセス)で頻出する専門用語や略語
システム開発の現場では専門用語や略語を頻繁に使用するため、知識が少ないと「どういう意味?」と疑問を感じることが多くあります。
ここではシステム開発の工程で頻出する専門用語や略語を紹介します。
これらを知っておくことで、打ち合わせがスムーズに進むでしょう。
工程 | 略語 | 英語表記 |
企画 | SP | System Planning |
要求分析 | SA | System Architectural |
要求分析 | SA | System Analysis |
要件定義 | RD | Requirements Definition |
基本設計 | UI / BD | User Interface / Basic Design |
構造設計 | SS | System Structure Design |
機能設計 | FD | Function Design |
詳細設計 | DD / PS | Detail Design / Program Structure Design |
プログラム設計 | PD | Program Design |
コーディング | CD | Cording |
プログラミング | PG | Programing |
単体テスト | UT | Unit Test |
結合テスト | IT | Integration Test |
システムテスト | ST | System Test |
総合テスト | PT | Product Test |
運用テスト | OT | Operation Test |
まとめ
今回はシステム開発の工程について基本的な概要と流れ、代表的な手法であるウォーターフォールモデルとアジャイルモデル、システム開発の現場で使用される用語や略語について解説しました。
これからシステム開発に携わる人や、システム開発を依頼する人は今後の業務の参考にしてください。