2020年 秋期 応用情報技術者試験 問8
アジャイルソフトウェア開発手法の導入
H社は,電車や飛行機などの移動手段と宿泊施設をセットにしたパッケージツアーをインターネットで販売している。このサービスを提供している現行システムに,移動途中や宿泊先近辺の商業施設と提携して,観光地の情報提供やクーポン配布を行うサービスを追加することになった。その開発手法として,アジャイルソフトウェア開発(以下,アジャイル開発という)手法の一つであるスクラムを採用する。
[開発体制の検討]
本開発を通してH社でアジャイル開発経験者を育成するために,プロジェクトメンバに求められる役割と割り当てるメンバ(M1~M7)について検討した。その開発体制を表1に示す。
役割 | 役割の説明 | メンバ | メンバの経験 |
---|---|---|---|
a | 提供する商業施設との調整を行い,追加するサービスに必要な機能を定義し,その機能を順位付けする。 | M1 | アジャイル開発経験はなく,知識もほとんどない。 |
スクラムマスタ | メンバ全員がbに協働できるように支援,マネジメントする。 | M2 | アジャイル開発経験はあるがスクラムマスタの経験はない。 |
アジャイルコーチ | 週に2日,社外から招へいされ,メンバに対してアジャイル開発手法の導入や改善を支援する。 | M3 | スクラムマスタの経験が豊富である。 |
開発チーム | 実際に開発を行う。 | M4, M5 | アジャイル開発経験はないが,現行システムをウォータフォールで開発した経験がある。 |
M6, M7 | アジャイル開発経験はあるが,現行システムを開発した経験はない。 |
[開発プロセスの検討]
アジャイル開発経験者からアジャイル開発経験のないメンバに経験を伝えるために,プランニングポーカやペアプログラミングなどのプラクティスを幾つか導入することにした。検討した開発プロセスを表2に示す。
大分類 | 小分類 | 実施項目 |
---|---|---|
プロジェクト立上げ | (1) プロジェクト方針の検討 | 追加するサービスの目標,あるべき姿,基本的価値観の共有を図る。 |
プロダクトバックログの決定 | (2) システムの目的の合意 | システムの目的やゴールの共有を行う。 |
スプリント | (3) リリース計画 | プロダクトバックログのグルーピングを行い,プロダクトバックログアイテムを決定する。 |
(4) スプリント計画(イテレーション計画) | プランニングポーカを用いて,チーム全員の知識や経験を共有しながらストーリポイントを用いた見積りを行う。実施するタスクをスプリントバックログに追加する。 | |
(5) スプリント | タスクを実施する。プロダクトコードを開発する際は,①ペアプログラミングを行う。デイリースクラム(日次ミーティング)でチームの状況を共有する。 | |
(6) スプリントレビュー(デモ) | スプリントの成果物をaにデモする。その結果を,次のスプリント計画のインプットにする。 | |
(7) レトロスペクティブ(ふりかえり) | スプリント中の改善事項を検討し,次回以降のスプリントで取り組むべき課題にする。 |
週に2日,社外から招へいするアジャイルコーチが効果的にプロジェクトに参画できるようにするため,招へいするタイミングをc及びdのフェーズリティーダを依頼するタイミングに合わせてもらうことにした。
また,プロジェクトの進捗状況を可視化するためにバーンダウンチャートをホワイトボードに書き,eためにスプリントごとのベロシティを計測することにした。
[レトロスペクティブの実施]
初回のスプリントのレトロスペクティブにおいて,二つの問題点が取り上げられた。
一つ目は,②デイリースクラムに目安の倍以上の時間を掛けてしまう問題点である。状況を確認したところ,このミーティングはメンバの出社時間がバラバラなので夕方に実施していた。また,その日の問題を解消するために解決方法まで議論することにしていた。さらに,進捗状況を共有するために,タスクボードを作成し,その周囲に集まって立った状態で実施していた。
二つ目は,スプリント計画どおりにタスクを全て終わらせることができなかった問題点である。③スプリントバックログ管理上の課題を分析するために,バーンダウンチャートを用いてポイントと考えられる箇所について確認した。バーンダウンチャートを図1に,確認したポイントを図2に示す。

• スプリント開始直後はメンバがスクラム固有の進め方に慣れていないために実績が少なかった。
• 8日経過時点で,提携する商業施設からの要望でスプリントバックログにタスクが追加された。
• 8日経過時点からの7日間,類似機能の開発のため予定より速くタスクを消化できた。
• 16日経過時点で,考慮していないテストシナリオのタスクが見つかったので,そのタスクが追加された。
二つの問題点それぞれについて原因と解決策,課題を分析して,次回以降のスプリントで改善に取り組んだ結果,それらの問題点を解決できた。