調査研究の位置付け

背景

 ソフトウェア進化の法則[1]によると,ソフトウェアは,本質的に出荷後も利用者の要求の変化や利用環境の変化に応じて,継続的に変更され続けなければならない.この法則の科学的根拠に関しては議論の余地はあるものの,ソフトウェア開発に関わる技術者や実務者にとって,ソフトウェアにとって進化が避けられないという実感は強い.実際,さまざまなシステムが,仕様変更への対応の繰り返しの結果として大規模化複雑化し,保守が困難となる状況に直面している.特に,運用のシステムのプラットフォームの陳腐化のため,オープンプラットフォームに移行しようとするものの,現状の状況把握のための分析コストが多大に必要になり,移行がスムーズにいかないケースも増えている.このため,ソフトウェア進化技術に対するソフトウェア開発現場からの期待は大きく,進化に関するさまざまな研究成果が報告されている.

 このような状況を受けて,ソフトウェア進化研究の分類と動向について文献調査が報告されている[2].しかし,残念ながら,それぞれの進化技術が実際のソフトウェア開発においてどのように役に立つのかを明らかにするまでに至っていない.たとえば,ソースコードの進化を実現するという目的に対して,数々のプログラム解析技術が活用されていることは分かるが,それらの技術が実際のソフトウェア開発や保守において,どのように役に立つのかについては未整理なままである.よって,この調査報告は,研究者が進化研究の現状や動向を把握するという観点での目的は達成しているものの,技術者や実践者が進化技術を実際に活用することを支援するためには不十分である.

戦略的意義

 このような状況を打破するためには,ソフトウェア進化活動において,どのような場面で,どのような技術を,どのように適用すればよいのかを示す指針や慣例が必須である.つまり,技術者や実践者にとって有益な指針や慣例に焦点を当て,進化技術を整理し直すことが望まれる.

 このような考え方は,ソフトウェア進化のパターン構築と捉えることができ,特に新しい概念ではない.たとえば,リファクタリング[3]は既存ソフトウェアの改変を支援する進化パターンと見なすことができる.また,Demeyerらは,ソフトウェアリエンジニアリング活動における問題とその解決方法をパターンとしてまとめている[4].このようなパターンを開発者や保守者が知識として備えることで,過去のソフトウェア資産を有効に活用(改善や移植)することが見込める.

 しかしながら,これらのパターンは,単独のソフトウェアの変更を対象としており,進化においてソフトウェア変更が繰り返し発生するという事象を考慮していない.進化を真に支援するためには,ソフトウェア変更を短期的な活動として捉えるのではなく,むしろ長期的な活動として捉え,繰り返し発生するソフトウェア変更間で引き継がれる情報を収集および管理する技術の活用が鍵となる.このため,進化パターンには,ソフトウェア変更をどのように実現するかという解決方法だけでなく,今後のソフトウェア変更や類似のソフトウェア変更に活用可能な情報に関する方針を記述しておくのが良い.たとえば,どのような情報をどのような表現で残しておくのか,どのように情報を収集するのか,収集した情報をどのように活用するのかを,知識として共有できるようにしておくべきである.

 このような観点から,本調査研究では,ソフトウェア進化に関して共通の問題認識を持ち,産学協同による研究を通して共通の問題を解決し,各社固有の事業発展の加速を促すことに貢献していく.進化パターンの構築というひとつの目標に対して,研究者,技術者,実践者を参加させる.これにより,ソフトウェア進化を支える情報管理技術の創出と,進化技術のソフトウェア開発および保守現場への浸透を同時に達成することに意義がある.

調査研究の概要

 本調査研究の最終成果は,進化パターン集の発行である.ここで,本調査研究では,調査研究の期間が限られているため,ソフトウェアリエンジニアリング活動に関わるソフトウェア進化に対象を絞る.これは,ソフトウェア保守におけるレガシーシステムの存在と活用,ソフトウェアの延命化という課題を受けての判断である.

 ソフトウェア進化パターンの構築を実現するため,本調査研究では以下の2点に焦点を当て,全部で9回の会合を開催した.

  1. ソフトウェア進化活動に役立つ情報の共有
  2. 技術者や実践者観点(目的達成指向)での進化パターンの記述

 それぞれの項目に関して,本調査研究の内容を示す.

ソフトウェア進化活動に役立つ情報の共有

 実際のソフトウェア開発で実施されているリエンジニアリング活動の事例を調査する.開発者や保守者が,どのような場面でどのような情報をどの程度利用しているのかを,産学共同のミーティングにおいて分析する.同時に,開発者や保守者の活動にとって,不足していると思われる情報についてもシーズ指向で洗い出す.

 具体的には,第2〜4回会合において,企業側の事例報告と大学側からの研究報告を実施した.これにより,ソフトウェア進化活動の実態と進化研究に関する要素技術の現状の意識合わせを行った.

技術者や実践者観点(目的達成指向)での進化パターンの記述

 調査したリエンジニアリング活動に基づき,ソフトウェア進化パターンの収集を行う.特に,ソフトウェアプロダクトラインやソフトウェア変更支援における履歴やマイクロブログの活用など,近年急激に普及した概念を扱うパターンを収集する,さらに,コードクローン,リファクタリング,プログラム理解や変更に関する要素技術の進歩と言う観点から,進化パターンの追加を試みる.

 具体的には,第5回会合において,進化パターンの提案を持ち寄った.第6〜7回会合において,それぞれのパターンに対する適用場面や解法などに関する議論を通して洗練した.洗練後の進化パターンを,本調査研究の成果としてパターン集にまとめた.


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