今回も、前回に続いて応用情報技術者試験の過去問題から情報処理安全確保支援士の試験対策を行っていきます。
今回は、JIS X 0166:2021のインスペクションについて解説します。
是非、最後までご覧いただけると嬉しいです。
JIS X 0166:2021のインスペクション
システム開発の成果物が利害関係者の要件(要求事項)を満たしているという客観的な証拠を得るための検証手法として、JIS X 0166:2021(システム及びソフトウェア技術 ーライフサイクルプロセスー要求エンジニアリング)では、インスペクション、分析又はシミュレーション、デモンストレーション、テストを挙げている。これらのうち、成果物となる文章について要件(要求事項)への遵守度合いを検査するものはどれか。
ア インスペクション
イ テスト
ウ デモンストレーション
エ 分析又はシミュレーション
引用:応用情報技術者試験 令和5年 秋 午前 問65
解答
ア
JIS X 0166:2021の概要
JIS X 0166:2021は、ISO/IEC/IEEE 29148:2018(システムおよびソフトウェアエンジニアリング — ライフサイクルプロセス — 要求エンジニアリング)に準拠した規格であり、要求エンジニアリングに関する国際的なベストプラクティスを採用しています。
本規格の主な目的
- システムやソフトウェア開発における要求定義の標準化
- 一貫性のある要求の収集・分析・管理の推進
- 要求の明確化によるプロジェクトリスクの軽減
- システム開発ライフサイクル全体における要求のトレーサビリティ向上
JIS X 0166:2021のインスペクションの概要
JIS X 0166:2021のインスペクションは、成果物(例:要件定義書や設計書)が要求事項を満たしている相対的に評価するレビュー手法の一つです。静的検証により評価することで、早期に問題を発見し、品質向上とコスト削減を実現します。
目的
- 成果物が要求事項を満たしているか客観的に評価します。
- 早期に欠陥を発見し、手戻りを防ぐことで開発効率を向上させます。
- 品質を高め、信頼性のあるシステムとソフトウェアを提供します。
手法
- 静的検証:システムを動作させるために、文書や仕様書を対象に確認を行います。
対象
検査の対象となる成果物には、以下が含まれます。
- 権利定義書:システムやソフトウェアの要求事項を記述した文書
- 設計書:建築や詳細設計を定義した文書
- 仕様書:機能仕様やインターフェース仕様を定義した文書
- テスト計画書:テストのや戦略実施計画を示した文書
- マニュアル:ユーザー向けおよび開発者向けの操作説明書
実施方法
検査は、以下の手法を組み合わせて実施されます。
- レビュー:成果物を関係者で確認し、問題点を指摘・改善します。
- 監査:規格や規格に基づき、第三者が独立した視点で評価を行います。
- ピアチェック:同僚による相互確認を行い、品質を向上させます。
参加者
検査の実施には、以下の役割の関係者が参加します。
- レビューア(検査者):成果物を客観的に評価し、問題点を指摘します。
- 成果の作成者:自分の作成した文書を説明し、指摘された内容を反映します。
- 管理者:インスペクションの進行を管理し、必要な改善策を決定します。
検査を適切に実施することで、開発の初期段階で欠陥を発見し、システム全体の品質向上とプロジェクトの成功に貢献できます。
JIS X 0166:2021 におけるインスペクションの特徴
JIS X 0166:2021におけるインスペクションは、システムおよびソフトウェア開発の品質を向上させるための重要な手法です。静的検証を用いることで、開発の早い段階で問題を特定し、手戻りのリスクを最小限に抑えます。本規格では、インスペクションの特徴として以下の3つの要素を重視しています。
1. 体系的なプロセス
インスペクションは、事前に定義された基準やチェックリストに基づいて、組織的に検査を行う体系的なプロセスです。
- 標準化された手順に従うことで、属人性を排除し、一貫性のある品質評価が可能です。
- チェックリストを活用することで、漏れのない検証を実現し、見落としを防ぎます。
- 開発プロジェクトの異なるフェーズで継続的に品質を管理できます。
2. 文書ベースの検証
インスペクションでは、システムを実際に動作させるのではなく、仕様書や設計書などの文書が要求事項を満たしているかをチェックします。
- コードの実装前に設計や要件の不備を特定できるため、修正コストを削減できます。
- 文書を第三者が客観的にレビューすることで、認識のズレや記述ミスを早期に発見できます。
- 仕様の曖昧さを事前に解消することで、後の開発フェーズのトラブルを防止します。
3. 不具合の早期発見
インスペクションを活用することで、開発プロセスの早い段階で文書の誤りや欠陥を特定できるため、手戻りを減らし、コストを削減できます。
- コーディングやテストの前に設計ミスや要求の矛盾を指摘できるため、後工程での修正負担を軽減します。
- 早期に問題を発見し、バグ修正にかかるコストを大幅に削減します。
- 仕様の不備を解消することで、後続の開発作業をスムーズに進めることが可能です。
インスペクションの手順
1, 計画(Planning)
・どの成果物を対象にするかを決定し、関係者を選定します。
・検査の目的と基準を明確にします。
2. 準備(Preparation)
・成果物の作成者が事前に文書を用意します。
・レビューアは対象の成果物を確認し、チェックリストを用意します。
3. 検査(Inspection)
・レビュー会議を開催し、チェックリストや基準に基づいて成果物を確認します。
・要件に対する遵守状況を検討し、不適合があれば指摘します。
4. 報告(Reporting)
・検出された問題点を記録し、改善策を検討します。
・修正の必要性について合意を形成します。
5. フォローアップ(Follow-up)
・指摘された問題点が修正されたかを確認し、必要に応じて再検査を行います。
JIS X 0166:2021 におけるインスペクションの利点
JIS X 0166:2021 におけるインスペクションは、開発プロセスの初期段階で文書を精査し、品質向上やコスト削減を実現する重要な手法です。以下のような利点があります。
1. 品質向上
インスペクションを実施することで、要件の抜け漏れや誤りを事前に発見し、開発の品質を向上させることができます。
- 要件や設計の段階で問題を特定し、後工程でのトラブルを未然に防ぎます。
- レビューや監査によって、文書の明確性や一貫性を向上させ、誤解を減らします。
- 開発全体の品質を高め、バグの発生を最小限に抑えることができます。
2. コスト削減
インスペクションにより、開発後の修正コストを削減できます。
- コーディングやテストの前に欠陥を発見し、手戻りを減らすことで開発コストを抑制します。
- 早期に不具合を修正することで、後工程でのバグ修正にかかる時間とコストを大幅に削減します。
- 仕様の不備を事前に解消することで、開発効率を向上します。
3. コミュニケーションの促進
インスペクションを通じて、関係者間の認識を合わせ、共通理解を深めることができます。
- ステークホルダー間で文書の内容を確認し、認識のズレを防ぎます。
- チーム内の対話が増え、設計や仕様に対する理解が深まります。
- フィードバックを通じて、知識の共有や技術向上にも貢献できます。
4. 法規制や標準への準拠
JIS X 0166:2021 に準拠したインスペクションを実施することで、JISやISOなどの規格に沿ったプロセスを確保できます。
- 標準化された手法を適用することで、組織の開発プロセスの信頼性を向上。
- JISやISOの規格に適合した文書作成と管理を実現し、コンプライアンスを強化。
- 監査や外部評価に対して、適切なプロセスが実施されている証拠を提供。
インスペクションのまとめ
JIS X 0166:2021におけるインスペクションとは、システム開発において文書が要求事項を満たしているかを体系的に検査する手法です。
テストやデモンストレーションのように実際にシステムを動作させるのではなく、設計書や仕様書を対象とした静的なレビューを行う点が特徴です。
開発の初期段階で問題を発見し、品質向上とコスト削減に貢献する重要なプロセスとなります。
その他の回答
回答イ:テスト
テストの概要
テスト(Test) は、JIS X 0166:2021における検証手法の一つです。
システムやソフトウェアを実際に動作させ、要求事項を満たしているかを確認する手法として位置づけられています。
テストの目的
JIS X 0166:2021におけるテストは、システムやソフトウェアが要求事項を満たしている現実環境で検証することを目的とした重要なプロセスです。適切なテストを実施することで、品質の確保と信頼性の進歩を取り組むことができます。
1. システムやソフトウェアが要求事項を満たしている実環境で検証する
- 要件定義や設計に基づき、仕様通りに動作することを確認します。
- 実際の運用環境に近い条件でテストを行い、実際の運用で問題が発生しないか事前に把握します。
- システムの整合性をチェックし、期待される結果が得られるかを確認します。
2. 機能・性能・安全性・信頼性などの観点で評価する
テストは規定動作確認を行うだけでなく、以下の観点からシステムの品質を総合的に評価します。
- 機能テスト:仕様通りに動作するかを確認します。
- 性能テスト:負荷やストレスに対して適切な応答時間や処理能力を持って評価します。
- 安全性テスト:システムがセキュリティリスクに対して適切に保護されているかどうかを確認します。
- 信頼性テスト:長時間の稼働や異常環境下でも安定して動作する検証します。
3. バグや不具合を特定し、品質を向上させる
- テストを実施することで、設計や実装の欠陥を発見し、品質を向上させます。
- 不具合を特定することで、運用時のトラブルを未然に防ぎ、安定したシステムを提供できます。
- テスト結果を分析し、開発プロセスの改善に活用することで、より高品質なシステムの開発につながります。
テストの特徴
JIS X 0166:2021 におけるテストは、システムやソフトウェアの品質を保証するために、実際に動作させて評価を行う動的検証の手法を採用しています。
1.動的検証(システムを実際に動作させて確認する)
- システムを実際に実行させ、意図したとおりに動作するかを検証します。
- 検査やレビューとは異なり、実際の動作結果を観察しながらテストを進めます。
- コードが仕様通りに実装され、入力に対して正しい出力が得られるか確認します。
2.実際の環境やシミュレーション環境で試験を行う
- 本番環境に近い環境でテストを行い、実際の運用時に発生する問題を事前に検出します。
- 仮想環境やシミュレーションを置くことで、負荷試験や異常時の挙動を評価します。
- さまざまな条件下でのテストを行うことで、システムの安定性や耐障害性を確認できます。
3. 計画的にテストケースを作成し、実施・評価する
- 事前にテスト計画を立てて、徹底的なテストケースを作成することで、漏れ漏れのない検証を実施します。
- テスト結果を評価し、不具合を特定・分析しながら品質を向上させます。
- システムの要求仕様やユーザーの期待に応えた適切なテスト設計を行うことで、テストの有効性を高めます。
テストの手順
1. テスト計画(Test Planning)
・テストの目的と範囲を定義します。
・テスト環境や実施スケジュールを決定します。
2. テスト設計(Test Design)
・テストケースやシナリオを作成します。
・要求事項に基づき、期待する結果を定義します。
3. テスト実施(Test Execution)
・システムやソフトウェアを動作させ、テストケースを実行します。
・実際の結果と期待結果を比較します。
4. テスト評価(Test Evaluation)
・テスト結果を分析し、要件を満たしているかを判断します。
・不具合があれば、修正対応を行います。
5. テスト報告(Test Reporting)
・テストの結果を記録し、関係者に報告します。
テストの種類
JIS X 0166:2021 では、テストはシステムやソフトウェアが要求を満たしているかを確認するための実行ベースの検証手法として扱われます。
代表的なテストの種類には以下のものがあります。
テストの種類 | 概要 |
単体テスト(Unit Test) | プログラムの最小単位(関数やモジュール)の動作を確認する |
結合テスト(Integration Test) | 複数のモジュールが正しく連携するかを検証する |
システムテスト(System Test) | システム全体が仕様通り動作するかを確認する |
受け入れテスト(Acceptance Test) | 利用者(顧客)が求める要件を満たしているかを評価する |
性能テスト(Performance Test) | 応答時間や負荷耐性などを評価する |
セキュリティテスト(Security Test) | システムの脆弱性やセキュリティ対策を確認する |
テストのまとめ
JIS X 0166:2021 におけるテスト(Test)は、システムやソフトウェアを実際に動作させ、要求事項を満たしているかを検証する手法です。
他の検証手法(インスペクション、分析、デモンストレーション)と異なり、実際の動作を確認する動的なアプローチである点が特徴です。
システムの品質を保証し、バグや不具合を発見する重要なプロセスとして、計画的に実施されます。
回答ウ:デモンストレーション
デモンストレーションの概要
デモンストレーション(Demonstration) は、JIS X 0166:2021における検証手法の一つであり、実際にシステムや製品を動作させ、要求事項を満たしていることを確認する方法です。
デモンストレーションの目的
JIS X 0166:2021 におけるデモンストレーションは、システムやソフトウェアが要求事項を満たしている、実際に動作させながら確認する手法です。利害関係者(顧客やユーザー)とともにシステムの行動を評価することに重点を置きます。
1.実際の環境やプロトタイプを用いて、要求事項が満たされていることを確認する
- システムを実際に動作させ、仕様通りの動作を検証します。
- 開発途中のプロトタイプを使用し、機能や性能の評価性を確認します。
- 実環境での動作を確認することで、設計段階では想定できなかった課題を発見できます。
2. 利害関係者(顧客やユーザー)にシステムの動作を示し、期待通りの結果が得られる評価する
- 顧客やユーザーに直接システムの動作を見せることで、期待とのズレを早期に認識します。
- 利害関係者がシステムの動作を確認しながらフィードバックを提供できます。
- ユーザーの要求とシステムの仕様が一致している客観的に評価できます。
3. システムの操作性やインターフェースを実際に見せながら、要求との適合性を確認する
- UI(ユーザーインターフェース)やUX(ユーザーエクスペリエンス)を実際に体験して獲得し、改善点を明確にします。
- 操作性の評価を行い、使いやすさや直感的なインターフェースになったものを検証します。
- 利用者の視点からシステムの適合性を確認し、必要に応じて修正を行います。
デモンストレーションの特徴
1. 実機やプロトタイプを使用する
- 完成品だけでなく、開発途中の試作品(プロトタイプ)を用いる場合もあります。
- システムの一部機能のみを対象とすることも可能。
2. ユーザーや顧客に対する説明を兼ねる
- 利害関係者(エンドユーザー、クライアント、プロジェクトマネージャーなど)が直接システムの挙動を確認できます。
- 仕様の認識を統一し、期待値のズレを防ぐ役割も果たす。
3. 事前に準備されたシナリオに基づいて実施
- 実際の使用シーンを想定したテストケースやシナリオを作成し、それに沿ってデモを実施します。
- 予期しない動作が起こらないように、事前準備が重要です。
デモンストレーションの手順
① 計画(Planning)
- デモの目的(どの要件を確認するのか)を明確にします。
- 対象となるシステムや機能を選定し、デモのシナリオを作成します。
- 実施環境(機材、ネットワーク、テストデータなど)を準備します。
② 実施(Execution)
- シナリオに従い、システムを実際に動作させます。
- ユーザーや関係者に対し、動作の意図や期待される結果を説明しながら進めます。
- 要求仕様に対する適合性を確認し、フィードバックを受けます。
③ 評価(Evaluation)
- デモの結果を記録し、要求事項が満たされているか評価します。
- ユーザーのフィードバックを収集し、必要な修正点を特定します。
- 結果をレポートとしてまとめ、次の開発ステップに反映させます。
デモンストレーションの利点
システムの直感的な理解が促進される
- 文書や仕様書では理解しづらい部分も、実際に動作を見せることで、関係者が理解しやすくなります。
ユーザーの要求に対する適合性を確認できる
- ユーザーや顧客が期待する動作を満たしているか、実際に試しながら評価できます。
- 要件の修正や追加が必要かどうかを早期に判断できます。
設計や実装の誤解を解消できる
- 「仕様通りに開発されたが、ユーザーの期待とズレていた」という問題を防ぐため、早い段階で確認を行えます。
デモンストレーションのまとめ
JIS X 0166:2021 におけるデモンストレーション(Demonstration)は、実際にシステムを動作させ、利害関係者が要求事項を満たしているかを確認する検証手法です。特に、ユーザーが直感的にシステムの動作を理解しやすいという利点があり、要求仕様の適合性を早期に評価するのに有効です。
ただし、すべての機能や動作をカバーするものではないため、他の検証手法(テストやインスペクション)と組み合わせることが重要です。
回答エ:分析又はシミュレーション
分析又はシミュレーション
分析(Analysis)またはシミュレーション(Simulation) は、JIS X 0166:2021における検証手法の一つであり、数学的手法やモデルを用いて要求事項の適合性を確認する方法です。
分析又はシミュレーションの目的
JIS X 0166:2021 における分析またはシミュレーションは、システムの仕様や設計が要求事項を満たしている、実際の環境を再現せずに検証する手法です。 特に、理論的な検証や仮想環境を活用した大切に評価し、開発の効率化や安全性の向上を図ることを目的としています。
1. システムの仕様や設計要求事項を満たしている、理論的に検証する
- 数学的な手法やモデルを用いて、システムの動作を論理的に解析します。
- 物理的な試験を行わずに、計算モデルやシミュレーションツールを用いて要求事項への適合性を確認します。
- 設計段階での誤りを早期に発見し、開発の手戻りを防ぎます。
2. 実際のシステムを構築する前に、仮想環境で性能や動作を評価する
- コンピュータシミュレーションを活用し、設計の拡張性を事前に検証します。
- プロトタイプを作成する前に、想定される負荷や動作パターンを評価し、最適な設計を考え出します。
- ソフトウェアの動作シナリオを検証し、実装前に改善点を特定できます。
3. 実験が困難な条件(コストが高い、安全性が重要なシステム)での検証を可能にする
- 宇宙開発、医療機器、自動車の衝突試験など、安全性が重要なシステムの検証をシミュレーションで代替できます。
- コストが高く、現実的に試験が困難な場合(大規模ネットワークの負荷試験など)においても、仮想環境での検証が可能です。
- 災害対策システムや緊急時対応システムなど、実際に試験するのが難しい状況をシミュレーションで再現し、評価できます。
分析とシミュレーションの違い
手法 | 概要 | 主な適用対象 | 特徴 |
分析(Analysis) | 数学的手法や論理的推論に基づいて、仕様の適合性を検証する | アルゴリズム、セキュリティ要件、性能要件 | 公式、モデル、シナリオ分析を活用 |
シミュレーション(Simulation) | システムの動作を仮想環境で模擬し、実際の挙動を評価する | ネットワークシステム、物理シミュレーション、負荷試験 | ソフトウェアツールや数値モデルを使用 |
分析(Analysis)の特徴
数学的・論理的手法を使用
- システムの振る舞いや要件の妥当性を、数式やモデルを使って評価します。
- 例:アルゴリズムの計算量分析、セキュリティの脅威分析、故障率分析 など
物理的なシステムを必要としない
- 設計段階で検証が可能なので、開発の早い段階で問題を発見できます。
代表的な手法
- 数理解析(Mathematical Analysis):公式を使って性能や動作を理論的に検証
- 脅威分析(Threat Analysis):セキュリティリスクを特定し、潜在的な脆弱性を評価
- 故障モード影響解析(FMEA):システムの故障点を特定し、影響を分析
シミュレーション(Simulation)の特徴
仮想環境でシステムの挙動を模擬
- 実際のシステムを構築する前に、ソフトウェアツールで模擬実験を行います。
- 例:ネットワーク負荷試験、モンテカルロシミュレーション、仮想プロトタイピング など
実験が難しい場合に有効
- 物理的な実験が困難な場合(コストが高い、安全性に影響があるシステムなど) に特に有用。
- 例:宇宙開発、医療機器、災害シミュレーション など
代表的な手法
- ネットワークシミュレーション:ネットワークの遅延や輻輳を仮想環境で評価
- 負荷試験シミュレーション:システムが大規模アクセス時に耐えられるかを模擬
- モンテカルロシミュレーション:ランダムな要因を加味して統計的に評価
分析又はシミュレーションの手順
①計画(Planning)
- 何を検証するのかを明確にし、適切な分析またはシミュレーション手法を選択します。
- 必要なデータやモデルを収集します。
② 実施(Execution)
- 分析:数学的・論理的手法を用いて、仕様や要件の適合性を評価します。
- シミュレーション:ソフトウェアやモデルを用いて、システムの挙動を仮想的に再現します。
③ 結果評価(Evaluation)
- 結果を確認し、要求事項との適合性を判断します。
- 問題が見つかった場合は、設計や仕様を見直します。
④ 報告(Reporting)
- 分析・シミュレーション結果をレポートにまとめ、関係者と共有します。
分析又はシミュレーションの利点
物理的なリソースを使わずに検証できる
- 設計段階で問題を発見できるため、手戻りを減らせます。
コスト削減につながる
- 実機を使わずに試験ができるため、開発コストが削減できます。
実験が難しいシナリオも検証可能
- 災害時のシミュレーションや、大規模システムの負荷試験など、現実では再現が難しい状況を仮想的に再現できます。
多様なシナリオを試せる
- 異なる条件を設定し、多様な状況を評価できます。
分析又はシミュレーションのまとめ
JIS X 0166:2021 における分析(Analysis)またはシミュレーション(Simulation) は、数学的手法や仮想環境を用いて、要求事項の適合性を評価する検証手法です。
システムを実際に動作させることなく、性能や動作の妥当性を評価できるため、設計の初期段階で問題を特定し、手戻りを防ぐのに有効です。
また、コストや安全性の問題で実験が困難な場合にも有効なアプローチとして活用されます。
まとめ
今回は、下記について説明しました。
- JIS X 0166:2021のインスペクション
JIS X 0166:2021における検査とは、システムを動作させるのではなく設計書や仕様書を対象とした静的なレビューを行い、文書が要求事項を満たしている体系的に検査する手法であり、開発の初期段階で問題を発見し、品質向上とコスト削減に貢献する重要なプロセスです。
これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!
それでは、次回のブログで!