【エンジニアになりたい人必見!】システム開発について
今回はシステム開発の流れや、関連する用語についてまとめました。
エンジニアになりたい方に、役立つ内容となっています。
ぜひ最後までお読みください!
1. ソフトウェアとハードウェアの違い
ソフトウェアとハードウェアには、以下のような違いがあります。
・ソフトウェア:OSやアプリケーションのような、物理的実体を持たないもの
・ハードウェア:コンピュータや周辺機器のような、物理的実体を持つもの
ソフトウェアとハードウェアをあわせて、「システム」といいます。
2. ソフトウェアライフサイクルプロセス(SLCP)とは
ソフトウェアライフサイクルプロセスとは、システムの一生のことです。
企画・要件定義・開発・運用・保守の、一連のプロセスのことをいいます。
英語で書くと「Software Life Cycle Process」になり、「SLCP」と略されることもあります。
SLCPは、国際標準化機構(ISO)によって標準化されています。
3. 共通フレームとは
共通フレームとは、情報処理推進機構が発行している、ソフトウェアライフサイクルにおける用語や作業内容などを規定したガイドラインのことです。
4. SLCPのプロセス
SLCPには、以下のような5つのプロセスがあります。
・企画プロセス
・要件定義プロセス
・開発プロセス
・運用プロセス
・保守プロセス
順番に解説していきます。
4-1. 企画プロセス
企画プロセスとは、システムの導入を計画するプロセスのことです。
経営目標を達成するため、システムに必要な要件を集めて計画を立てます。
4-2. 要件定義プロセス
要件定義プロセスとは、システムに必要な「機能」や「性能」を決めるプロセスのことです。
必要な機能や要件を利害関係者から聞き出し、合意を形成します。
4-3. 開発プロセス
開発プロセスとは、実際にシステムを作るプロセスのことです。
必要なハードウェアを調達し、必要な機能を持ったソフトウェアを新しく作成します。
開発プロセスは、以下のような工程に分解できます。
● システム要件定義:システムで実現したいことを決める
● システム設計:ハードウェアとソフトウェアの仕様や動作を決める
・システム方式設計
・ソフトウェア要件定義
・ソフトウェア方式設計
・ソフトウェア詳細設計
● プログラミング:ソースコードを記述する
● テスト:システムが仕様どおりに動くか確認する
・単体テスト
・結合テスト
・システムテスト
・運用テスト
ウォーターフォールモデル
このように一つひとつの開発工程を完了させて進めていくシステム開発モデルを、「ウォーターフォールモデル」といいます。
滝のように水が上流から下流に流れて落下していく様子になぞらえて、この名前がつけられました。
4-4. 運用プロセス
運用プロセスとは、システムの本番移行や、システムを安定的に稼働させるプロセスのことです。
開発プロセスで作成したシステムを実際に運用します。
4-5. 保守プロセス
保守プロセスとは、不具合の修正やシステムの機能改善、定期メンテナンスなどをおこなうプロセスのことです。
システムを使用しなくなるまで、このプロセスを継続します。
5. テストとは
テストとは、システムが仕様どおりに動くのか、また、要件定義での要求が実現されているかを検証する工程のことです。
テストには、以下のような種類があります。
・単体テスト
・結合テスト
・システムテスト
・運用テスト
・リグレッションテスト
順番に解説していきます。
5-1. 単体テスト
単体テストとは、プログラムを構成する比較的小さな単位(ユニット)が個々の機能を正しく果たしているかどうかを検証するテストのことです。
「ユニットテスト」ともよばれます。
通常は、「ホワイトボックステスト」という手法でおこなわれます。
ホワイトボックステスト
ホワイトボックステストとは、入力したデータが、すべて意図どおりに処理されているかを確認するテストのことです。
プログラムの内部構造に注目して確認します。
箱の中身を見ながらテストをするようなテスト手法なので、「ホワイトボックステスト」とよばれます。
このテストは、プログラマ(開発者)がおこないます。
ホワイトボックステストのメリット・デメリットは以下のとおりです。
・メリット:すべての処理を確認できる
・デメリット:プログラマがシステムの仕様を誤解していた場合、不具合を見つけられない
5-2. 結合テスト
結合テストとは、単体テストが完了した各プログラムを組み合わせて、意図した通りの動作になっているかを確認するテストのことです。
「インテグレーションテスト」ともよばれます。
通常は、「ブラックボックステスト」という手法でおこなわれます。
ブラックボックステスト
ブラックボックステストとは、プログラムの構造など内部を考慮せずに、外部から網羅的に確認するテストのことです。
インプット・アウトプットの結果のみに注目して確認します。
中身の見えない箱をテストするようなテスト手法なので、「ブラックボックステスト」とよばれます。
このテストはプログラマ(開発者)とユーザ(発注者)がおこないます。
ブラックボックステストのメリット・デメリットは以下のとおりです。
・メリット:仕様どおりの動作をするか確認できる
・デメリット:内部の処理が間違えているかどうかまでは把握できない
5-3. システムテスト
システムテストとは、システムがシステム要件(仕様書)どおりにできているか、求められている機能や性能が満たされているかを確認するテストのことです。
システムの品質を確保するためにおこなわれます。
このテストは、プログラマ(開発者)がおこないます。
5-4. 運用テスト
運用テストとは、開発が完了したシステムを本番と同じ条件で検証し、不具合が発生しないか確認するテストのことです。
このテストはユーザ(発注者)が主体となっておこないます。
5-5. リグレッションテスト
リグレッションテストとは、システムを修正したり機能を追加したりしたために別の部分で新たな不具合が出ていないか確認するテストのことです。
このテストは、プログラマ(開発者)がおこないます。
6. テストケースとは
テストケースとは、テストを実施する際に用意する実行条件や入力データ、期待される出力、結果などの組み合わせのことです。
6-1. 網羅性(カバレッジ)とは
網羅性(カバレッジ)とは、テストの進捗を表す尺度のひとつで、テスト対象のソースコードのうち、どの程度の割合のコードがテストされたかをあらわすもののことです。
テストの網羅性が100%に近付くようにテストケースを作成することで、漏れや抜けの少ない高品質なテストを実施できます。
しかし、網羅性が100%だからといって、不具合のないプログラムであるとは言えません。
7. おわりに
今回はシステム開発の流れや、関連する用語について解説しました。
システム開発に関連する用語はどれも複雑で難しいですが、エンジニアになるために必要な知識です。
少しずつ覚えていきましょう!