忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【システム開発技術】「何のために作るか」をブレイクダウン!「ゴール分析」|情報処理問題1000本ノック

システム開発を成功させるためには、クライアントの「要望の本質」を見抜く必要があります。ブレのないシステム設計を行うために、開発の最終目的(ゴール)から逆算して要求を具体化していく「ゴール分析」を攻略しましょう。

1. 【 問題 】:システム開発(要件定義・要求分析技法)

【 問題 】 システム開発の上流工程における要求分析技法に関する記述です。まずシステムが達成すべき最終的な目的や理想の「状態(ゴール)」を最上位に定義し、それを実現するために必要な中間目標や具体的機能へと、階層的(ツリー状)に分解・詳細化していくことで、開発のブレをなくし要求を網羅的に洗い出す技法を何と呼ぶでしょうか?

(ア) ステークホルダー分析
(イ) ゴール分析(ゴール指向要求分析)
(ウ) エンタープライズ分析
(エ) シナリオ分析

2. 正解:

正解: (イ) ゴール分析

3. 解説:「目的」から逆算して「手段」をあぶり出す

ゴール分析(ゴールしこうようきゅうぶんせき)は、要求分析における強力なフレームワークです。
最初に「売上を20%向上させる」「顧客の待ち時間を半分にする」といった、システムが達成すべき最上位のゴール(状態)を定義します。そこから、「そのためにはECサイトを構築する」「そのためには決済手段を増やす」というように、下位の具体的な「要求」や「機能」へと詳細化(ツリー状に分解)していきます。これにより、「なぜこの機能を作るのか」という理由が明確になり、無駄な機能の開発を防ぐことができます。

【間違いやすい要求分析・要件定義技法の特徴】 ← ココが試験のポイント!

技法名分析・アプローチの中心となる視点主な目的
(ア) ステークホルダー分析 プロジェクトに関わる「利害関係者(人や組織)」を洗い出し、影響力を分析する。 関係者の不満や要望の衝突を防ぐ
(イ) ゴール分析 システムが達成すべき「理想の状態・目的」を定め、詳細化する。 ブレのない本質的な要求の洗い出し
(ウ) エンタープライズ分析 企業全体のビジネスモデルや組織構造、業務プロセスを広く鳥瞰的に分析する。 全社的なIT戦略との整合性をとる
(エ) シナリオ分析 ユーザーが実際にシステムを使う「具体的な場面(ストーリー)」を想定して分析する。 利用シーンにおける隠れた要求の発見

1. 理解のコツ: 「旅行の計画」に例えてみましょう。
・いきなり「レンタカーを予約する」「水着を買う」という細かい行動(機能)から決めようとすると、「あれ?そもそも山に行くんだっけ?海に行くんだっけ?」と迷子になってしまいます。
・そこでゴール分析の登場です。まず最上位に「沖縄のビーチで最高のバカンスを過ごす(達成すべき状態・ゴール)」と大きく掲げます。 ・次に「そのためにはどうする?」と問いかけ、「海で泳ぐ」「リゾートホテルに泊まる」と詳細化します。さらに「海で泳ぐためには?」と下ろしていき、最終的に「水着を準備する」という具体的なタスク(システムの機能要件)が導き出されます。この「目的のツリー構造」を作ることで、絶対にブレない旅行計画(システム設計)が完成します。

2. 試験対策の視点: 要件定義やビジネスアナリシス(BABOKなど)の分野における定番の用語問題です。問題文の中に「システムが達成すべき状態(あるいは目的・ゴール)を定義」「それを詳細化していく(または階層的に分解する)」という記述があれば、ストレートにゴール分析を選択してください。
試験の引っかけパターンとして、選択肢に並ぶ「(ア)ステークホルダー分析(人・関係者の分析)」や「(エ)シナリオ分析(具体的な利用シーンの追跡)」が混ざって出題されますが、それぞれ「人」「状況」「目的(ゴール)」のどれを主軸に置いた解説文になっているかを読み解くことで、確実に仲間外れを見分けることができるようになります。


4. まとめ

「システムが目指すべき最終的な目的や理想の状態(ゴール)をトップに置き、それを実現するための中間目標や具体的な機能要求へと段階的に詳細化していく要求分析手法」。これがゴール分析です。システム開発の「そもそも何のために作るのか」をブレさせないための超重要アプローチとして、しっかり言葉の意味を記憶しておきましょう!


PR

【システム開発技術】異なる2つの世界を繋ぐ架け橋!「O/Rマッピング」|情報処理問題1000本ノック

プログラム側の「オブジェクト」と、データベース側の「表」。設計思想が全く異なるこの2つのデータを、綺麗に自動翻訳して紐付けるシステム開発の必須技術「O/Rマッピング」を攻略しましょう。

