ソフトウェア生産技術革新

ソフトウェア生産技術革新

ソフトウェア再利用技術

ソフトウェアリポジトリマイニング

ソフトウェア資産の再利用への挑戦

ソフトウェア再利用技術は，これまで一定の成功はあるものの，再利用の本質的な難しさにより，数多くの失敗を重ね現在に至っています．しかしながら，近年のソフトウェア資産のビッグデータ化は，再利用技術の難しさを解決できる可能性があります．本稿では，NTTデータが進める新しい再利用技術の研究開発について紹介します．

ソフトウェア再利用技術の経緯
ソフトウェア開発における再利用技

務ソフトウェア部品の共有化 ・ 再利用を目指していましたが，うまくいかずプロジェクトは終了しています．

よ し だ

え い じ

吉田 英嗣
NTTデータ

再利用技術を変革する開発資産のビッグデータ化術の歴史は古くからあります．1968

これまでの再利用技術を総括する

しかし近年，再利用技術を変革する

年にドイツのガルミッシュで開催されと，成功しているものは，小規模な共可能性がある，開発現場の大きな変化た初めてのソフトウェア工学に関する通ライブラリや決まった処理方式を実が出てきました．それは，あらゆる開会議で，すでに「ソフトウェア部品」現するフレームワークなどのソフト発資産のデータ化です．ソースコードという概念が提案されており，その後ウェアの基盤層の部品であり，再利用だけではなく，ドキュメントやテストの再利用技術の進展はソフトウェア開による生産性効果は限られます．
また，資産，開発プロジェクトの活動履歴な発に大きな影響を与えてきました．こ

生産性向上効果の高い再利用としてど，膨大な量の開発資産がデジタル化れまで普及している代表的な再利用技

パッケージがありますが，特定の用途され，流通するようになっています．

術を表に示します．

や業務プロセスを前提にするため，そ重要なことは，それらデータが「コンしかしこれらの再利用技術の普及のの利用も限定されます．結果，再利用ピュータ処理可能なかたち」でデジ

一方で，多くの失敗もありました．例

技術の進展は頭打ちの様相を示していタル化されるようになっていること

えば1990年代後半に始まった「サンます．

です．

フランシスコプロジェクト」では，業

例えば，開発ドキュメントはMicrosoftのOfficeツールやUML（Unified Modeling表

普及している代表的な再利用技術

代表的な再利用技術
サブルーチンクラスライブラリ，フレームワーク

24

概要

構造化プログラミングの登場に伴い広まった，頻繁に利用する機能を共通的に利用するサブルーチンとしてプログラムを部品化する手法．比較的限られた範囲もしくは主に個別ソフトウェアに閉じたかたちで利用されているオブジェクト指向言語の登場 ・ 発展により普及した，拡張性が高く再利用が容易なソフトウェア部品化の手法．複数のプロジェクト間での再利用を意図したものが多く，オープンソースソフトウェアとして世界的に広く流通しているものもある

パッケージ

小規模なプログラム単位の再利用ではなく，業務も含めた大きな単位でソフトウェア資産を再利用するもの．SAP社などを代表として，ERP（Enterprise Resource Planning）の分野などで普及している

ソフトウェアパターン

ソフトウェア開発における “定石集”．ソフトウェア設計の定石を集めたデザインパターンや，ソフトウェア構造の定石を集めたアーキテクチャパターンなどがある

NTT技術ジャーナル 2014.10

Language）エディタなどによりXML化され，バグ情報はBTS（Bug TrackingSystem）のプロジェクト管理ツールによりデータベース化されるようになっています．
NTTデ ー タ に お い て も， 年 間 約5000万行のプログラムがつくられ，それに付随してドキュメントも推定で100万ファイル以上つくられ，蓄積されています．また，Webの登場により，開発資産データは組織を超えて広く流通するようにもなっています．現在

特 集

Web上でアクセス可能な開発情報は，から開発したほうが有利」とさえいわり，それを再利用可能なかたちに構成

大まかに見積もっても， １ 億ページ以れています．

し直したり，再利用可能な資産を抽出上存在します．

コンテキストミスマッチの問題をもしたりすることはできないものでしょさらに，現在「ビッグデータ」が大う少し深掘りすると，再利用の ２ つのきなトレンドとなっています．その技困難性が見えてきます．再利用可能な

今でもソフトウェア開発現場におい術的背景となっている，多種 ・ 大量の資産を作成するときの難しさと利用すて，複数回の開発をこなしていく中でデータを取得，蓄積，分析するためのるときの難しさです．

