自動化技術とともに「再利用技術」は、ソフトウエアの生産技術の重要な要素技術です。昔も今も、既にあるソフトウエアを再利用したいという欲求は、開発現場には必ずあるものです。生産性を向上するには、既に作ったものを再利用することで、作らずに済むことが最も簡単な方法に思えるからです。しかしながら、関係者の多くはソフトウエアの再利用はうまくいっていないと感じているのではないでしょうか。

 これまで取り上げてきた自動化技術と同様に、再利用技術も着実に進歩してきており、それがソフトウエア開発における生産性を向上させてきたのは間違いありません。これまでもサブルーチン、ライブラリ、フレームワーク、パターンといった形で実現され利用されています。おそらく比較的小さいレベルの再利用であるため、明確に意識されずに利用されており、そのことがうまくいっている実感が浸透しない原因かもしれません。

 再利用技術が、小さいレベルの再利用から抜け出しさらに発展するためには、自動化技術と同様に、再利用の観点でもITリソースを最大限に活用することを考える必要があります。そこに再利用技術が大きく発展する可能性があり、実際にいくつかの挑戦が始まっています。

再利用を変えた資産のデジタル化と技術・ツールの成熟

 ソフトウエア開発における再利用技術の歴史は古くからあります。1968年にドイツGarmischで開催された初めてのソフトウエア工学に関する会議で、既に「ソフトウエア部品」という概念が提案されており、その後の再利用技術の進展はソフトウエア開発に大きな影響を与えてきました。例えばこれまで再利用技術には以下のようなものがありました。

  • 構造化プログラミングの登場にともない、頻繁に利用する機能を共通的に利用する「サブルーチン」としてプログラムを部品化する手法が使われるようになりました。サブルーチンの再利用は科学技術計算など限られた範囲もしくは主にプロジェクトに閉じた形で進みました
  • Javaなどのオブジェクト指向言語の登場・発展により、プログラム部品はより拡張性が高く再利用が容易な「クラスライブラリ」や「フレームワーク」として部品化できるようになりました。複数のプロジェクト間での再利用を意図されたものが多く、オープンソースソフトウエアとして世界的に広く流通しているものもあります
  • SAP社などのベンダーが販売している「パッケージ製品」は、小規模なプログラム単位の再利用ではなく、業務も含めた大きな単位でソフトウエアを再利用するものであり、ERPの分野等で成功しています
  • 近年は「ソフトウエアパターン」としてソフトウエア開発における“定石集”が広く普及しています。ソフトウエアそのものを直接再利用するものではありませんが、これも一種の再利用技術といえます。例えば、ソフトウエア設計の定石を集めたデザインパターンや、ソフトウエア構造の定石を集めたアーキテクチャパターンなどがあります

 これらの再利用技術とその発展が、これまでソフトウエア開発の生産性向上に大きく貢献してきたことは間違いありません。そして今後、再利用技術が発展を遂げる方向性を考える上で重要な背景となるのは、IT要素技術の劇的な進歩です。図1に、IT要素技術の進歩が開発現場に起こしている変化とそれを踏まえた再利用技術の発展の方向性を示しました。

図1●再利用技術の発展の方向性