1. 【 問題 】:システム開発・データベース(データマッピング技術)

【 問題 】 オブジェクト指向プログラミング言語を用いて開発したアプリケーションにおいて、プログラム内の「オブジェクト」が持つデータ構造を、リレーショナルデータベース(RDB)の「表(テーブル)」のレコード(行)へと相互に格納・変換するために行う、データ構造の紐付け(マッピング)技術を何と呼ぶでしょうか?

(ア) O/Rマッピング(Object-Relational Mapping)
(イ) リレーショナルマッピング
(ウ) オブジェクトマッピング
(エ) データインテグレーションマッピング

2. 正解:

正解: (ア) O/Rマッピング

3. 解説:「オブジェクトの1個」を「テーブルの1行」へ自動翻訳する

O/Rマッピング(Object-Relational Mapping:オーアールマッピング)は、オブジェクト指向の「O(Object)」と、リレーショナルデータベースの「R(Relational)」を繋ぐ技術です。
プログラミングの世界では、データは「クラス」という設計図から生まれた「オブジェクト(インスタンス)」として扱われますが、RDBの世界ではデータは「表の行(レコード)」として管理されます。この両者のデータの形状をルール化し、プログラム側でオブジェクトを操作するだけで、裏側で自動的にRDBのデータが保存・更新・抽出されるようにする仕組み(フレームワーク)を指します。

【O/Rマッピングによるデータの対応関係】 ← ココが試験のポイント!

オブジェクト指向(プログラム)側の概念左右の対応リレーショナルデータベース(RDB)側の概念
クラス(データの設計図・型) ← 対応 → テーブル(表の構造)
オブジェクト(具体的なデータの実体) ← 対応 → レコード(表の中の1行のデータ)
プロパティ/属性(オブジェクトが持つ変数) ← 対応 → カラム/フィールド(表の列)

1. 理解のコツ: 「英語圏の人と日本語圏の人の共同作業」に例えてみましょう。
・プログラムくんは「英語(オブジェクト言語)」しか話せず、データベースくんは「日本語(SQL文やテーブル構造)」しか理解できません。プログラムくんがデータを保存したいとき、いちいち自分で日本語に翻訳して「INSERT INTO...」と命令文を書くのは非常に骨が折れます。
・そこで、優秀な自動翻訳機であるO/Rマッピングを間に挟みます。これがあると、プログラムくんが自分の言葉で「このオブジェクト(データ)を保存して!」と頼むだけで、O/Rマッピングが勝手にRDBに最適な「表の行データ(SQL)」へと自動変換して格納してくれます。この思想のズレを解消する仕組みがO/Rマッピングです。

2. 試験対策の視点: システム設計やアプリケーション開発技術の分野において、データの永続化(保存)に関する問題として頻出します。問題文の中に「オブジェクト指向(プログラム)」「RDB(表/リレーショナルデータベース)への格納」「マッピング(紐付け)」というキーワードの組み合わせがあれば、迷わずO/Rマッピングを選択してください。
また、もう一歩踏み込んだ応用知識として、オブジェクト指向とRDBの間にある「構造や概念の根本的なズレ・不一致」のことを「インピーダンスミスマッチ」と呼び、O/Rマッピングはこのインピーダンスミスマッチを解決するための手段である、という文脈もよく出題されます。この用語もセットで覚えておくことで、より深い設問にも対応できるようになります。


4. まとめ

「オブジェクト指向言語で扱う『オブジェクト』と、リレーショナルデータベース(RDB)が扱う『表(テーブル)』を相互に自動変換して対応付ける技術」。これがO/Rマッピングです。現代のシステム開発において生産性を高めるための必須技術として、その役割と対応関係(オブジェクト=レコード)をしっかりと記憶しておきましょう!


【システム開発技術】厳格なレビューの絶対的司会者!「モデレーター」|情報処理問題1000本ノック

プログラムや設計書のバグを早期発見するための「インスペクション」。メンバー全員が決められた「役割(ロール)」を演じることで、感情論を排除して効率的に欠陥を見つけ出す、このレビュー技法の中心人物「モデレーター」を攻略しましょう。

1. 【 問題 】:ソフトウェア品質管理(インスペクションの役割)

【 問題 】 レビュー技法の一つである「インスペクション」において、レビュー会議の計画を立て、当日の進行・司会を務めるとともに、指摘された欠陥の記録やその後の修正確認(フォローアップ)までを統括する、中立的な立場でのまとめ役を何と呼ぶでしょうか?

(ア) レビューア(インスペクタ)
(イ) レビューイ(作成者/オーサー)
(ウ) チェッカー
(エ) モデレーター

2. 正解:

正解: (エ) モデレーター

3. 解説:インスペクションの成否を握る「中立の司令塔」

