システム開発の工程(フェーズ・流れ)は現場によって定義が変わりますが、ここでは一般的な工程を紹介します。
システム開発の工程
要件定義
クライアントやプロジェクトのステークホルダーからニーズを聞き取り、システムやソフトウェアが何を実現すべきかを明確にする段階です。ユーザーの要望やビジネス上の目標を基に、機能や性能、制約条件などを文書化します。
(例)どの機能が必要か、予算やスケジュールの制約はどうか、どのプラットフォームで動作するかなど。
基本設計
要件をもとにシステム全体の構成を大まかに設計する段階です。システムのアーキテクチャ(構造)や、各機能の概要、データベースの設計など、全体的なシステムの骨組みを作ります。
(例)システムの全体像、ユーザーインターフェースの大枠、データベースのテーブル設計など。
詳細設計
基本設計をさらに具体化し、プログラムやモジュールごとに細かい設計を行います。どのように機能を実装するか、どのプログラムがどのデータを操作するか、具体的なアルゴリズムなどを記述します。
(例)各機能の処理フロー、プログラムのコード構造、APIの仕様など。
開発(製造)
詳細設計をもとに、実際にプログラムをコーディングするフェーズです。この段階でプログラミング言語やフレームワークを使って、機能を実装し、テスト可能な状態まで作り上げます。
(例)コード(プログラミング)の実装、デバッグなど。
テスト
開発されたシステムやソフトウェアが、要件通りに動作するかを確認する段階です。テストはさらに細かく分けられることが多いです。
(例)正常動作確認テスト、異常動作確認テスト、ユーザーによる受け入れテストなど。
単体テスト(UT)
個々のプログラムやモジュール(関数やクラスなど)単位で動作を確認するテストです。主に開発者自身が行い、プログラムが設計通りに動作するかを検証します。バグの早期発見やコードの品質向上に重要です。
結合テスト(IT)
結合テストは、複数のモジュールやコンポーネントを組み合わせた際に、正しく連携できるかを確認するテストです。モジュール間のデータのやり取りや、インターフェースが期待通りに動作するかを検証します。
システム(総合)テスト(ST)
システム全体が要件通りに動作するかを確認するテストです。システムが完成した状態で、様々なシナリオを想定して、全体的な動作や性能、セキュリティを検証します。単体テストや結合テストが個々の機能や連携に焦点を当てるのに対し、システム全体の品質を確認する段階です。
ユーザー受け入れテスト(UAT)
システムが顧客やエンドユーザーの要求を満たしているかを確認するテストです。実際にシステムを使用するユーザーやクライアントがテストを行い、期待通りの動作をするか、仕様が満たされているかを評価します。これが成功すれば、システムは本番運用へと進みます。
リリース
テストが終了し、システムが完成したら、実際にユーザーに提供される段階です。リリースは、システムを本番環境にデプロイすることを指し、運用開始に向けた準備や最終確認が行われます。
(例)サーバーへのデプロイ、リリースノートの作成、ユーザーへの告知など。
運用・保守
リリース後、システムを正常に運用し続けるための保守フェーズです。システムの監視、ユーザーからの問い合わせ対応、バグ修正、新機能の追加などが行われます。
(例)障害対応、パフォーマンスチューニング、セキュリティパッチの適用、新機能の開発など。
まとめ
要件定義に近いほど上流工程と、保守・運用に近いほど下流工程を呼びます。
各工程の担当も現場によって異なりますが、一般的には下記の通りです。
「TechVillage」は公務員特化型のエンジニア転職支援です。
無料相談も実施しております。「ITエンジニアって実際どうなのか」「ITエンジニアに向いているのか」「未経験からITエンジニアになれるのか」「支援はどんな内容なのか」等、ざっくばらんにお話しさせていただきますので、お気軽にご連絡ください。(下記サービスサイトより公式LINE登録の上、メッセージください)