食品業界で使われる「トレーサビリティ」という言葉を聞いたことがある方は多いでしょう。しかしトレーサビリティは、ソフトウェア開発においても重要とされる概念です。
この記事では、ソフトウェア開発におけるトレーサビリティの基礎知識から目的、種類、ツールまで幅広くお伝えします。
- もくじ
1.ソフトウェア開発におけるトレーサビリティとは
トレーサビリティは、英語のtrace(追跡する)とability(できること)を組み合わせた言葉です。簡単にいえば、「ある要素から関連要素を追跡できる性質」となります。
国際標準化機構のISO 9000では、トレーサビリティを「考慮の対象となっているものの履歴、適用又は所在を追跡できること。」と定義しています。この「考慮の対象となっているもの」は、ソフトウェア開発でいうと「開発に関する情報や成果物」です。
つまり、ソフトウェア開発におけるトレーサビリティとは、「開発に関する情報や成果物の履歴や所在を追跡できること」を指します。
2.ソフトウェア開発でトレーサビリティを確保する目的
ソフトウェア開発においてトレーサビリティを確保する主な目的は、ソフトウェア品質の可視性を高めることです。
ソフトウェア開発では、前工程の内容を前提として次の工程を進めます。そのため、要件定義や設計、実装、テストといった各工程で生じる要素間にも、さまざまな関係性が生じます。しかし、こうした要素の数が増えると、それらの関係性が見えなくなりがちです。
要素間の関係が見えない、つまりソフトウェア品質の可視性が低いことは多くの問題につながります。たとえばソースコード内にバグを発見したとしても、該当箇所がどの要求や設計と関連しているか追跡できなければ、意図や経緯がわからず改修が遅れるでしょう。さらには、要求にそぐわない改修が行われるリスクもあります。
こうした問題を防ぐためには、ソフトウェア品質の可視性を高めることが求められます。その解決策となるのが、開発に関する要素の関係性を明確にするトレーサビリティです。
3.ソフトウェア開発におけるトレーサビリティの種類
ソフトウェア開発に関する情報や成果物は多岐にわたるため、トレーサビリティの種類もさまざまです。
ソフトウェア開発におけるトレーサビリティの主な種類として、次の4つを知っておきましょう。
前後工程間のトレーサビリティ
前述のように、ソフトウェア開発では前工程の内容を前提として次の工程を進めます。そのため要件定義と基本設計、基本設計と詳細設計、詳細設計と実装など、前後工程間のトレーサビリティが重要です。
後工程における各要素が、前工程のどの要素と関連しているかを明確にすることが求められます。たとえば、ソースコードの変更Aは、詳細設計書の変更Aと明確に関連付けられなければなりません。
上流工程・テスト仕様のトレーサビリティ
要件定義や基本設計、詳細設計といった上流工程と、対応するテスト工程にもトレーサビリティの確保が求められます。
一般的なソフトウェア開発のV字モデルでは、詳細設計を単体テストで、基本設計を結合テストで、要件定義をシステムテストで検証します。各上流工程に盛り込んだ内容が、対応する下流工程におけるテストケースと明確に関連付けられなければなりません。
テストケース・テスト結果のトレーサビリティ
単一のテスト工程においては、テストケースとテスト結果のトレーサビリティが重要です。具体的には、テスト設計仕様書などのテストドキュメントから、対応するテストケース、そして対応する実施結果(ログや画面キャプチャなど)にアクセスできることが求められます。
各テストケースの内容が正しくテストされていることを保証でき、エビデンスを求められた際にもスムーズに対応が可能です。
要求のトレーサビリティ
顧客やユーザーの要求は、 全開発工程に正しく反映されなければなりません。要求がソフトウェア開発の始まりであり、要件定義以降の全工程に大きく関わってくるためです。
複数の工程を進めていくうえで、伝言ゲームのように本来の要求が少しずつずれてしまうケースは少なくありません。こうした事態を防ぐために、各要求内容と後工程(要件定義、設計、実装、テスト)の成果物とのトレーサビリティが重要といえます。
4.ソフトウェア開発でトレーサビリティを確保するメリット
ソフトウェア開発においてトレーサビリティを確保することで、さまざまなメリットが得られます。
トレーサビリティを確保することの主なメリットは、次の4つです。
仕様の抜け漏れや不整合を防げる
トレーサビリティを確保することは、仕様の抜け漏れや不整合の防止につながります。
前後工程間のトレーサビリティを確保すれば、前工程の変更内容が後工程のどこに反映されているかが明確になります。仮に漏れがあっても、すぐに気づけるでしょう。また、途中で内容に不整合が発生しても、問題箇所を素早く発見できます。
確認作業の工数を削減できる
トレーサビリティを確保することで、確認作業の工数を削減できます。
一般的に各工程のレビューでは、開発成果物に前工程までの内容が漏れなく盛り込まれているかを確認します。このときトレーサビリティを確保できていれば、前工程との関連性をスムーズに確認することが可能なため、レビュー工数の削減につながるでしょう。
影響範囲や因果関係を把握しやすい
トレーサビリティを確保することで、影響範囲や因果関係を把握しやすくなります。
開発規模が大きくなると影響範囲の把握が困難になり、ソースコードの変更時に多くの調査工数がかかります。しかしトレーサビリティを確保できていれば、モジュールと要件定義や設計の因果関係が明確となり、修正範囲の特定が容易となるでしょう。
また、テストケースでNG項目が見つかった場合も、対応する要件定義や設計との因果関係が明確となります。そのため、不具合の原因調査や影響範囲を確認するための工数削減も期待できます。
顧客からの信頼性の向上につながる
トレーサビリティを確保していることを顧客に示せば、信頼性向上にもつながります。
顧客はソフトウェアの細かい内容までは基本的に把握できません。そのため、その妥当性を上手く伝えられなければ不信感を与えてしまいます。要求した内容が正しく盛り込まれているかはもちろん、設計やテストの妥当性も顧客にとっては気になるところです。
その点トレーサビリティを確保できていれば、要求が開発成果物のどこに反映されているかを簡単に説明できます。また、各工程間でも正しく要求が反映されていることを示せるため、顧客からの信頼性は高まるでしょう。
5.ソフトウェア開発でトレーサビリティを確保する主な方法
ソフトウェア開発でトレーサビリティを確保する主な方法は、次の3つです。
管理番号やリンクによる関連付け
運用でカバーする方法として、管理番号やリンクによる関連付けがあります。
たとえば、各要求に管理番号を付けて設計書やソースコードの対応箇所に記載します。そうすることで、どの変更内容がどの要求に関連しているかが明確になるでしょう。また、テストケースの結果欄に対応するエビデンスのリンクを張ることで、ログファイルや画面キャプチャに素早くアクセスできます。
ただし、ツールなどの導入コストは抑えられるものの、管理上の工数はかかりやすいのが難点といえます。トレーサビリティの取り方が工程によって変わるため、確実な運用が求められます。
トレーサビリティ管理ツールの導入
トレーサビリティ管理ツールを導入することで、効率よくトレーサビリティを確保できます。トレーサビリティ管理ツールは、各工程間の要素の関連付けや管理、それらの追跡などを専用のUIで可能にするツールです。
トレーサビリティの確保に必要な機能が揃っているため、担当者の負担軽減や工数削減につながります。ただし、基本的にツールの導入コストがかかります。
トレーサビリティマトリックスの活用
トレーサビリティマトリックスを作成することで、トレーサビリティの統合的な管理が可能となります。
トレーサビリティマトリックスとは、要求と各工程の関連付けを次のような表形式で可視化する技法です。
引用元:トレーサビリティ確保におけるソフト開発データからの効果検証実施報告書(IPA)
トレーサビリティマトリックスの1列目(左端)には要求、2列目以降には各工程を順番に割り当てます。1列目に要求を列挙し、2列目以降には対応する変更内容やリンクなどを記載します。そうすることで、要求と各工程の関連付けが明確となるのです。
トレーサビリティマトリックスを表計算ツールで作成すれば、トレーサビリティ管理ツールの導入コストを削減できます。ただし、管理において手間やミスが発生しやすいため注意が必要です。
まとめ:これからの品質保証ではトレーサビリティの確保が重要
ソフトウェア開発におけるトレーサビリティとは、「開発に関する情報や成果物の履歴、所在を追跡できること」です。
顧客の要求や開発文書、ソースコードなどの関係性を明確にすることで、漏れや不整合の防止、確認作業の工数削減などが期待できます。
トレーサビリティの確保は、ソフトウェア品質の可視性を高め、顧客からの信頼性向上にもつながる取り組みです。
ソフトウェア品質の重要性が高まりつつあるなかで、トレーサビリティの確保は今後より重要となるでしょう。