モデレーター(Moderator)は、インスペクションという厳格なレビューチームにおける「議長・司会進行役」です。
インスペクションでは、成果物の作成者が自分で司会をしたり、ただ集まって雑談ベースで確認したりすることは許されません。モデレーターという訓練を受けた専門の進行役が、会議が時間通りに進むようコントロールし、作成者と検証者の間で感情的な対立が起きないよう中立を保ちながら、バグの摘出をリードします。

【インスペクションにおける4つの主要な役割(ロール)】 ← ココが試験のポイント!

役割名(ロール)担当する具体的な業務・任務
(エ) モデレーター インスペクション全体の「責任者・司会進行役」。計画、進行、フォローアップを行う。
作成者(オーサー/レビューイ) 設計書やプログラムを「作った本人」。指摘された欠陥を後日修正する。
レビューア(インスペクタ) 成果物を厳しくチェックして「欠陥を指摘する人」。専門知識を持つメンバーが選ばれる。
書記(レコーダー) 会議中に発見された欠陥や指摘事項を「記録(ログ)」に記録する係。

1. 理解のコツ: 「裁判やディベートの議長」を想像してください。
・成果物を作った本人(作成者)と、バグを見つける人(レビューア)をそのまま部屋に閉じ込めると、「なんでこんなバグがあるんだ」「いや、これは仕様だ」と、つい感情的なケンカに発展してしまいがちです。
・そこで必要になるのが、裁判官やディベートの仲裁人のような役割を果たすモデレーターです。モデレーターは成果物の良し悪しを自分でジャッジするのではなく、あくまで「ルール通りに、淡々とバグだけをリストアップする会議」になるよう場をコントロールします。会議が終わった後に、作成者が本当にバグを直したかどうかを最後にチェックするのもモデレーターの仕事です。この『最初から最後まで会議をスムーズに回すまとめ役』がモデレーターです。

2. 試験対策の視点: 基本情報技術者や応用情報技術者の午前試験において、プロジェクトマネジメントや開発プロセスの「品質管理」分野で超頻出の設問です。問題文の中に「インスペクションの進行役」「まとめ役」「計画やフォローアップを行う」という記述があれば、文字の罠(インスペクションだからインスペクタ、という勘違い)に惑わされず、一発でモデレーターを選択してください。
また、他の選択肢に並ぶ「作成者(オーサー)」「レビューア」「書記(レコーダー)」のそれぞれの役割の定義も、4択問題の他の選択肢として非常によく使い回されます。インスペクションの最大の特徴は『全員の役割がカチッと決まっていること』ですので、この表にまとめられた4人の役割分担を完璧に頭に整理しておくことが、確実な得点力に直結します。


4. まとめ

「インスペクションの計画立案、当日の司会進行、そして欠陥の修正確認までを一気通貫で担当する中立的なまとめ役」。これがモデレーターです。厳格な品質マネジメントを行うための必須職種として、その役割の内容をしっかりと記憶しておきましょう!


【システム開発技術】「機能の流れ」か「データの構造」か!「ER図」の役割|情報処理問題1000本ノック

システム開発の上流工程(要件定義や基本設計)では、実現したい「機能(業務の流れ)」と、管理したい「データ(構造)」をそれぞれ適切な図を使って整理します。この2つの視点の本質的な違いを攻略しましょう。

1. 【 問題 】:ソフトウェア開発(要件定義・各種モデルの用途)

【 問題 】 システム開発において、システムが提供すべき機能や業務の処理プロセス(流れ)を表現するモデルとして、ふさわしくないものはどれでしょうか?

(ア) ユースケース図
(イ) アクティビティ図
(ウ) ER図
(エ) DFD(データフローダイアグラム)

2. 正解:

正解: (ウ) ER図

3. 解説:「機能(どう動くか)」と「データ(何があるか)」の分離

システム設計図は、大きく分けてシステムが実行する処理を追う「機能(プロセス)軸の図」と、システムが記憶する情報の形を追う「データ軸の図」に分かれます。
選択肢のER図(Entity-Relationship Diagram)は、データベースに保存する「実体(エンティティ)」と、それらの「関連(リレーションシップ)」を表現する図です。これは純粋にデータの構造を表すためのものであり、システムが「どのような手順で計算を行うか」「どんな機能を持っているか」というプロセスの流れは一切表現しないため、正解(ふさわしくないもの)となります。

【機能モデル(処理)とデータモデル(構造)の比較】 ← ココが試験のポイント!

図の名称主な表現内容モデルの分類
(ア) ユースケース図 システムが「誰(ユーザー)に」「どんな機能」を提供するのかを表す図。 機能・要求モデル
(イ) アクティビティ図 業務や処理が「どのような手順(フロー)」で進むのかを表す図。 機能・プロセスモデル
(ウ) ER図 顧客や商品などの「データ(実体)同士の関係性」を表す図。 データモデル
(エ) DFD データが「どこから入力され、どう加工(処理)されてどこへ行くか」を表す図。 機能・データフローモデル

