PD試験 システム
PD試験(仮称)システム区分 サンプル問6(スクラムの体制とペアプロ)の解説
プロフェッショナルデジタルスキル(システム)試験(仮称)の科目Bサンプル問6を、スマホで解いて確かめられます。スクラムマスターの役割と、メンバーの経験から決まるペアプログラミングの組み方を、表1の読み方とあわせて解説します。
PD試験 システム
科目Bサンプル問題 問6
IPA 公表問題
A 社は,電車や飛行機などの移動手段と宿泊施設をセットにしたパッケージツアーをインターネットで販売している。このサービスを提供している現行システムに,移動途中や宿泊先近辺の商業施設と提携して,観光地の情報提供やクーポン配布を行うサービスを追加することになった。その開発手法として,アジャイルソフトウェア開発手法(以下,アジャイル開発という)の一つであるスクラムを適用する。
〔開発体制の検討〕
本開発を通して,A 社でアジャイル開発の経験者を育成するために,プロジェクトメンバーに求められる役割と割り当てるメンバー(M1~M7)を検討した。開発体制を表 1 に示す。
| 役割(メンバー) | 役割の説明 |
|---|---|
| プロダクトオーナー (M1) | 提携する商業施設との調整を行い,追加するサービスに必要な機能を定義し,その機能を順位付けする。 |
| スクラムマスター (M2) | メンバー全員が[ a ]に協働できるように支援,マネジメントする。 |
| アジャイルコーチ (M3) | 週に 2 日,社外から招へいされ,メンバーに対してアジャイル開発手法の導入や改善を支援する。 |
| 開発チーム (M4,M5, M6,M7) | 実際に開発を行う。 |
| メンバー | メンバーの経験 |
|---|---|
| M1 | パッケージツアーの企画経験が豊富である。 アジャイル開発の経験はなく,知識もほとんどない。 |
| M2 | アジャイル開発の経験はあるがスクラムマスターの経験はない。 |
| M3 | スクラムマスターの経験が豊富である。 |
| M4,M5 | アジャイル開発の経験はないが,現行システムをウォータフォールで開発した経験はある。 |
| M6,M7 | アジャイル開発の経験はあるが,現行システムを開発した経験はない。 |
〔開発プロセスの検討〕
アジャイル開発の経験者からアジャイル開発の経験が少ないメンバーに経験を伝えるために,プランニングポーカーやペアプログラミングなどのプラクティスを幾つか導入することにした。検討した開発プロセスを表 2 に示す。
| 小分類 | 実施項目 |
|---|---|
| プロジェクト方針 の検討 | 追加するサービスの目標,あるべき姿,基本的価値観の共有を図る。 |
| 小分類 | 実施項目 |
|---|---|
| システムの目的 の合意 | システムの目的やゴールの共有を行う。 |
| リリース計画 | プロダクトバックログのグルーピングを行い,プロダクトバックログアイテムを見積もる。 |
| 小分類 | 実施項目 |
|---|---|
| スプリント計画 (イテレーション 計画) | プランニングポーカーを用いて,チーム全員の知識や経験を共有しながら見積りを行う。実施するタスクをスプリントバックログに追加する。 |
| スプリント | タスクを実施する。プロダクトコードを開発する際は,ペアプログラミングを行う。デイリースクラム(日次ミーティング)でチームの状況を共有する。 |
| スプリント レビュー (デモ) | スプリントの成果物をプロダクトオーナーにデモする。その結果を,次のスプリント計画のインプットにする。 |
| レトロスペク ティブ (ふりかえり) | スプリント中の改善事項を検討し,次回以降のスプリントで取り組むべき課題にする。 |
ペアプログラミングを行う際,メンバーの割当てとして[ b ]担うことにした結果,経験と知識を共有することができた。
設問 表 1 中の[ a ],本文中の[ b ]に入れる字句の組合せはどれか。解答群の中から最も適切なものを選べ。
- (一) 自律的
- (二) 組織的
- (三) M4 がドライバー,M5 がナビゲーターを
- (四) M4 がドライバー,M6 がナビゲーターを
- (五) M4 がナビゲーター,M6 がドライバーを
- (六) M4 と M5 がドライバーとナビゲーターを交代で
- (七) M4 と M6 がドライバーとナビゲーターを交代で
答えと選択肢ごとの根拠を見る
正解:オ(a (一)/b (七)) IPA 公表の解答例による
ア × 誤り 同じ経験のメンバーどうしで組ませた
a (一)/b (三)
aは正しい。しかしM4とM5はどちらもアジャイル開発の経験がないので,組ませてもアジャイル開発の経験は伝わらない。開発プロセスの目的は「経験者から経験が少ないメンバーに経験を伝える」こと。
イ × 誤り 役割を固定しても双方向に共有できると考えた
a (一)/b (四)
aは正しく,組合せ(M4とM6)も正しい。しかし役割を固定すると,M6がナビゲーターとしてM4にアジャイル開発の進め方を伝える一方向になりやすい。本文の結果は「経験と知識を共有することができた」で,M4の現行システムの知識もM6に渡っている。役割を交代することで,両方向の共有になる。
ウ × 誤り 役割を固定しても双方向に共有できると考えた
a (一)/b (五)
aは正しい。M4とM6の組合せも正しいが,役割を固定している。交代しなければ,それぞれの経験(M4の現行システムの知識,M6のアジャイル開発の経験)を互いに伝え合う形になりにくい。
エ × 誤り 同じ経験のメンバーどうしで組ませた
a (一)/b (六)
aは正しい。交代で担う点もよいが,M4とM5はどちらもアジャイル開発の経験がなく,経験者から経験を伝えることにならない。
オ ○ 正しい
a (一)/b (七)
a:スクラムマスターは,チームが自己管理(自律的)に動けるよう支援する役割。IPAの出題趣旨も「チームの協働と自律的な開発プロセスを促進する能力」を挙げている。b:M4はアジャイル開発の経験がないが現行システムに詳しく,M6はアジャイル開発の経験があるが現行システムを知らない。この2人が役割を交代しながら組むと,アジャイル開発の経験と現行システムの知識を互いに共有できる。
カ × 誤り スクラムマスターを管理者と考えた
a (二)/b (三)
スクラムマスターは,上から指示して組織的に動かす管理者ではなく,チームが自律的に動けるよう支援する役割。bも,アジャイル開発の経験がない2人の組合せで誤り。
キ × 誤り スクラムマスターを管理者と考えた
a (二)/b (四)
aは「自律的」が正しい。bも,役割を固定しているので双方向の共有になりにくい。
ク × 誤り スクラムマスターを管理者と考えた
a (二)/b (五)
aは「自律的」が正しい。bも,役割を固定しているので双方向の共有になりにくい。
ケ × 誤り スクラムマスターを管理者と考えた
a (二)/b (六)
aは「自律的」が正しい。bも,アジャイル開発の経験がない2人の組合せなので,経験が伝わらない。
コ × 誤り スクラムマスターを管理者と考えた
a (二)/b (七)
bは正しいが,aが違う。スクラムでは,チームが何をどう進めるかを自分たちで決める(自己管理)。スクラムマスターはそれを支える役割で,組織的な管理を行う役割ではない。
解説
この問題で問われていること:スクラムの役割とペアの組み方
IPAは出題趣旨で、この問題を、スクラムの各役割の理解や、ペアプログラミングなどのプラクティスを通じて「チームの協働と自律的な開発プロセスを促進する能力」を評価するものとしています。
空欄は2つです。aはスクラムマスターの役割の知識、bは表1のメンバーの経験から組合せを決める読解です。性質の違う2つを組み合わせた問題なので、片方だけ分かっても候補は半分にしか減りません。
空欄a:スクラムマスターは「自律」を支える
スクラムガイド(2020年版の日本語訳)は、スクラムマスターがスクラムチームを支援する方法の1つめに、「自己管理型で機能横断型のチームメンバーをコーチする」ことを挙げています。また、スクラムチームは自己管理型で、誰が何をいつどのように行うかをチーム内で決めるとしています。
スクラムマスターは、指示を出して組織的に動かす管理者ではありません。チームが自分たちで判断して協働できるように支える役割です。出題趣旨の「自律的な開発プロセス」とも合うので、aは自律的(一)です。
この時点で、aが「組織的」のカ〜コの5つが消え、ア〜オが残ります。
空欄b:表1から「誰が何を知っているか」を整理する
ペアプログラミングでは、2人が1台の端末で作業します。コードを書く人をドライバー、全体を見て方向を示す人をナビゲーターと呼びます。
開発チームの4人の経験を整理すると、次のようになります。
| メンバー | アジャイル開発 | 現行システム |
|---|---|---|
| M4、M5 | 経験なし | ウォータフォールで開発した経験あり |
| M6、M7 | 経験あり | 開発した経験なし |
本文には、プラクティスを導入した目的が「アジャイル開発の経験者からアジャイル開発の経験が少ないメンバーに経験を伝える」ことだと書かれています。そして結果は「経験と知識を共有することができた」です。
手順1:組む相手を決める
アジャイル開発の経験を伝えるには、経験のないM4と、経験のあるM6を組ませる必要があります。M4とM5の組合せ((三)・(六))は、どちらも経験がないので外れます。残るのは(四)・(五)・(七)で、どれもM4とM6の組合せです。
手順2:役割を固定するか、交代するか
M6はアジャイル開発に詳しい一方で、現行システムを知りません。M4はその逆です。つまり、この2人は互いに相手の知らないことを知っています。
役割を固定すると、知識はナビゲーターからドライバーへの一方向に流れやすくなります。ドライバーとナビゲーターを交代で担えば、M6はアジャイル開発の進め方を、M4は現行システムの知識を、それぞれ相手に渡せます。本文の「経験と知識を共有することができた」という結果にも合うので、bは(七)です。
aが(一)、bが(七)で、答えはオです。
迷いやすい選択肢:役割を固定するイ・ウ
最後まで迷いやすいのは、役割を固定したイとウです。M4とM6の組合せは正しいからです。決め手は本文の結果の書き方で、「経験を伝えることができた」ではなく「経験と知識を共有することができた」となっています。一方向ではなく双方向です。
aに「組織的」を入れたカ〜コは、表1の「マネジメントする」という言い回しにつられた選択肢です。表1の説明は「メンバー全員が[ a ]に協働できるように支援、マネジメントする」で、支援の目的として、チームが自ら動く状態を表す語が入ります。
時間をかけないコツ:表1を2つの軸に直す
解く時間の目安は4分ほどです(当サイトの推測)。表1は列が多く、スマホでは読みにくいので、上のように2つの軸(アジャイル開発の経験・現行システムの経験)だけの表に頭の中で直すと、組合せがすぐに見えます。
M1〜M3の経験は、この設問には関係しません。表2の開発プロセスも、ペアプログラミングを行うことを確かめるだけで十分です。読む範囲を絞るのも、時間短縮のポイントです。
スクラムガイドと照らす:用語の違いと育成の目的
本文の体制には、スクラムガイドの用語と少し違うところがあります。2020年版のスクラムガイドでは、開発を担う人たちは「開発者」と呼ばれ、「開発チーム」という役割はありません。アジャイルコーチも、スクラムガイドで定義された役割ではありません。本文は、プロジェクトで一般に使われる呼び方で体制を組んでいると読めます。試験では、本文の定義(表1の役割の説明)に従って考えます。
また、この開発の目的には「アジャイル開発の経験者を育成する」ことが含まれています。そのため、ペアの組み方は作業の効率よりも、経験の偏りをならす観点で決められています。納期を優先する開発なら、交代の手間を省いて、現行システムに詳しいM4にドライバーを任せ続けるなど、別の組み方もありえます。
参考にした資料
独立行政法人情報処理推進機構(IPA)(確認)
Ken Schwaber & Jeff Sutherland(日本語訳)(確認)