人間を支援するツールとしてプロセスを導入する ―― ソフトウェア品質シンポジウム 2012(SQiP 2012)(2)
●派生開発のXDDPとチーム開発SCRUMを併用,生産性と品質が向上
ソニーイーエムシーエスの勝又 淳氏は,「XDDPとSCRUMによるチーム型派生開発の取り組み事例」について発表した.XDDP(eXtreme Derivative Development Process)とは,清水 吉男氏が考案した,派生開発(既存の開発物に対して追加や変更を行う開発)に特化した開発アプローチである.追加機能要求や変更要求といった「差分」に着目して仕様書や設計書を作るなど,むだを排除したプロセスとなっている(写真12).勝又氏は2009年,自社の開発プロジェクトにXDDPを導入して大きな適用効果を実感した注1.そして2011年,派生開発でQCD(品質,コスト,納期)の観点で成功し続けるチームを作りたいと考え,チーム全体の生産性向上を目指すアジャイル開発手法「SCRUM」とXDDPの併用に取り組んだ(写真13).
注1:勝又氏はこの効果を,2010年に開催された「ソフトウェア品質シンポジウム2010」において発表した(詳細はこちらを参照).
写真12 XDDPの概要
派生開発に特化してむだを排除している点がポイントである.

写真13 SCRUMの概要
開発期間を,「スプリント」と呼ぶ固定日数(2週間など)ごとの期間で区切って,開発を行う.スプリントごとに目標(計画)を立て,期間の終わりにリリースやレビュー,ふりかえり(反省会)を行う.また,毎日,定刻に,全員で最大15分程度の報告会を行う.この報告会は「デイリー・スクラム」と呼ばれる.デイリー・スクラムでは全員が「昨日から今日までにやったこと」,「今日これからやること」,「問題点」について簡潔に話す.報告会が長くならないように,全員起立して行う.この,デイリー・スクラムによるリズム感が非常に重要であるという.

対象とした開発プロジェクトは,業務用組み込み機器の派生製品開発である(写真14).
写真14 対象とした開発プロジェクトの概要

課題は次の三つだった.
- (1)ハードウェアの仕様変更による手戻りを減らしたい
- (2)開発メンバが毎回異なるので,人的要因のトラブルは避けたい
- (3)突発的なリリース要求に対応できるようになりたい
これらの課題に対し,XDDPで(1)に,SCRUMで(2)と(3)に対応しようと考えた(写真15).まず,開発前半において,ハードウェアの変更の影響を受ける変更要求のみに対してXDDPを適用し,ハードウェアの変更によるリスクを軽減した.また,SCRUMは通常,動くモジュール(ソフトウェア)ができてから実施するものだが,本プロジェクトでは,ソフトウェアが存在しない開始時点から,ドキュメントを動くモジュールに見立ててSCRUMを適用した.これにより,開発メンバがSCRUMに慣れ,SCRUMのリズムに乗れるようにした.また,開発の終盤では突発的なリリース要求が出ることが多いので,頻繁に(スプリントごとに=2週間ごとに)リリースを行った.
写真15 開発工程と三つの工夫点
「#01」,「#02」...と書いてあるのがスプリントである.その下の「#1」,「#2」などがイテレーションである.イテレーションごとにリリースを行っている.

この結果,本プロジェクトは品質保証検査での不具合指摘件数が0件だった.また,ソフトウェア生産性(1時間あたりのコーディング行数)も,過去の類似プロジェクトに比べて大幅に向上した.チームの状況としても,2週間ごとに実施してきたふりかえりで活発に意見が出ており,特に後半で新しい改善提案が多く出ていた.また,突発的なリリース要求にも迅速に対応できた(写真16).
写真16 突発的なリリース要求にも対応

勝又氏は,プロセス改善の3要素としてよく挙げられるQCDを引き合いに出しながら「ソフトウェア開発を支える3要素は,プロセス,人,技術である」と述べた.今回のプロジェクトでは,プロセスと技術をXDDPが,人をSCRUMが支えたという.XDDPによって高いQCD意識を持つことができ,SCRUMによって,チームが自律的に動き,継続的に改善を行うことができた.今後も取り組みを継続する予定.本プロジェクトで残った課題は,システム・テストの重複があったことと,チームの人数が増えたときにどうすればよいかについての検討であるという.