1. 理解のコツ: 「レストランの開店準備」に例えてみましょう。
機能を表すモデルは、お店の「オペレーションマニュアル(業務手順書)」です。「お客様が来店したら席へ案内する(ユースケース)」「注文を取って厨房へ伝える(DFD)」「料理を作って提供する(アクティビティ)」といった、一連の動きやサービスの仕組み(機能)を描いています。
・一方でER図(データモデル)は、お店の「在庫管理表やメニューのマスターデータ」そのものです。「商品には商品ID、名前、価格がある」「1つの注文には複数の商品が含まれる」といった、お店に存在する『情報の枠組み(構造)』だけを整理したものです。ここには「どういう順番で料理を運ぶか」といった機能や時間の流れは一切出てきません。この役割の違いを意識すると、選択肢を瞬時に見分けることができます。

2. 試験対策の視点: ITパスポート、基本情報技術者、応用情報技術者の午前試験で定番の「仲間外れ探し」の問題です。問題文の「機能を表すモデルとしてふさわしくないもの」、あるいは「プロセスの記述に用いられないもの」という表現を見たら、データ設計の王様であるER図を迷わず選んでください。
また、構造を整理するために、構造化分析手法の代表であるDFD(データフローダイアグラム)と、オブジェクト指向設計(UML)の代表であるアクティビティ図・ユースケース図は、アプローチこそ違えど「システムの機能や処理の流れを表現する仲間」として一つのグループにまとめて覚えておくことが、試験の引っ掛け問題に騙されないための強固な知識となります。


4. まとめ

「ユースケース図やアクティビティ図、DFDがシステムの機能や処理の手順(プロセス)を可視化するのに対し、ER図はシステムが扱うデータの構造や関連性(静的な情報モデル)のみを表現する」。これが設計図ごとの用途の違いです。上流工程で使われる各図の目的を明確に区別し、確実な得点源にしていきましょう!


【システム開発技術】システムの「動き」を可視化する!「動的モデルとシーケンス図」|情報処理問題1000本ノック

オブジェクト指向によるシステム設計(UMLなど)では、システムを「構造」と「振る舞い」の2つの側面から表現します。時間とともに変化するシステム内部のやり取りを描く「動的モデル」の本質を攻略しましょう。

1. 【 問題 】:ソフトウェア開発(システムのモデル化)

【 問題 】 システムの構造や挙動を表現する設計図(モデル)のうち、時間経過に伴うオブジェクト間のメッセージのやり取りや、状態の変化といったシステムの「動的な振る舞い」を表現する「動的モデル」に分類されるものは、次のうちどれでしょうか?

(ア) クラス図
(イ) シーケンス図
(ウ) ER図
(エ) ブロック図

2. 正解:

正解: (イ) シーケンス図

3. 解説:時間が流れる中で「どう動くか」を描く図

動的モデル(どうてきモデル)とは、システムの実行時に、データやオブジェクトが時間の経過とともにどのように変化・連携するか(振る舞い)を表した図のことです。
その代表格であるシーケンス図は、上から下に向かって時間が流れる軸を持ち、登場人物(オブジェクト)同士が「どんな順番でメッセージを送り合って処理を進めるか」を時系列で表現するため、明確に動的モデルへと分類されます。

【試験に出る「静的モデル」と「動的モデル」の2大分類】 ← ココが試験のポイント!

分類図が表すシステムの特徴代表的な図の例(UMLなど)
静的モデル(構造) プログラムが動いていなくても存在する、システム固有的・普遍的な「形や関係性」。 (ア) クラス図(UML)
(ウ) ER図(データベース設計)
(エ) ブロック図(ハード構成など)
動的モデル(振る舞い) システム実行時に、時間が流れる中で変化する「データの動きや状態変化」。 (イ) シーケンス図(時系列のやり取り)
・コミュニケーション図
・アクティビティ図(業務フロー等)
・状態遷移図(ステートマシン図)

1. 理解のコツ: 「映画の制作」に例えてみましょう。
静的モデルは、映画の「キャラクターの相関図や、舞台のセットの設計図」です。カメラが回っていなくても(システムが起動していなくても)、登場人物の設定や関係性は固定されています。これが(ア)クラス図や(ウ)ER図の世界です。
・一方で動的モデルは、映画の「台本(スクリプト)や絵コンテ」です。「まずAがBに声をかける」「それを受けてBが怒る」といった、時間が進む中での具体的な『セリフのやり取りや動きの流れ』が描かれています。この台本そのものの役割を果たすのがシーケンス図であり、システムが実際に動いたときの挙動をシミュレーションするために不可欠な図となります。

