(57)【特許請求の範囲】
【請求項１】
ソフトウェアを部品化したソフトウェア部品の機能を実現するための典型的な処理の内容を示す処理内容情報と見出語とが対応付けられたテンプレートデータを記憶するテンプレート記憶手段と、
前記ソフトウェア部品に対応するソースコード内から前記見出語を検出し、検出した見出語を含む部分と前記テンプレートデータ内で該見出語に対応付けられている処理内容情報とをマッピングし、マッピングした結果を保持するマッピングテーブルを作成する処理・ソースマッピング手段と、
前記マッピングテーブルを参照して、前記ソースコードの所定部分と該所定部分に対応する処理内容情報とを、両者の対応関係がわかるように表示する処理・ソースマッピング結果表示手段と、
を備えることを特徴とするソフトウェア再利用支援装置。
【請求項２】
前記処理・ソースマッピング結果表示手段は、前記ソースコードの所定部分と該所定部分に対応する処理内容情報との対応関係をユーザが編集可能に表示し、ユーザが編集した内容に基づいて、前記マッピングテーブルを更新する、
ことを特徴とする請求項１に記載のソフトウェア再利用支援装置。
【請求項３】
見出語と、見出語に関連する関連語とを対応付けて記憶する辞書手段を備え、
前記処理・ソースマッピング手段は、
前記辞書手段を参照して前記テンプレートデータに格納されている見出語の関連語を検出し、
前記ソフトウェア部品に対応するソースコード内で検出した関連語を含む部分と、前記テンプレートデータ内で検出した関連語に対応する前記見出語に対応付けられている処理内容情報と、をマッピングする、
ことを特徴とする請求項１又は２に記載のソフトウェア再利用支援装置。
【請求項４】
前記テンプレートデータには、前記典型的な処理が実行される順番を示す情報がさらに記述されており、
前記処理・ソースマッピング手段は、前記テンプレートデータが示す処理の順番と、前記ソースコード内での処理の順番とに基づいて、前記ソースコードの所定部分と該所定部分に対応する処理内容情報とをマッピングする、
ことを特徴とする請求項１乃至３の何れか１項に記載のソフトウェア再利用支援装置。
【請求項５】
前記マッピングテーブルを参照して、前記ソースコードの所定部分と、該所定部分に対応する前記ソフトウェア部品の適用対象であるデバイスのデータシートの部分と、をマッピングするデータシート・ソースマッピング手段をさらに備える、
ことを特徴とする請求項１乃至４の何れか１項に記載のソフトウェア再利用支援装置。
【請求項６】
前記マッピングテーブルを参照して、前記ソースコードの所定部分と該ソースコードの仕様書内の部分とをマッピングする仕様書・ソースマッピング手段をさらに備える、
ことを特徴とする請求項１乃至５の何れか１項に記載のソフトウェア再利用支援装置。
【請求項７】
前記ソースコードが変更された際に、前記仕様書・ソースマッピング手段が対応付けた対応関係を参照して、変更されたソースコードの部分に対応する前記仕様書の部分を表示する仕様書変更候補表示手段をさらに備える、
ことを特徴とする請求項６に記載のソフトウェア再利用支援装置。
【請求項８】
ソフトウェアを部品化したソフトウェア部品の機能を実現するための典型的な処理の内容を示す処理内容情報と見出語とが対応付けられたテンプレートデータを取得し、
前記ソフトウェア部品に対応するソースコード内から前記見出語を検出し、検出した見出語を含む部分と前記テンプレートデータ内で該見出語に対応付けられている処理内容情報とをマッピングし、マッピングした結果を保持するマッピングテーブルを作成し、
前記マッピングテーブルを参照して、前記ソースコードの所定部分と該所定部分に対応する処理内容情報とを、両者の対応関係がわかるように表示する、
ことを特徴とするソフトウェア再利用支援方法。
【請求項９】
コンピュータを、
ソフトウェアを部品化したソフトウェア部品の機能を実現するための典型的な処理の内容を示す処理内容情報と見出語とが対応付けられたテンプレートデータを記憶するテンプレート記憶手段、
前記ソフトウェア部品に対応するソースコード内から前記見出語を検出し、検出した見出語を含む部分と前記テンプレートデータ内で該見出語に対応付けられている処理内容情報とをマッピングし、マッピングした結果を保持するマッピングテーブルを作成する処理・ソースマッピング手段、
前記マッピングテーブルを参照して、前記ソースコードの所定部分と該所定部分に対応する処理内容情報とを、両者の対応関係がわかるように表示する処理・ソースマッピング結果表示手段、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア部品の再利用を支援するソフトウェア再利用支援装置、ソフトウェア再利用支援方法、及び、プログラムに関する。
【背景技術】
【０００２】
ソフトウェアの生産性を向上させるために、既存のソフトウェアを再利用して新規のソフトウェアを開発する手法が知られている。
【０００３】
例えば、特許文献１には、ソフトウェアを部品化してライブラリに登録し、ソースコードを再利用する際に、ライブラリから必要なソフトウェア部品を検出して使用することを特徴とするソフトウェア開発支援方法について記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−１０８３１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載のソフトウェア開発支援方法では、ソフトウェアのソースコードを再利用するために、所定のルールに基づいた特別なコーディングをする必要がある。そのため、プログラム開発者は自由にコーディングすることができず、コーディングに手間がかかる。また、特別なコーディングがされていないソースコードの場合、ライブラリに登録できないため、再利用することができなかった。
【０００６】
本発明は、上記実情に鑑みてなされたものであり、特別なコーディングがされていないソースコードの再利用を支援するソフトウェア再利用支援装置、ソフトウェア再利用支援方法、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明のソフトウェア再利用支援装置は、
ソフトウェアを部品化したソフトウェア部品の機能を実現するための典型的な処理の内容を示す処理内容情報と見出語とが対応付けられたテンプレートデータを記憶するテンプレート記憶手段と、
前記ソフトウェア部品に対応するソースコード内から前記見出語を検出し、検出した見出語を含む部分と前記テンプレートデータ内で該見出語に対応付けられている処理内容情報とをマッピングし、マッピングした結果を保持するマッピングテーブルを作成する処理・ソースマッピング手段と、
前記マッピングテーブルを参照して、前記ソースコードの所定部分と該所定部分に対応する処理内容情報とを、両者の対応関係がわかるように表示する処理・ソースマッピング結果表示手段と、
を備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、特別なコーディングがされていないソースコードの再利用を支援することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１の実施形態に係るソフトウェア再利用支援装置の物理的な構成を示す図である。
【図２】本発明の第１の実施形態に係るソフトウェア再利用支援装置の機能構成図である。
【図３】テンプレートデータの構成を示す図である。
【図４】辞書ＤＢに登録されるデータの例を示す図である。
【図５】処理・ソースマッピング処理の動作を説明するためのフローチャートである。
【図６】ソースコードの例を示す図である。
【図７】対応付処理の動作を説明するためのフローチャートである。
【図８】マッピングテーブルの例を示す図である。
【図９】対応付編集画面の例を示す図である。
【図１０】ユーザからの更新の操作によって修正された後のマッピングテーブルの例を示す図である。
【図１１】データシート・ソースマッピング処理の動作を説明するためのフローチャートである。
【図１２】データシート参照画面の例を示す図である。
【図１３】本発明の第２の実施形態に係るソフトウェア再利用支援装置の機能構成図である。
【図１４】仕様書・ソースマッピング処理の動作を説明するためのフローチャートである。
【図１５】仕様書マッピングテーブルの例を示す図である。
【図１６】仕様書更新支援処理の動作を説明するためのフローチャートである。
【図１７】仕様書参照画面の例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明の各実施形態について、図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付す。
【００１１】
<<第１の実施形態>>
本発明の第１の実施形態に係るソフトウェア再利用支援装置１００について説明する。このソフトウェア再利用支援装置１００は、既存のソフトウェア部品（ソフトウェアモジュール）を再利用できるように、ソフトウェア部品に対応するソースコードの所定部分と、この部分に対応する処理の内容を示す処理内容情報とを対応付ける。さらに、ソフトウェア再利用支援装置１００は、ソフトウェア部品の適用対象となるデバイスのデータシートの各項目（セクション）と、ソフトウェア部品に対応するソースコードの部分とを対応付ける。
【００１２】
ソフトウェア再利用支援装置１００は、物理的には、図１に示すように、通信部１１と、入力部１２と、出力部１３と、記憶部１４と、入出力Ｉ／Ｆ部１５と、制御部１６と、を備える。各部はバス１７を介して互いに接続されている。
【００１３】
通信部１１は、通信ネットワーク２を介して、ネットワーク２上の図示せぬ情報処理装置等と通信を行うものであり、通信インタフェース等を備える。例えば、通信部１１は、再利用の対象とするソフトウェア部品に対応するソースコード、ソフトウェア部品の適用対象であるデバイスのデータシート、及び、ソースコードの仕様書等を、これらネットワーク２上の情報処理装置から受信する。
【００１４】
操作部１２は、ソフトウェア再利用支援装置１００に様々な情報を入力するために使用するものであり、ボタン、キー等の入力装置を備える。
【００１５】
表示部１３は、様々な情報を出力するものであり、ディスプレイ等の表示装置を備える。
【００１６】
記憶部１４は、様々な情報やプログラム等を記憶するものであり、ハードディスク等の補助記憶装置を備える。
【００１７】
入出力Ｉ／Ｆ部１５は、入出力機器３を接続するためのインタフェースである。例えば、処理の対象となるソースコードを、通信部１１ではなく、入出力Ｉ／Ｆ部１５を介して、ＣＤ−ＲＯＭドライブ等の入出力機器３から取り込むこともできる。
【００１８】
制御部１６は、データの演算処理を行うと共に、バス１７を介して通信部１１、操作部１２、出力部１３、記憶部１４、入出力Ｉ／Ｆ部１５を制御するものであり、ＣＰＵ（Central Processing Unit）１６ａ、ＲＯＭ（Read Only Memory）１６ｂ、ＲＡＭ（Random Access  Memory）１６ｃ等を備える。制御部１６における演算処理及び制御処理は、具体的には、ＣＰＵ１６ａが、ＲＡＭ１６ｃを作業領域として使用して各種データを一時的に記憶させながら、ＲＯＭ１６ｂに記憶されている制御プログラムを実行することにより行われる。
【００１９】
ソフトウェア再利用支援装置１００は、機能的には、図２に示すように、テンプレート格納部１０１と、辞書ＤＢ（データベース）１０２と、処理・ソースマッピング部１０３と、処理・ソースマッピング結果表示部１０４と、データシート・ソースマッピング部１０５と、データシート・ソースマッピング結果表示部１０６と、を備える。なお、これらの各構成要素は、図１に示した制御部１６が、同じく図１に示した通信部１１、操作部１２、出力部１３、記憶部１４、又は入出力Ｉ／Ｆ部１５を制御することにより実現される。
【００２０】
テンプレート格納部１０１には、タイマやＬＡＮドライバやシリアルドライバ等の機能を有するソフトウェア部品の種類毎に、ソフトウェア部品の機能を実現するための典型的な実装方法（処理や手順の内容や順番）が記述されたテンプレートデータ１０７が格納される。
【００２１】
テンプレートデータ１０７の構成例を図３に示す。テンプレートデータ１０７は、条件部１０７１とデータ部１０７２とから構成される。
条件部１０７１は、このテンプレートデータ１０７が適用されるソフトウェア部品（ソースコード）の実装の条件を示すデータである。具体的には、条件部１０７１は、H／W（ハードウェア）型番、機能、方式等のソフトウェア部品の属性を示す項目とその値とから構成される。
データ部１０７２は、条件部１０７１が示す条件に合致するソフトウェア部品の典型的な実装方法が記載されたデータである。具体的には、データ部１０７２は、処理（ソースコード内の関数に相当）の内容がテキスト形式で記載された処理データと、処理毎の手順がテキスト形式で記載された手順データとを含んで構成される。なお、処理データの先頭のアルファベット（ａ）〜（ｅ）は、処理の順番を示したものであり、この順番で、処理データに対応する処理（関数）がソースコード内に記載されることを示す。また、手順データの先頭の番号（１）〜（３）は、処理（関数）内で実施される手順の順番を示したものであり、この順番で、手順データに対応する手順がソースコードの処理（関数）内に記載されることを示す。
さらに、処理データと手順データとには、辞書ＤＢ１０２を参照して関連語を検出するためのキーワードとなる見出語が設定されている。
【００２２】
図２に戻り、辞書ＤＢ１０２には、テンプレートデータ１０７で定義されている見出語とその見出語に関連する関連語とが対応付けられて格納される。辞書ＤＢ１０２に登録されるデータの例を図４に示す。例えば、図４の先頭のエントリから、見出語「ＬＡＮ」の関連語は、「lan」、「ether」」、「ethernet」、「net」等であることがわかる。
【００２３】
図２に戻り、処理・ソースマッピング部１０３は、テンプレート格納部１０１に格納されているテンプレートデータ１０７と辞書ＤＢ１０２とを参照して、ソフトウェア部品に対応するソースコード内の所定部分とこの部分に対応した処理の内容を示す情報（処理データ、手順データ）とをマッピングし（対応付け）、マッピングした結果をマッピングテーブル１０８として出力する。
【００２４】
処理・ソースマッピング結果表示部１０４は、マッピングテーブル１０８等を参照して、ソースコードの所定部分と、この所定部分に対応する処理内容情報との対応関係がユーザにわかり、且つ、ユーザがその対応関係を編集（修正）することができるような対応付編集画面を作成して表示する。
【００２５】
データシート・ソースマッピング部１０５は、マッピングテーブル１０８と辞書ＤＢ１０２とを参照して、ソースコードの所定部分と、この所定部分に対応するデータシートの部分（セクション）とをマッピングする（対応付ける）。
【００２６】
なお、ここでいうデータシートとは、ソフトウェア部品が適用されるデバイスの特徴や仕様等が記載されている電子化されているドキュメントデータを示す。データシートには、番号と見出しが付されたセクション毎に、デバイスに関する情報が記載されている。なお、データシートはＸＭＬ（Extensible Markup Language）等のマークアップ言語で記載されており、ソフトウェア開発支援装置１００は、データシート内のセクションの構成を認識することができる。例えば、ソフトウェア開発支援装置１００は、データシート内の特定のセクション部分のみを取得して表示することが可能である。
【００２７】
データシート・ソースマッピング結果表示部１０６は、データシート・ソースマッピング部１０５がマッピングしたソースコードの所定部分とデータシートの所定部分（セクション）との対応関係をユーザが参照可能に表示する。
【００２８】
続いて、ソフトウェア再利用支援装置１００の動作について説明する。
【００２９】
（処理・ソースマッピング処理）
始めに、ソフトウェアーモジュールのソースコードの所定部分と、この部分に対応する処理の内容を示す情報（処理データおよび手順データ）とをマッピングし、その結果をユーザが編集可能に表示する処理・ソースマッピング処理について、図５のフローチャートを参照して説明する。
【００３０】
ユーザは、操作部１２を操作して、処理・ソースマッピング処理開始用の所定の画面を表示部１３１２に表示させる。そして、ユーザは、操作部１２を操作して、この画面上から、処理の対象とするソースコードの指定と、テンプレートデータ１０７を検索するための条件とを入力する。ここでは、指定したソースコードに対応したソフトウェア部品のテンプレートデータ１０７を検出するための検出条件を入力するのが望ましい。例えば、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）方式のマイコンのシリアル通信機能に関するソフトウェア部品に対応するソースコードを処理対象として指定する場合、テンプレートデータ１０７の検索条件として、Ｈ／Ｗ型番「マイコンＡ」、機能「シリアル通信」、方式「ＵＡＲＴ」等と入力すればよい。処理・ソースマッピング部１０３は、この入力操作に応答して、テンプレート格納部１０１に記憶されているテンプレートデータ１０７の条件部１０７１を検索し、入力された検索条件に合致するテンプレートデータ１０７を検出する（ステップＳ１１）。
【００３１】
続いて、処理・ソースマッピング部１０３は、検出したテンプレートデータ１０７の記載を参照して、指定したソースコードの各部分と、各部分に対応した処理データ、手順データとを対応付ける対応付処理を行う（ステップＳ１２）。
【００３２】
ここで、対応付処理（ステップＳ１２）の詳細について、図６に示すソースコードを処理対象とした場合を例に、図７のフローチャートを用いて説明する。図６に示すソースコードは、Ｃ言語で記述されており、「sio_init()」、「port_open()」、「sio_putchar()」、「sio_getchar()」、「sio_getchar_err()」、「sio_send_frame()」の６つの関数から構成されている。なお、ソースコードの各行の左側の数字は行番号であり、以下の説明を容易にするために便宜的に付したものである。また、このソースコードに対するテンプレートデータ１０７として、図３に示すテンプレートデータ１０７が検出されているものとする。また、辞書ＤＢ１０２には、図４に示す情報が格納されているものとする。
【００３３】
まず、処理・ソースマッピング部１０３は、検出したテンプレートデータ１０７と辞書ＤＢ１０２とを参照して、指定したソースコードに含まれる関数と、該関数の処理内容を示す処理データとを対応付ける（ステップＳ１２１）。
【００３４】
具体的には、まず、処理・ソースマッピング部１０３は、ソースコード内の関数の関数名やコメントから関連語を検出する。そして、処理・ソースマッピング部１０３は、辞書ＤＢ１０２を参照して、検出した関連語の見出語を検出する。そして、処理・ソースマッピング部１０３は、検出した見出語と一致する見出語を有する処理データをテンプレートデータ１０７から検出し、この関数と対応付ければよい。または、関数間の呼出関係を考慮して、呼出元の関数と同じ処理データを呼出先の関数に対応付けてもよい。また、ソースコード内での関数の出現する順番と、テンプレートデータ１０７に記載されている処理の順番とに基づいて、関数名を対応付けてもよい。
【００３５】
例えば、図３に示すテンプレートデータ１０７のデータ部１０７２に記載されている処理データ「初期化」には、見出語「初期化」が設定されている。そして、図４に示す辞書ＤＢ１０２には、見出語「初期化」の関連語として、「初期化」、「init」、「 initialization」、「 set」、「 設定」が定義されている。従って、処理・ソースマッピング部１０３は、図６に示すソースコードに記載されている関数のうちで、関数名にこれらの関連語のうちの「init」を含む関数「sio_init()」に、処理データ「初期化」を対応付ける。なお、関数「sio_init()」がソースコード内で最初に記載されている関数であることを理由に、テンプレートデータ１０７の記載内での最初の処理データである「初期化」を対応付けてもよい。また、この関数「sio_init()」は、９行目で関数「port_open()」を呼び出している。従って、処理・ソースマッピング部１０３は、関数「port_open()」にも、呼出元の関数と同じ処理データ「初期化」を対応付ける。
【００３６】
また、図３に示すテンプレートデータ１０７に記載されている処理データ「１バイト送信」には、見出語「送信」、「バイト」が設定されている。また、図４に示す辞書ＤＢ１０２には、見出語「送信」の関連語として、「送信」、「 sd」、「 snd」、「 send」、「 out」、「 put」が定義されている。また、見出語「バイト」の関連語として、「バイト」、「 byte」、「 char」が定義されている。従って、処理・ソースマッピング部１０３は、これらの各関連語「put」と「char」とを関数名に含む図６に示すソースコード内の関数「sio_putchar()」に、処理データ「１バイト送信」を対応付ける。
【００３７】
以下同様に、処理・ソースマッピング部１０３は、関数「sio_getchar()」に処理データ「１バイト受信」を、関数「sio_getchar_err()」に処理データ「１バイト受信エラー」を、関数「sio_send_frame()」に処理データ「１フレーム送信」を、それぞれ対応付ける。
【００３８】
図７に戻り、ステップＳ１２１の処理が終了すると、処理・ソースマッピング部１０３は、検出したテンプレートデータ１０７と辞書ＤＢ１０２とを参照して、各関数内の手順と、該手順の内容を示す手順データとを対応付ける（ステップＳ１２２）。具体的には、処理・ソースマッピング部１０３は、関数内の手順の記載や付されているコメントに含まれる関連語に対応する見出語が、テンプレートデータ１０７の見出語と一致する手順データを、この手順と対応付ければよい。または、手順間の呼出関係を考慮して、呼出元の手順と同じ手順データを呼出先の手順に対応付けてもよい。また、関数内での手順の順番と、テンプレートデータ１０７に記載されている手順の順番とに基づいて、手順データを対応付けてもよい。
【００３９】
例えば、図３に示すテンプレートデータ１０７から、処理データ「初期化」には、手順データ「割込禁止設定」、「レジスタ設定」、「割込許可設定」が順番に対応付けられていることがわかる。また、これらの手順データのうち手順データ「割込禁止設定」には、見出語「割込」が設定されている。そして、図４に示す辞書ＤＢ１０２には、辞書見出「割込」の関連語の１つとして「intr」が設定されている。従って、処理・ソースマッピング部１０３は、処理データ「初期化」が対応付けられている図６に示すソースコードに含まれる関数「sio_init()」内の手順のうち、この関連語「init」を含む３行目の手順「set_intr_off();」に、手順データ「割込禁止設定」を対応付ける。なお、手順データ「割込許可設定」の見出語も「割込」であるが、「set_intr_off();」は関数内での最初の手順であるため、テンプレートデータ１０７内での記載順が最初の手順データ「割込禁止設定」が割り当てられる。
【００４０】
また、図３に示すテンプレートデータ１０７から、手順データ「レジスタ設定」には、見出語「レジスタ」が設定されていることごわかる。また、図４に示す辞書ＤＢ１０２には、見出語「レジスタ」の関連語として「レジスタ」が設定されている。従って、処理データ「初期化」が対応付けられている図６に示すソースコードに含まれる関数「sio_init()」内で、この関連語「レジスタ」をコメントに含む５〜７行目にかけての３つの手順「SCR = INIT_SIR_INIT;」「SMR = 0x00;」「BRR = BRR_115200;」それぞれに、手順データ「レジスタ設定」が対応付けられる。
【００４１】
同様に、見出語「割込」の関連語「intr」を含み、関数「sio_init()」内での処理が最後である１１行目の手順「set_intr_on();」には、図３に示すテンプレートデータ１０７を参照して、手順データ「割込許可設定」が対応付けられる。
【００４２】
なお、関数「sio_init()」内の９行目の手順「port_open();」には、コメント部分も含めて辞書ＤＢ１０２に登録されている関連語は含まれていないものの、前後の手順に対応付けられた手順データの順番と、テンプレートデータ１０７に記憶されている手順データの順番とに基づいて、「レジスタ設定」か「割込許可設定」の何れかの手順データが対応付けられる。ここでは、手順「port_open();」に手順データ「割込許可設定」が対応付けられたものとする。
【００４３】
以下、図６に示すソースコードの他の関数についても、同様に、関数内の手順と、テンプレートデータ１０７に記載されている手順データとを対応付ける処理が行われる。
【００４４】
図７に戻り、ステップＳ１２２の処理が終了すると、処理・ソースマッピング部１０３は、ステップＳ１２１とステップＳ１２２との処理で、ソースコードの部分と処理内容を示す処理内容情報（処理データ、手順データ）とを対応付けた結果を保持するマッピングテーブル１０８を作成して、対応するソフトウェア部品（ソースコード）と関連付けて記憶部１４に保存する（ステップＳ１２３）。
【００４５】
図８は、図６に示すソースコードの処理（関数）のうち、処理データ「初期化」に対応付けられている関数部分のマッピングテーブル１０８の例を示す図である。図８では、ＸＭＬの形式でマッピングテーブル１０８が作成されている。具体的には、「mapping_item」タグで指定した処理データ「初期化」と、「func_name」タグで指定した関数「sio_init」、「port_open」とが対応付けられている。また、「proc_name」タグで指定した手順データ「割込禁止設定」、「レジスタ設定」、「割込許可設定」と、直後の「source_code_line」タグで指定したソースコードの部分（行数）とが、「proc_item」タグにより対応付けられている。以上で対応付処理は終了する。
【００４６】
図５に戻り、対応付処理が終了すると、処理・ソースマッピング結果表示部１０４は、作成されたマッピングテーブル１０８と、このマッピングテーブル１０８に対応するソースコードとを合成した対応付編集画面を作成し、表示部１３に表示する（ステップＳ１３）。
【００４７】
ユーザは、対応付編集画面からソースコードの所定部分と、この部分に対応する処理内容情報との対応関係を把握するとともに、対応関係に誤りがある場合に操作部１２を操作してこの対応関係を修正するための操作を行う。処理・ソースマッピング結果表示部１０４は、この操作に応答して、修正された内容に基づいてマッピングテーブル１０８を更新する（ステップＳ１４）。
【００４８】
図９に、図８に示すマッピングテーブル１０８と、それに対応する図７に示すソースコードの一部とを合成して作成された対応付編集画面の例を示す。ソースコード内の関数の右側には、マッピングテーブル１０８によって対応付けられている処理データが表示される。また、関数内の各処理の右側には、マッピングテーブル１０８によって対応付けられている手順データが表示される。また、処理データ、及び、手順データの表示の右側の三角形をクリックすることにより、プルダウンメニューでテンプレートデータ１０７に記述されている他の処理データや手順データを選択することができ、処理・ソースマッピング結果表示部１０４は、選択した内容に応じて、マッピングテーブル１０８を修正する。
【００４９】
例えば、ユーザは、図９に示す対応付編集画面の９行目の手順「port_open();」の右側の表示「割込許可設定」の右側の三角形をクリックして、手順データを「割込許可設定」から「レジスタ設定」に更新する操作を行う。この操作に応答して、処理・ソースマッピング結果表示部１０４は、手順「port_open();」に対応付けられる手順データが「割込許可設定」から「レジスタ設定」になるようにマッピングテーブル１０８を更新する。さらに、処理・ソースマッピング結果表示部１０４は、関数「port_open();」から呼ばれる１７行目と１８行目の手順に対応付けられる手順データも「割込許可設定」から「レジスタ設定」に更新する。これらの更新操作によって修正されたマッピングテーブル１０８の一部を図１０に示す。
【００５０】
このように、処理・ソースマッピング処理により、ソースコード内の各部分と、対応する処理の内容を示す処理内容情報（処理データ、手順データ）とがマッピングされる。以上で処理・ソースマッピング処理は終了する。
【００５１】
（データシート・ソースマッピング処理）
続いて、ソフトウェア部品に対応するソースコードと、該ソフトウェア部品の適用対象であるデバイスのデータシートの記載とをマッピングするデータシート・ソースマッピング処理について、図１１のフローチャートを参照して説明する。なお、事前に処理・ソースマッピング処理が実行されて、マッピングテーブル１０８が作成されているものとする。
【００５２】
ユーザは、操作部１２を操作して、データシート・ソースマッピング処理開始用の所定の画面を表示部１３に表示させる。ユーザは、操作部１２を操作して、この画面上から、対応付けの対象とするソースコードとデータシートとを指定する。データシート・ソースマッピング部１０５は、この入力操作に応答して、指定されたソースコードに対応するマッピングテーブル１０８と、指定されたデータシートとを取得する（ステップＳ２１）。なお、H／W（ハードウェア）型番、機能、方式等といったソフトウェア部品の属性値の条件を指定して、その条件に合致するソフトウェア部品に対応するソースコードを取得してもよい。
【００５３】
続いて、データシート・ソースマッピング部１０５は、取得したマッピングテーブル１０８等を参照して、指定したソースコード内の各手順と、取得したデータシート内の各セクションとを対応付ける（ステップＳ２２）。
【００５４】
具体的には、データシート・ソースマッピング部１０５は、取得したマッピングテーブル１０８を参照して、ソースコード内の所定の手順に対応付けられている手順データを検出する。続いて、データシート・ソースマッピング部１０５は、テンプレートデータ１０７を参照して検出した手順データの見出語を検出するとともに、辞書ＤＢ１０２を参照してその関連語を検出する。そして、データシート・ソースマッピング部１０５は、取得したデータシート内で、検出した関連語が所定数以上記載されているセクション（章、節、項、目等）の識別子である番号を、この所定の手順が記載されているソースコード内での位置（行数）と対応付ければよい。なお、データシート・ソースマッピング部１０５は、検出した関連語のセクション内での密度（セクション全体の単語数に対する関連語の割合）が所定値以上あるセクションの番号や、検出した関連語を見出しに含むセクションの番号を、この所定の手順が記載されているソースコード内での位置（行数）と対応付けてもよい。
【００５５】
続いて、データシート・ソースマッピング結果表示部１０６は、ソースコード内の各手順から対応するデータシートのセクション部分を参照可能な図１２に示すようなデータシート参照画面を作成して、表示部１３に表示させる（ステップＳ２３）。
【００５６】
図１２に示すデータシート参照画面上からソースコード内の各手順の右側の参照ボタンをクリックする操作に応答して、データシート・ソースマッピング結果表示部１０６は、この手順に対応するデータシートのセクション部分をポップアップ表示する。例えば、図１２に示すように、３行目の手順「set_intr_off();」の右側の参照ボタンをクリックすると、割込設定について記載されているデータシートのセクション部分がポップアップ表示される。以上で、データシート・ソースマッピング処理は終了する。
【００５７】
このように、本実施形態では、テンプレートデータ１０７に記載されたソフトウェア部品の実装の方法（パターン）に合うようにソースコードを解析して、ソースコード内の処理と、該処理に対応する処理内容情報（処理データ、手順データ）とをマッピングし、その結果を表示する。従って、ユーザは、特別なコーディングがされていないソースコードであっても、ソースコードと処理内容との関係を容易に把握することができ、ソースコードの保守性を高めて、ソースコードの再利用を支援することが可能となる。
特に、ハードウェアを制御するドライバの機能のように、典型的な実装パターンを持つソフトウェア部品に対応するソースコードは、テンプレートデータ１０７に沿った形でコーディングされている可能性が高いため、本発明をより好適に適用可能である。
【００５８】
また、本実施形態では、ソースコードと処理とをマッピングした結果を、ユーザが修正可能に表示する。従って、表示された対応関係に誤りがある場合、ユーザは即座に修正を行うことができる。これにより、例えば、処理とソースコードとをマッピングした結果をソースコードの移植や改修の作業等に利用する場合に、参照データとしての正確さを向上させることが可能になる。
【００５９】
また、本実施形態では、辞書ＤＢ１０２を参照して検出した関連語を用いてソースコードと処理とのマッピングを行う。従って、表記の揺れや、関数の命名の慣用的な複数のパターンに対応した、より正確な処理とソースコードとの対応付けが可能になる。
【００６０】
さらに、本実施形態では、マッピングデータ１０７には、処理内用情報（処理データ、手順データ）が実行される順番を示す情報も併せて記憶されており、処理内容情報の実行順とソースコード内での対応部分の出現順とがなるべく一致するようにマッピングが実施される。従って、マッピングの精度をより向上させることが可能になる。
【００６１】
また、本実施形態では、ソフトウェア部品に対応するソースコードの部分と、このソフトウェアを適用対象とするデバイスのデータシートの部分（セクション）とを対応付けて参照可能に表示する。これにより、既存のソフトウェア部品（ソースコード）を新規のデバイスに移植する際等に、ユーザは、この新規のデバイスのデータシートと既存のソースコードとの対応関係を即時に把握することができるため、効率よく移植作業を行うことが可能になる。
【００６２】
<<第２の実施形態>>
第１の実施形態に係るソフトウェア開発支援装置２００では、ソフトウェア部品を使用するデバイスのデータシートの部分（セクション）と、ソフトウェア部品に対応するソースコードの部分とを対応付けた。これに対し、第２の実施形態に係るソフトウェア開発支援装置２００は、ソースコードと仕様書との間で、対応する部分同士を対応付けることを特徴とする。さらに、第２の実施形態に係るソフトウェア開発支援装置２００は、この対応付けした結果を利用して、ソースコードが変更された際に、仕様書の変更作業を支援する処理を行う。
【００６３】
なお、ここでいう仕様書とは、ソフトウェア開発者等によって作成、参照される、ソースコードの処理や機能の仕様が記載されている電子化されているドキュメントデータを示す。仕様書には、番号と見出しが付されたセクション毎に、見出しに対応した内容のソースコードの仕様が記載されている。なお、仕様書はＸＭＬ（Extensible Markup Language）等のマークアップ言語で記載されており、ソフトウェア開発支援装置２００は、仕様書内のセクションの構成を認識することができる。例えば、ソフトウェア開発支援装置１００は、仕様書内の特定のセクション部分のみを取得して表示することが可能である。
【００６４】
第２の実施形態に係るソフトウェア開発支援装置２００の機能構成図を図１３に示す。なお、第１の実施形態に係るソフトウェア開発支援装置１００と同じ構成については、同じ参照符号を付し、その部分の説明は省略する。第２の実施形態に係るソフトウェア開発支援装置２００は、第１の実施形態に係るソフトウェア開発支援装置１００と比べて、データシート・ソースマッピング部１０５とデータシート・ソースマッピング結果表示部１０６とが無く、仕様書・ソースマッピング部１０９と仕様書変更候補表示部１１０とを備える。
【００６５】
仕様書・ソースマッピング部１０９は、マッピングテーブル１０８と辞書ＤＢ１０２とを参照して、ソースコードの所定部分と、この所定部分に対応する仕様書の部分（セクション）とをマッピングし、マッピングした結果を仕様書マッピングテーブル１１１として出力する。
【００６６】
仕様書変更候補表示部１１０は、ソースコードが変更された際に、仕様書マッピングテーブル１１１等を参照して、ソースコードの変更された部分に対応する仕様書のセクション部分を、修正を要する候補として表示する。
【００６７】
続いて、ソフトウェア再利用支援装置２００の動作について説明する。
なお、処理・ソースマッピング処理については、第１の実施形態と同様な処理が行われるため説明を省略する。
【００６８】
（仕様書・ソースマッピング処理）
続いて、ソースコードと、該ソースコードの仕様書とをマッピングする仕様書・ソースマッピング処理について、図１４のフローチャートを参照して説明する。なお、事前に処理・ソースマッピング処理が実行されて、マッピングテーブル１０８が作成されているものとする。
【００６９】
ユーザは、操作部１２を操作して、仕様書・ソースマッピング処理開始用の所定の画面を表示部１３に表示させる。ユーザは、操作部１２を操作して、この画面上から、対応付けの対象とするソースコードとその仕様書とを指定する。仕様書・ソースマッピング部１０９は、この入力操作に応答して、指定されたソースコードに対応するマッピングテーブル１０８と、指定された仕様書とを取得する（ステップＳ３１）。なお、H／W（ハードウェア）型番、機能、方式等といったソフトウェア部品の属性値の条件を指定して、その条件に合致するソフトウェア部品に対応するソースコードを取得してもよい。
【００７０】
続いて、仕様書・ソースマッピング部１０９は、取得したマッピングテーブル１０８を参照して、指定したソースコード内の各手順と、取得した仕様書内の各セクションとを対応付ける（ステップＳ３２）。
【００７１】
具体的には、仕様書・ソースマッピング部１０９は、取得したマッピングテーブル１０８を参照して、ソースコード内の所定の手順に対応付けられている手順データを検出する。続いて、仕様書・ソースマッピング部１０９は、テンプレートデータ１０７を参照して検出した手順データの見出語を検出するとともに、辞書ＤＢ１０２を参照してその関連語を検出する。そして、仕様書・ソースマッピング部１０９は、取得した仕様書内で、検出した関連語が所定数以上記載されているセクション（章、節、項、目等）の識別子である番号を、この所定の手順が記載されているソースコード内での位置（行数）と対応付ければよい。なお、仕様書・ソースマッピング部１０９は、検出した関連語のセクション内での密度（セクション全体の単語数に対する関連語の割合）が所定値以上あるセクションの番号や、検出した関連語を見出しに含むセクションの番号を、この所定の手順が記載されているソースコード内での位置（行数）と対応付けてもよい。
【００７２】
続いて、仕様書・ソースマッピング部１０９は、ステップＳ３２で対応付けた結果を保持する仕様書マッピングテーブル１１１を作成して、記憶部１４に保存する（ステップＳ３３）。
【００７３】
図１５は、図６に示すソースコードの処理（関数）のうち、処理データ「初期化」に対応する関数部分の仕様書マッピングテーブル１１１の例を示す図である。図１５では、ＸＭＬの形式で仕様書マッピングテーブル１１１が作成されている。具体的には、「proc_name」タグで指定した手順データと、「source_code_line」タグで指定したソースコードの部分（行数）と、「spec_section」タグで指定した仕様書内のセクション番号とが、「proc_item」タグにより対応付けられている。
【００７４】
図１４に戻り、仕様書・ソースマッピング部１０９は、作成された仕様書マッピングテーブル１１１と、このマッピングテーブル１０８に対応するソースコードとを合成した、ソースコード上から対応する仕様書のセクション部分を参照可能な画面を作成して、表示部１３に表示する（ステップＳ３４）。以上で仕様書・ソースマッピング処理は終了する。
【００７５】
（仕様書更新支援処理）
続いて、ソースコードが更新された際に、このソースコードの仕様書の更新作業を支援する仕様書更新支援処理について、図１６のフローチャートを参照して説明する。なお、事前に仕様書・ソースマッピング処理がなされており、更新支援対象の仕様書に関する仕様書マッピングテーブル１１１が作成されているものとする。
【００７６】
ソフトウェア再利用支援装置２００が起動した場合、又は、操作部１２を介して仕様書更新支援処理を開始することを示すユーザからの指示入力を受信した場合、仕様書変更候補表示部１１０は、定期的にソースコードを解析して、ソースコードが更新されたか否かを判別する（ステップＳ４１）。
【００７７】
ソースコードが更新されていない場合（ステップＳ４１；Ｎｏ）、仕様書変更候補表示部１１０は、ソースコードが更新されるまで、定期的にソースコードの更新を判別するステップＳ４１の処理を繰り返す。ソースコードが更新されたと判別した場合（ステップＳ４１；Ｙｅｓ）、仕様書変更候補表示部１１０は、このソースコードの仕様書マッピングテーブル１１１を参照して、ソースコード内の更新された部分に対応付けられている仕様書のセクションを特定する（ステップＳ４２）。
【００７８】
例えば、仕様書マッピングテーブル１１１が図１５に示すように記載されている場合、更新されたソースコードの行を指定する「source_code_line」タグと同じ「proc_item」タグ中の「spec_section」タグで指定されている仕様書のセクション番号を特定すればよい。
【００７９】
続いて、仕様書変更候補表示部１１０は、ソースコードの更新部分と、特定した仕様書のセクション部分とを関連付けて表示する図１７に示すような仕様書参照画面を作成して表示部１３に表示する（ステップＳ４３）。この仕様書参照画面では、変更されたソースコードの７行目部分が点線で囲まれて強調されるとともに、この部分に対応する仕様書の４３．２節の部分が変更部分と関連付けられて表示される。ユーザは仕様書参照画面を確認することで、プログラムソース内で変更があった部分に対応する仕様書の部分を即時に知ることができ、ソースコード変更に伴う仕様書の変更処理を迅速に行うことが可能となる。以上で仕様書更新支援処理は終了する。
【００８０】
このように、本実施形態では、ソースコードと仕様書の対応する部分同士を対応付けて、相互参照可能に表示する。これにより、ユーザは、ソースコードと仕様書との対応関係を直感的に把握することができるため、ソフトウェアの再利用性や保守性を高めることができる。
【００８１】
また、本実施形態では、ソースコードが変更された際に、変更された箇所に対応する仕様書のセクションが表示される。従って、ユーザは、ソフトウェアのバージョンアップなどに伴ってソースコードが変更された際に、仕様書の変更作業を効率良く行うことが可能となる。
【００８２】
なお、本発明は、上記各実施形態に限定されず、本発明の要旨を逸脱しない部分での種々の変更は勿論可能である。
【００８３】
例えば、上記各実施形態では、辞書ＤＢ１０２を参照して、テンプレートデータ１０７の所定の見出語の関連語を特定し、特定した関連語を含むソースコードの部分を、この所定の見出語を有する処理内容情報（処理データ、手順データ）とマッピングした。しかしながら、辞書ＤＢ１０２を参照しないで、見出語で直接ソースコードを検索することにより、マッピングを行ってもよい。即ち、テンプレートデータ１０７の所定の見出語を含むソースコードの部分を、この所定の見出語を有する処理内容情報（処理データ、手順データ）と対応付けてもよい。
【００８４】
例えば、上記各実施形態では、ソースコード内の処理（関数）に処理データ、手順に手順データを対応付けたが、処理データのみ、若しくは、手順データのみをソースコード内の部分と対応付けるようにしてもよい。
【００８５】
例えば、ＳＧＭＬ（Standard Generalized Markup Language）やＸＨＴＭＬ（Extensible HyperText Markup Language）等といったＸＭＬ以外の他のマークアップ言語でマッピングテーブル１０８や仕様書マッピングテーブル１１１を記載してもよい。または、マッピングテーブル１０８や仕様書マッピングテーブル１１１を表形式のデータとしてもよく、データ形式は任意のものが採用可能である。
【００８６】
また、上記各実施形態では、Ｃ言語で記載されているソースコードを例にして主に説明したが、ＪＡＶＡ（登録商標）やＢＡＳＩＣ等の他のプログラム言語で記載されているソースコードにも本願発明が適用できるのは勿論である。
【００８７】
また、例えば、本発明に係るソフトウェア再利用支援装置１００，２００の動作を規定する動作プログラムを既存のパーソナルコンピュータや情報端末機器等に適用することで、当該パーソナルコンピュータ等を本発明に係るソフトウェア再利用支援装置１００，２００として機能させることも可能である。
【００８８】
また、このようなプログラムの配布方法は任意であり、例えば、ＣＤ−ＲＯＭ（Compact Disk Read-Only Memory）、ＤＶＤ（Digital Versatile Disk）、ＭＯ（Magneto Optical Disk）、メモリカードなどのコンピュータ読み取り可能な記録媒体に格納して配布してもよいし、インターネットなどの通信ネットワークを介して配布してもよい。
【産業上の利用可能性】
【００８９】
例えば、組み込みシステムのデバイスドライバの開発支援装置に本発明を適用可能である。
【符号の説明】
【００９０】
１００，２００ ソフトウェア再利用支援装置
１０１ テンプレート格納部
１０２ 辞書ＤＢ
１０３ 処理・ソースマッピング部
１０４ 処理・ソースマッピング結果表示部
１０５ データシート・ソースマッピング部
１０６ データシート・ソースマッピング結果表示部
１０７ テンプレートデータ
１０８ マッピングテーブル
１０９ 仕様書・ソースマッピング部
１１０ 仕様書変更候補表示部
１１１ 仕様書マッピングテーブル
【図１】
0005800657.tif 000002
【図２】
0005800657.tif 000003
【図３】
0005800657.tif 000004
【図４】
0005800657.tif 000005
【図５】
0005800657.tif 000006
【図６】
0005800657.tif 000007
【図７】
0005800657.tif 000008
【図８】
0005800657.tif 000009
【図９】
0005800657.tif 000010
【図１０】
0005800657.tif 000011
【図１１】
0005800657.tif 000012
【図１２】
0005800657.tif 000013
【図１３】
0005800657.tif 000014
【図１４】
0005800657.tif 000015
【図１５】
0005800657.tif 000016
【図１６】
0005800657.tif 000017
【図１７】
0005800657.tif 000018