ソフトウェア再利用、その理想と現実アセットベースド開発 事始め(1)(1/2 ページ)

すでにあるものを使う――再利用はソフトウェア業界長年のテーマだが、一筋縄ではいかない。その問題点とは?

» 2009年04月20日 12時00分 公開
[藤井 智弘(日本IBM ラショナル事業部),@IT]

 ソフトウェアの開発生産性の向上は、開発組織にとって永遠のテーマといえるでしょう。さまざまな言語やフレームワークが“生産性の向上”をうたい文句に、世に現れては消えていきます。しかし、それら新しい道具立てへの関心は、主に、「ゼロから構築するときにいかに速く」という文脈で語られることが多いように思います。その一方で、“再利用”はそもそも「いかに作らずに済ますか?」を念頭に置いた異なるアプローチです。ソフトウェア再利用は、『ソフトウェア再利用の神話』(※)という名の書籍が出るほど、1つの理想とされながらそれをどう実現するか?という具体化の段階で多くの組織が立ち止まってしまう“難しいテーマ”と思われています。


※注
▼『ソフトウェア再利用の神話――ソフトウェア再利用の制度化に向けて』 ウィル・トレイツ=著/畑崎隆雄、鈴木博之、林雅弘=訳/ピアソンエデュケーション/2001年11月


 筆者が所属するIBM Rational部門は、オブジェクト指向技術を土台に、設計開発の技法やツールを長年にわたって提供してきたベンダです。ここ数年、組織的な再利用を促進するための製品開発や標準化への取り組みを地道に続け、アセットベースド開発(Asset-based Development)というプロセス体系をまとめ上げるにいたりました。

 本稿では、組織的な再利用を検討されている皆さんの参考になるよう、アセットベースド開発の根底にある考え方をご紹介します。とはいいつつ、本サイトはIBMのちょーちん記事を書き連ねるサイトではありません(もちろん、筆者も先刻承知しております)。具体的なイメージを持っていただくために、製品の画面などが出てくることがありますが、下品な製品紹介記事に堕落しないよう、自らを戒めつつ筆を進めていきます。

“組織的である”ということ

 しょっぱなから「難しい」を連発しておいてなんですが、現場では結構、再利用がされていますよね? いくつか例を挙げると――、

  • Strutsを代表格に、オープンソースは再利用の最たる例といえるでしょう
  • 携帯電話や多機能プリンタのベンダさんは、年に2〜3回、同時期に多機種をリリースするというビジネスモデルなので、毎回ゼロから作ることはあきらめて、「共通基盤を整備しておき、機種ごとの差異は、差分的に作りこむ」という開発形態に移行しつつありますね
  • システムインテグレータさんは、ある案件で受託開発したシステムをベースとして(“パッケージ”なんていったりしますね)、同種の他社向け案件を開発する例が多くなっています
  • 実はSOAというのも、ビジネスプロセスを、「再利用可能なより小さなビジネスプロセスの集合体」として実装するという点で、再利用を前提としたアーキテクチャといえるでしょう

――と、まぁこんな具合です。

 最近では、「ソフトウェアプロダクトライン、勉強してます」というお客さまも珍しくなくなってきました。

 アセットベースド開発は、組織的な取り組みとして再利用ベースの開発を運営していくためのプロセス体系です。わざわざ“組織的”と明言するのには、理由があります。

単一のプロジェクトの中で、再利用を考えるのは、そもそも無理がある



 昔からよく引用される例ですが、「実際のプロジェクトで開発されたモジュールを、別のプロジェクトでも再利用できるように意識しながら作ろうとすると、コストは5割増しになる」といわれます。また、「実際に使える再利用モジュールにするには、少なくとも3つのプロジェクトで利用してフィードバックを得よ」ってなこともいわれます。まぁ、“5割”とか“3つ”という数値そのものは経験値的な色合いが濃いとは思いますが、これらのフレーズが示唆するのは、単一プロジェクトの中だけで再利用を考えると、単なるコスト増加要因にしかならない、ということです。

 再利用に関するコストモデルは1980年代の後半からさまざまな研究がなされていますが、よく引用される式の1つが、Gaffney & Durekの研究による式1です。いろんな前提条件があるのですが、少々乱暴に説明すると、再利用のコストモデルを考える際には、以下の数値を考えます。

式1:再利用のコストにおける代表的な考え方

  Payoff threshold = RCWR/(1-RCR)
Payoff threshold :何回再利用すれば、コスト的に見合うか?
RCWR :再利用可能な成果物を製造する場合のコスト比率
RCR :再利用するコストの製造コスト比率

Payoff Threshold: RCWR & RCR Values
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
* Gaffney & Durek research
* Poulin research
  1. 後々再利用できるよう意識して成果物を作った場合の、再利用を意識しなかったときの製造原価に対するコスト比率(RCWR)
  2. 再利用することで発生するコストの、製造原価に対するコスト比率(RCR)

 1.と2.から、あるアセットを何回再利用すれば、再利用化にかけたコストを回収できるか? を求めるのです。

 ちょっと単純化して考えて見ましょう。

 ここに、再利用性を意識しなければ100ドルで製造できるモジュールがあるとします。再利用が促進されていない状態で、同等の機能性を持ったモジュールを、あちらこちらのプロジェクトで必要に駆られて作れば、「製造コスト(100ドル)×プロジェクト数」のコストを組織全体として負担することになります。再利用を前提に考えた場合、「再利用を意識した場合のコストは、意識しない場合の5割増し」と通説にのっとるとして、最初のプロジェクトにおける製造コストは1.5×100ドルとなります(すなわち表内の網掛け部分、RCWR=1.5)。しかし、そのモジュールと同等のものをほかのプロジェクトで使う場合には、すでに存在するわけですから、製造コストは0(ゼロ)です。すなわち、2回のプロジェクト適用を考えると、再利用を考慮しない(=重複開発した)場合は200ドル、再利用を考慮した場合は、150ドルで済むことになります。

――なんて簡単にいってますが、実際には再利用でのコストはゼロではありません。過去に自分が作った成果物ならいざ知らず、他人が作ったものであれば、その利用法を学習したり自分のプロジェクトに合わせて若干のカスタマイズをしたりするコストが発生します。この再利用のために利用者側で発生するコスト(の比率)を表現するのが、2.のRCRです。

 これらを加味して、おのおののRCWR、RCRの下で何回再利用すればコスト的に等しくなるかを計算したものが、表内のbreakeven pointです。

 Rational部門が再利用を促進するために注目しているのは、再利用可能なアセットを作るコストを抑える(RCWRを下げる)ことよりも、利用者側がアセットを再利用する際にかかるコスト、すなわちRCRを下げる仕組みをいかに作るか?という点です。

 「再利用の際にかかるコストを下げ、再利用度を高めることによって、アセット化にかかった開発コストを複数のプロジェクト広く浅く負担してもらうことで回収しよう」というのが、アセットベースド開発のコストに対する考え方です。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