アセットとコンポーネントはどこが違う?アセットベースド開発 事始め(2)(1/2 ページ)

アセットベースド開発は再利用を志向するが、“コンポーネント”とどう違うのだろうか? “アセット”の定義・要件を踏まえて、説明しよう。

» 2009年06月02日 12時00分 公開

 前回は、アセットベース開発の前提となる再利用の現実や課題認識を提示しました。しかし、“アセット”という単語を連呼するわりには、その定義を明確にしていませんでしたね。今回は、IBM Rationalが提唱している「アセットベース開発」においては何をもって“アセット”と呼んでいるか、そのあたりを解説していきます。

“アセット” Not equal “コンポーネント”

 そもそも“アセット”という言葉自体は、金融業界で株や証券のような直接お金に結び付くまさに“資産”に対してよく知られています。「○○アセットマネジメント」なんて名前の会社もありますね。

 同様にITの世界においても、ソフトウェアがその重要性が増すにつれて、「会社にとって大切な資産である」という認識の下、“アセット”という言葉が使われています。しかし、ソフトウェア開発の文脈で“アセット”の定義が明確には存在しないため、単に「大切であるというニュアンスを伝える言葉」でとどまっているのが現実です。

 Rationalの提唱するアセットベース開発では、アセットの定義(あるいは、アセットに求められる要件)として、以下のものを掲げています。

  • アセットは、所与の課題に対する解決策である
  • アセットは、解決策を構成する1つ以上の成果物からなる
  • アセットは、同種の課題に対して繰り返し適用できるよう、再利用されることを前提としている

 図1は、アセットのコンセプトを図示したものです。

 オブジェクト指向プログラミングの世界では当初からソフトウェアの再利用が前提とされており、それを可能にする仕組みが言語レベルで組み入れられてきました。システムの構造に関しても全体を部品(コンポーネント)の集合体と見なして、再利用を適用しやすくするコンポーネント・アーキテクチャという考え方が当初から提唱されてきました。これに対して、アセットベース開発の文脈では、これらの部品はアセットの内部に格納される”成果物”に相当します。

ALT 図1 アセットとコンポーネント

 同じ再利用を志しているコンポーネントとアセットですが、その違いを簡単に述べると、以下のようになります。

  • コンポーネントは、実際に稼働する解決策の実体であり、いわば“解決策そのもの(あるいはその一部)”
  • アセットは、同種の課題を抱えた開発者に、再利用してもらえるよう付帯情報を追加してパッケージングしたもの

 「(バイナリとして)実際に動くプログラム」と「利用ガイドなどがついた箱入り商品」のような違いといっていいでしょう(少々乱暴ですが)。

 では、付帯情報としてどのようなものが必要とされているでしょうか? それは次の3点です。

  1. コンテキスト(for a context)
  2. 使用法(with rules for usage)
  3. 可変点(variability point)

 以下、1つずつ取り上げていきましょう。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