調査研究の位置付け

背景

市場や技術が急速に変化するビジネス環境において,顧客や利用者の要求を満たすソフトウェアをいかに迅速に提供できるのかがIT事業を成功させる鍵である.特に,信頼性の高いソフトウェアを効率的に開発し,IT事業で利益を創出し続けるためには,既存の資産を最大限に活用することが重要である.しかしながら,実際,さまざまなシステムが,仕様変更への対応の繰り返しの結果として大規模化複雑化し,保守が困難となる状況に直面している.このような状況において,何の戦略を持たないまま既存資産を活用することは非常に困難である.

このような事態を解決する方法の一つとして,従来の新規開発や派生開発から,プロダクトライン開発[1]への移行が考えられる.既存のシステム(レガシーシステム)からコア資産を抽出し,それを適切に維持・管理していくことで,信頼性の高いソフトウェアを効率的に開発できる可能性が高まる.これにより,今後の保守や開発において大幅な費用の削減が見込める.このような観点から,プロダクトライン開発への移行に対するソフトウェア開発現場や保守現場からの期待は大きい.

目的

ソフトウェア進化を効率的に実践するためには,ソフトウェア進化やその技術に関する共通の問題認識を持ち,産学連携による調査研究を通して共通問題を解決することが重要である.このような認識に基づき,平成25年度において「ソフトウェア進化技術の実践に関する調査研究」を実施し,5種類20個の進化パターンを収録した進化パターン集を発行した[2].ここで,ソフトウェアパターンとは,ソフトウェア開発の特定の領域において繰り返し現れる問題とその解決策を目に見える形で体系的に表現したものである.

平成26年度の調査研究では,近年のソフトウェア開発において期待の大きいプロダクトライン開発に焦点を当て,その進化を取り上げて調査研究を行う.SPL における進化プロセスのモデルを示すことで,SPL進化に対する理解の促進を目指す.

戦略的意義

プロダクトライン開発は通常のアプリケーション開発と異なり,プロダクトラインの進化をシステム単体の進化を同じように実現することはできない[3].特に,プロダクトライン開発では,プロダクトラインエンジニアリングとアプリケーションエンジニアリングを明確に区別し,コア資産を中心に開発が行われる.よって,プロダクトライン開発への移行においては,以下の2点を同時に考慮しなければならない.

  1. 既存アプリケーションからコア資産をどのように抽出するか
  2. コア資産を利用していない既存アプリケーションを,コア資産を利用するアプリケーションにどのように作り変えるか

このことを受けると,プロダクトラインの進化とは,以下の2点で捉えることができる.

  1. コア資産をどのように進化させるか
  2. コア資産を利用して構築したアプリケーションをどのように進化させるか

これら2つの進化は密接に結びついており,共進化(co-evolution)を引き起こす.たとえば,コア資産が変更された場合,それを用いて構築されているアプリケーションの変更は必須である.反対に,変更要求に合わせてアプリケーションが書き換えられると,アプリケーション間(ファミリ内のアプリケーション群)に共有化部分が新たに生み出されたり,既存の共通化部分が消えたりすることがある.このような状況において,アプリケーションを効率的に保守するためには,共通部分のコア資産への組み込みやコア資産の改訂を行うことは当然である.また,ビジネス戦略や形態の変化により,コア資産やそれを用いて開発したアプリケーションのステークホルダも変化する可能性が高い.アプリケーションレベルだけでなく,上流における要求やステークホルダの変化を取り込んだプロダクトラインの進化も考えていく必要がある.

本研究調査では,プロダクトラインの進化という新しい技術に対して,研究者,技術者,実践者を参加させた会合を開催する.これにより,プロダクトライン進化を実現する実践的な技術の創出と,その技術のソフトウェア開発および保守現場への浸透を達成する.プロダクトラインの進化という,今後必ず直面する問題にいち早く取り組み,その技術を調査研究することに大きな意義がある.

調査研究の概要

本調査研究の最終成果は,以下に示す2点である.これらを達成するため,全部で7回の会合を開催した.

プロダクトライン開発の進化モデルの構築

プロダクトライン進化が,コア資産とアプリケーションの共進化である可能性を述べた.しかしながら,実際の開発現場や保守現場でプロダクトライン進化を実践するためには,このような漠然とした概念の提示だけでは不十分である.たとえば,リファクタリングは,実際の開発現場や保守現場で受け入れられやすい形で定義されており,これがその技術の普及を大きく貢献していると考えられる.開発者や保守者が実際にプロダクトライン進化を実践する際の心理的障壁を軽減するためには,具体的かつ理解しやすいモデルの構築が必須である.

プロダクトライン開発の進化を支える技術の共有

プロダクトライン開発の進化を支える技術を調査し,それをまとめることで情報の共有を達成する.本成果報告書では,プロダクトライン進化を支える技術として,リファクタリング,変更影響分析,ソフトウェアリポジトリマイニングについて文献調査を行った.


参考文献
ページのトップへ戻る