2. 試験対策の視点: 基本情報技術者や応用情報技術者の午前試験において、「UMLの各図の分類や用途」を問う問題として超大定番です。問題文の中に「動的モデル」「動的な振る舞い」「時系列のやり取り」というキーワードがあれば、反射的にシーケンス図を選べるようにしてください。
また、ひっかけとして選択肢に並ぶ「クラス図」や「ER図」は、静的モデル(構造を表す図)の代表選手として最もよく使われます。さらに、もう一つの重要な動的モデルとして、画面の切り替わりやボタンを押したときの機械の挙動を表す「状態遷移図(ステートマシン図)」や、業務の手順を表す「アクティビティ図」も同じグループ(動的モデル)であるため、これらを一まとめにして「構造(静的)の図か、流れ(動的)の図か」を区別できるよう整理しておくことが、確実な得点力に繋がります。


4. まとめ

「システムが実際に動作したときの、時間経過に伴うオブジェクト同士のメッセージ送信や処理の流れを可視化する動的モデル」。その筆頭がシーケンス図です。静的モデルであるクラス図やER図との設計思想の違いをはっきりと頭に叩き込み、得点源にしていきましょう!


【システム開発技術】複雑な条件の組み合わせを網羅する!「ディシジョンテーブル・テスト」|情報処理問題1000本ノック

「条件AがYesで、条件BがNoで、条件CがYesのときの処理は……?」と、条件が複雑に絡み合うシステムのテストを頭の中だけで考えると、必ず考慮漏れ(バグ)が発生します。論理的な組み合わせを1枚の表に叩き込んで整理する「ディシジョンテーブル・テスト」を攻略しましょう。

1. 【 問題 】:テストデザイン技法(ディシジョンテーブル・テスト)

【 問題 】 ソフトウェアテストにおいて、システムに与えられる複数の「テスト条件(入力や状態)」と、それらの組み合わせによって引き起こされる「動作(出力や結果)」の関係を2次元の表形式(マトリクス)で整理し、テストケースを設計する技法を何と呼ぶでしょうか?

① ディシジョンテーブル・テスト(決定表テスト)
② 同値分割法(イクイバレンス パーティショニング)
③ 境界値分析(バウンダリー バリュー アナリシス)
④ 状態遷移テスト(ステート トランジション テスト)

2. 正解:

正解: ① ディシジョンテーブル・テスト(決定表テスト)

3. 解説:論理の迷子を防ぐ「条件と結果のクロス表」

システムの仕様が「◯◯かつ××、または△△のときはエラー、ただし――」のように複雑な場合、テストケースの抜け漏れが起きやすくなります。ディシジョンテーブル・テストは、これらを「条件」と「動作」に分解し、すべての組み合わせ(Y: Yes / N: No)を列ごとに網羅する設計手法です。1つの列(ルール)がそのまま1つのテストケースになります。


【ディシジョンテーブルの基本構成例】 ← ココが試験のポイント!

要素(構成パーツ)ルール1ルール2ルール3ルール4
条件部 条件1:会員であるか? Y Y N N
条件2:クーポンがあるか? Y N Y N
動作部 動作1:20%割引を適用 X
動作2:通常料金で計算 X X X

※ 表の「Y/N」の組み合わせの列(ルール1〜4)が, そのまま漏れのないテストケースになります。
※ ②、③、④は組み合わせではなく、単一のデータ範囲やシステムの「状態の変化」に着目する技法です。

1. 理解のコツ: 「遊園地の割引サービス」を想像してください。
・「WEB会員」かつ「雨の日クーポン持参」なら【半額】
・「WEB会員」だけど「クーポンなし」なら【10%オフ】
・「非会員」だけど「クーポンあり」なら【5%オフ】
・「どちらもなし」なら【通常料金】
このようなルールを、条件(会員か?クーポンか?)と動作(半額か?10%か?)に分けて格子状に並べたのがディシジョンテーブル(決定表)です。これを作れば、「あ、非会員でクーポンがあるパターンのテストを忘れてた!」というミスが100%防げます。複雑な条件を『見える化』して、機械的にテストケースを弾き出すのが最大のメリットです。
2. 試験対策の視点: 午前試験では、「組み合わせテストに用いる表はどれか」という直球問題でよく出ます。選択肢の中に「ディシジョンテーブル」または「決定表」があれば即答できます。 また、午後試験(アルゴリズムやソフトウェア開発分野)では、実際に仕様書からこの表を完成させたり、表の「不可能な組み合わせ(例:12歳未満かつ車の免許保有など)」を省いてテストケースを削減(圧縮)させる実践的な問題が出題されます。「条件部」「動作部」「ルール」という用語と、表の読み方を確実にマスターしておきましょう。


4. まとめ

