仮の宿 学習室

基本情報技術者 FUNDAMENTAL IT ENGINEER

開発技術

講義 3 本・確認問題 30 問 | 本試験では「科目A マネジメント」(7問)の一部 | 最終更新 2026-09-24

この章で学ぶこと
目次
  1. システム開発技術と設計技法
  2. テストと品質の確認
  3. 開発モデルと開発管理
  4. 確認問題(30問)
  5. 演習ツール

1. システム開発技術と設計技法

要件定義から実装までの流れとV字モデル、モジュール分割の良し悪しを測るものさし、UMLとオブジェクト指向の考え方が分かります。

システム開発は、いきなりプログラムを書き始めるのではなく、決まった順序で少しずつ具体化していきます。まずシステム全体で何を実現するかを決めるシステム要件定義、次にその機能をハードウェア・ソフトウェア・手作業のどれに割り当てるかを決めるシステム方式設計、続いてソフトウェアが何をするかを決めるソフトウェア要件定義、ソフトウェアの内部をどんなモジュールに分けてどうつなぐかを決めるソフトウェア方式設計、各モジュールの中身を決めるソフトウェア詳細設計、そして実装(プログラミング)へと進みます。「何をするか」を決めてから「どう作るか」を決める、全体から部分へ詳細化する、という二つの向きを守るのが基本です。

この流れを図にすると、左側に設計の工程が下りていき、右側にテストの工程が上がっていくV字の形になります。これがV字モデルで、左右で向かい合う工程どうしが対応関係を持ちます。ソフトウェア詳細設計に対応するのが単体テスト、ソフトウェア方式設計に対応するのが結合テスト、システム方式設計に対応するのがシステムテスト、システム要件定義(要件定義)に対応するのが運用テスト(受入テスト)です。つまり各テストは「対応する設計工程で決めたことが実現できているか」を確かめる場であり、テスト設計は対応する設計工程の成果物を根拠に作ります。この対応を意識すると、テストで見つかった不具合がどの工程の誤りかを追いやすくなります。

要件定義では、要件を機能要件と非機能要件に分けて整理します。機能要件は「受注を登録できる」「請求書を出力する」のように、システムが提供する処理そのものです。非機能要件は「検索結果を3秒以内に表示する」「24時間365日稼働する」「通信を暗号化する」のように、機能をどの程度の性能・可用性・セキュリティ・運用性・拡張性で実現するかを定めたものです。非機能要件は後から変えると全体の作り直しになりやすいため、早い段階で数値を伴った形で決めておくことが重要です。

設計技法のうち、処理の手順を中心に考えるのが構造化設計です。データの流れに着目してシステムを表すデータフロー図(DFD)では、プロセス(円または角丸四角)、データフロー(矢印)、データストア(2本の平行線)、外部実体(四角形)の四つの記号を使い、制御の流れではなくデータの流れだけを描きます。イベントによって振る舞いが変わる対象は状態遷移図で、状態と、状態を移らせるイベントの組合せとして表します。プログラム全体は、機能のまとまりごとにモジュールへ分割します。

モジュール分割の良し悪しは、モジュールの独立性で測ります。ものさしは二つあり、一つはモジュール同士のつながりの弱さを見る結合度で、弱いほど(データ結合に近いほど)よいとされます。弱い順にデータ結合、スタンプ結合、制御結合、外部結合、共通結合、内容結合です。もう一つはモジュールの中身のまとまりの良さを見るモジュール強度(凝集度)で、強いほど(機能的強度に近いほど)よいとされます。弱い順に暗号的強度、論理的強度、時間的強度、手順的強度、連絡的強度、情報的強度、機能的強度です。「結合度は弱く、強度は強く」が合言葉で、この二つの順序は試験で頻出です。

現在の主流であるオブジェクト指向では、データ(属性)とそれを操作する手続(メソッド)を一つにまとめたクラスを単位に考えます。クラスから実際に生成した実体がインスタンスです。内部のデータを外から直接触れないようにして、決められたメソッド経由でだけ操作させるのがカプセル化、上位クラスの属性や操作を下位クラスが受け継いで差分だけ書けるようにするのが継承(汎化・特化の関係)、同じメッセージでも受け手のクラスによって異なる動作をするのが多相性(ポリモーフィズム)です。全体と部分の関係を表すのが集約です。よく現れる設計の型をまとめたものがデザインパターンです。

オブジェクト指向の設計を図で表す共通の記法がUMLです。クラスの属性・操作と、汎化や集約といったクラス間の静的な関係を表すクラス図、利用者(アクター)とシステムの機能の関係を表すユースケース図、オブジェクト間のメッセージのやり取りを時間順に表すシーケンス図、処理の流れや分岐・並行処理を表すアクティビティ図、一つのオブジェクトの状態遷移を表す状態マシン図などがあり、表したいものによって使い分けます。

利用者が実際に触れる部分の設計も開発技術の一部です。ユーザビリティは、指定された利用者が特定の状況で目的を達成する際の有効さ・効率・満足度の度合いを指し、見た目の良し悪しだけを言うものではありません。UI設計では、操作の一貫性を保つ、押せるものと押せないものを見た目で区別する、誤操作を取り消せるようにする、エラーメッセージで次にすべきことを示す、といった配慮が求められます。年齢や障害の有無にかかわらず使えるようにする考え方がアクセシビリティです。

V字モデルの対応・UML図の使い分け・結合度と強度の順序(まとめ)
区分項目内容
V字モデルシステム要件定義運用テスト(受入テスト)で検証する
V字モデルシステム方式設計システムテストで検証する
V字モデルソフトウェア要件定義ソフトウェア適格性確認テストで検証する
V字モデルソフトウェア方式設計結合テストで検証する
V字モデルソフトウェア詳細設計単体テストで検証する
UMLクラス図クラスの属性・操作と、汎化・集約・関連といったクラス間の静的な関係を表す
UMLユースケース図利用者(アクター)とシステムが提供する機能の関係を表す
UMLシーケンス図オブジェクト間のメッセージのやり取りを、上から下への時間の流れに沿って表す
UMLアクティビティ図処理の流れ、分岐と合流、並行処理を表す。業務フローの記述にも使う
UML状態マシン図一つのオブジェクトが取る状態と、イベントによる状態の遷移を表す
結合度(弱いほどよい)1 データ結合(最も弱い=最良)必要なデータ項目だけを引数として受け渡す
結合度(弱いほどよい)2 スタンプ結合レコードなどのデータ構造をまとめて引数で渡し、その一部だけを使う
結合度(弱いほどよい)3 制御結合処理の切替えを指示する制御用の引数を渡し、相手の動きを決める
結合度(弱いほどよい)4 外部結合必要なモジュールだけが共有する、外部宣言された単一のデータを参照する
結合度(弱いほどよい)5 共通結合共通のグローバル領域(共通域)のデータを互いに参照・更新する
結合度(弱いほどよい)6 内容結合(最も強い=最悪)相手モジュールの内部を直接参照したり、途中へ飛び込んだりする
モジュール強度(強いほどよい)1 暗号的強度(最も弱い=最悪)互いに関係のない処理を、単に寄せ集めただけ
モジュール強度(強いほどよい)2 論理的強度関連する複数の機能をまとめ、引数で指定された一つだけを実行する
モジュール強度(強いほどよい)3 時間的強度初期化処理など、実行される時点が同じ処理をまとめた
モジュール強度(強いほどよい)4 手順的強度決まった順序で実行する処理をまとめた(扱うデータの関連は問わない)
モジュール強度(強いほどよい)5 連絡的強度順序に加えて、同じデータを扱うという関連のある処理をまとめた
モジュール強度(強いほどよい)6 情報的強度同じデータ構造を扱う複数の機能を、入口を分けて一つにまとめた
モジュール強度(強いほどよい)7 機能的強度(最も強い=最良)一つの明確な機能だけを実行し、余計な処理を含まない
データ結合と制御結合の違い(同じ引数渡しでも意味が違う)
/* データ結合の例:必要な値だけを引数で渡している */○実数型: 税込金額(整数型: 本体価格, 実数型: 税率)  return 本体価格 × (1 + 税率) /* 制御結合の例:引数で相手の処理内容を切り替えている */○整数型: 計算(整数型: a, 整数型: b, 整数型: 種別)  if (種別 = 1)    return a + b  else    return a - b  endif

