印刷プレビューです。ブラウザの印刷機能でPDF保存・印刷できます。
基本情報技術者 システム開発技術
全40問 / トルカ(https://toruca.app)
問1. システム開発プロセスにおける「要件定義」工程の目的として最も適切なものはどれか。
- A. 発注者(利用者)の業務上の要求を整理・分析し、開発するシステムに求められる機能や性能を明確化すること
- B. プログラムのソースコードを実際に記述すること
- C. 完成したシステムを本番環境へ展開すること
- D. システムの保守作業を行うこと
正解: A. 発注者(利用者)の業務上の要求を整理・分析し、開発するシステムに求められる機能や性能を明確化すること / 要件定義は、システム開発プロセスの最初期に行われる工程であり、発注者(利用者)の業務上の要求を整理・分析し、開発するシステムに求められる機能要件(実現すべき機能)や非機能要件(性能・セキュリティ等)を明確化する工程である。
問2. 「外部設計(基本設計)」と「内部設計(詳細設計)」の違いとして最も適切なものはどれか。
- A. 外部設計は利用者から見える画面や帳票等の仕様を設計し、内部設計はプログラム内部の処理ロジックやデータ構造を設計する
- B. 外部設計と内部設計に実質的な違いはない
- C. 内部設計は利用者から見える画面のみを設計する工程である
- D. 外部設計はプログラムのソースコードの記述そのものを指す
正解: A. 外部設計は利用者から見える画面や帳票等の仕様を設計し、内部設計はプログラム内部の処理ロジックやデータ構造を設計する / 外部設計(基本設計)は、利用者から見える画面・帳票・入出力インタフェース等、システムの「外側」の仕様を設計する工程であり、内部設計(詳細設計)は、外部設計の内容を実現するための、プログラム内部の処理ロジックやデータ構造・モジュール構成等、システムの「内側」の仕様を設計する工程である。
問3. システム開発における「非機能要件」の例として最も適切なものはどれか。
- A. システムの応答時間や可用性、セキュリティ、拡張性等、機能そのものではなく品質に関する要件
- B. 利用者が入力する項目の一覧
- C. システムが提供する具体的な計算処理の内容
- D. システムのメニュー画面の項目名
正解: A. システムの応答時間や可用性、セキュリティ、拡張性等、機能そのものではなく品質に関する要件 / 非機能要件は、システムが「何をするか」を定める機能要件とは異なり、システムの応答時間・可用性・セキュリティ・拡張性・保守性等、システムの品質に関する要件を指し、機能要件と同様にシステムの成否を左右する重要な要素である。
問4. UML(統一モデリング言語)の「ユースケース図」の目的として最も適切なものはどれか。
- A. 利用者(アクター)とシステムがどのような機能(ユースケース)を通じてやり取りするかを図式化し、システムに求められる機能の全体像を把握する
- B. プログラムの実行時のメモリ配置を表す図
- C. データベースのテーブル定義のみを表す図
- D. ハードウェアの物理的な配線図を表す図
正解: A. 利用者(アクター)とシステムがどのような機能(ユースケース)を通じてやり取りするかを図式化し、システムに求められる機能の全体像を把握する / ユースケース図は、UML(統一モデリング言語)の図の一種であり、利用者(アクター)とシステムがどのような機能(ユースケース)を通じてやり取りするかを図式化することで、システムに求められる機能の全体像を、要件定義段階で利用者と開発者の間で共有するために用いられる。
問5. UMLの「クラス図」の目的として最も適切なものはどれか。
- A. システムを構成するクラスの持つ属性(データ)やメソッド(操作)、およびクラス間の関係を静的に表現する
- B. プログラムの実行時の処理の時間的な流れを表現する(これはシーケンス図の役割)
- C. 利用者とシステムのやり取りの機能一覧のみを表現する(これはユースケース図の役割)
- D. ネットワークの物理的な構成のみを表現する
正解: A. システムを構成するクラスの持つ属性(データ)やメソッド(操作)、およびクラス間の関係を静的に表現する / クラス図は、オブジェクト指向設計において、システムを構成するクラスが持つ属性(データ)やメソッド(操作)、およびクラス間の関連・継承・依存等の関係を静的な構造として表現するUMLの図である。
問6. UMLの「シーケンス図」の目的として最も適切なものはどれか。
- A. 複数のオブジェクト間で、時間の経過に沿ってどのようにメッセージ(呼び出し)がやり取りされるかを表現する
- B. クラスの静的な構造(属性やメソッド)のみを表現する(これはクラス図の役割)
- C. システムのハードウェア構成のみを表現する
- D. データベースのテーブル間の正規化の状態を表現する
正解: A. 複数のオブジェクト間で、時間の経過に沿ってどのようにメッセージ(呼び出し)がやり取りされるかを表現する / シーケンス図は、複数のオブジェクト(またはコンポーネント)間で、時間の経過に沿ってどのようにメッセージ(メソッド呼び出し等)がやり取りされるかという、処理の時間的な流れを表現するUMLの図であり、動的な振る舞いの設計・分析に用いられる。
問7. UMLの「アクティビティ図」の説明として最も適切なものはどれか。
- A. 処理の開始から終了までの一連の作業の流れ(フロー)や、条件分岐・並行処理を表現する図
- B. クラス間の継承関係のみを表現する図
- C. ハードウェアの物理的な配置のみを表現する図
- D. ネットワークのIPアドレス体系のみを表現する図
正解: A. 処理の開始から終了までの一連の作業の流れ(フロー)や、条件分岐・並行処理を表現する図 / アクティビティ図は、業務プロセスやプログラムの処理の流れ(開始から終了までの一連の作業、条件分岐、並行処理等)を、フローチャートに似た形式で表現するUMLの図であり、業務フローの分析や処理ロジックの設計に用いられる。
問8. プログラムのモジュール設計における「モジュール強度」の考え方として最も適切なものはどれか。
- A. 1つのモジュール内の処理が、どれだけ密接に関連し、まとまりのある単一の目的を持っているかを表す尺度
- B. モジュール同士がどれだけ密接に依存し合っているかを表す尺度(これはモジュール結合度の説明)
- C. モジュールの物理的なファイルサイズを表す尺度
- D. モジュールを実行するために必要なハードウェアの性能を表す尺度
正解: A. 1つのモジュール内の処理が、どれだけ密接に関連し、まとまりのある単一の目的を持っているかを表す尺度 / モジュール強度は、1つのモジュール内部の処理が、どれだけ密接に関連し、まとまりのある単一の目的を持っているかを表す尺度であり、モジュール強度が高い(機能的強度に近い)ほど、独立性が高く保守性に優れたモジュールとされる。
問9. プログラムのモジュール設計における「モジュール結合度」の考え方として最も適切なものはどれか。
- A. モジュール同士がどれだけ密接に依存し合っているかを表す尺度で、結合度が低いほど独立性が高く望ましいとされる
- B. 1つのモジュール内部の処理のまとまりの良さを表す尺度(これはモジュール強度の説明)
- C. モジュールの実行速度を表す尺度
- D. モジュールが使用するメモリ容量を表す尺度
正解: A. モジュール同士がどれだけ密接に依存し合っているかを表す尺度で、結合度が低いほど独立性が高く望ましいとされる / モジュール結合度は、モジュール同士がどれだけ密接に依存し合っているか(データの受け渡し方等)を表す尺度であり、結合度が低い(データ結合等)ほど、モジュール間の独立性が高く、一方の変更が他方に影響を与えにくいため、保守性に優れた設計とされる。
問10. 「ウォークスルー」というレビュー技法の説明として最も適切なものはどれか。
- A. 作成者が主導し、複数の関係者で成果物(設計書・プログラム等)を一緒に読み進めながら誤りや問題点を早期に発見する非公式なレビュー技法
- B. レビューを一切行わずに成果物をそのままリリースする手法
- C. 利用者に一切開示せずに秘密裏に開発を進める手法
- D. ハードウェアの物理的な検査のみを行う技法
正解: A. 作成者が主導し、複数の関係者で成果物(設計書・プログラム等)を一緒に読み進めながら誤りや問題点を早期に発見する非公式なレビュー技法 / ウォークスルーは、成果物の作成者が主導し、複数の関係者(開発者等)を集めて成果物(設計書・プログラム等)を一緒に読み進めながら、誤りや問題点を早期に発見することを目的とした、比較的非公式なレビュー技法である。
問11. 「インスペクション」というレビュー技法の特徴として最も適切なものはどれか。
- A. あらかじめ定められた役割(モデレータ等)と手順に従って行われる、公式で厳格なレビュー技法
- B. レビューの手順や役割を一切定めない自由な形式のレビュー技法
- C. レビュー参加者を作成者本人のみに限定する技法
- D. ハードウェアの故障診断のみを行う技法
正解: A. あらかじめ定められた役割(モデレータ等)と手順に従って行われる、公式で厳格なレビュー技法 / インスペクションは、モデレータ(進行役)等のあらかじめ定められた役割分担と、厳格に定められた手順に従って行われる、レビュー技法の中でも最も公式性の高いレビュー技法であり、欠陥の検出に高い効果が期待できる一方、準備や実施にかかるコストも大きい。
問12. 「テスト計画」において決定すべき事項として最も適切なものはどれか。
- A. テストの目的・範囲・実施体制・スケジュール・合格基準等、テスト活動全体の方針
- B. プログラムのソースコードそのものの記述内容
- C. 本番環境のハードウェアの物理的な設置場所
- D. 利用者への請求金額
正解: A. テストの目的・範囲・実施体制・スケジュール・合格基準等、テスト活動全体の方針 / テスト計画は、テスト活動を開始する前に、テストの目的・対象範囲・実施体制・スケジュール・使用するテスト環境・合格基準(終了基準)等、テスト活動全体の方針を定める重要な工程である。
問13. 一般的なソフトウェアテストの実施順序として正しい順に並び替えよ。
- ( )単体テスト
- ( )結合テスト
- ( )システムテスト
- ( )運用テスト
正解の順序: 単体テスト → 結合テスト → システムテスト → 運用テスト / 一般的なソフトウェアテストは、モジュール単位でテストする「単体テスト」、モジュール同士を結合してテストする「結合テスト」、システム全体としての機能・性能を確認する「システムテスト」、実際の業務運用を想定して利用者側が確認する「運用テスト」の順に段階的に実施される(V字モデル)。
問14. 「結合テスト」の目的として最も適切なものはどれか。
- A. 個別に単体テストが完了した複数のモジュールを結合し、モジュール間のインタフェースやデータの受け渡しが正しく機能するかを確認する
- B. 1つのモジュール内部の処理ロジックのみを検証する(これは単体テストの役割)
- C. 利用者が実際の業務データを用いて運用上の問題がないかを確認する(これは運用テストの役割)
- D. 要件定義の内容が正しいかどうかをレビューする
正解: A. 個別に単体テストが完了した複数のモジュールを結合し、モジュール間のインタフェースやデータの受け渡しが正しく機能するかを確認する / 結合テストは、個別に単体テストが完了した複数のモジュールを実際に結合し、モジュール間のインタフェース(データの受け渡し、呼び出し関係等)が設計通りに正しく機能するかを確認するテスト段階である。
問15. ソフトウェア開発の「V字モデル」の考え方として最も適切なものはどれか。
- A. 要件定義や設計等の各開発工程と、それに対応するテスト工程を対にして関連づけて捉える開発モデル
- B. 開発工程とテスト工程を完全に無関係なものとして切り離して考える開発モデル
- C. 全ての開発工程を並行して無計画に進める開発モデル
- D. テスト工程を一切実施しないことを推奨する開発モデル
正解: A. 要件定義や設計等の各開発工程と、それに対応するテスト工程を対にして関連づけて捉える開発モデル / V字モデルは、要件定義に対応するテストとして「システムテスト(受入テスト)」、外部設計に対応するテストとして「システムテスト」、内部設計に対応するテストとして「結合テスト」、プログラミングに対応するテストとして「単体テスト」というように、各開発工程とそれに対応するテスト工程を対にして関連づけて捉える開発モデルであり、V字型の図で表現されることからこの名がある。
問16. オブジェクト指向設計における「デザインパターン」の目的として最も適切なものはどれか。
- A. 頻繁に発生する設計上の問題に対する、再利用可能な典型的な解決策の集合
- B. 特定の1つのプロジェクトでのみ通用する固有の設計手法
- C. プログラムのソースコードを完全に自動生成する仕組み
- D. ハードウェアの物理的な配置を決定するための手法
正解: A. 頻繁に発生する設計上の問題に対する、再利用可能な典型的な解決策の集合 / デザインパターンは、オブジェクト指向設計において頻繁に発生する設計上の問題に対して、先人によって蓄積・体系化された再利用可能な典型的な解決策の集合であり、GoF(Gang of Four)による23のデザインパターンが代表的である。
問17. デザインパターンの一種「Singleton(シングルトン)パターン」の目的として最も適切なものはどれか。
- A. あるクラスのインスタンスがシステム全体でただ1つだけ存在することを保証する
- B. あるクラスのインスタンスを無制限に生成できるようにする
- C. クラス間の継承関係を完全に禁止する
- D. オブジェクトの生成処理を一切行わないようにする
正解: A. あるクラスのインスタンスがシステム全体でただ1つだけ存在することを保証する / Singleton(シングルトン)パターンは、あるクラスのインスタンスがシステム全体でただ1つだけ存在することを保証し、そのインスタンスへのグローバルなアクセス手段を提供するデザインパターンであり、設定情報の管理やログ出力機能等、システム内で共有すべき唯一のオブジェクトを扱う場面で利用される。
問18. デザインパターンの一種「Factory Method(ファクトリメソッド)パターン」の目的として最も適切なものはどれか。
- A. オブジェクトの生成処理をサブクラスに委ねることで、生成するオブジェクトの具体的なクラスを柔軟に切り替えられるようにする
- B. オブジェクトの生成を一切禁止する
- C. 全てのオブジェクトを同一のクラスとして扱う
- D. ハードウェアの製造工程を管理する
正解: A. オブジェクトの生成処理をサブクラスに委ねることで、生成するオブジェクトの具体的なクラスを柔軟に切り替えられるようにする / Factory Method(ファクトリメソッド)パターンは、オブジェクトの生成処理をサブクラス(具体的な生成方法を定義するクラス)に委ねることで、利用側のコードが具体的なクラス名を意識することなく、生成するオブジェクトの種類を柔軟に切り替えられるようにするデザインパターンである。
問19. 要件定義における「プロトタイピング」の説明として最も適切なものはどれか。
- A. システムの試作品(プロトタイプ)を早期に作成し、利用者に実際に触れてもらうことで、要求の認識のずれを早期に解消する手法
- B. システムの本番稼働後に初めて利用者に画面を見せる手法
- C. 要件定義工程を完全に省略してよいという考え方
- D. ハードウェアの試作機を製造する工程のみを指す
正解: A. システムの試作品(プロトタイプ)を早期に作成し、利用者に実際に触れてもらうことで、要求の認識のずれを早期に解消する手法 / プロトタイピングは、システムの試作品(プロトタイプ)を要件定義や設計の早い段階で作成し、実際に利用者に触れて確認してもらうことで、要求の認識のずれ(開発者と利用者の間の理解の相違)を早期に発見・解消するための手法である。
問20. アジャイル開発における「スプリント」の説明として最も適切なものはどれか。
- A. 1〜4週間程度の短い期間を1つの区切りとして、計画・開発・レビューを繰り返し行う開発サイクルの単位
- B. 開発期間全体を1つの区切りとしてまとめて計画する手法
- C. テスト工程のみを指す専門用語
- D. 要件定義を一切行わないことを意味する用語
正解: A. 1〜4週間程度の短い期間を1つの区切りとして、計画・開発・レビューを繰り返し行う開発サイクルの単位 / スプリントは、アジャイル開発手法の一つであるスクラムにおいて、1〜4週間程度の短い期間を1つの区切りとし、その期間内で計画・開発・レビュー・振り返りを繰り返し行う開発サイクルの単位であり、短いサイクルで動くソフトウェアを継続的にリリースしていくことが特徴である。
問21. アジャイル開発における「ふりかえり(レトロスペクティブ)」の目的として最も適切なものはどれか。
- A. スプリントの終了時等に、チームの活動プロセスを振り返り、良かった点・改善すべき点を洗い出し次のスプリントに活かす
- B. 利用者への請求書を作成すること
- C. ハードウェアの物理的な性能を測定すること
- D. プログラムのソースコードを完全に書き直すこと
正解: A. スプリントの終了時等に、チームの活動プロセスを振り返り、良かった点・改善すべき点を洗い出し次のスプリントに活かす / ふりかえり(レトロスペクティブ)は、スプリント等の一区切りの終了時に、チームがそれまでの活動プロセス(進め方、コミュニケーション等)を振り返り、良かった点や改善すべき点を洗い出して、次のスプリント以降の活動に活かすことを目的とした、アジャイル開発における重要な会議体である。
問22. テスト技法における「境界値分析」の説明として最も適切なものはどれか。
- A. 入力値の有効範囲や無効範囲の境界(最小値・最大値付近)に着目してテストケースを設計する技法
- B. 全ての入力値の組み合わせを網羅的にテストする技法
- C. プログラムの内部構造を一切考慮せずテストする技法(これはブラックボックステストの一般的な説明)
- D. テストを一切実施しないことを推奨する技法
正解: A. 入力値の有効範囲や無効範囲の境界(最小値・最大値付近)に着目してテストケースを設計する技法 / 境界値分析は、入力値の有効範囲や無効範囲の「境界」(最小値・最大値、およびその前後の値)に不具合が発生しやすいという経験則に基づき、その境界付近に着目して重点的にテストケースを設計するブラックボックステストの技法である。
問23. テスト技法における「同値分割」の説明として最も適切なものはどれか。
- A. 同じ結果が期待される入力値のグループ(同値クラス)に分割し、各グループから代表的な値を選んでテストすることで、効率的にテストケースを設計する技法
- B. 全ての入力値を1つずつ漏れなくテストする技法
- C. プログラムの内部のコードカバレッジのみを測定する技法
- D. ハードウェアの物理的な耐久性を測定する技法
正解: A. 同じ結果が期待される入力値のグループ(同値クラス)に分割し、各グループから代表的な値を選んでテストすることで、効率的にテストケースを設計する技法 / 同値分割は、同じ結果(正常な処理、または同じ種類のエラー)が期待される入力値のグループ(同値クラス)に分割し、各グループから代表的な値を1つ選んでテストすることで、全ての値を網羅的にテストしなくても効率的に一定の品質を確認できるようにするブラックボックステストの技法である。
問24. テスト技法における「ホワイトボックステスト」の説明として最も適切なものはどれか。
- A. プログラムの内部構造(制御の流れ等)に着目し、全ての命令や分岐が実行されるか等を確認するテスト技法
- B. プログラムの内部構造を一切考慮せず、入力と出力の関係のみに着目するテスト技法(これはブラックボックステストの説明)
- C. テストを実施せずにプログラムをリリースする手法
- D. 利用者に実際に操作してもらう運用テストのみを指す用語
正解: A. プログラムの内部構造(制御の流れ等)に着目し、全ての命令や分岐が実行されるか等を確認するテスト技法 / ホワイトボックステストは、プログラムの内部構造(ソースコードの制御の流れ、分岐条件等)に着目し、命令網羅(C0)・分岐網羅(C1)・条件網羅(C2)等の網羅基準に基づいて、全ての命令や分岐が実行されるかを確認するテスト技法である。
問25. ソフトウェア開発の規模見積り技法「ファンクションポイント法」の考え方として最も適切なものはどれか。
- A. ユーザーに提供する機能(入出力・照会・内部ファイル等)の数や複雑さを基に、ソフトウェアの規模を定量的に見積もる手法
- B. 開発者の主観的な勘のみに基づいて見積もる手法
- C. プログラムのソースコードの行数のみを唯一の基準として見積もる手法
- D. ハードウェアの価格のみを基準に見積もる手法
正解: A. ユーザーに提供する機能(入出力・照会・内部ファイル等)の数や複雑さを基に、ソフトウェアの規模を定量的に見積もる手法 / ファンクションポイント法は、ソフトウェアがユーザーに提供する機能(外部入力・外部出力・外部照会・内部論理ファイル・外部インタフェースファイル等)の数や複雑さを基に、機能の規模を点数化して定量的に見積もる手法であり、プログラミング言語に依存しない規模見積りが可能という特徴がある。
問26. 「リファクタリング」の説明として最も適切なものはどれか。
- A. プログラムの外部から見た動作(振る舞い)を変えずに、内部のコード構造を整理・改善すること
- B. プログラムの機能そのものを新たに追加すること
- C. プログラムの動作を意図的に変更してバグを埋め込むこと
- D. プログラムのソースコードを完全に削除すること
正解: A. プログラムの外部から見た動作(振る舞い)を変えずに、内部のコード構造を整理・改善すること / リファクタリングは、プログラムの外部から見た動作(振る舞い)を変えることなく、内部のコード構造(可読性、重複の排除等)を整理・改善する作業であり、将来の保守性や拡張性の向上を目的として行われる。
問27. 「レガシーシステム」の説明として最も適切なものはどれか。
- A. 老朽化・複雑化・ブラックボックス化が進んだ、既存の古いシステムで、保守や改修が困難になっているもの
- B. 最新の技術のみを用いて新規に開発されたシステム
- C. テストを一切実施せずにリリースされたシステムのみを指す用語
- D. クラウド環境上でのみ稼働するシステムを指す用語
正解: A. 老朽化・複雑化・ブラックボックス化が進んだ、既存の古いシステムで、保守や改修が困難になっているもの / レガシーシステムは、老朽化・複雑化が進み、開発当時の担当者が退職する等によりドキュメントも不十分で内部構造がブラックボックス化してしまった既存の古いシステムを指し、保守・改修が困難でシステム刷新(マイグレーション)の障壁となっている「2025年の崖」等の課題としても知られる。
問28. システム移行方式のうち「一斉移行方式」の特徴として最も適切なものはどれか。
- A. 旧システムから新システムへ、ある一時点で全ての業務を一斉に切り替える方式
- B. 旧システムと新システムを恒久的に並行して稼働させ続ける方式
- C. 一部の業務のみを段階的に時間をかけて切り替えていく方式(これは段階移行方式の説明)
- D. システムの移行自体を一切行わないことを意味する
正解: A. 旧システムから新システムへ、ある一時点で全ての業務を一斉に切り替える方式 / 一斉移行方式は、旧システムから新システムへ、ある一時点(例:月初や年度初め)で全ての業務を一斉に切り替える移行方式であり、移行期間は短く済むが、切替時のリスクが大きいという特徴がある。段階的にリスクを分散する「段階移行方式」や、一定期間両システムを並行稼働させる「並行運用方式」との比較で理解することが重要である。
問29. オブジェクト指向設計の原則「単一責任の原則(SRP)」の説明として最も適切なものはどれか。
- A. 1つのクラスは、1つの責任(変更理由)のみを持つべきであるという設計原則
- B. 1つのクラスはできるだけ多くの責任を持つべきであるという設計原則
- C. クラスは継承を一切利用してはならないという設計原則
- D. クラスは必ず1つのメソッドのみを持つべきであるという設計原則
正解: A. 1つのクラスは、1つの責任(変更理由)のみを持つべきであるという設計原則 / 単一責任の原則(Single Responsibility Principle)は、オブジェクト指向設計におけるSOLID原則の一つであり、1つのクラスは1つの責任(そのクラスが変更される理由)のみを持つべきであるという原則である。これにより、クラスの独立性が高まり、変更の影響範囲を限定しやすくなる。
問30. 「ペアプログラミング」の説明として最も適切なものはどれか。
- A. 2人のプログラマが1台のコンピュータを使い、1人がコードを書き(ドライバー)、もう1人がリアルタイムでレビューする(ナビゲーター)役割分担で協働してプログラミングを行う手法
- B. 2つの異なるプログラムを完全に独立して同時に開発する手法
- C. レビューを一切行わずにプログラミングを進める手法
- D. 1人のプログラマが2つの異なるプロジェクトを同時に担当する手法
正解: A. 2人のプログラマが1台のコンピュータを使い、1人がコードを書き(ドライバー)、もう1人がリアルタイムでレビューする(ナビゲーター)役割分担で協働してプログラミングを行う手法 / ペアプログラミングは、2人のプログラマが1台のコンピュータを使い、実際にコードを書く「ドライバー」と、リアルタイムでその内容をレビューし助言する「ナビゲーター」という役割を分担しながら協働してプログラミングを行う、エクストリームプログラミング(XP)等で採用される開発手法である。
問31. 「テスト駆動開発(TDD)」の基本的な進め方として最も適切なものはどれか。
- A. 実装コードを書く前に、まず失敗するテストコードを書き、そのテストが通るように最小限の実装を行い、その後リファクタリングするというサイクルを繰り返す
- B. 全ての実装が完了した後に初めてテストコードを書く
- C. テストコードを一切書かずに実装のみを進める
- D. テストコードのみを書き、実装コードは一切書かない
正解: A. 実装コードを書く前に、まず失敗するテストコードを書き、そのテストが通るように最小限の実装を行い、その後リファクタリングするというサイクルを繰り返す / テスト駆動開発(TDD: Test-Driven Development)は、まず失敗する(Red)テストコードを書き、そのテストが通る(Green)ように必要最小限の実装を行い、その後コードを整理する(Refactor)という「Red-Green-Refactor」のサイクルを短い単位で繰り返しながら開発を進める手法である。
問32. 「CI(継続的インテグレーション)」の説明として最も適切なものはどれか。
- A. 開発者がコードの変更を頻繁に共有リポジトリへ統合し、その都度自動的にビルドとテストを実行することで問題を早期に発見する手法
- B. コードの変更を年に一度だけまとめて統合する手法
- C. 自動テストを一切実施しないことを推奨する手法
- D. ハードウェアの物理的な組み立てを自動化する手法
正解: A. 開発者がコードの変更を頻繁に共有リポジトリへ統合し、その都度自動的にビルドとテストを実行することで問題を早期に発見する手法 / CI(Continuous Integration:継続的インテグレーション)は、開発者がコードの変更を頻繁に共有リポジトリへ統合(マージ)し、その都度自動的にビルドと自動テストを実行することで、複数人での開発における統合時の問題やバグを早期に発見・修正する開発手法・仕組みである。
問33. バージョン管理システムにおける「ブランチ」の説明として最も適切なものはどれか。
- A. メインの開発ライン(履歴)から分岐させ、独立して機能開発や修正作業を行うための履歴の枝分かれ
- B. ソースコードを完全に削除する操作
- C. 複数の開発者のコードを絶対に統合できないようにする仕組み
- D. プログラムの実行速度を測定する機能
正解: A. メインの開発ライン(履歴)から分岐させ、独立して機能開発や修正作業を行うための履歴の枝分かれ / ブランチは、バージョン管理システム(Git等)において、メインの開発ライン(履歴)から分岐させ、他の変更に影響を与えることなく独立して機能開発やバグ修正等の作業を行うための履歴の枝分かれであり、作業完了後は「マージ」によって元のラインに統合される。
問34. オブジェクト指向設計における「開放閉鎖の原則(OCP)」の説明として最も適切なものはどれか。
- A. ソフトウェアの構成要素は、拡張に対しては開いており、既存コードの修正に対しては閉じているべきであるという原則
- B. ソフトウェアは一切拡張してはならないという原則
- C. ソフトウェアは常に既存コードを直接修正して機能追加すべきであるという原則
- D. クラスは絶対に継承してはならないという原則
正解: A. ソフトウェアの構成要素は、拡張に対しては開いており、既存コードの修正に対しては閉じているべきであるという原則 / 開放閉鎖の原則(Open-Closed Principle)は、SOLID原則の一つであり、ソフトウェアの構成要素(クラス等)は、新しい機能の追加といった「拡張に対しては開いて」おり、既存の動作するコードの「修正に対しては閉じて」いるべきであるという原則である。継承やインタフェースの活用によって、既存コードを変更せずに機能を拡張できる設計を目指す。
問35. 「受入テスト」の目的として最も適切なものはどれか。
- A. 発注者(利用者)が、開発されたシステムが自社の業務要件を満たしているかを最終的に確認するテスト
- B. 開発者のみがプログラムの内部構造を検証するテスト(これは単体テストに近い)
- C. テストを一切実施せずにシステムを検収する手続き
- D. ハードウェアの物理的な耐久性のみを検証するテスト
正解: A. 発注者(利用者)が、開発されたシステムが自社の業務要件を満たしているかを最終的に確認するテスト / 受入テストは、システム開発の最終段階において、発注者(利用者)自身が、開発されたシステムが当初の業務要件(要件定義の内容)を満たしているかを確認し、検収の可否を判断するために実施するテストである。
問36. アジャイル開発における「プロダクトバックログ」の説明として最も適切なものはどれか。
- A. 開発すべき機能や要求事項を、優先順位をつけて一覧化したリスト
- B. 既に発生した不具合(バグ)のみを記録するリスト
- C. ハードウェアの在庫を管理するリスト
- D. 従業員の勤怠を記録するリスト
正解: A. 開発すべき機能や要求事項を、優先順位をつけて一覧化したリスト / プロダクトバックログは、アジャイル開発(スクラム)において、開発すべき機能や要求事項(ユーザーストーリー等)を、ビジネス価値等に基づく優先順位をつけて一覧化したリストであり、各スプリントで実施する作業はこのプロダクトバックログから選択される。
問37. 「類推見積法」の説明として最も適切なものはどれか。
- A. 過去の類似したプロジェクトの実績データを基準に、新規プロジェクトの規模やコストを見積もる手法
- B. 統計的な計算式のみに基づき、経験や実績を一切考慮せず見積もる手法
- C. ソースコードの行数を一切考慮しない見積り手法
- D. 見積りを実施せずに開発を開始する手法
正解: A. 過去の類似したプロジェクトの実績データを基準に、新規プロジェクトの規模やコストを見積もる手法 / 類推見積法は、過去に実施した類似したプロジェクトの実績データ(工数、コスト等)を基準として、新規プロジェクトの規模やコストを見積もる手法であり、詳細な情報が少ない初期段階でも比較的簡便に見積りを行える一方、類似プロジェクトの選定の妥当性に見積り精度が左右される。
問38. 「DFD(データフローダイアグラム)」の説明として最も適切なものはどれか。
- A. システム内におけるデータの流れと、データに対する処理(プロセス)の関係を図式化したもの
- B. クラス間の継承関係のみを表現する図(これはUMLのクラス図)
- C. ハードウェアの物理的な配置のみを表現する図
- D. プロジェクトのスケジュールのみを表現する図(これはガントチャート)
正解: A. システム内におけるデータの流れと、データに対する処理(プロセス)の関係を図式化したもの / DFD(Data Flow Diagram:データフローダイアグラム)は、システム内におけるデータの発生源・処理(プロセス)・データストア(データの保存場所)・データの流れを図式化した、構造化分析における代表的な設計技法の一つである。
問39. ソフトウェアの品質特性のうち「使用性(ユーザビリティ)」の説明として最も適切なものはどれか。
- A. 利用者がシステムを容易に理解し、習得し、効率的かつ快適に操作できる度合い
- B. システムが指定された時間内で正しく処理を完了できる度合い(これは効率性・時間効率性に近い)
- C. システムのソースコードの行数の多さ
- D. システムを構成するハードウェアの価格
正解: A. 利用者がシステムを容易に理解し、習得し、効率的かつ快適に操作できる度合い / 使用性(ユーザビリティ)は、ソフトウェアの品質特性(ISO/IEC 25010等で定義される品質モデル)の一つであり、利用者がシステムの機能を容易に理解し、習得し、効率的かつ快適に操作できる度合いを表す。使いやすい画面設計や分かりやすい操作フローの実現等がこの品質特性の向上に寄与する。
問40. 基本情報技術者試験のシステム開発技術分野で求められる能力として最も適切なものはどれか。
- A. 要件定義から設計・実装・テストに至る開発プロセス全体の考え方や、UML・デザインパターン・アジャイル開発等の技法を理解し、実際のシステム開発プロジェクトに活かせる能力
- B. 特定の開発ツールの操作方法のみを暗記していればよいという能力
- C. テスト工程は一切不要であるという考え方
- D. 要件定義の内容は開発途中で一切変更してはならないという考え方
正解: A. 要件定義から設計・実装・テストに至る開発プロセス全体の考え方や、UML・デザインパターン・アジャイル開発等の技法を理解し、実際のシステム開発プロジェクトに活かせる能力 / 基本情報技術者試験のシステム開発技術分野で求められるのは、要件定義・設計・実装・テストという開発プロセス全体の流れや考え方、UML等のモデリング技法、デザインパターンによる設計の工夫、アジャイル開発の進め方等を体系的に理解し、実際のシステム開発プロジェクトの現場で活かせる実践的な能力である。