システム開発の流れ

システム開発とは

業務を効率的に改善したり、従来の手法では出来なかったことを実現するためにプログラムを組んでシステムを作り上げること。


要件定義

要件定義とは、利用者がそのシステムで何がしたいのかを元に、それを実現するために実装しなければならない機能や、達成しなければならない性能などを開発者が検討して明確にすることである。まとめられた成果は「要件定義書」として文書化されることが多い。

一般的にこの段階では「何が」必要なのかを定義するに留め、それを「どのように」実現するかは後の工程で検討される。

外部設計

外部設計とは要件定義で決定した機能や性能、制約条件などを基にしてシステムの基本となる設計を行うことである。

操作画面や操作方法、データ出力など、ユーザーから見えるインターフェース部分の仕様を決定したり、セキュリティや運用規定、システム開発のスケジュールや費用などを設計したりと、基本的にユーザーに向けた仕様を設計するのが外部設計だ。

内部設計

内部設計とは、外部設計を基に、システム内部の動作や機能、物理データなど、ユーザーから見えにくい詳細な部分の設計を行うことである。

外部設計とその後に行われる詳細設計の間の工程だが、内部システムに特化しているため、詳細設計と同じ工程として扱われることもある。プログラム機能を単体に分割し、そこで使用する物理データや入出力を設計する。外部設計の結果をプログラミングしやすくするのが内部設計の役割である。

テスト

システムやソフトウェアを構築したあとに実行するテストのことである。システムやソフトウェア全体が仕様書通りにできているか、求められている機能や性能が満たされているかを確認し、システムの品質を確保するために行う。

単体テスト
単体テストとは,クラスや関数といった単位のプログラムのテストである。主に設計通りにこれらが動くかをテストし,論理構造が適切かを確認する。

  • 機能確認テスト:1つのモジュールが設計書や仕様書通りに動作することを確認するテスト。
  • 制御フローテスト:1つのモジュールが設計書や仕様書通りに動作することを確認するテスト。
  • データフローテスト:データや変数が「定義」「使用」「消滅」の順に行われているかを確認するテスト。

結合テスト
結合テストとは,単体テストで検証したプログラムを組みわせて行うテスト。

機能テスト
機能テストとは,結合したプログラムを1つの機能として行うテスト。

システムテスト
システムテストは,個々のプログラムや機能を結合したプログラムが仕様通りに動くかを検証するためのテスト。
参考:テストの種類と技法