「複数の条件とそれに応じた動作の関係をマトリクス(表)形式で整理し、条件の組み合わせに抜け漏れがないようにテストケースを設計する技法」。これがディシジョンテーブル・テストです。ロジックが複雑なビジネスロジックの検証に欠かせない必須テクニックとして、しっかり覚えておきましょう!


【開発技術】両方の視点からバグを狙い撃つ!「グレーボックステスト」|情報処理問題1000本ノック

ソフトウェアテストには、中身を見ない「黒」と、中身をすべて見る「白」があります。しかし、実際の現場では、その両方の知識を賢く組み合わせた「グレー(灰色)」なテスト手法が極めて有効です。今回は「グレーボックステスト」の概念を攻略しましょう。

1. 【 問題 】:ソフトウェアテスト手法(グレーボックステスト)

【 問題 】 ソフトウェアのテスト手法のうち、「グレーボックステスト(Gray-box Testing)」の説明として、最も適切なものはどれでしょうか?

① プログラムの内部構造やソースコードの論理的な記述には一切関知せず、システムの「入力」と「出力」だけに着目して、仕様書通りの機能が動作するかを検証する。
② プログラムの内部構造(ソースコードの制御構造やルート)が正しく作られているかに着目し、すべての命令や分岐が少なくとも1回は実行されるようにテストケースを作成して検証する。
③ 基本的には外部仕様に基づいて機能の検証(ブラックボックステスト)を行いながらも、プログラムの内部構造やデータベース設計などの知識も参考にし、よりバグが混入しやすい箇所を狙って効率的にテストケースを作成して検証する。
④ 開発者以外の第三者(ユーザーや専門のテスター)が、あらかじめ作成されたテスト仕様書を使わずに、自身の経験や直感に基づいてシステムを自由に操作し、予期せぬ不具合を発見する。

2. 正解:

正解: ③ 基本的には外部仕様に基づいて機能の検証(ブラックボックステスト)を行いながらも、プログラムの内部構造やデータベース設計などの知識も参考にし、よりバグが混入しやすい箇所を狙って効率的にテストケースを作成して検証する。

3. 解説:「外側の機能」を「内側の知識」で攻める

ソフトウェアテストの基本は、プログラムの中身を見ないブラックボックステスト(選択肢①)と、ソースコードの網羅性を重視するホワイトボックステスト(選択肢②)に分かれます。しかし、これらを完全に切り離すのではなく、ユーザー視点での機能テストをしつつも「このシステムは裏側でこういうデータベース連携をしているから、ここでこんな値を入力したらエラーが起きやすいはずだ」と内部構造の知識を味方につけてテストを行うのがグレーボックステストです。

【ブラック・ホワイト・グレーの3大テスト比較】 ← ココが試験のポイント!

テスト手法中身(ソースコードなど)の知識テストケースを作る基準主な実施フェーズ
ブラックボックス 全く見ない(不要) 外部仕様書、要求定義書 システムテスト、受入テスト
ホワイトボックス 完全にオープン(必須) ソースコードの論理構造(分岐等) 単体テスト(ユニットテスト)
グレーボックス 限定的に参考にする 外部仕様 + 内部構造への理解 結合テスト、システムテスト

※ ④は「アドホックテスト(探索的テスト)」の説明です。

1. 理解のコツ: 「家電の修理・点検」に例えてみましょう。
・①のブラックボックスは、「説明書を読みながら、ボタンを順番に押して画面が正しく動くかだけをチェックする」一般ユーザーのようなテストです。
・②のホワイトボックスは、「製品のフタを開けて、基盤の回路図を見ながら電流が隅々まで流れているかをチェックする」設計者のようなテストです。
・これらに対して③のグレーボックスは、フタを閉じた状態でボタン操作(ブラックボックス)をするのですが、テストする人は回路の構造を知っているため、「この製品は、ボタンAとボタンBをほぼ同時に連打すると、内部の処理チップに負荷がかかってフリーズしやすい仕様だったな。よし、そこを重点的にいじってみよう」と、内部知識(ホワイトボックス)を活かして意地悪なテストを行います。これがグレーボックスの賢いアプローチです。
2. 試験対策の視点: 試験問題で「グレーボックステスト」が出題される場合、問題文には必ず「仕様(ブラックボックス)」と「内部構造・コード設計(ホワイトボックス)」のハイブリッド(混合)であることを示す表現が登場します。「中身を知っているテスターが、外側から効率的に攻める手法」というニュアンスを掴んでおけば、選択肢を瞬時に見分けることができます。特に結合テストの段階でWebアプリケーションのセキュリティ脆弱性(SQLインジェクションなど)をテストする手法としても非常によく引き合いに出されます。


4. まとめ