用語

V字モデル
左に設計工程、右にテスト工程を並べてV字に描き、向かい合う工程を対応付けた開発の進め方。詳細設計と単体テスト、方式設計と結合テストのように、各テストが何を検証するかを明確にする。
機能要件
システムが提供する処理そのものを定めた要件。受注を登録する、請求書を出力するなど「何をするか」を表す。
非機能要件
機能をどの程度の品質で実現するかを定めた要件。応答時間などの性能、稼働率などの可用性、セキュリティ、運用・保守性、拡張性が含まれ、数値で決めておくことが望ましい。
DFD
データフロー図。プロセス、データフロー、データストア、外部実体の四つの記号でデータの流れを表す図。制御の流れや実行順序は表さない。
結合度
モジュール同士のつながりの強さ。弱いほど独立性が高く保守しやすい。弱い順にデータ結合、スタンプ結合、制御結合、外部結合、共通結合、内容結合。
データ結合
必要なデータ項目だけを引数として受け渡す結合。結合度が最も弱く、最も望ましい形とされる。
共通結合
複数のモジュールが共通のグローバル領域に置いたデータを互いに参照・更新する結合。どこで値が変わるか追いにくく、結合度が強い。
内容結合
相手モジュールの内部を直接参照したり途中に飛び込んだりする結合。結合度が最も強く、避けるべき形とされる。
モジュール強度
凝集度ともいう。モジュール内のまとまりの良さ。強い順に機能的強度、情報的強度、連絡的強度、手順的強度、時間的強度、論理的強度、暗号的強度。
機能的強度
一つの明確な機能だけを実行するモジュールの状態。モジュール強度の中で最も強く、最も望ましい。
カプセル化
データとそれを操作する手続を一つにまとめ、内部の構造を外から隠すこと。外部は決められたメソッドを通じてだけ操作できるため、内部を変更しても影響が広がらない。
継承
上位クラスの属性や操作を下位クラスが受け継ぐ仕組み。下位クラスは差分だけを定義すればよい。クラス間の汎化・特化の関係を実装したもの。
多相性
ポリモーフィズム。同じメッセージを送っても、受け取るオブジェクトのクラスによって異なる動作をする性質。呼び出す側は相手のクラスを意識しなくてよい。
集約
複数のオブジェクトを部分としてまとめ、全体と部分の関係を表すもの。汎化(〜は〜の一種である)とは区別する。
ユーザビリティ
指定された利用者が特定の状況で目的を達成する際の、有効さ・効率・満足度の度合い。見た目の美しさだけを指す言葉ではない。

例題

例題:例題:単体テストで見つかった不具合の原因を探すとき、まず疑うべき設計工程の成果物はどれか。
答えと考え方 ソフトウェア詳細設計の成果物。V字モデルでは単体テストがソフトウェア詳細設計と向かい合っており、単体テストはモジュール内部の処理が詳細設計どおりに作られているかを確かめる場だから。モジュール同士のつなぎ目の不具合なら結合テストとソフトウェア方式設計、業務全体の流れの不具合なら運用テストと要件定義、というように対応関係をたどって原因工程を絞り込む。
例題:例題:あるモジュールが、呼び出し元と共通のグローバル変数WORKを介して値をやり取りしている。結合度は何か。また改善するとどうなるか。
/* 改善前:共通域を使う(共通結合)*/○処理A()  WORK ← 100  処理B() /* 改善後:引数で渡す(データ結合)*/○処理A()  処理B(100)
答えと考え方 共通結合。共通域のデータを互いに参照・更新しているためで、どのモジュールがいつ値を変えたのか追えず、片方を直すと他方が壊れやすい。WORKをやめて、必要なデータ項目だけを引数と戻り値で受け渡すように直せばデータ結合になり、結合度が最も弱い(独立性が最も高い)状態になる。

出典・根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術

2. テストと品質の確認

ホワイトボックステストの網羅基準の違い、同値分割と境界値分析、テスト工程とレビューの進め方が分かります。

テストは、作ったものが仕様どおりに動くことを確かめる作業です。大きく二つの立場があります。プログラムの内部構造を見て、どの経路を通るかを根拠にテストケースを作るのがホワイトボックステスト、内部構造は見ずに仕様上の入力と出力の関係だけからテストケースを作るのがブラックボックステストです。前者は主に単体テストで、後者は主に結合テスト以降で使われます。両方を組み合わせないと、通っていない経路や、仕様に対する考え違いを見落とします。

ホワイトボックステストでは、どこまで網羅すれば十分と考えるかの基準(網羅基準、カバレッジ)を決めます。命令網羅は、すべての命令を少なくとも1回実行すればよいという最も弱い基準です。判定条件網羅(分岐網羅)は、それぞれの判定の結果が真と偽の両方になるようにします。条件網羅は、判定の中に複数の条件があるとき、個々の条件がそれぞれ真と偽の両方になるようにします。判定条件/条件網羅は、判定条件網羅と条件網羅の両方を同時に満たします。複数条件網羅は、判定に含まれる個々の条件の真偽の全組合せを実行する最も強い基準です。

ここで注意したいのは、条件網羅を満たしても判定条件網羅を満たすとは限らない、という点です。たとえば if (A or B) に対して(A=真, B=偽)と(A=偽, B=真)の2件を実行すると、AもBも真と偽の両方を取るので条件網羅は満たしますが、判定の結果はどちらも真のままなので判定条件網羅は満たしません。逆に if (A and B) に対して(真,真)と(偽,真)の2件では、判定は真と偽の両方になりますが、Bが真のままなので条件網羅を満たしません。一方、複数条件網羅を満たせば、個々の条件も判定全体も必ず真と偽の両方を取るので、条件網羅と判定条件網羅の両方を含みます。条件の数がn個なら組合せは2のn乗通りで、条件が増えると急に件数が増えるのが弱点です。

ブラックボックステストの代表がまず同値分割です。同じ結果になる入力の範囲を同値クラスに分け、各クラスから代表値を一つずつ選びます。「1以上100以下なら有効」という仕様なら、有効クラス(1〜100)、無効クラス(1未満)、無効クラス(100より大きい)の三つに分かれ、たとえば50、-5、150の3個を選びます。次に境界値分析は、誤りは境目で起きやすいという経験に基づき、同値クラスの境目とその隣の値を選びます。同じ仕様なら0、1、100、101の4個です。判定式の不等号や等号の付け間違いは、まさにこの4個で見つかります。入力と出力の論理関係を図にして決定表に直し、組合せのテストケースを作るのが原因結果グラフです。

テストは工程としても段階を踏みます。単体テストはモジュール一つずつの内部を確認し、結合テストはモジュールをつないだときのインタフェースを確認します。結合の進め方には、上位から順につないでいくトップダウンテストと、下位から順につないでいくボトムアップテストがあります。トップダウンでは、まだできていない下位モジュールの代わりに決められた値を返すスタブを用意し、ボトムアップでは、上位モジュールの代わりにテスト対象を呼び出すドライバを用意します。その後、システム全体を確認するシステムテスト、利用者が実際の業務の流れで確認する運用テスト(受入テスト)へと進みます。

そのほか、修正した箇所以外に悪影響が出ていないかを、過去のテストケースを再実行して確認するのが回帰テスト(リグレッションテスト)です。想定した応答時間やスループットが出るかを見るのが性能テスト、想定を超える負荷をかけて限界や挙動を見るのが負荷テスト(ストレステスト)です。テストの進み具合と品質は、テスト項目の消化件数と検出バグ件数を時間の経過に沿って描いたバグ管理図(信頼度成長曲線)で管理します。検出バグの累積件数はふつうS字を描き、終盤で増加が鈍って水平に近づくと収束したと判断します。

プログラムを動かさずに人の目や道具で確認する方法もあります。関係者が集まって成果物の誤りを見つけるのがレビューで、作成者が主催して非公式に行うウォークスルー、モデレーター(進行役)が主催し役割と手順を定めて公式に行うインスペクション、参加者が持ち回りで司会や説明を担当するラウンドロビンなどがあります。ソースコードを実行せずに構文や規約違反、危険な記述を機械的に調べるのが静的解析です。加えて、回帰テストのように何度も繰り返すテストはツールで自動化しておくと、修正のたびに安心して確認できます。