共通的に必要となる機能などを見出し技術やツールが成熟化し，容易に手に入るようになりました．具体的には，計画的再利用と経験的再利用うか．て部品化するといった活動があります．ただ，その多くは計画的に実施さテキスト検索や非構造データ解析，「再利用資産を作成する難しさ」とれているわけではなく，どちらかといデータマイニング，パターンマッチン

は，将来にわたり複数のソフトウェア

うと無計画に，よくいえば「経験的に」グ，自然言語処理，大規模分散処理，に幅広く再利用できることを意図し実行されています．

機械学習といった高度なデータ処理をて，計画的に資産を作成することの難そして開発者の能力やセンス，さら行うための技術です．

しさです．つまり，今すぐに使わないには開発者やプロジェクトに余裕があ

今後は，このようなデジタル化され機能を想定して，何度も再利用できるることに依存している活動であるたる膨大な量の開発資産をソフトウェアソフトウェア部品を前もって開発する

め，大規模 ・ 広範囲に行われるように開発の中で最大限に再利用する，そしことは難しいということです．
「再利はなっていません．よって，そのようてそれを成熟化しつつあるデータ処理用可能な部品をつくるのは，単一のプな経験的に実行されている再利用活動技術を使って行う，という新しい再利ログラムで使うモジュールを開発するを支援する技術が重要となります．

用技術の開発が重要となります．

場合に比べ ３ 倍難しい」ともいわれて再利用の難しさいます．

具体的には，コピーアンドペーストなどで場当たり的に再利用されながら確かに同種のソフトウェアを複数個開発してきたソフトウェアでも，そのここで改めて再利用の難しさを考え開発することがあらかじめ分かっていソースコードや設計ドキュメントからます．再利用を阻む問題として，再利るような開発では，計画的な再利用技共通性の高い部分や差異部分を機械的用時のコンテキストミスマッチによる術の考え方は有効です．しかし，実際に解析し，再利用性の高い設計やソーコスト問題があります．コンテキストには当初は予測できなかった機能が必

スコードの資産を分析 ・ 生成すると（背景や前提条件）のミスマッチによ要になることがしばしばあり，将来をいったことが考えられます．

り，再利用のコストが大きくなるとい

見越して再利用性の高い資産を開発すう問題です．

ることは非常に難しいというのが実態

再利用対象の理解の難しさ

再利用資産にはそれが利用されるのです．また，将来利用されると想定し「再利用資産を利用する難しさ」は，に適したコンテキストがあり，それがて盛り込んだ機能が実際には全く使わ再利用資産を理解することの難しさで少しでも異なればそのまま利用できれないこともあります．

す．再利用を行う際は，その部品がどず，資産のカスタマイズが発生してしでは，計画的に再利用資産を開発すういうものなのか，どう使えば良いのまいます．そのため，「再利用資産のるのではなく，すでに開発 ・ 蓄積されか，どういうカスタマイズをどの部分20％程度のカスタマイズであっても一てきている資産を分析することによにすれば良いのかといった「再利用のNTT技術ジャーナル 2014.10

25

ソフトウェア生産技術革新ために必要な情報」を正確に把握しなることにより，再利用設計工数を84％

資産カタログ生成による理解支援ければなりません．

削減する（開発全体の約 8 ％）というこれは非常に時間がかかるもので，NTTデータでは，ある金融系プロまた十分な情報を把握することも困難

ジェクトにおいて，既存資産を機械的この成果は，もともと類似性が高いです．前述のとおり，再利用資産にはに整理し，「資産カタログ」として生システムを対象にしていることや，機械それが利用されるのに適したコンテキ成することにより，再利用対象となる的に情報処理できるための設計ドキュストがあるため，そのコンテキストを資産の理解を支援する取り組みを行っ

メントの標準化がなされていることな含めて理解することが難しく，結果，ています（図 １ ）．

どの前提があったからこそ得られたも再利用が敬遠されることが多くなり結果が得られました．

当該プロジェクトでは，計 ７ システのです．よって，NTTデータではよムで1600超の機能の既存資産が存在り広範囲で多様な資産に適用できる資この問題を解決するには，再利用のしました．それらの資産を基に次の新産解析技術の研究を進めています．

ために必要な情報を人手で整備するこ規システムを開発する際，再利用可否とも考えられますが，大きな投資が必の判断や再利用方法検討するために多要になります．したがって既存の資産大な時間を要しています．そこでその開発現場のビッグデータを活かすとからそのような情報を自動的に生成す多量の既存資産のソースコードおよびいう観点では，資産の直接的な再利用るといった，再利用資産の理解を助け，設計書から，機能の有無や類似度，差だけではなく，膨大にある開発資産利用を促進するための技術が求められ分情報などの情報を機械的に解析し，データから開発に有用な知見を見出す

ます．

資産理解を支援する資産カタログとし技術にも注目すべきです．

