プロダクトライン開発における品質の向上効果
セイコーエプソン株式会社
島 敏博
5.機能を担当させる体制づくりにより品質を向上させる
共通部と可変部に分けて開発するのがプロダクトライン開発ですが、これは必ずしも組織を2つに分けることではありません。組織作りにはいろいろな方法があると思いますが、図5のように担当者を決めて機能を担当させる方法がお薦めです。
図 5:機能を担当する体制づくり
図5は機能ごとに担当者を割り振る方法です。ある特定の機能Aに注目すると、その機能の開発に責任をもっているリーダーAは、その機能の共通部と可変部の両方を担当しています。第2世代では、自分で作った共通部を使って、2つの機種の可変部を開発し、それぞれ組み合わせて製品をリリースします。
リーダーは共通部を作ると共に可変部を作り、さらに同じ共通部を使って複数の派生機種を開発することをミッションとします。自分で実装しやすくすると同時に他人にも使ってもらいやすいインターフェースを作るわけです。このようにリーダーは作る側と使う側の両方を担当するということとなります。
さらに派生機種を増やしていく段階で、次世代リーダーBさんを育成します。そのときはまず可変部を作ってもらいながらプロダクトラインの基本を伝授します。
マスターした次世代リーダーBは、やがて機能BのリーダーBとなります。
6. テストもプロダクトライン開発することにより、製品もテストも一括して品質向上させる
モデル駆動開発を活用することで、プロダクトライン開発を加速することができます。製品をモデル駆動開発する場合、テストもモデル駆動開発します。設計したものは開発者が自分でテストします。図6をご覧ください。
図 6:製品とテストの両方をモデル駆動開発する
設計者は、製品用のモデル図面と、テストスイート用のモデル図面を同時に設計します。クラス図上に、製品用のクラスと、テスト用のクラスを描きます。状態マシン図なら、製品用の状態マシンを表した図のほかに、その状態マシンをテストするためのテストクラス側の状態マシンの図も描きます。
それらの図からそれぞれコード生成させ、PC上でテストします。
うまく動くかどうか確認しうまく動いたら、今度は両方のモデルから、それぞれ実機用のソースコードを生成させ、ターゲット上でテストをします。
製品コードをリファクタリングした後も、それにあわせてテスト用コードもリファクタリングしてテストが通る状態を維持します。これにより品質が落ちていくのを防ぎます。テスト周期、リリース周期は1日以内とし、常に2つを同時にリリースします。
このとき(テストコード行数/ソースコード行数)のメトリックスをモジュールごとに計測して見える化することをお薦めします。
さらに、いったん作り上げたプロダクトラインプラットフォームが崩れないように監視していくプロセスも取り入れます。依存性構造マトリックスを作成し、認められない循環参照、逆向き参照、飛び越し参照などを追加してプラットフォームが崩れ出さないかも監視します。自動化し深夜プロセスに組み込みます。
このように、プロダクトライン開発では、製品群開発を効率的に進められるように、世代を重ねてよい設計に変え、よいプロセスに変えつづけていくことが大切です。それにより、これまで述べたようにソフトウェア品質を高めることができます。