すでにあるものを使う――再利用はソフトウェア業界長年のテーマだが、一筋縄ではいかない。その問題点とは?
ソフトウェアの開発生産性の向上は、開発組織にとって永遠のテーマといえるでしょう。さまざまな言語やフレームワークが“生産性の向上”をうたい文句に、世に現れては消えていきます。しかし、それら新しい道具立てへの関心は、主に、「ゼロから構築するときにいかに速く」という文脈で語られることが多いように思います。その一方で、“再利用”はそもそも「いかに作らずに済ますか?」を念頭に置いた異なるアプローチです。ソフトウェア再利用は、『ソフトウェア再利用の神話』(※)という名の書籍が出るほど、1つの理想とされながらそれをどう実現するか?という具体化の段階で多くの組織が立ち止まってしまう“難しいテーマ”と思われています。
筆者が所属するIBM Rational部門は、オブジェクト指向技術を土台に、設計開発の技法やツールを長年にわたって提供してきたベンダです。ここ数年、組織的な再利用を促進するための製品開発や標準化への取り組みを地道に続け、アセットベースド開発(Asset-based Development)というプロセス体系をまとめ上げるにいたりました。
本稿では、組織的な再利用を検討されている皆さんの参考になるよう、アセットベースド開発の根底にある考え方をご紹介します。とはいいつつ、本サイトはIBMのちょーちん記事を書き連ねるサイトではありません(もちろん、筆者も先刻承知しております)。具体的なイメージを持っていただくために、製品の画面などが出てくることがありますが、下品な製品紹介記事に堕落しないよう、自らを戒めつつ筆を進めていきます。
しょっぱなから「難しい」を連発しておいてなんですが、現場では結構、再利用がされていますよね? いくつか例を挙げると――、
――と、まぁこんな具合です。
最近では、「ソフトウェアプロダクトライン、勉強してます」というお客さまも珍しくなくなってきました。
アセットベースド開発は、組織的な取り組みとして再利用ベースの開発を運営していくためのプロセス体系です。わざわざ“組織的”と明言するのには、理由があります。
単一のプロジェクトの中で、再利用を考えるのは、そもそも無理がある
昔からよく引用される例ですが、「実際のプロジェクトで開発されたモジュールを、別のプロジェクトでも再利用できるように意識しながら作ろうとすると、コストは5割増しになる」といわれます。また、「実際に使える再利用モジュールにするには、少なくとも3つのプロジェクトで利用してフィードバックを得よ」ってなこともいわれます。まぁ、“5割”とか“3つ”という数値そのものは経験値的な色合いが濃いとは思いますが、これらのフレーズが示唆するのは、単一プロジェクトの中だけで再利用を考えると、単なるコスト増加要因にしかならない、ということです。
再利用に関するコストモデルは1980年代の後半からさまざまな研究がなされていますが、よく引用される式の1つが、Gaffney & Durekの研究による式1です。いろんな前提条件があるのですが、少々乱暴に説明すると、再利用のコストモデルを考える際には、以下の数値を考えます。
Payoff threshold :何回再利用すれば、コスト的に見合うか? | |
RCWR :再利用可能な成果物を製造する場合のコスト比率 | |
RCR :再利用するコストの製造コスト比率 |
RCWR | RCR | Breakeven point (# uses) |
1.25 | 0.1 | 1.39 |
1.25 | 0.35 | 1.92 |
1.25 | 0.85 | 8.33 |
1.5 | 0.2 | 1.88 |
2 | 0.1 | 2.22 |
2 | 0.35 | 3.08 |
2 | 0.85 | 13.33 |
1.と2.から、あるアセットを何回再利用すれば、再利用化にかけたコストを回収できるか? を求めるのです。
ちょっと単純化して考えて見ましょう。
ここに、再利用性を意識しなければ100ドルで製造できるモジュールがあるとします。再利用が促進されていない状態で、同等の機能性を持ったモジュールを、あちらこちらのプロジェクトで必要に駆られて作れば、「製造コスト(100ドル)×プロジェクト数」のコストを組織全体として負担することになります。再利用を前提に考えた場合、「再利用を意識した場合のコストは、意識しない場合の5割増し」と通説にのっとるとして、最初のプロジェクトにおける製造コストは1.5×100ドルとなります(すなわち表内の網掛け部分、RCWR=1.5)。しかし、そのモジュールと同等のものをほかのプロジェクトで使う場合には、すでに存在するわけですから、製造コストは0(ゼロ)です。すなわち、2回のプロジェクト適用を考えると、再利用を考慮しない(=重複開発した)場合は200ドル、再利用を考慮した場合は、150ドルで済むことになります。
――なんて簡単にいってますが、実際には再利用でのコストはゼロではありません。過去に自分が作った成果物ならいざ知らず、他人が作ったものであれば、その利用法を学習したり自分のプロジェクトに合わせて若干のカスタマイズをしたりするコストが発生します。この再利用のために利用者側で発生するコスト(の比率)を表現するのが、2.のRCRです。
これらを加味して、おのおののRCWR、RCRの下で何回再利用すればコスト的に等しくなるかを計算したものが、表内のbreakeven pointです。
Rational部門が再利用を促進するために注目しているのは、再利用可能なアセットを作るコストを抑える(RCWRを下げる)ことよりも、利用者側がアセットを再利用する際にかかるコスト、すなわちRCRを下げる仕組みをいかに作るか?という点です。
「再利用の際にかかるコストを下げ、再利用度を高めることによって、アセット化にかかった開発コストを複数のプロジェクト広く浅く負担してもらうことで回収しよう」というのが、アセットベースド開発のコストに対する考え方です。
Copyright © ITmedia, Inc. All Rights Reserved.