ます．て生成しました．新規システムの開発

現在の開発現場では，ソースコードにおいて，その資産カタログを利用すだけではなく，ドキュメントやバグ情

金融系プロジェクトにおける既存資産（1600超の機能に関する資産）

資産カタログAシステム

資産カタログで生成している情報：
1.プログラムの一覧，2. ソースコードへのリンク，3.プログラムの差分情報，4.インタフェースの一覧，5.設計書へのリンク，6.インタフェースの差分情報

ソフトウェア資産

流用

流用

Bシステム

Cシステム流用自動生成流用

ソフトウェア資産

流用

流用

Dシステム

Aシステム
能入出力データ■■機能 □□帳票

Eシステム◯BシステムBとの類似度Cとの類似度8898◯…

Aとの類似度Cとの類似度8898△△機能 ▲▲ファイル ◯

8392

◯

8375

◯

100100◯100100●●機能 ○○データ
XX機能

XX帳票

×−−

◯−

100

ソフトウェア資産 機能追加

YY機能

YYファイル

◯

90

100

◯

90

100

…

ZZ機能

ZZ帳票

◯

95

−

×−−

図126

機

有無

機能追加

ソフトウェア資産有無

ソフトウェア資産

ソフトウェアリポジトリマイニング

NTT技術ジャーナル 2014.10

資産カタログ生成による理解支援の事例…

…

特 集報など，さまざまなデータが開発の過程で作成 ・ 蓄積されるようになっています．
この膨大な開発データに対して，バグ含有可能性
構成管理サーバ（ソースコード）

データマイニングなどの技術を活用することにより，開発に有用な知見を抽出して利用する方法についての研究が盛んになってきています．学術界ではリマイニング（Mining Software Re­pos­itories）と呼んでおり，国際会議

バグ含有
可能性大

ファイルサーバ（ドキュメント）・ソ ー ス コ ー ド メ ト リ ク ス 分 析（規模，複雑度，変更頻度等）
・バグ実績分析（発生場所，頻度，原因等）⁝

この研究分野をソフトウェアリポジト

バグ含有
可能性大

バグモジュール
予測分析

BTS（バグ情報）

開発資産データを毎年開催し，さまざまな提案を発信

図2

レビュー・テストの重点化

ソフトウェアリポジトリマイニングの例，2）
しています（1）（．

ソフトウェアリポジトリマイニング
は既存の開発資産を直接的に再利用すう報告もあります（3）．

るものではありません．大量の開発資

ソフトウェアリポジトリマイニング

産を分析し，傾向やパターンを発見し，の応用例は，バグモジュール予測だけそれを開発に使える知見に変換して活でなく再利用可能な知見の抽出や開用するというものです．例えば「バグ発チームのコミュニケーション分析なモジュール予測」では，過去のバグ発ども提案されています．近年のデータ

生実績やソースコードの状態（規模，マイニングや機械学習などのデータ分複雑度，結合度，凝集度など）を分析

析技術の成熟化，大量の開発データ

し て， バ グ 混 入 の 可 能 性 が 高 い モを現実的な時間で分析できるコンジュールを予測します（図 ２ ）．

ピューティング環境の発展などが，こNTTデータではこの技術をシステ
ム開発の品質管理に利用するための技術開発を進めています．バグ混入の可能性の高いモジュールを定量的に予測の動きをより一層加速することになるでしょう．

今後の展開できれば，そのモジュールに対するテ再利用技術がさらなる発展を遂げる

ストを重点化し，テスト工数を適切にには，大量に蓄積されつつある開発資配分するといった，より効果的 ・ 効率産を最大限に活用することがカギにな的なテスト戦略を立てられるようになると考えられます．NTTデータでは，ります．

そのような量質転化を目指した新しい同様の取り組みとして，ソースコー再利用技術を開発し，ソフトウェア開ドの修正履歴を基にバグモジュールを発の劇的な生産性向上を目指します．

予測し，レビューに利用しているとい■参考文献（1） 門田：“ソフトウェアリポジトリマイニングの技術動向とその応用,” ソフトウェアジャパ
ン2013，2013．
（2） http://2014.msrconf.org/（3） http://google-engtools.blogspot.jp/2011/12/
bug-prediction-at-google.html

吉田 英嗣
ソフトウェア再利用技術は，開発データの大規模化によって次のステップに進む過渡期となっています．NTTデータでは先進的な再利用技術を創出し，ソフトウェア開発の生産性の劇的な向上を目指します．

◆問い合わせ先NTTデータ
技術開発本部
ソフトウェア工学推進センタ
E-mail case-nttgjournal kits.nttdata.co.jp

NTT技術ジャーナル 2014.10

27