ホワイトボックスの網羅基準・ブラックボックスの技法・レビュー技法の比較
区分名称内容(満たすべきこと)件数の目安・注意点
ホワイトボックス命令網羅すべての命令を少なくとも1回実行する最も弱い。else側に命令がなければ判定を偽にしなくても満たせる
ホワイトボックス判定条件網羅(分岐網羅)それぞれの判定の結果が真と偽の両方になるif (A and B) … else … なら最小2件。個々の条件の真偽は問わない
ホワイトボックス条件網羅個々の条件がそれぞれ真と偽の両方の値を取る最小2件。判定全体が真と偽の両方になるとは限らない
ホワイトボックス判定条件/条件網羅判定条件網羅と条件網羅を同時に満たす条件2個なら(真,真)と(偽,偽)の2件で満たせる
ホワイトボックス複数条件網羅個々の条件の真偽の全組合せを実行する条件がn個なら2のn乗件。条件2個で4件、3個で8件。最も強い
ブラックボックス同値分割同じ結果になる入力の範囲に分け、各クラスから代表値を1個選ぶ1〜100が有効なら、有効1クラス+無効2クラスで計3個
ブラックボックス境界値分析同値クラスの境目と、その隣の値を選ぶ1〜100が有効なら0・1・100・101の4個
ブラックボックス原因結果グラフ入力と出力の論理関係を図にし、決定表に変換して組合せを作る条件の組合せ漏れを防ぐ。件数は組合せ数による
レビューウォークスルー作成者が主催し、参加者と成果物を追いながら非公式に誤りを指摘する管理者は原則参加しない。評価の場にしない
レビューインスペクションモデレーター(進行役)が主催し、役割と手順を定めて公式に行う事前準備・記録・是正確認まで手順化する
レビューラウンドロビン参加者が持ち回りで司会や説明を担当する全員が均等に関与できる
同じ2件でも、選び方で満たす網羅基準が変わる
○整数型: 判定(整数型: a, 整数型: b)  整数型: x  if (a > 0 and b > 0)    x ← 1  else    x ← 2  endif  return x /* (a,b)=(1,1) と (-1,-1) の2件 : 判定条件網羅も条件網羅も満たす *//* (a,b)=(1,1) と (-1,1)  の2件 : 判定条件網羅のみ(bが真のまま)*//* (a,b)=(1,-1) と (-1,1) の2件 : 条件網羅のみ(判定はどちらも偽)*//* 上記4組合せすべてを実行して初めて複数条件網羅(4件)*/

用語

ホワイトボックステスト
プログラムの内部構造(分岐や経路)を見て、どこを通るかを根拠にテストケースを作る技法。網羅基準を決めて、どこまで確認したかを測る。主に単体テストで使う。
ブラックボックステスト
内部構造を見ずに、仕様上の入力と出力の関係だけからテストケースを作る技法。同値分割、境界値分析、原因結果グラフが代表例。
命令網羅
すべての命令を少なくとも1回実行することを求める、最も弱い網羅基準。else側に命令がなければ判定を偽にしなくても満たせてしまう。
判定条件網羅
分岐網羅ともいう。それぞれの判定の結果が真と偽の両方になるようテストケースを作る基準。個々の条件の真偽までは問わない。
条件網羅
判定に含まれる個々の条件が、それぞれ真と偽の両方の値を取るようにする基準。判定全体の結果が真と偽の両方になるとは限らない点に注意する。
判定条件/条件網羅
判定条件網羅と条件網羅の両方を同時に満たす基準。個々の条件も判定全体も真と偽の両方を取る。
複数条件網羅
判定に含まれる個々の条件の真偽の全組合せを実行する、最も強い網羅基準。条件がn個なら2のn乗通りが必要で、条件網羅と判定条件網羅を包含する。
同値分割
同じ結果になる入力の範囲(同値クラス)に分け、有効クラスと無効クラスのそれぞれから代表値を一つずつ選ぶブラックボックステストの技法。
境界値分析
同値クラスの境目とその隣の値をテストデータに選ぶ技法。1以上100以下が有効なら0・1・100・101を選ぶ。不等号や等号の付け間違いを見つけやすい。
原因結果グラフ
入力(原因)と出力(結果)の論理的な関係を図に表し、決定表に変換して組合せのテストケースを作る技法。
スタブ
トップダウンテストで、まだできていない下位モジュールの代わりに用意する仮のモジュール。呼び出されると決められた値を返す。
ドライバ
ボトムアップテストで、まだできていない上位モジュールの代わりに用意する仮のモジュール。テスト対象を呼び出して結果を受け取る。
回帰テスト
リグレッションテスト。修正した箇所以外に悪影響が出ていないかを、過去のテストケースを再実行して確認するテスト。自動化の効果が大きい。
バグ管理図
テスト項目の消化件数と検出バグ件数を時間の経過に沿って描いた図。検出バグの累積件数がS字を描いて水平に近づいたとき収束と判断する(信頼度成長曲線)。
インスペクション
モデレーター(進行役)が主催し、参加者の役割と手順をあらかじめ定めて公式に行うレビュー。事前準備と指摘の記録、是正の確認までを手順化する。
ウォークスルー
作成者が主催し、参加者と一緒に成果物を追いながら誤りを指摘し合う非公式なレビュー。管理者は原則参加せず、評価の場にしないのが原則。
静的解析
プログラムを実行せずに、ソースコードの構文・コーディング規約違反・危険な記述などを機械的に検査すること。

例題

例題:例題:判定が if (A or B) のとき、(A=真, B=偽)と(A=偽, B=真)の2件は、条件網羅と判定条件網羅のどちらを満たすか。
答えと考え方 条件網羅だけを満たす。Aは真と偽、Bも真と偽の両方を取るので条件網羅は成立するが、orなので判定結果はどちらも真になり、偽のケースがないため判定条件網羅は成立しない。判定条件網羅も満たすには、たとえば(真,真)と(偽,偽)を選ぶ。
例題:例題:「入力が18以上65未満なら受付、それ以外はエラー」という仕様に対し、境界値分析で選ぶテストデータを挙げよ。
答えと考え方 17、18、64、65の4個。境目は18と65で、18は有効側の下限、17はその一つ外側、64は有効側の上限(65未満なので有効な最大は64)、65は無効側の入口である。「65以下」と書き間違えたり「18より大きい」と書き間違えたりする誤りは、この4個で検出できる。

出典・根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術(ソフトウェア構築・ソフトウェア結合・ソフトウェア導入)

3. 開発モデルと開発管理

ウォーターフォールからアジャイルまでの進め方の違い、スクラムの役割・イベント・成果物、CI/CDや構成管理の考え方が分かります。

開発の進め方(開発モデル)にはいくつかの型があります。ウォーターフォールモデルは、要件定義から順に工程を下流へ一度だけ流し、原則として前の工程には戻りません。工程ごとに成果物を確定させるため管理しやすい反面、後の工程で要件の誤りが見つかると手戻りが大きくなります。プロトタイピングモデルは、早い段階で試作品を作って利用者に触ってもらい、その評価をもとに要求を固めます。スパイラルモデルは、システムを独立性の高い部分に分け、設計・実装・評価という流れを部分ごとに繰り返して渦を描くように全体を完成させます。RADは、少人数のチームと開発支援ツールを使い、期間を区切って短期間で開発を終えることを重視します。

アジャイル開発は、1〜4週間程度の短い反復(イテレーション)を繰り返し、反復ごとに動くソフトウェアを作りながら進める考え方の総称です。アジャイルソフトウェア開発宣言では、プロセスやツールよりも個人と対話を、包括的なドキュメントよりも動くソフトウェアを、契約交渉よりも顧客との協調を、計画に従うことよりも変化への対応を重視するとしています。ただし右側に書かれたことに価値がないという意味ではなく、より価値を置くという相対的な表明です。代表的な手法にスクラム、XP(エクストリームプログラミング)、かんばん(作業を見える化し、仕掛かり中の作業量を制限して流れを良くする)があります。

スクラムは、役割・イベント・成果物を定めた枠組みです。役割は三つで、何を作るかを決めてプロダクトバックログの内容と優先順位に責任を持つプロダクトオーナー、スクラムが正しく実践されるよう支援し妨げを取り除くスクラムマスター、実際に作るとともに誰が何をするかを自分たちで決める開発者です。スクラムマスターは指示を出す管理者ではありません。

