システム開発をしていると、「トレーサビリティを確保する」という言葉を耳にすることがあります。
しかし、「要件と設計書の関係を追跡すること」と説明されることもあれば、「システムの処理履歴を追跡すること」と説明されることもあり、意味がわかりにくいと感じるかもしれません。
この記事では、トレーサビリティの基本的な意味から、IT業界での具体例、トレーサビリティチェックの考え方やメリットまで、わかりやすく解説します。
トレーサビリティとは?
トレーサビリティ(Traceability)とは、簡単にいうと、「物事の経緯やつながりを、後から追跡できること」です。
一般的には、製品がどこで作られ、どのような経路を通ってきたのかを確認できる仕組みとして使われています。
例えば、スーパーで販売されている食品について、「どこで生産されたのか」「どの工場で加工されたのか」「どのように流通してきたのか」を調べられることです。製品によっては、原材料の調達から製造、販売、廃棄までのライフサイクルを追跡対象にすることもあります。
一方、IT業界では、開発成果物の関係を追跡する場合や、システムの処理・データの履歴を追跡する場合などに使われます。この記事では、代表的な2つの使われ方を紹介します。
| ITにおける使われ方 | 追跡するもの |
|---|---|
| 開発におけるトレーサビリティ | 要件・設計・テストなどの関係や変更履歴 |
| 処理・データにおけるトレーサビリティ | システムで行われた処理やデータの変更・移動の履歴 |
どちらも共通しているのは、「何が、どのような経緯で、現在の状態になったのかを確認できること」です。
開発におけるトレーサビリティ
システム開発におけるトレーサビリティは、要件定義から設計、プログラム実装、テストまでの成果物の関係を追跡できることを指します。
例えば、「この機能はどの要件を実現するために作られたのか」「この要件はどのテストで確認しているのか」をたどれる状態です。
また、要件から設計・テストへ追跡するだけでなく、設計書やテスト仕様書から元の要件へさかのぼれることも重要です。
例えば、次のような関係です。
| 追跡する方向 | 確認できること |
|---|---|
| 要件 → 設計・実装・テスト | この要件がどこで実現され、どのテストで確認されているか |
| 設計・実装・テスト → 要件 | この成果物がどの要件に基づいているか |
このように、両方向から関係を確認できる状態を、双方向トレーサビリティと呼びます。
双方向で追跡できることで、要件の実装漏れを確認するだけでなく、目的のわからない実装やテストがないかを確認する際にも役立ちます。
開発におけるトレーサビリティの具体例
例えば、会員登録機能を開発する場合、次のような成果物を作成します。
| 成果物 | 内容 |
|---|---|
| 要件定義書 | メールアドレスとパスワードで会員登録できること |
| 基本設計書 | 会員登録画面の設計 |
| 詳細設計書 | 会員登録処理の設計 |
| テスト仕様書 | 正常に会員登録できることを確認する |
これらの成果物を関連付けておけば、「会員登録の要件はどこで実装されているのか」「どのテストで確認しているのか」を追跡できます。
例えば、会員登録システムに次の3つの要件があるとします。
- メールアドレスで会員登録できること
- パスワードは8文字以上とすること
- 登録完了メールを送信すること
これらの要件と、基本設計・詳細設計・テストの関係を整理すると、次のようになります(※設計書名やIDは説明用の例です)。
| 要件ID | 要件 | 基本設計 | 詳細設計 | テスト |
|---|---|---|---|---|
| REQ-001 | メールアドレスで会員登録できる | BD-001 会員登録画面設計 | DD-001 会員登録処理設計 | TC-001 |
| REQ-002 | パスワードは8文字以上とする | BD-002 パスワード入力項目設計 | DD-002 パスワード検証処理設計 | TC-002 |
| REQ-003 | 登録完了メールを送信する | BD-003 登録完了・メール送信設計 | DD-003 メール送信処理設計 | TC-003 |
このように、要件ごとに関連する設計書・テストを対応付けて管理する表を、トレーサビリティマトリクス(要求トレーサビリティマトリクス)と呼びます。
例えば、REQ-002の「パスワードは8文字以上」という要件が「12文字以上」に変更された場合を考えてみましょう。
対応関係がわかっていれば、次のように関連する成果物を確認できます。
| 確認するもの | 確認内容 |
|---|---|
| 要件定義書 | パスワードの最小文字数を12文字以上に変更する |
| 基本設計書 | 入力項目の制約やエラーメッセージを確認する |
| 詳細設計書 | パスワードの入力チェックの設計を確認する |
| テスト仕様書 | 12文字以上の条件に合わせてテストを見直す |
このように、トレーサビリティを確保することで、仕様変更があったときに、どの成果物へ影響するのかを確認しやすくなります。
なお、実際の開発では、1つの要件に対して複数の設計やテストが対応することもあります。また、1つのプログラムが複数の要件を実現する場合もあるため、必ずしも1対1の関係になるわけではありません。
処理・データにおけるトレーサビリティ
処理・データにおけるトレーサビリティは、システムが稼働した後の処理やデータについて、いつ、誰またはどのシステムが、何を行い、どのような結果になったのかを追跡できることを指します。
例えば、「誰がデータを変更したのか」「どの処理でエラーが発生したのか」「このデータはどこから取得され、どのように加工されたのか」を確認できる状態です。
処理・データにおけるトレーサビリティの具体例
会員登録システムの運用中に、あるユーザーの登録が失敗したとします。
処理履歴が記録されていれば、次のような流れを確認できます。
| 時刻 | 処理の履歴 |
|---|---|
| 10:00:00 | ユーザーが会員登録を実行 |
| 10:00:01 | 入力内容のチェックを開始 |
| 10:00:01 | メールアドレスの形式エラーを検出 |
| 10:00:02 | エラーメッセージを返却 |
この履歴から、どの処理で失敗したのかを調査できます。実際のシステムでは、リクエストIDやエラーコードなどを記録し、複数の処理にまたがる履歴を追跡することもあります。
また、会員情報の変更履歴を記録しておけば、いつ、誰が、どの項目を変更したのかを後から確認できます。
すべての履歴が自動的に記録されるわけではありません。必要な記録を設計し、機密情報の取り扱いや保存期間にも注意することが重要です。
トレーサビリティチェックとは?
トレーサビリティチェックとは、要件・設計・テストなどの成果物が適切に関連付けられているか、必要な内容の反映漏れや不整合がないかを確認することです。
例えば、ウォーターフォール開発では、一般的に次のような流れで開発を進めます。
要件定義 → 基本設計 → 詳細設計 → 実装 → 単体テスト → 結合テスト → システムテスト
ウォーターフォール開発では、工程が進んだ後に前の工程の不備が見つかると、関連する成果物の修正が必要になり、手戻りが大きくなることがあります。
そのため、次の工程に進む前やレビュー時に、前工程の内容が適切に反映されているかを確認することが重要です。
トレーサビリティチェックの具体例
会員登録システムを例にすると、次のような確認を行います。
| 確認する関係 | チェックする内容 |
|---|---|
| 要件定義書 → 基本設計書 | 必要な画面や機能が設計に反映されているか |
| 基本設計書 → 詳細設計書 | 基本設計で決めた内容が詳細設計に反映されているか |
| 要件・設計 → テスト仕様書 | 必要な内容を確認するテストが用意されているか |
例えば、要件定義書に「パスワードは8文字以上とする」と記載されているのに、詳細設計書にパスワードの文字数チェックが記載されていなければ、設計漏れの可能性があります。
また、詳細設計書に文字数チェックが記載されていても、テスト仕様書にその確認項目がなければ、テスト漏れの可能性があります。
このように、トレーサビリティチェックでは、単に成果物の名前が対応しているかを確認するだけでなく、内容が適切に反映されているかを確認することが重要です。
なお、トレーサビリティチェックはウォーターフォール開発だけで行うものではありません。アジャイル開発でも、ユーザーストーリー、実装、テストなどの関係を追跡し、変更の影響や品質を確認するために活用されます。
トレーサビリティのメリット
1. 不具合の原因を調査しやすくなる
処理履歴を追跡できれば、エラーが発生したときに、どの処理で失敗したのかを確認できます。
例えば、会員登録が失敗した場合、入力チェックやデータベースへの保存など、問題が発生した箇所を切り分けやすくなります。
2. 要件の実装漏れやテスト漏れを防ぎやすくなる
要件と設計・実装・テストの対応関係を確認することで、必要な機能やテストが漏れていないかを把握できます。
例えば、対応する設計やテストが存在しない要件があれば、漏れの可能性に気づくことができます。
3. 仕様変更の影響範囲を把握しやすくなる
要件が変更されたときに、関連する設計書やプログラム、テストを追跡できれば、修正が必要な箇所を確認できます。
例えば、パスワードの最小文字数が変更された場合、関連する入力チェックやテストケースを確認することで、修正漏れを防ぎやすくなります。
4. 品質保証や監査に役立つ
要件に対するテストの実施状況や、データの変更履歴を確認できるため、品質保証や監査に役立ちます。
ただし、トレーサビリティを確保するだけで品質が保証されるわけではなく、品質を確認・説明するための仕組みの一つです。
本記事のまとめ
この記事では『トレーサビリティ』について、以下の内容を説明しました。
- トレーサビリティとは、「物事の経緯やつながりを、後から追跡できること」
- IT業界では、「開発成果物の関係」と「システムの処理・データの履歴」を追跡する
- 開発では、「トレーサビリティマトリクス」や「トレーサビリティチェック」を活用し、要件と設計・テストの対応関係や反映漏れを確認する
- トレーサビリティを確保することで、「実装・テスト漏れの防止」「仕様変更の影響確認」「不具合の原因調査」「品質保証や監査」に役立つ
お読みいただきありがとうございました。