「ブラックボックステストのようにシステムの機能や仕様をベースにテストを行いながらも、ホワイトボックステストのようにプログラムの内部構造やデータの流れに関する知識を参考にすることで、より効率的かつ的確にテストケースを設計する手法」。これがグレーボックステストです。テストのコストを抑えつつ、品質をグッと引き上げる実践的なアプローチとしてしっかり覚えておきましょう!


【システム構成】トラブルを未然に予測・回避!「アクティブセーフ」|情報処理問題1000本ノック

ITシステムやサーバー、インフラの信頼性を高める安全設計思想。障害が「起きてから対処する」のではなく、システム側から「起こさせない」ための能動的なアプローチを攻略しましょう。

1. 【 問題 】:システムの信頼性・安全設計思想

【 問題 】 システム構成における安全設計(セーフティ設計)において、機器の故障やシステム障害などの危険が発生した後にその影響を最小限に抑えるのではなく、各種センサーによる監視やログの自動分析、動的な制御などを駆使して、障害や事故などの危険自体を「未然に防ぐ」という能動的な安全の考え方はどれでしょうか?

① パッシブセーフ(受動的安全)
② アクティブセーフ(能動的安全)
③ フェールソフト(縮退運転)
④ フールプルーフ(誤操作防止)

2. 正解:

正解: ② アクティブセーフ(能動的安全 / 予防安全)

3. 解説:障害を「起こさせない」ためのITインフラ設計

システムの安全性を高めるアプローチには、大きく分けて「アクティブセーフ(未然予防)」「パッシブセーフ(事後緩和)」の2つがあります。

【システム構成におけるアクティブとパッシブの違い】

■ ② アクティブセーフ(Active Safe)
思想:システム自身が「このままだと危険だ」と事前に察知し、自発的にトラブルを回避します。 ← ココが問題の正解!
ITでの具体例:ハードディスクの劣化の兆候(S.M.A.R.T.情報)を検知して完全に壊れる前に自動で予備へ切り替えるシステム、サーバー室の室温上昇を検知して空調を強める冷却制御、アクセス急増時にサーバーがパンクする前に自動で枠を広げるオートスケーリングなど。

■ ① パッシブセーフ(Passive Safe)
思想:トラブルや破壊が「起きてしまった後」に、致命的な被害(データの全損や人命の危機)にならないよう物理的に守る設計です。
ITでの具体例:停電した後に電力を供給し続けるUPS(無停電電源装置)、サーバーがクラッシュした後にデータを復旧するためのバックアップ、落雷の衝撃から機材を守る避雷器(サージプロテクタ)など。
[ 選択肢のひっかけポイント(すべてシステム構成の超重要キーワード) ]
★ ③ フェールソフト:システムの一部が故障した際、すべてをダウンさせるのではなく、機能を一部制限(縮退運転)してでもサービスを継続する設計です。
★ ④ フールプルーフ:利用者がシステムで「ありえない誤操作」や「間違ったデータ入力」をしても、システム側がそれを弾いて、危険な動作をさせない設計です。

1. 理解のコツ: 「サーバーの熱対策」に例えてみましょう。熱でサーバーが完全に焼き切れてしまった後に、消火装置が作動して周りへの引火を防ぐのがパッシブ(事後被害軽減)です。一方、サーバーが熱くなり始めた段階で、ファンを全開に回したり、別のサーバーへ処理を逃がしたりして、サーバーが壊れる危険自体を未然に防ぐのがアクティブ(事前予防)です。
2. 試験対策の視点: 「危険自体を未然に防ぐ」「能動的な安全」という記述があれば「アクティブセーフ」が一択です。基本情報や応用情報の「システム構成要素(信頼性設計)」の分野では、フェールセーフ、フェールソフト、フールプルーフ、パッシブセーフといった各安全思想の「目的の違い」が記述・選択を問わず非常によく狙われます。


4. まとめ

「システムやインフラが致命的な状態に陥る前に、能動的にリスクを検知・回避して、事故そのものを発生させない仕組み」。これがアクティブセーフです。AIによるデータ分析やIoTセンサーが進化した現代のシステム構成においては、障害の『予兆(兆候)』を捉えて自動で先手を打つ、極めてインテリジェントな信頼性設計として重要視されています。


【開発管理】顧客の頭の中をのぞき込む!要件定義の第一歩「要求獲得」|情報処理問題1000本ノック

要件定義プロセスはいくつかの段階に分かれています。「言われたことをただ書く」のではなく、顧客と対話してニーズを引き出す最初のフェーズを攻略しましょう。

1. 【 問題 】:要求定義プロセスの段階

【 問題 】 要求定義のプロセスのうち、現状の業務分析やステークホルダーへのインタビュー、ミーティングなどを通じて、利用者がシステムに求めている潜在的な要望やビジネスニーズを引き出し、理解していく段階に当てはまるものはどれでしょうか?

(ア)要求獲得
(イ)要求分析
(ウ)要求仕様化
(エ)要求の検証