イベントは、固定長の期間であるスプリント(1か月以内)と、その中で行う四つです。スプリントプランニングで今回何を作るかを決めてスプリントバックログを作り、デイリースクラムで開発者が毎日15分程度、進捗と妨げを確認してその日の計画を調整し、スプリントレビューで完成したインクリメントを関係者に見せてフィードバックを得て、スプリントレトロスペクティブでチームの進め方そのものを振り返って次の改善策を決めます。レビューが「作ったもの」を見るのに対し、レトロスペクティブは「作り方」を見る点が違いです。成果物は、プロダクトに必要なものを優先順位付きで並べたプロダクトバックログ、そのスプリントで実現する項目と作業をまとめたスプリントバックログ、そのスプリントで完成し積み上がった動くインクリメントの三つです。

XPは、開発者側の具体的な実践(プラクティス)を重視します。2人が1台の端末を共有し、書き手と確認役を交代しながら進めるペアプログラミング、実装より先にテストコードを書いてそれが通るようにコードを書くテスト駆動開発、外部から見た振る舞いを変えずに内部構造を分かりやすく作り直すリファクタリング、変更をこまめに共有リポジトリへ反映してその都度自動でビルドとテストを行う継続的インテグレーションなどが代表です。ほかに、コードは全員のものとする共同所有、シンプルな設計、小まめなリリースといった実践もあります。

開発を組織として管理するための共通の物差しが共通フレーム(SLCP)です。取得者と供給者が同じ用語と作業の枠組みで話せるように、企画から開発、運用、保守、廃棄までのプロセスを定義したもので、そのまま使う手順書ではなく、必要な作業を選んで修正(テーラリング)して使います。開発コストを下げる工夫としてはソフトウェアの再利用があり、部品化したモジュールやライブラリ、フレームワークを活用します。既存のプログラムを解析して仕様や設計情報を導き出すのがリバースエンジニアリング、そこから得た情報をもとに新しいシステムを作るのがフォワードエンジニアリング、両者を合わせて既存システムを作り直すのがリエンジニアリングです。公開された複数のサービス(API)を組み合わせて新しいサービスを作るのがマッシュアップです。なお、再利用や解析にあたっては、著作権やライセンス条件、OSSの利用条件など知的財産の適用範囲を必ず確認します。

開発と運用を分断せず、協力して速く安全に価値を届けようという考え方がDevOpsです。これを支えるのが自動化で、変更を共有リポジトリへ頻繁に反映しそのたびに自動でビルドとテストを行う継続的インテグレーション(CI)と、そこからリリース可能な状態の用意や本番環境への配置までを自動化する継続的デリバリー/継続的デプロイメント(CD)が代表です。土台となるのが構成管理で、ソースコード・設計書・設定ファイル・環境の状態といった構成要素を識別し、変更を記録して、いつでも特定時点の状態を再現できるようにします。その中でソースコードの版を管理するのがバージョン管理です。開発環境・試験環境・本番環境は分けたうえで、構成管理によって同じ状態を再現できるようにしておくのが基本です。

ウォーターフォールとアジャイルの比較/スクラムの役割・イベント・成果物
区分項目内容
開発モデルの比較進め方ウォーターフォール:工程を上流から下流へ一度だけ順に進める/アジャイル:短い反復を繰り返す
開発モデルの比較要件の扱いウォーターフォール:最初に固めて凍結する/アジャイル:反復ごとに見直し、変化を受け入れる
開発モデルの比較動くものが出る時期ウォーターフォール:終盤(結合以降)/アジャイル:反復ごとに毎回出る
開発モデルの比較文書ウォーターフォール:工程ごとに正式な文書で引き継ぐ/アジャイル:動くソフトウェアと対話を重視し、文書は必要な分だけ
開発モデルの比較テストの位置ウォーターフォール:実装後にまとめて行う/アジャイル:反復の中で継続的に行う
開発モデルの比較向く案件ウォーターフォール:要件が安定し規模が大きい/アジャイル:要件が変わりやすく利用者と密に進められる
スクラムの役割プロダクトオーナープロダクトバックログの項目と優先順位に責任を持ち、プロダクトの価値を最大化する
スクラムの役割スクラムマスタースクラムが正しく実践されるよう支援し、妨げを取り除く。作業を割り当てて指示はしない
スクラムの役割開発者スプリントごとにインクリメントを作る。誰が何をするかは自分たちで決める(自己管理)
スクラムのイベントスプリント1か月以内の固定長の期間。この中で他のイベントが行われる
スクラムのイベントスプリントプランニングこのスプリントで何を作るかを決め、スプリントバックログを作る
スクラムのイベントデイリースクラム開発者が毎日15分程度で進捗と妨げを共有し、その日の計画を調整する
スクラムのイベントスプリントレビュー完成したインクリメントを関係者に示し、フィードバックを得る(成果物を見る)
スクラムのイベントスプリントレトロスペクティブチームの進め方そのものを振り返り、次のスプリントの改善策を決める(作り方を見る)
スクラムの成果物プロダクトバックログプロダクトに必要なものを優先順位を付けて並べた一覧。常に見直される
スクラムの成果物スプリントバックログそのスプリントで実現する項目と、それを達成するための作業の一覧
スクラムの成果物インクリメントそのスプリントで完成し、これまでの成果に積み上がった動作するソフトウェア

用語

ウォーターフォールモデル
工程を上流から下流へ一度だけ順に進め、原則として前工程に戻らない開発モデル。管理しやすいが、後半で要件の誤りが判明したときの手戻りが大きい。
プロトタイピングモデル
早い段階で試作品を作って利用者に評価してもらい、その結果をもとに要求を固めていく開発モデル。認識の食い違いを早期に発見できる。
スパイラルモデル
システムを独立性の高い部分に分け、設計・実装・評価の流れを部分ごとに繰り返して、渦を描くように全体を作り上げる開発モデル。
アジャイル開発
短い反復を繰り返し、反復ごとに動くソフトウェアを作りながら要求の変化を取り込む開発の考え方の総称。スクラム、XP、かんばんなどが含まれる。
プロダクトオーナー
スクラムの役割の一つ。何を作るかを決め、プロダクトバックログの項目と優先順位に責任を持ち、プロダクトの価値を最大化する。
スクラムマスター
スクラムの役割の一つ。スクラムが正しく実践されるようチームを支援し、進行の妨げを取り除く。作業を割り当てて指示を出す管理者ではない。
スプリント
スクラムにおける1か月以内の固定長の反復期間。この中でプランニング、デイリースクラム、レビュー、レトロスペクティブが行われる。
デイリースクラム
開発者が毎日15分程度で進捗と妨げを共有し、その日の計画を調整するイベント。問題の解決そのものは別の場で行う。
スプリントレトロスペクティブ
スプリントの最後に、成果物ではなくチームの進め方(プロセス・道具・協働)を振り返り、次のスプリントで試す改善策を決めるイベント。
プロダクトバックログ
プロダクトに必要なものを優先順位を付けて並べた一覧。プロダクトオーナーが管理し、状況に応じて常に見直される。
インクリメント
そのスプリントで完成し、これまでの成果に積み上がった動作するソフトウェア。完成の定義を満たしたものだけがインクリメントになる。
テスト駆動開発
XPのプラクティスの一つ。実装するコードより先にテストコードを書き、それが通るようにコードを書いてから整理する(リファクタリングする)手法。
リファクタリング
外部から見た振る舞いを変えずに、プログラムの内部構造を分かりやすく整理し直すこと。機能追加とは分けて行うのが原則。
共通フレーム(SLCP)
取得者と供給者が共通の用語と枠組みで話せるように、企画から開発・運用・保守・廃棄までのプロセスを定義したもの。必要な作業を選んで修正(テーラリング)して使う。
リバースエンジニアリング
既存のプログラムやオブジェクトコードを解析して、仕様や設計情報を導き出すこと。得た情報から新システムを作るのがフォワードエンジニアリング。
マッシュアップ
公開された複数のサービス(API)を組み合わせ、新しい一つのサービスを作り上げる手法。地図サービスと店舗情報を組み合わせる例が典型。
継続的インテグレーション
CI。変更したソースコードを共有リポジトリへ頻繁に反映し、その都度自動でビルドとテストを実行して、統合時の問題を早期に発見する仕組み。
構成管理
ソースコード・設計書・設定・環境などの構成要素を識別し、変更を記録して、いつでも特定時点の状態を再現できるようにする管理。版を管理するバージョン管理を含む。

例題

例題:例題:スプリントレビューとスプリントレトロスペクティブは何が違うか。
答えと考え方 見る対象が違う。スプリントレビューは、そのスプリントで完成したインクリメント(作ったもの)を関係者に示し、次に何を作るべきかのフィードバックを得る場である。スプリントレトロスペクティブは、チームの進め方(作り方)を振り返り、次のスプリントで試す改善策を決める場である。順序はレビューが先、レトロスペクティブが後で、どちらもスプリントの終わりに行う。
例題:例題:既存の販売管理システムのソースコードを解析して仕様書を復元し、その内容をもとに新しいシステムを設計・構築した。この一連の作業を何と呼ぶか。
答えと考え方 全体としてはリエンジニアリング。前半のソースコードを解析して仕様や設計情報を取り出す作業がリバースエンジニアリング、後半の取り出した情報をもとに新しいシステムを作る作業がフォワードエンジニアリングである。なお解析対象のソフトウェアには著作権があるため、ライセンス条件で解析が認められているかを事前に確認する必要がある。

出典・根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類13:ソフトウェア開発管理技術(システム開発技術)

確認問題(30問)

四肢択一。「正解と解説」を開くと、正解の理由と他の選択肢が違う理由を確認できます。

問1|開発の順序

共通フレームに沿ったソフトウェア開発の工程を、実施する順に並べたものはどれか。

  1. システム要件定義 → システム方式設計 → ソフトウェア要件定義 → ソフトウェア方式設計 → ソフトウェア詳細設計
  2. システム要件定義 → ソフトウェア要件定義 → システム方式設計 → ソフトウェア詳細設計 → ソフトウェア方式設計
  3. システム方式設計 → システム要件定義 → ソフトウェア方式設計 → ソフトウェア要件定義 → ソフトウェア詳細設計
  4. ソフトウェア要件定義 → システム要件定義 → ソフトウェア方式設計 → ソフトウェア詳細設計 → システム方式設計
正解と解説
正解:A. システム要件定義 → システム方式設計 → ソフトウェア要件定義 → ソフトウェア方式設計 → ソフトウェア詳細設計

開発は「何をするかを決めてから、どう作るかを決める」「システム全体から個々のソフトウェアへ詳細化する」という二つの向きに従って進む。したがってシステム要件定義、システム方式設計、ソフトウェア要件定義、ソフトウェア方式設計、ソフトウェア詳細設計の順になる。他の三つは、方式設計が対応する要件定義より前に来ていたり、ソフトウェアの検討がシステム全体の検討より先になっていたりする点で誤りである。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術

問2|V字モデル

V字モデルにおいて、結合テストが検証の対象とする工程の成果物はどれか。

  1. システム要件定義書
  2. ソフトウェア詳細設計書
  3. ソフトウェア方式設計書
  4. システム方式設計書
正解と解説
正解:C. ソフトウェア方式設計書

V字モデルは左側の設計工程と右側のテスト工程を対応付ける。結合テストはモジュールをつないだときのインタフェースを確認するテストであり、モジュール分割とその間のインタフェースを決めたのはソフトウェア方式設計なので、その成果物が検証対象になる。システム要件定義書に対応するのは運用テスト(受入テスト)、ソフトウェア詳細設計書に対応するのは単体テスト、システム方式設計書に対応するのはシステムテストである。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術

問3|非機能要件

要件定義で整理する要件のうち、非機能要件に該当するものはどれか。

  1. 受注データを入力すると、在庫数を自動的に引き当てる
  2. 締め日に、当月分の請求書を得意先ごとに出力する
  3. 商品マスタに、商品番号・商品名・単価を登録できるようにする
  4. 検索条件を指定してから結果が表示されるまでの応答時間を3秒以内とする
正解と解説
正解:D. 検索条件を指定してから結果が表示されるまでの応答時間を3秒以内とする

非機能要件は「何をするか」ではなく「どの程度・どのような品質で動くか」を定めた要件で、性能、可用性、セキュリティ、運用・保守性、拡張性などが該当する。応答時間3秒以内は性能に関する取決めなので非機能要件である。在庫の自動引当、請求書の出力、マスタの登録は、いずれもシステムが提供する処理そのものを述べており機能要件に当たる。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術

問4|DFD

データフロー図(DFD)で用いる記号とその意味の組合せとして、適切なものはどれか。

  1. 円(または角丸四角)は、データを加工する機能(プロセス)を表す
  2. 矢印は、処理を実行する順序(制御の流れ)を表す
  3. 2本の平行線は、システムの外部にあるデータの発生源や吸収先を表す
  4. 四角形は、データを蓄えておく場所(データストア)を表す
正解と解説
正解:A. 円(または角丸四角)は、データを加工する機能(プロセス)を表す

DFDはデータの流れに着目してシステムを表す図で、円(または角丸四角)がプロセス、矢印がデータフロー、2本の平行線がデータストア、四角形が外部実体(源泉と吸収)を表す。矢印が表すのはデータの流れであって制御の流れや実行順序ではない。また、2本の平行線と四角形の説明は入れ替わっている。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術

問5|共通結合

モジュール間の結合度の分類において、共通結合に該当するものはどれか。

  1. 呼び出す側が、必要なデータ項目だけを引数として渡している
  2. 複数のモジュールが、共通のグローバル領域に置いたデータを互いに参照・更新している
  3. 引数として渡した値によって、呼び出された側の処理内容を切り替えている
  4. 呼び出す側が、相手モジュールの内部の命令や変数を直接参照している
正解と解説
正解:B. 複数のモジュールが、共通のグローバル領域に置いたデータを互いに参照・更新している

共通結合は、複数のモジュールが共通域(グローバル領域)のデータを共有して参照・更新する結合で、どのモジュールがいつ値を変えたか追いにくいため結合度が強い。必要なデータ項目だけを引数で渡すのは最も結合度が弱いデータ結合、処理の切替えを指示する引数を渡すのは制御結合、相手の内部を直接参照するのは最も結合度が強い内容結合である。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術

問6|結合度の順

モジュール間の結合度を、弱いものから強いものへ並べた順序として適切なものはどれか。

  1. データ結合 → スタンプ結合 → 制御結合 → 外部結合 → 共通結合 → 内容結合
  2. データ結合 → 制御結合 → スタンプ結合 → 共通結合 → 外部結合 → 内容結合
  3. 内容結合 → 共通結合 → 外部結合 → 制御結合 → スタンプ結合 → データ結合
  4. スタンプ結合 → データ結合 → 外部結合 → 制御結合 → 内容結合 → 共通結合
正解と解説
正解:A. データ結合 → スタンプ結合 → 制御結合 → 外部結合 → 共通結合 → 内容結合

結合度は弱いほどモジュールの独立性が高く、変更の影響が広がりにくい。弱い順にデータ結合、スタンプ結合、制御結合、外部結合、共通結合、内容結合であり、最も弱く望ましいのがデータ結合、最も強く避けるべきなのが内容結合である。3番目の選択肢は強い順に並べたもの、2番目はスタンプ結合と制御結合および外部結合と共通結合の前後が入れ替わっており、4番目は先頭と末尾がいずれも誤っている。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術

問7|機能的強度

モジュール強度(凝集度)のうち、機能的強度に該当するものはどれか。

  1. 初期化に必要な処理を、実行される時点が同じであるという理由でまとめた
  2. 関連する複数の機能をまとめ、引数で指定された一つだけを実行する
  3. 一つの明確な機能だけを実行し、それ以外の処理を含まない
  4. 互いに関係のない複数の処理を、行数の都合で一つにまとめた
正解と解説
正解:C. 一つの明確な機能だけを実行し、それ以外の処理を含まない

機能的強度はモジュールが単一の明確な機能だけを担う状態で、モジュール強度の中で最も強く、最も望ましい。実行される時点が同じ処理をまとめたものは時間的強度、引数で機能を選んで一つだけ実行するものは論理的強度、関係のない処理の寄せ集めは最も弱い暗号的強度である。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術