2. 正解:

正解: (ア)要求獲得(要求エライシテーション)

3. 解説:まずは「引き出す」ことからすべてが始まる

要求定義(要求工学)のプロセスは、一般的に「①獲得 ➡️ ②分析 ➡️ ③仕様化 ➡️ ④検証」というサイクルを回します。今回の問題は、まさにそのスタート地点である「①獲得」の特徴を突いたものです。

【試験に出る!要求定義4つのプロセスの違い】

■ (ア)要求獲得(Elicitation)
内容:インタビュー、ワークショップ、現状業務の観察などを通じて、顧客の要望やビジネスの目的を「引き出して理解する」段階です。 ← ココが問題の正解!

■ (イ)要求分析(Analysis)
内容:獲得したバラバラな要求を整理し、矛盾を解決したり、実現可能性(コストや技術)を考慮して「ふるいにかける・優先順位をつける」段階です。

■ (ウ)要求仕様化(Specification)
内容:合意した要求を、開発者も読めるように「要件定義書」などの「ドキュメント(文書)の形に落とし込む」段階です。

■ (エ)要求の検証(Validation)
内容:出来上がった要件定義書を顧客と一緒にレビューし、「本当にこの内容で、あなたが欲しかったシステムが作れますか?」と最終確認・承認をもらう段階です。

1. 理解のコツ: 「お医者さんの診察」に例えてみましょう。患者さんに「今日はどうされました?どこが痛みますか?(インタビュー)」と聞いて、現行の症状をじっくり聞き出すのが要求獲得です。その情報をもとに「原因は何か、治療可能か」を考えるのが分析、カルテに書くのが仕様化、最後に「この治療方針でいいですね?」と同意をとるのが検証、という流れです。
2. 試験対策の視点: 「現状業務やインタビューから」「利用者の要求を理解していく(引き出す)」という文脈が来たら「要求獲得」が一択です。カタカナ表記で「要求エライシテーション」と出題されることもあるため、両方の名前をセットで覚えておくのが得点アップの秘訣です。


4. まとめ

「ステークホルダーとのコミュニケーションを通じて、システムの根底にある要望を正しく引き出すフェーズ」。これが要求獲得です。この段階で顧客の真のニーズを理解できていないと、その後の分析や仕様化がすべて『砂上の楼閣』になってしまうため、非常に丁寧なヒアリングスキルと業務理解が求められる重要なプロセスです。


【開発技術】単語を並べて構造を作る!「構文解析」|情報処理問題1000本ノック

切り分けられた単語(トークン)が、プログラミング言語のルール(文法)に則っているかをチェックし、プログラムの構造を解析する重要な工程を攻略しましょう。

1. 問題:プログラムの構造解析

【 問題 】 コンパイラの処理において、字句解析によって分割されたトークンの並びが、その言語の文法規則に適合しているかを判定し、「構文木(抽象構文木)」と呼ばれるツリー構造を生成する工程を何と呼ぶでしょうか?

ア、字句解析   イ、構文解析   ウ、意味解析   エ、最適化

2. 正解:言語処理プロセスに関する正解

正解: イ、構文解析(こうぶんかいせき)

※英語では「Syntax Analysis」や「Parsing(パース)」と呼びます。

3. 解説:文法チェックと「木」の構築

字句解析が「単語の切り出し」だったのに対し、構文解析は「文章の組み立て」を担当します。

【図解:構文解析の役割】

■ 処理内容
・トークンの並びが正しいか(例:カッコが閉じているか、演算子の位置は正しいか)を確認します。
・プログラムの論理的な階層構造を「構文木」として表現します。

■ 構文木のイメージ (a + b * c)
   +
  / \
 a   *
    / \
   b   c
(掛け算を先に計算するような木構造になります)
[ 関連用語:バッカス・ナウア記法 (BNF) ]
★ 構文解析の基準となる「文法の定義」を記述するための記法です。情報処理試験では、このBNF記法に基づいて正誤を判定させる問題もセットでよく登場します。

1. 理解のコツ: 英語の授業で行う「S(主語) V(動詞) O(目的語)」の判別と同じです。「単語は合っているか?」を見るのが字句解析、「文法(並び順)は合っているか?」を見るのが構文解析です。ここでミスが見つかると「Syntax Error(構文エラー)」が発生します。
2. 試験対策の視点: 「トークンから構文木を作る」「文法規則に適合するか」というフレーズがあれば構文解析です。また、次のステップである「意味解析(型チェックなど)」との境界線を意識しておきましょう。


4. まとめ

「トークンから構文木を作る」。これが構文解析です。バラバラだった単語に構造を与え、コンピュータが計算できる「論理の形」へと整える、コンパイラの知能とも言える工程です。



        
  • 1
  • 2