問8|シーケンス図

UMLの図のうち、複数のオブジェクトの間でやり取りされるメッセージを、上から下への時間の流れに沿って表すものはどれか。

  1. クラス図
  2. シーケンス図
  3. ユースケース図
  4. 状態マシン図
正解と解説
正解:B. シーケンス図

シーケンス図は、オブジェクトを横に並べ、時間の流れを縦軸として、やり取りされるメッセージを順に描く図である。クラス図はクラスの属性・操作と汎化や集約などの静的な関係、ユースケース図はアクター(利用者)とシステムが提供する機能の関係、状態マシン図は一つのオブジェクトの状態とイベントによる遷移を表すもので、いずれもメッセージの時間順を表す図ではない。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術

問9|UMLの選択

一つのオブジェクトが取り得る状態と、どのイベントによってどの状態へ移るかを表現したい。用いるUMLの図として最も適切なものはどれか。

  1. ユースケース図
  2. クラス図
  3. アクティビティ図
  4. 状態マシン図
正解と解説
正解:D. 状態マシン図

状態マシン図(ステートマシン図)は、一つのオブジェクトが取り得る状態と、イベントによる状態の遷移を表す図である。ユースケース図はアクターとシステム機能の関係、クラス図はクラスの属性・操作と汎化や集約といった静的な関係、アクティビティ図は処理の流れと分岐・合流・並行処理を表す図であり、いずれも状態の遷移そのものを表現する図ではない。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術

問10|多相性

オブジェクト指向における多相性(ポリモーフィズム)の説明として、適切なものはどれか。

  1. データとそれを操作する手続を一つにまとめ、内部の構造を外から隠すこと
  2. 上位クラスの属性や操作を下位クラスが受け継ぎ、差分だけを定義できること
  3. 同じメッセージを送っても、受け取るオブジェクトのクラスによって異なる動作をすること
  4. 複数のオブジェクトを部分としてまとめ、全体と部分の関係を表すこと
正解と解説
正解:C. 同じメッセージを送っても、受け取るオブジェクトのクラスによって異なる動作をすること

多相性は、同じ名前のメッセージ(操作)に対して受け手のクラスごとに固有の処理を行える性質で、呼び出す側は相手のクラスを意識せずに済むため、クラスを追加しても呼び出し側を直さずに拡張できる。1番目はカプセル化、2番目は継承、4番目は集約の説明であり、いずれも多相性とは別の概念である。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術

問11|テスト技法

ブラックボックステストの説明として、適切なものはどれか。

  1. プログラムの内部構造を調べ、すべての命令を実行するようにテストケースを作る
  2. 仕様に基づいて入力と出力の関係だけに着目し、テストケースを作る
  3. プログラムを実行せずに、ソースコードの記述を機械的に検査する
  4. 判定の分岐がすべて真と偽の両方を取るようにテストケースを作る
正解と解説
正解:B. 仕様に基づいて入力と出力の関係だけに着目し、テストケースを作る

ブラックボックステストは内部構造を見ずに、仕様上の入力と出力の関係だけからテストケースを作る技法で、同値分割や境界値分析が代表例である。1番目(命令網羅)と4番目(判定条件網羅)はいずれも内部構造を根拠とするホワイトボックステストの説明であり、3番目はプログラムを実行しない静的解析の説明である。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術(ソフトウェア構築・ソフトウェア結合)

問12|命令網羅

次のプログラムに対して命令網羅(すべての命令を少なくとも1回実行する)を満たすために必要な、最小のテストケース数はどれか。

テスト対象の手続
○整数型: 処理(整数型: x, 整数型: y)  整数型: z  z ← 0  if (x > 0)    z ← z + x  endif  if (y > 0)    z ← z + y  endif  return z
  1. 1
  2. 2
  3. 3
  4. 4
正解と解説
正解:A. 1

命令網羅はすべての命令を1回以上実行できればよい。この手続にはelseに当たる命令がないため、二つの判定をどちらも真にする1件(例えばx=1, y=1)だけで、5行目のz ← z + xと8行目のz ← z + yを含むすべての命令が実行される。なお、二つの判定をそれぞれ真と偽の両方にする判定条件網羅では最低2件が必要であり、命令網羅は判定条件網羅より弱い基準である。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術(ソフトウェア構築・ソフトウェア結合)

問13|判定と条件

次のプログラムに対する2件のテストケースの組のうち、判定条件網羅(分岐網羅)は満たすが条件網羅は満たさないものはどれか。ここで条件とは「a ≧ 10」と「b < 5」の二つを指す。

テスト対象の手続
○整数型: 判定(整数型: a, 整数型: b)  整数型: x  if (a ≧ 10 and b < 5)    x ← 1  else    x ← 2  endif  return x
  1. (a, b) = (20, 1) と (5, 1)
  2. (a, b) = (20, 8) と (5, 1)
  3. (a, b) = (20, 1) と (5, 8)
  4. (a, b) = (5, 8) と (3, 9)
正解と解説
正解:A. (a, b) = (20, 1) と (5, 1)

判定条件網羅は判定全体の結果が真と偽の両方になること、条件網羅は個々の条件がそれぞれ真と偽の両方になることを求める。1番目は(20,1)が(真,真)で判定が真、(5,1)が(偽,真)で判定が偽となり判定条件網羅を満たすが、b < 5が両方とも真のままなので条件網羅を満たさない。2番目は判定がどちらも偽で判定条件網羅を満たさず(条件網羅は満たす)、3番目は(真,真)と(偽,偽)で両方を満たし、4番目は判定も個々の条件も偽の値しか取らない。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術(ソフトウェア構築・ソフトウェア結合)

問14|条件網羅

次のプログラムを2件のテストケースでテストする。判定が or である点に注意して、条件網羅は満たすが判定条件網羅(分岐網羅)は満たさない組を選べ。ここで条件とは「a > 0」と「b > 0」の二つを指す。

テスト対象の手続
○整数型: 判定(整数型: a, 整数型: b)  整数型: x  if (a > 0 or b > 0)    x ← 1  else    x ← 2  endif  return x
  1. (a, b) = (1, 1) と (-1, -1)
  2. (a, b) = (1, -1) と (-1, 1)
  3. (a, b) = (1, -1) と (1, 1)
  4. (a, b) = (-1, -1) と (-1, 1)
正解と解説
正解:B. (a, b) = (1, -1) と (-1, 1)

判定がorであることが鍵になる。2番目は(1,-1)が(真,偽)、(-1,1)が(偽,真)で、aもbも真と偽の両方を取るため条件網羅を満たすが、orなので判定結果はどちらも真となり、偽のケースがないので判定条件網羅を満たさない。1番目は(真,真)と(偽,偽)で両方を満たし、3番目はaが真のままで判定も真のままなのでどちらも満たさず、4番目はaが偽のままで条件網羅を満たさない(判定条件網羅は満たす)。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術(ソフトウェア構築・ソフトウェア結合)

問15|複数条件

次のプログラムの判定について複数条件網羅を満たすために必要な、最小のテストケース数はどれか。ここで条件は「x ≧ 0」「y ≧ 0」「z ≧ 0」の三つとする。

テスト対象の手続
○整数型: 判定(整数型: x, 整数型: y, 整数型: z)  整数型: n  if (x ≧ 0 and y ≧ 0 and z ≧ 0)    n ← 1  else    n ← 0  endif  return n
  1. 3
  2. 4
  3. 6
  4. 8
正解と解説
正解:D. 8

複数条件網羅は、判定に含まれる個々の条件が取り得る真偽の全組合せを実行することを求める。条件が3個なので組合せは2の3乗=8通りとなり、最小8件のテストケースが必要である。3件は個々の条件を一つずつ偽にしただけの件数、4件は条件が2個のときの複数条件網羅の件数であり、いずれもこの判定では組合せを網羅できない。なお判定条件網羅だけなら2件で足りる。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術(ソフトウェア構築・ソフトウェア結合)

問16|網羅の強さ

ホワイトボックステストの網羅基準の関係に関する記述のうち、適切なものはどれか。

  1. 条件網羅を満たすテストケースは、必ず判定条件網羅も満たしている
  2. 判定条件網羅を満たすテストケースは、必ず複数条件網羅も満たしている
  3. 複数条件網羅を満たすテストケースは、判定条件網羅も条件網羅も満たしている
  4. 命令網羅を満たすテストケースは、必ず判定条件網羅も満たしている
正解と解説
正解:C. 複数条件網羅を満たすテストケースは、判定条件網羅も条件網羅も満たしている

複数条件網羅は判定内の条件の真偽の全組合せを実行するため、個々の条件も判定全体も必ず真と偽の両方を取ることになり、条件網羅と判定条件網羅の両方を包含する最も強い基準である。条件網羅は判定条件網羅を保証せず(if (A or B) に(真,偽)と(偽,真)を与えると条件網羅は満たすが判定はどちらも真)、判定条件網羅は全組合せを試さないので複数条件網羅を保証しない。命令網羅は最も弱く、else側に命令がなければ判定を偽にしなくても満たせる。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術(ソフトウェア構築・ソフトウェア結合)

問17|同値分割

「入力された整数が1以上100以下であれば有効、それ以外は無効とする」という仕様のプログラムに対し、同値分割の考え方でテストデータを選ぶとき、必要最小限の組として最も適切なものはどれか。

  1. 50 の1個
  2. 1 と 100 の2個
  3. -5、50、150 の3個
  4. 0、1、100、101 の4個
正解と解説
正解:C. -5、50、150 の3個

同値分割では、同じ結果になる入力の範囲(同値クラス)に分け、各クラスから代表値を一つずつ選ぶ。この仕様の同値クラスは、有効クラス「1〜100」、無効クラス「1未満」、無効クラス「100より大きい」の三つなので、-5・50・150のように各クラスの代表値3個が必要最小限になる。50だけ、あるいは1と100だけでは無効クラスを一つも試していない。0・1・100・101は境界値分析で選ぶデータであり、同値分割の考え方だけから導かれるものではない。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術(ソフトウェア構築・ソフトウェア結合)

問18|境界値

「入力された整数が1以上100以下であれば有効、それ以外は無効とする」という仕様のプログラムに対し、境界値分析によって選ぶテストデータの組として最も適切なものはどれか。

  1. 0、1、100、101
  2. 1、50、100
  3. -1、0、101、102
  4. 1、100
正解と解説
正解:A. 0、1、100、101

境界値分析は、同値クラスの境目と、その隣の値を選ぶ技法である。有効範囲1〜100の境目は1と100なので、有効側の1と100、無効側の0と101の計4個を選べば、不等号や等号の付け間違いを検出できる。1・50・100には無効側の値がなく、1と100だけでは境目の外側を試していない。-1・0・101・102は無効側に偏っており、有効側の境界である1と100を試していない。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術(ソフトウェア構築・ソフトウェア結合)

問19|境界値2

通信販売の送料を、購入金額が3,000円未満のときは500円、3,000円以上10,000円未満のときは300円、10,000円以上のときは0円と定めた。購入金額について境界値分析でテストデータを選ぶとき、最も適切な組はどれか。

  1. 3,000円、10,000円
  2. 2,999円、3,000円、9,999円、10,000円
  3. 2,999円、3,001円、9,999円、10,001円
  4. 1,000円、5,000円、15,000円
正解と解説
正解:B. 2,999円、3,000円、9,999円、10,000円

区分の境目は3,000円と10,000円なので、境界値分析ではその境目とすぐ隣の値、すなわち2,999円・3,000円と9,999円・10,000円の4個を選ぶ。3,000円と10,000円だけでは境目の直前で正しく判定できるかを確認できない。3,001円や10,001円を選ぶと、境目そのものである3,000円と10,000円を試さないことになり、「3,000円以上」を「3,000円より大きい」と書き間違えた誤りを検出できない。1,000円・5,000円・15,000円は各区分の代表値であり、同値分割で選ぶデータである。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術(ソフトウェア構築・ソフトウェア結合)

問20|スタブ

モジュールの結合テストをトップダウンで進めるときに用意するものとして、適切なものはどれか。

  1. 上位モジュールの代わりに、テスト対象を呼び出すドライバ
  2. 下位モジュールの代わりに、決められた値を返すスタブ
  3. プログラムを実行せずにソースコードを検査する静的解析ツール
  4. 過去のテストケースを再実行して影響を確認する回帰テストツール
正解と解説
正解:B. 下位モジュールの代わりに、決められた値を返すスタブ

トップダウンテストは上位モジュールから順に結合していくため、まだできていない下位モジュールの代わりとして、呼び出されると決められた値を返すスタブを用意する。ドライバは逆に、ボトムアップテストでまだできていない上位モジュールの代わりにテスト対象を呼び出すものである。静的解析ツールはプログラムを実行せずにコードを検査するもの、回帰テストは修正の影響が他に及んでいないかを確認するもので、いずれも代替モジュールではない。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術(ソフトウェア構築・ソフトウェア結合)

問21|バグ管理図

テストの進捗と品質を管理するバグ管理図(信頼度成長曲線)に関する記述のうち、適切なものはどれか。

  1. 検出バグの累積件数が、テストが進むにつれて直線的に増え続けるのが正常な形である
  2. 曲線が早い段階で水平に近づきバグがほとんど検出されない場合は、必ず品質が高いと判断してよい
  3. 曲線が横軸に対して垂直に近く立ち上がるほど、テストが十分に行われたことを示す
  4. 検出バグの累積件数はS字状に増え、終盤で増加が鈍って水平に近づいたときに収束したと判断する
正解と解説
正解:D. 検出バグの累積件数はS字状に増え、終盤で増加が鈍って水平に近づいたときに収束したと判断する

バグ管理図では、検出バグの累積件数がゆるやかに増え始め、中盤で急に増え、終盤で増加が鈍って水平に近づくS字(信頼度成長曲線)を描くのが正常で、水平に近づいた時点で品質が安定したと判断する。直線的に増え続ける場合はまだバグが出尽くしておらず、早い段階で水平になった場合はテストケースが不十分または容易すぎる可能性があるため、品質が高いと即断してはならない。垂直に近い立ち上がりは短期間に大量のバグが出た状態であり、テストの十分さを示すものではない。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術(ソフトウェア構築・ソフトウェア結合)

問22|レビュー

ソフトウェアのレビュー技法のうち、インスペクションの説明として適切なものはどれか。

  1. 参加者が持ち回りで司会や説明を担当し、全員が均等に関与する
  2. モデレーターと呼ばれる進行役が主催し、参加者の役割と手順をあらかじめ定めて公式に行う
  3. 作成者が主催し、参加者と成果物を追いながら非公式に誤りを指摘し合う
  4. 開発したプログラムを実際に動かし、仕様どおりに動作するかを確かめる
正解と解説
正解:B. モデレーターと呼ばれる進行役が主催し、参加者の役割と手順をあらかじめ定めて公式に行う

インスペクションは、モデレーター(進行役)が主催し、事前配布と各自の準備、役割分担、指摘の記録、是正の確認までを定めた手順で行う公式なレビューである。1番目はラウンドロビン、3番目は作成者が主催して非公式に行うウォークスルーの説明であり、4番目はレビューではなく動的テストの説明である。レビューはいずれもプログラムを実行せずに人が成果物を確認する点で共通している。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類12:システム開発技術(ソフトウェア構築・ソフトウェア結合)

問23|開発モデル

システム開発モデルのうち、スパイラルモデルの説明として適切なものはどれか。

  1. 工程を上流から下流へ一度だけ順に進め、原則として前の工程には戻らない
  2. 試作品を早い段階で作って利用者に評価してもらい、その結果を基に要求を固めていく
  3. システムを独立性の高い部分に分割し、設計から実装・評価までを部分ごとに繰り返して、渦を描くように全体を作り上げる
  4. 少人数のチームと開発支援ツールを使い、期間を区切って短期間で開発を終えることを重視する
正解と解説
正解:C. システムを独立性の高い部分に分割し、設計から実装・評価までを部分ごとに繰り返して、渦を描くように全体を作り上げる

スパイラルモデルは、システムをいくつかの独立性の高い部分に分け、設計・実装・評価という流れを部分ごとに繰り返して渦(スパイラル)を描くように全体を完成させる開発モデルである。1番目はウォーターフォールモデル、2番目はプロトタイピングモデル、4番目はRAD(Rapid Application Development)の説明である。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類13:ソフトウェア開発管理技術

問24|アジャイル

ウォーターフォールモデルと比べたときの、アジャイル開発の特徴として適切なものはどれか。

  1. 要件を開発の最初に凍結し、以降の変更を認めないことで手戻りを防ぐ
  2. 短い反復を繰り返し、反復ごとに動くソフトウェアを作って要求の変化を取り込む
  3. すべての工程の設計書を完成させてから、初めて実装に着手する
  4. テストを開発の最終工程にまとめ、実装がすべて終わってから開始する
正解と解説
正解:B. 短い反復を繰り返し、反復ごとに動くソフトウェアを作って要求の変化を取り込む

アジャイル開発は、1〜4週間程度の短い反復(スクラムではスプリント)ごとに動くソフトウェアを作り、利用者の反応を見ながら要求の変化を取り込んでいく進め方である。要件を最初に凍結する、全設計書の完成後に実装する、テストを最終工程に集約するという進め方はいずれもウォーターフォールモデルの特徴であり、アジャイルではテストも反復の中で継続的に行う。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類13:ソフトウェア開発管理技術

問25|POの役割

スクラムにおけるプロダクトオーナーの役割として適切なものはどれか。

  1. プロダクトバックログの項目とその優先順位に責任を持ち、プロダクトの価値を最大化する
  2. スクラムが正しく実践されるようチームを支援し、進行の妨げを取り除く
  3. スプリントの中で実際に設計・実装・テストを行い、インクリメントを作る
  4. 開発者一人ひとりに作業を割り当て、進捗を日々管理して指示を出す
正解と解説
正解:A. プロダクトバックログの項目とその優先順位に責任を持ち、プロダクトの価値を最大化する

プロダクトオーナーは「何を作るか」を決める役割であり、プロダクトバックログの内容と並び順(優先順位)に責任を持ち、プロダクトの価値を最大化する。2番目はスクラムマスター、3番目は開発者の役割である。スクラムの開発者は誰が何をするかを自分たちで決める自己管理型のチームであり、4番目のように個々の作業を割り当てて指示する役割は置かない。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類13:ソフトウェア開発管理技術

問26|スクラム

スクラムのイベントのうち、スプリントレトロスペクティブで行うこととして適切なものはどれか。

  1. このスプリントで何を作るかを決め、スプリントバックログを作成する
  2. 完成したインクリメントを関係者に示し、フィードバックを得る
  3. 開発者が毎日15分程度で進捗と妨げを共有し、その日の計画を調整する
  4. チームの進め方そのものを振り返り、次のスプリントで試す改善策を決める
正解と解説
正解:D. チームの進め方そのものを振り返り、次のスプリントで試す改善策を決める

スプリントレトロスペクティブは、スプリントの最後に、成果物ではなくチームの進め方(プロセス、道具、協働のしかた)を振り返り、次のスプリントで実施する改善策を決めるイベントである。1番目はスプリントプランニング、2番目はスプリントレビュー、3番目はデイリースクラムであり、特に「作ったものを見る」スプリントレビューと「作り方を見直す」レトロスペクティブの違いが問われやすい。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類13:ソフトウェア開発管理技術

問27|成果物

スクラムの成果物のうち、スプリントバックログの説明として適切なものはどれか。

  1. プロダクトに必要なものをすべて優先順位を付けて並べた、常に見直される一覧
  2. そのスプリントで実現する項目と、それを達成するための作業をまとめた一覧
  3. そのスプリントで完成し、これまでの成果に積み上がった、動作するソフトウェア
  4. 開発チームが守るべき作業手順と品質基準を定めた、社内の標準文書
正解と解説
正解:B. そのスプリントで実現する項目と、それを達成するための作業をまとめた一覧

スプリントバックログは、そのスプリントで取り組むプロダクトバックログ項目と、それを完成させるための作業計画をまとめたもので、開発者が自分たちで作成し、スプリントの途中でも更新する。1番目はプロダクトバックログ、3番目はインクリメントの説明である。4番目の社内標準文書はスクラムが定める成果物ではない。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類13:ソフトウェア開発管理技術

問28|XP

エクストリームプログラミング(XP)のプラクティスのうち、テスト駆動開発の説明として適切なものはどれか。

  1. 2人が1台の端末を共有し、一方がコードを書き、もう一方がその場で確認しながら開発する
  2. 外部から見た振る舞いを変えずに、プログラムの内部構造を分かりやすく作り直す
  3. 実装するコードより先にテストコードを書き、そのテストが通るようにコードを書く
  4. 変更をこまめに共有リポジトリへ反映し、その都度自動でビルドとテストを行う
正解と解説
正解:C. 実装するコードより先にテストコードを書き、そのテストが通るようにコードを書く

テスト駆動開発(TDD)は、まず失敗するテストコードを書き、それを通す最小限のコードを書き、最後に整理するという順で進める手法である。1番目はペアプログラミング、2番目はリファクタリング、4番目は継続的インテグレーションの説明で、いずれもXPのプラクティスではあるがテスト駆動開発とは別のものである。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類13:ソフトウェア開発管理技術

問29|リバース

既存のソフトウェアに関わる用語の説明として、適切なものはどれか。

  1. マッシュアップとは、既存のプログラムを解析して仕様や設計情報を導き出すことである
  2. リバースエンジニアリングとは、公開された複数のサービスを組み合わせて新しいサービスを作ることである
  3. フォワードエンジニアリングとは、既存システムから取り出した仕様や設計情報を基に、新しいシステムを構築することである
  4. リエンジニアリングとは、ソースコードを実行せずに構文や規約の違反を検査することである
正解と解説
正解:C. フォワードエンジニアリングとは、既存システムから取り出した仕様や設計情報を基に、新しいシステムを構築することである

既存システムを解析して得た仕様や設計情報を基に新しいシステムを構築するのがフォワードエンジニアリングである。1番目と2番目は説明が入れ替わっており、既存プログラムを解析して仕様を導き出すのがリバースエンジニアリング、公開されたサービス(API)を組み合わせて新しいサービスを作るのがマッシュアップである。4番目は静的解析の説明で、リエンジニアリングは既存システムを解析したうえで作り直すこと(リバースとフォワードを合わせたもの)を指す。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類13:ソフトウェア開発管理技術

問30|CI/CD

継続的インテグレーション(CI)の説明として、適切なものはどれか。

  1. 変更したソースコードを共有リポジトリへ頻繁に反映し、その都度自動でビルドとテストを実行して、統合時の問題を早期に発見する
  2. 完成したソフトウェアを本番環境へ手作業で配置し、担当者が画面を操作して動作を目視で確認する
  3. 開発した機能を一定期間分まとめてから、リリース直前に一度だけ結合してテストを実施する
  4. 開発環境・試験環境・本番環境を一つにまとめ、同じ環境で開発と運用の作業を行う
正解と解説
正解:A. 変更したソースコードを共有リポジトリへ頻繁に反映し、その都度自動でビルドとテストを実行して、統合時の問題を早期に発見する

継続的インテグレーション(CI)は、変更をこまめに共有リポジトリへ反映し、そのたびに自動でビルドとテストを走らせることで、統合したときの不具合を早い段階で発見する仕組みである。さらにリリース可能な状態の用意や本番環境への配置まで自動化したものが継続的デリバリー/継続的デプロイメント(CD)で、手作業での配置や、まとめて一度だけ結合する進め方はCIの考え方に反する。環境を一つにまとめることはDevOpsの内容ではなく、環境は分けたうえで構成管理により同じ状態を再現できるようにするのが基本である。

根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類4:開発技術 中分類13:ソフトウェア開発管理技術

演習:この章の問題を解く

ランダム出題の演習ツールです(JavaScript が有効な場合に動きます)。上の「確認問題」はそのままでもすべて読めます。

※ 解説は学習用の情報提供です。最新の出題範囲・制度は必ずIPAの公式発表をご確認ください。
※ 出題はIPA公開のシラバスVer.9.2(2026年1月8日適用)に沿った仮の宿 学習室のオリジナル問題です。擬似言語の記述形式もIPA公開の仕様に合わせています。試験制度・実施要項はIPAの公式発表をご確認ください(2027年度春ごろに新試験制度へ移行予定)。