説明

ソフトウェア再利用支援装置、ソフトウェア再利用支援方法、及び、プログラム

【課題】特別なコーディングがされていないソースコードの再利用を支援する。
【解決手段】処理・ソースマッピング部103は、ソフトウェアを部品化したソフトウェア部品の機能を実現するための典型的な処理の内容を示す処理内容情報と見出語とが対応付けられたテンプレートデータ107を参照して、ソースコード内の所定部分と、この部分に対応する処理の内容を示す処理内容情報とをマッピングし、マッピングした結果を保持するマッピングテーブル108を作成する。処理・ソースマッピング結果表示部104は、作成されたマッピングテーブル108を参照して、ソースコードの所定部分とこの所定部分に対応する処理内容情報とを、両者の対応関係がわかるように表示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソフトウェア部品の再利用を支援するソフトウェア再利用支援装置、ソフトウェア再利用支援方法、及び、プログラムに関する。
【背景技術】
【0002】
ソフトウェアの生産性を向上させるために、既存のソフトウェアを再利用して新規のソフトウェアを開発する手法が知られている。
【0003】
例えば、特許文献1には、ソフトウェアを部品化してライブラリに登録し、ソースコードを再利用する際に、ライブラリから必要なソフトウェア部品を検出して使用することを特徴とするソフトウェア開発支援方法について記載されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平5−108319号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に記載のソフトウェア開発支援方法では、ソフトウェアのソースコードを再利用するために、所定のルールに基づいた特別なコーディングをする必要がある。そのため、プログラム開発者は自由にコーディングすることができず、コーディングに手間がかかる。また、特別なコーディングがされていないソースコードの場合、ライブラリに登録できないため、再利用することができなかった。
【0006】
本発明は、上記実情に鑑みてなされたものであり、特別なコーディングがされていないソースコードの再利用を支援するソフトウェア再利用支援装置、ソフトウェア再利用支援方法、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するため、本発明のソフトウェア再利用支援装置は、
ソフトウェアを部品化したソフトウェア部品の機能を実現するための典型的な処理の内容を示す処理内容情報と見出語とが対応付けられたテンプレートデータを記憶するテンプレート記憶手段と、
前記ソフトウェア部品に対応するソースコード内から前記見出語を検出し、検出した見出語を含む部分と前記テンプレートデータ内で該見出語に対応付けられている処理内容情報とをマッピングし、マッピングした結果を保持するマッピングテーブルを作成する処理・ソースマッピング手段と、
前記マッピングテーブルを参照して、前記ソースコードの所定部分と該所定部分に対応する処理内容情報とを、両者の対応関係がわかるように表示する処理・ソースマッピング結果表示手段と、
を備えることを特徴とする。
【発明の効果】
【0008】
本発明によれば、特別なコーディングがされていないソースコードの再利用を支援することが可能となる。
【図面の簡単な説明】
【0009】
【図1】本発明の第1の実施形態に係るソフトウェア再利用支援装置の物理的な構成を示す図である。
【図2】本発明の第1の実施形態に係るソフトウェア再利用支援装置の機能構成図である。
【図3】テンプレートデータの構成を示す図である。
【図4】辞書DBに登録されるデータの例を示す図である。
【図5】処理・ソースマッピング処理の動作を説明するためのフローチャートである。
【図6】ソースコードの例を示す図である。
【図7】対応付処理の動作を説明するためのフローチャートである。
【図8】マッピングテーブルの例を示す図である。
【図9】対応付編集画面の例を示す図である。
【図10】ユーザからの更新の操作によって修正された後のマッピングテーブルの例を示す図である。
【図11】データシート・ソースマッピング処理の動作を説明するためのフローチャートである。
【図12】データシート参照画面の例を示す図である。
【図13】本発明の第2の実施形態に係るソフトウェア再利用支援装置の機能構成図である。
【図14】仕様書・ソースマッピング処理の動作を説明するためのフローチャートである。
【図15】仕様書マッピングテーブルの例を示す図である。
【図16】仕様書更新支援処理の動作を説明するためのフローチャートである。
【図17】仕様書参照画面の例を示す図である。
【発明を実施するための形態】
【0010】
以下、本発明の各実施形態について、図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付す。
【0011】
<<第1の実施形態>>
本発明の第1の実施形態に係るソフトウェア再利用支援装置100について説明する。このソフトウェア再利用支援装置100は、既存のソフトウェア部品(ソフトウェアモジュール)を再利用できるように、ソフトウェア部品に対応するソースコードの所定部分と、この部分に対応する処理の内容を示す処理内容情報とを対応付ける。さらに、ソフトウェア再利用支援装置100は、ソフトウェア部品の適用対象となるデバイスのデータシートの各項目(セクション)と、ソフトウェア部品に対応するソースコードの部分とを対応付ける。
【0012】
ソフトウェア再利用支援装置100は、物理的には、図1に示すように、通信部11と、入力部12と、出力部13と、記憶部14と、入出力I/F部15と、制御部16と、を備える。各部はバス17を介して互いに接続されている。
【0013】
通信部11は、通信ネットワーク2を介して、ネットワーク2上の図示せぬ情報処理装置等と通信を行うものであり、通信インタフェース等を備える。例えば、通信部11は、再利用の対象とするソフトウェア部品に対応するソースコード、ソフトウェア部品の適用対象であるデバイスのデータシート、及び、ソースコードの仕様書等を、これらネットワーク2上の情報処理装置から受信する。
【0014】
操作部12は、ソフトウェア再利用支援装置100に様々な情報を入力するために使用するものであり、ボタン、キー等の入力装置を備える。
【0015】
表示部13は、様々な情報を出力するものであり、ディスプレイ等の表示装置を備える。
【0016】
記憶部14は、様々な情報やプログラム等を記憶するものであり、ハードディスク等の補助記憶装置を備える。
【0017】
入出力I/F部15は、入出力機器3を接続するためのインタフェースである。例えば、処理の対象となるソースコードを、通信部11ではなく、入出力I/F部15を介して、CD−ROMドライブ等の入出力機器3から取り込むこともできる。
【0018】
制御部16は、データの演算処理を行うと共に、バス17を介して通信部11、操作部12、出力部13、記憶部14、入出力I/F部15を制御するものであり、CPU(Central Processing Unit)16a、ROM(Read Only Memory)16b、RAM(Random Access Memory)16c等を備える。制御部16における演算処理及び制御処理は、具体的には、CPU16aが、RAM16cを作業領域として使用して各種データを一時的に記憶させながら、ROM16bに記憶されている制御プログラムを実行することにより行われる。
【0019】
ソフトウェア再利用支援装置100は、機能的には、図2に示すように、テンプレート格納部101と、辞書DB(データベース)102と、処理・ソースマッピング部103と、処理・ソースマッピング結果表示部104と、データシート・ソースマッピング部105と、データシート・ソースマッピング結果表示部106と、を備える。なお、これらの各構成要素は、図1に示した制御部16が、同じく図1に示した通信部11、操作部12、出力部13、記憶部14、又は入出力I/F部15を制御することにより実現される。
【0020】
テンプレート格納部101には、タイマやLANドライバやシリアルドライバ等の機能を有するソフトウェア部品の種類毎に、ソフトウェア部品の機能を実現するための典型的な実装方法(処理や手順の内容や順番)が記述されたテンプレートデータ107が格納される。
【0021】
テンプレートデータ107の構成例を図3に示す。テンプレートデータ107は、条件部1071とデータ部1072とから構成される。
条件部1071は、このテンプレートデータ107が適用されるソフトウェア部品(ソースコード)の実装の条件を示すデータである。具体的には、条件部1071は、H/W(ハードウェア)型番、機能、方式等のソフトウェア部品の属性を示す項目とその値とから構成される。
データ部1072は、条件部1071が示す条件に合致するソフトウェア部品の典型的な実装方法が記載されたデータである。具体的には、データ部1072は、処理(ソースコード内の関数に相当)の内容がテキスト形式で記載された処理データと、処理毎の手順がテキスト形式で記載された手順データとを含んで構成される。なお、処理データの先頭のアルファベット(a)〜(e)は、処理の順番を示したものであり、この順番で、処理データに対応する処理(関数)がソースコード内に記載されることを示す。また、手順データの先頭の番号(1)〜(3)は、処理(関数)内で実施される手順の順番を示したものであり、この順番で、手順データに対応する手順がソースコードの処理(関数)内に記載されることを示す。
さらに、処理データと手順データとには、辞書DB102を参照して関連語を検出するためのキーワードとなる見出語が設定されている。
【0022】
図2に戻り、辞書DB102には、テンプレートデータ107で定義されている見出語とその見出語に関連する関連語とが対応付けられて格納される。辞書DB102に登録されるデータの例を図4に示す。例えば、図4の先頭のエントリから、見出語「LAN」の関連語は、「lan」、「ether」」、「ethernet」、「net」等であることがわかる。
【0023】
図2に戻り、処理・ソースマッピング部103は、テンプレート格納部101に格納されているテンプレートデータ107と辞書DB102とを参照して、ソフトウェア部品に対応するソースコード内の所定部分とこの部分に対応した処理の内容を示す情報(処理データ、手順データ)とをマッピングし(対応付け)、マッピングした結果をマッピングテーブル108として出力する。
【0024】
処理・ソースマッピング結果表示部104は、マッピングテーブル108等を参照して、ソースコードの所定部分と、この所定部分に対応する処理内容情報との対応関係がユーザにわかり、且つ、ユーザがその対応関係を編集(修正)することができるような対応付編集画面を作成して表示する。
【0025】
データシート・ソースマッピング部105は、マッピングテーブル108と辞書DB102とを参照して、ソースコードの所定部分と、この所定部分に対応するデータシートの部分(セクション)とをマッピングする(対応付ける)。
【0026】
なお、ここでいうデータシートとは、ソフトウェア部品が適用されるデバイスの特徴や仕様等が記載されている電子化されているドキュメントデータを示す。データシートには、番号と見出しが付されたセクション毎に、デバイスに関する情報が記載されている。なお、データシートはXML(Extensible Markup Language)等のマークアップ言語で記載されており、ソフトウェア開発支援装置100は、データシート内のセクションの構成を認識することができる。例えば、ソフトウェア開発支援装置100は、データシート内の特定のセクション部分のみを取得して表示することが可能である。
【0027】
データシート・ソースマッピング結果表示部106は、データシート・ソースマッピング部105がマッピングしたソースコードの所定部分とデータシートの所定部分(セクション)との対応関係をユーザが参照可能に表示する。
【0028】
続いて、ソフトウェア再利用支援装置100の動作について説明する。
【0029】
(処理・ソースマッピング処理)
始めに、ソフトウェアーモジュールのソースコードの所定部分と、この部分に対応する処理の内容を示す情報(処理データおよび手順データ)とをマッピングし、その結果をユーザが編集可能に表示する処理・ソースマッピング処理について、図5のフローチャートを参照して説明する。
【0030】
ユーザは、操作部12を操作して、処理・ソースマッピング処理開始用の所定の画面を表示部1312に表示させる。そして、ユーザは、操作部12を操作して、この画面上から、処理の対象とするソースコードの指定と、テンプレートデータ107を検索するための条件とを入力する。ここでは、指定したソースコードに対応したソフトウェア部品のテンプレートデータ107を検出するための検出条件を入力するのが望ましい。例えば、UART(Universal Asynchronous Receiver Transmitter)方式のマイコンのシリアル通信機能に関するソフトウェア部品に対応するソースコードを処理対象として指定する場合、テンプレートデータ107の検索条件として、H/W型番「マイコンA」、機能「シリアル通信」、方式「UART」等と入力すればよい。処理・ソースマッピング部103は、この入力操作に応答して、テンプレート格納部101に記憶されているテンプレートデータ107の条件部1071を検索し、入力された検索条件に合致するテンプレートデータ107を検出する(ステップS11)。
【0031】
続いて、処理・ソースマッピング部103は、検出したテンプレートデータ107の記載を参照して、指定したソースコードの各部分と、各部分に対応した処理データ、手順データとを対応付ける対応付処理を行う(ステップS12)。
【0032】
ここで、対応付処理(ステップS12)の詳細について、図6に示すソースコードを処理対象とした場合を例に、図7のフローチャートを用いて説明する。図6に示すソースコードは、C言語で記述されており、「sio_init()」、「port_open()」、「sio_putchar()」、「sio_getchar()」、「sio_getchar_err()」、「sio_send_frame()」の6つの関数から構成されている。なお、ソースコードの各行の左側の数字は行番号であり、以下の説明を容易にするために便宜的に付したものである。また、このソースコードに対するテンプレートデータ107として、図3に示すテンプレートデータ107が検出されているものとする。また、辞書DB102には、図4に示す情報が格納されているものとする。
【0033】
まず、処理・ソースマッピング部103は、検出したテンプレートデータ107と辞書DB102とを参照して、指定したソースコードに含まれる関数と、該関数の処理内容を示す処理データとを対応付ける(ステップS121)。
【0034】
具体的には、まず、処理・ソースマッピング部103は、ソースコード内の関数の関数名やコメントから関連語を検出する。そして、処理・ソースマッピング部103は、辞書DB102を参照して、検出した関連語の見出語を検出する。そして、処理・ソースマッピング部103は、検出した見出語と一致する見出語を有する処理データをテンプレートデータ107から検出し、この関数と対応付ければよい。または、関数間の呼出関係を考慮して、呼出元の関数と同じ処理データを呼出先の関数に対応付けてもよい。また、ソースコード内での関数の出現する順番と、テンプレートデータ107に記載されている処理の順番とに基づいて、関数名を対応付けてもよい。
【0035】
例えば、図3に示すテンプレートデータ107のデータ部1072に記載されている処理データ「初期化」には、見出語「初期化」が設定されている。そして、図4に示す辞書DB102には、見出語「初期化」の関連語として、「初期化」、「init」、「 initialization」、「 set」、「 設定」が定義されている。従って、処理・ソースマッピング部103は、図6に示すソースコードに記載されている関数のうちで、関数名にこれらの関連語のうちの「init」を含む関数「sio_init()」に、処理データ「初期化」を対応付ける。なお、関数「sio_init()」がソースコード内で最初に記載されている関数であることを理由に、テンプレートデータ107の記載内での最初の処理データである「初期化」を対応付けてもよい。また、この関数「sio_init()」は、9行目で関数「port_open()」を呼び出している。従って、処理・ソースマッピング部103は、関数「port_open()」にも、呼出元の関数と同じ処理データ「初期化」を対応付ける。
【0036】
また、図3に示すテンプレートデータ107に記載されている処理データ「1バイト送信」には、見出語「送信」、「バイト」が設定されている。また、図4に示す辞書DB102には、見出語「送信」の関連語として、「送信」、「 sd」、「 snd」、「 send」、「 out」、「 put」が定義されている。また、見出語「バイト」の関連語として、「バイト」、「 byte」、「 char」が定義されている。従って、処理・ソースマッピング部103は、これらの各関連語「put」と「char」とを関数名に含む図6に示すソースコード内の関数「sio_putchar()」に、処理データ「1バイト送信」を対応付ける。
【0037】
以下同様に、処理・ソースマッピング部103は、関数「sio_getchar()」に処理データ「1バイト受信」を、関数「sio_getchar_err()」に処理データ「1バイト受信エラー」を、関数「sio_send_frame()」に処理データ「1フレーム送信」を、それぞれ対応付ける。
【0038】
図7に戻り、ステップS121の処理が終了すると、処理・ソースマッピング部103は、検出したテンプレートデータ107と辞書DB102とを参照して、各関数内の手順と、該手順の内容を示す手順データとを対応付ける(ステップS122)。具体的には、処理・ソースマッピング部103は、関数内の手順の記載や付されているコメントに含まれる関連語に対応する見出語が、テンプレートデータ107の見出語と一致する手順データを、この手順と対応付ければよい。または、手順間の呼出関係を考慮して、呼出元の手順と同じ手順データを呼出先の手順に対応付けてもよい。また、関数内での手順の順番と、テンプレートデータ107に記載されている手順の順番とに基づいて、手順データを対応付けてもよい。
【0039】
例えば、図3に示すテンプレートデータ107から、処理データ「初期化」には、手順データ「割込禁止設定」、「レジスタ設定」、「割込許可設定」が順番に対応付けられていることがわかる。また、これらの手順データのうち手順データ「割込禁止設定」には、見出語「割込」が設定されている。そして、図4に示す辞書DB102には、辞書見出「割込」の関連語の1つとして「intr」が設定されている。従って、処理・ソースマッピング部103は、処理データ「初期化」が対応付けられている図6に示すソースコードに含まれる関数「sio_init()」内の手順のうち、この関連語「init」を含む3行目の手順「set_intr_off();」に、手順データ「割込禁止設定」を対応付ける。なお、手順データ「割込許可設定」の見出語も「割込」であるが、「set_intr_off();」は関数内での最初の手順であるため、テンプレートデータ107内での記載順が最初の手順データ「割込禁止設定」が割り当てられる。
【0040】
また、図3に示すテンプレートデータ107から、手順データ「レジスタ設定」には、見出語「レジスタ」が設定されていることごわかる。また、図4に示す辞書DB102には、見出語「レジスタ」の関連語として「レジスタ」が設定されている。従って、処理データ「初期化」が対応付けられている図6に示すソースコードに含まれる関数「sio_init()」内で、この関連語「レジスタ」をコメントに含む5〜7行目にかけての3つの手順「SCR = INIT_SIR_INIT;」「SMR = 0x00;」「BRR = BRR_115200;」それぞれに、手順データ「レジスタ設定」が対応付けられる。
【0041】
同様に、見出語「割込」の関連語「intr」を含み、関数「sio_init()」内での処理が最後である11行目の手順「set_intr_on();」には、図3に示すテンプレートデータ107を参照して、手順データ「割込許可設定」が対応付けられる。
【0042】
なお、関数「sio_init()」内の9行目の手順「port_open();」には、コメント部分も含めて辞書DB102に登録されている関連語は含まれていないものの、前後の手順に対応付けられた手順データの順番と、テンプレートデータ107に記憶されている手順データの順番とに基づいて、「レジスタ設定」か「割込許可設定」の何れかの手順データが対応付けられる。ここでは、手順「port_open();」に手順データ「割込許可設定」が対応付けられたものとする。
【0043】
以下、図6に示すソースコードの他の関数についても、同様に、関数内の手順と、テンプレートデータ107に記載されている手順データとを対応付ける処理が行われる。
【0044】
図7に戻り、ステップS122の処理が終了すると、処理・ソースマッピング部103は、ステップS121とステップS122との処理で、ソースコードの部分と処理内容を示す処理内容情報(処理データ、手順データ)とを対応付けた結果を保持するマッピングテーブル108を作成して、対応するソフトウェア部品(ソースコード)と関連付けて記憶部14に保存する(ステップS123)。
【0045】
図8は、図6に示すソースコードの処理(関数)のうち、処理データ「初期化」に対応付けられている関数部分のマッピングテーブル108の例を示す図である。図8では、XMLの形式でマッピングテーブル108が作成されている。具体的には、「mapping_item」タグで指定した処理データ「初期化」と、「func_name」タグで指定した関数「sio_init」、「port_open」とが対応付けられている。また、「proc_name」タグで指定した手順データ「割込禁止設定」、「レジスタ設定」、「割込許可設定」と、直後の「source_code_line」タグで指定したソースコードの部分(行数)とが、「proc_item」タグにより対応付けられている。以上で対応付処理は終了する。
【0046】
図5に戻り、対応付処理が終了すると、処理・ソースマッピング結果表示部104は、作成されたマッピングテーブル108と、このマッピングテーブル108に対応するソースコードとを合成した対応付編集画面を作成し、表示部13に表示する(ステップS13)。
【0047】
ユーザは、対応付編集画面からソースコードの所定部分と、この部分に対応する処理内容情報との対応関係を把握するとともに、対応関係に誤りがある場合に操作部12を操作してこの対応関係を修正するための操作を行う。処理・ソースマッピング結果表示部104は、この操作に応答して、修正された内容に基づいてマッピングテーブル108を更新する(ステップS14)。
【0048】
図9に、図8に示すマッピングテーブル108と、それに対応する図7に示すソースコードの一部とを合成して作成された対応付編集画面の例を示す。ソースコード内の関数の右側には、マッピングテーブル108によって対応付けられている処理データが表示される。また、関数内の各処理の右側には、マッピングテーブル108によって対応付けられている手順データが表示される。また、処理データ、及び、手順データの表示の右側の三角形をクリックすることにより、プルダウンメニューでテンプレートデータ107に記述されている他の処理データや手順データを選択することができ、処理・ソースマッピング結果表示部104は、選択した内容に応じて、マッピングテーブル108を修正する。
【0049】
例えば、ユーザは、図9に示す対応付編集画面の9行目の手順「port_open();」の右側の表示「割込許可設定」の右側の三角形をクリックして、手順データを「割込許可設定」から「レジスタ設定」に更新する操作を行う。この操作に応答して、処理・ソースマッピング結果表示部104は、手順「port_open();」に対応付けられる手順データが「割込許可設定」から「レジスタ設定」になるようにマッピングテーブル108を更新する。さらに、処理・ソースマッピング結果表示部104は、関数「port_open();」から呼ばれる17行目と18行目の手順に対応付けられる手順データも「割込許可設定」から「レジスタ設定」に更新する。これらの更新操作によって修正されたマッピングテーブル108の一部を図10に示す。
【0050】
このように、処理・ソースマッピング処理により、ソースコード内の各部分と、対応する処理の内容を示す処理内容情報(処理データ、手順データ)とがマッピングされる。以上で処理・ソースマッピング処理は終了する。
【0051】
(データシート・ソースマッピング処理)
続いて、ソフトウェア部品に対応するソースコードと、該ソフトウェア部品の適用対象であるデバイスのデータシートの記載とをマッピングするデータシート・ソースマッピング処理について、図11のフローチャートを参照して説明する。なお、事前に処理・ソースマッピング処理が実行されて、マッピングテーブル108が作成されているものとする。
【0052】
ユーザは、操作部12を操作して、データシート・ソースマッピング処理開始用の所定の画面を表示部13に表示させる。ユーザは、操作部12を操作して、この画面上から、対応付けの対象とするソースコードとデータシートとを指定する。データシート・ソースマッピング部105は、この入力操作に応答して、指定されたソースコードに対応するマッピングテーブル108と、指定されたデータシートとを取得する(ステップS21)。なお、H/W(ハードウェア)型番、機能、方式等といったソフトウェア部品の属性値の条件を指定して、その条件に合致するソフトウェア部品に対応するソースコードを取得してもよい。
【0053】
続いて、データシート・ソースマッピング部105は、取得したマッピングテーブル108等を参照して、指定したソースコード内の各手順と、取得したデータシート内の各セクションとを対応付ける(ステップS22)。
【0054】
具体的には、データシート・ソースマッピング部105は、取得したマッピングテーブル108を参照して、ソースコード内の所定の手順に対応付けられている手順データを検出する。続いて、データシート・ソースマッピング部105は、テンプレートデータ107を参照して検出した手順データの見出語を検出するとともに、辞書DB102を参照してその関連語を検出する。そして、データシート・ソースマッピング部105は、取得したデータシート内で、検出した関連語が所定数以上記載されているセクション(章、節、項、目等)の識別子である番号を、この所定の手順が記載されているソースコード内での位置(行数)と対応付ければよい。なお、データシート・ソースマッピング部105は、検出した関連語のセクション内での密度(セクション全体の単語数に対する関連語の割合)が所定値以上あるセクションの番号や、検出した関連語を見出しに含むセクションの番号を、この所定の手順が記載されているソースコード内での位置(行数)と対応付けてもよい。
【0055】
続いて、データシート・ソースマッピング結果表示部106は、ソースコード内の各手順から対応するデータシートのセクション部分を参照可能な図12に示すようなデータシート参照画面を作成して、表示部13に表示させる(ステップS23)。
【0056】
図12に示すデータシート参照画面上からソースコード内の各手順の右側の参照ボタンをクリックする操作に応答して、データシート・ソースマッピング結果表示部106は、この手順に対応するデータシートのセクション部分をポップアップ表示する。例えば、図12に示すように、3行目の手順「set_intr_off();」の右側の参照ボタンをクリックすると、割込設定について記載されているデータシートのセクション部分がポップアップ表示される。以上で、データシート・ソースマッピング処理は終了する。
【0057】
このように、本実施形態では、テンプレートデータ107に記載されたソフトウェア部品の実装の方法(パターン)に合うようにソースコードを解析して、ソースコード内の処理と、該処理に対応する処理内容情報(処理データ、手順データ)とをマッピングし、その結果を表示する。従って、ユーザは、特別なコーディングがされていないソースコードであっても、ソースコードと処理内容との関係を容易に把握することができ、ソースコードの保守性を高めて、ソースコードの再利用を支援することが可能となる。
特に、ハードウェアを制御するドライバの機能のように、典型的な実装パターンを持つソフトウェア部品に対応するソースコードは、テンプレートデータ107に沿った形でコーディングされている可能性が高いため、本発明をより好適に適用可能である。
【0058】
また、本実施形態では、ソースコードと処理とをマッピングした結果を、ユーザが修正可能に表示する。従って、表示された対応関係に誤りがある場合、ユーザは即座に修正を行うことができる。これにより、例えば、処理とソースコードとをマッピングした結果をソースコードの移植や改修の作業等に利用する場合に、参照データとしての正確さを向上させることが可能になる。
【0059】
また、本実施形態では、辞書DB102を参照して検出した関連語を用いてソースコードと処理とのマッピングを行う。従って、表記の揺れや、関数の命名の慣用的な複数のパターンに対応した、より正確な処理とソースコードとの対応付けが可能になる。
【0060】
さらに、本実施形態では、マッピングデータ107には、処理内用情報(処理データ、手順データ)が実行される順番を示す情報も併せて記憶されており、処理内容情報の実行順とソースコード内での対応部分の出現順とがなるべく一致するようにマッピングが実施される。従って、マッピングの精度をより向上させることが可能になる。
【0061】
また、本実施形態では、ソフトウェア部品に対応するソースコードの部分と、このソフトウェアを適用対象とするデバイスのデータシートの部分(セクション)とを対応付けて参照可能に表示する。これにより、既存のソフトウェア部品(ソースコード)を新規のデバイスに移植する際等に、ユーザは、この新規のデバイスのデータシートと既存のソースコードとの対応関係を即時に把握することができるため、効率よく移植作業を行うことが可能になる。
【0062】
<<第2の実施形態>>
第1の実施形態に係るソフトウェア開発支援装置200では、ソフトウェア部品を使用するデバイスのデータシートの部分(セクション)と、ソフトウェア部品に対応するソースコードの部分とを対応付けた。これに対し、第2の実施形態に係るソフトウェア開発支援装置200は、ソースコードと仕様書との間で、対応する部分同士を対応付けることを特徴とする。さらに、第2の実施形態に係るソフトウェア開発支援装置200は、この対応付けした結果を利用して、ソースコードが変更された際に、仕様書の変更作業を支援する処理を行う。
【0063】
なお、ここでいう仕様書とは、ソフトウェア開発者等によって作成、参照される、ソースコードの処理や機能の仕様が記載されている電子化されているドキュメントデータを示す。仕様書には、番号と見出しが付されたセクション毎に、見出しに対応した内容のソースコードの仕様が記載されている。なお、仕様書はXML(Extensible Markup Language)等のマークアップ言語で記載されており、ソフトウェア開発支援装置200は、仕様書内のセクションの構成を認識することができる。例えば、ソフトウェア開発支援装置100は、仕様書内の特定のセクション部分のみを取得して表示することが可能である。
【0064】
第2の実施形態に係るソフトウェア開発支援装置200の機能構成図を図13に示す。なお、第1の実施形態に係るソフトウェア開発支援装置100と同じ構成については、同じ参照符号を付し、その部分の説明は省略する。第2の実施形態に係るソフトウェア開発支援装置200は、第1の実施形態に係るソフトウェア開発支援装置100と比べて、データシート・ソースマッピング部105とデータシート・ソースマッピング結果表示部106とが無く、仕様書・ソースマッピング部109と仕様書変更候補表示部110とを備える。
【0065】
仕様書・ソースマッピング部109は、マッピングテーブル108と辞書DB102とを参照して、ソースコードの所定部分と、この所定部分に対応する仕様書の部分(セクション)とをマッピングし、マッピングした結果を仕様書マッピングテーブル111として出力する。
【0066】
仕様書変更候補表示部110は、ソースコードが変更された際に、仕様書マッピングテーブル111等を参照して、ソースコードの変更された部分に対応する仕様書のセクション部分を、修正を要する候補として表示する。
【0067】
続いて、ソフトウェア再利用支援装置200の動作について説明する。
なお、処理・ソースマッピング処理については、第1の実施形態と同様な処理が行われるため説明を省略する。
【0068】
(仕様書・ソースマッピング処理)
続いて、ソースコードと、該ソースコードの仕様書とをマッピングする仕様書・ソースマッピング処理について、図14のフローチャートを参照して説明する。なお、事前に処理・ソースマッピング処理が実行されて、マッピングテーブル108が作成されているものとする。
【0069】
ユーザは、操作部12を操作して、仕様書・ソースマッピング処理開始用の所定の画面を表示部13に表示させる。ユーザは、操作部12を操作して、この画面上から、対応付けの対象とするソースコードとその仕様書とを指定する。仕様書・ソースマッピング部109は、この入力操作に応答して、指定されたソースコードに対応するマッピングテーブル108と、指定された仕様書とを取得する(ステップS31)。なお、H/W(ハードウェア)型番、機能、方式等といったソフトウェア部品の属性値の条件を指定して、その条件に合致するソフトウェア部品に対応するソースコードを取得してもよい。
【0070】
続いて、仕様書・ソースマッピング部109は、取得したマッピングテーブル108を参照して、指定したソースコード内の各手順と、取得した仕様書内の各セクションとを対応付ける(ステップS32)。
【0071】
具体的には、仕様書・ソースマッピング部109は、取得したマッピングテーブル108を参照して、ソースコード内の所定の手順に対応付けられている手順データを検出する。続いて、仕様書・ソースマッピング部109は、テンプレートデータ107を参照して検出した手順データの見出語を検出するとともに、辞書DB102を参照してその関連語を検出する。そして、仕様書・ソースマッピング部109は、取得した仕様書内で、検出した関連語が所定数以上記載されているセクション(章、節、項、目等)の識別子である番号を、この所定の手順が記載されているソースコード内での位置(行数)と対応付ければよい。なお、仕様書・ソースマッピング部109は、検出した関連語のセクション内での密度(セクション全体の単語数に対する関連語の割合)が所定値以上あるセクションの番号や、検出した関連語を見出しに含むセクションの番号を、この所定の手順が記載されているソースコード内での位置(行数)と対応付けてもよい。
【0072】
続いて、仕様書・ソースマッピング部109は、ステップS32で対応付けた結果を保持する仕様書マッピングテーブル111を作成して、記憶部14に保存する(ステップS33)。
【0073】
図15は、図6に示すソースコードの処理(関数)のうち、処理データ「初期化」に対応する関数部分の仕様書マッピングテーブル111の例を示す図である。図15では、XMLの形式で仕様書マッピングテーブル111が作成されている。具体的には、「proc_name」タグで指定した手順データと、「source_code_line」タグで指定したソースコードの部分(行数)と、「spec_section」タグで指定した仕様書内のセクション番号とが、「proc_item」タグにより対応付けられている。
【0074】
図14に戻り、仕様書・ソースマッピング部109は、作成された仕様書マッピングテーブル111と、このマッピングテーブル108に対応するソースコードとを合成した、ソースコード上から対応する仕様書のセクション部分を参照可能な画面を作成して、表示部13に表示する(ステップS34)。以上で仕様書・ソースマッピング処理は終了する。
【0075】
(仕様書更新支援処理)
続いて、ソースコードが更新された際に、このソースコードの仕様書の更新作業を支援する仕様書更新支援処理について、図16のフローチャートを参照して説明する。なお、事前に仕様書・ソースマッピング処理がなされており、更新支援対象の仕様書に関する仕様書マッピングテーブル111が作成されているものとする。
【0076】
ソフトウェア再利用支援装置200が起動した場合、又は、操作部12を介して仕様書更新支援処理を開始することを示すユーザからの指示入力を受信した場合、仕様書変更候補表示部110は、定期的にソースコードを解析して、ソースコードが更新されたか否かを判別する(ステップS41)。
【0077】
ソースコードが更新されていない場合(ステップS41;No)、仕様書変更候補表示部110は、ソースコードが更新されるまで、定期的にソースコードの更新を判別するステップS41の処理を繰り返す。ソースコードが更新されたと判別した場合(ステップS41;Yes)、仕様書変更候補表示部110は、このソースコードの仕様書マッピングテーブル111を参照して、ソースコード内の更新された部分に対応付けられている仕様書のセクションを特定する(ステップS42)。
【0078】
例えば、仕様書マッピングテーブル111が図15に示すように記載されている場合、更新されたソースコードの行を指定する「source_code_line」タグと同じ「proc_item」タグ中の「spec_section」タグで指定されている仕様書のセクション番号を特定すればよい。
【0079】
続いて、仕様書変更候補表示部110は、ソースコードの更新部分と、特定した仕様書のセクション部分とを関連付けて表示する図17に示すような仕様書参照画面を作成して表示部13に表示する(ステップS43)。この仕様書参照画面では、変更されたソースコードの7行目部分が点線で囲まれて強調されるとともに、この部分に対応する仕様書の43.2節の部分が変更部分と関連付けられて表示される。ユーザは仕様書参照画面を確認することで、プログラムソース内で変更があった部分に対応する仕様書の部分を即時に知ることができ、ソースコード変更に伴う仕様書の変更処理を迅速に行うことが可能となる。以上で仕様書更新支援処理は終了する。
【0080】
このように、本実施形態では、ソースコードと仕様書の対応する部分同士を対応付けて、相互参照可能に表示する。これにより、ユーザは、ソースコードと仕様書との対応関係を直感的に把握することができるため、ソフトウェアの再利用性や保守性を高めることができる。
【0081】
また、本実施形態では、ソースコードが変更された際に、変更された箇所に対応する仕様書のセクションが表示される。従って、ユーザは、ソフトウェアのバージョンアップなどに伴ってソースコードが変更された際に、仕様書の変更作業を効率良く行うことが可能となる。
【0082】
なお、本発明は、上記各実施形態に限定されず、本発明の要旨を逸脱しない部分での種々の変更は勿論可能である。
【0083】
例えば、上記各実施形態では、辞書DB102を参照して、テンプレートデータ107の所定の見出語の関連語を特定し、特定した関連語を含むソースコードの部分を、この所定の見出語を有する処理内容情報(処理データ、手順データ)とマッピングした。しかしながら、辞書DB102を参照しないで、見出語で直接ソースコードを検索することにより、マッピングを行ってもよい。即ち、テンプレートデータ107の所定の見出語を含むソースコードの部分を、この所定の見出語を有する処理内容情報(処理データ、手順データ)と対応付けてもよい。
【0084】
例えば、上記各実施形態では、ソースコード内の処理(関数)に処理データ、手順に手順データを対応付けたが、処理データのみ、若しくは、手順データのみをソースコード内の部分と対応付けるようにしてもよい。
【0085】
例えば、SGML(Standard Generalized Markup Language)やXHTML(Extensible HyperText Markup Language)等といったXML以外の他のマークアップ言語でマッピングテーブル108や仕様書マッピングテーブル111を記載してもよい。または、マッピングテーブル108や仕様書マッピングテーブル111を表形式のデータとしてもよく、データ形式は任意のものが採用可能である。
【0086】
また、上記各実施形態では、C言語で記載されているソースコードを例にして主に説明したが、JAVA(登録商標)やBASIC等の他のプログラム言語で記載されているソースコードにも本願発明が適用できるのは勿論である。
【0087】
また、例えば、本発明に係るソフトウェア再利用支援装置100,200の動作を規定する動作プログラムを既存のパーソナルコンピュータや情報端末機器等に適用することで、当該パーソナルコンピュータ等を本発明に係るソフトウェア再利用支援装置100,200として機能させることも可能である。
【0088】
また、このようなプログラムの配布方法は任意であり、例えば、CD−ROM(Compact Disk Read-Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto Optical Disk)、メモリカードなどのコンピュータ読み取り可能な記録媒体に格納して配布してもよいし、インターネットなどの通信ネットワークを介して配布してもよい。
【産業上の利用可能性】
【0089】
例えば、組み込みシステムのデバイスドライバの開発支援装置に本発明を適用可能である。
【符号の説明】
【0090】
100,200 ソフトウェア再利用支援装置
101 テンプレート格納部
102 辞書DB
103 処理・ソースマッピング部
104 処理・ソースマッピング結果表示部
105 データシート・ソースマッピング部
106 データシート・ソースマッピング結果表示部
107 テンプレートデータ
108 マッピングテーブル
109 仕様書・ソースマッピング部
110 仕様書変更候補表示部
111 仕様書マッピングテーブル

【特許請求の範囲】
【請求項1】
ソフトウェアを部品化したソフトウェア部品の機能を実現するための典型的な処理の内容を示す処理内容情報と見出語とが対応付けられたテンプレートデータを記憶するテンプレート記憶手段と、
前記ソフトウェア部品に対応するソースコード内から前記見出語を検出し、検出した見出語を含む部分と前記テンプレートデータ内で該見出語に対応付けられている処理内容情報とをマッピングし、マッピングした結果を保持するマッピングテーブルを作成する処理・ソースマッピング手段と、
前記マッピングテーブルを参照して、前記ソースコードの所定部分と該所定部分に対応する処理内容情報とを、両者の対応関係がわかるように表示する処理・ソースマッピング結果表示手段と、
を備えることを特徴とするソフトウェア再利用支援装置。
【請求項2】
前記処理・ソースマッピング結果表示手段は、前記ソースコードの所定部分と該所定部分に対応する処理内容情報との対応関係をユーザが編集可能に表示し、ユーザが編集した内容に基づいて、前記マッピングテーブルを更新する、
ことを特徴とする請求項1に記載のソフトウェア再利用支援装置。
【請求項3】
見出語と、見出語に関連する関連語とを対応付けて記憶する辞書手段を備え、
前記処理・ソースマッピング手段は、
前記辞書手段を参照して前記テンプレートデータに格納されている見出語の関連語を検出し、
前記ソフトウェア部品に対応するソースコード内で検出した関連語を含む部分と、前記テンプレートデータ内で検出した関連語に対応する前記見出語に対応付けられている処理内容情報と、をマッピングする、
ことを特徴とする請求項1又は2に記載のソフトウェア再利用支援装置。
【請求項4】
前記テンプレートデータには、前記典型的な処理が実行される順番を示す情報がさらに記述されており、
前記処理・ソースマッピング手段は、前記テンプレートデータが示す処理の順番と、前記ソースコード内での処理の順番とに基づいて、前記ソースコードの所定部分と該所定部分に対応する処理内容情報とをマッピングする、
ことを特徴とする請求項1乃至3の何れか1項に記載のソフトウェア再利用支援装置。
【請求項5】
前記マッピングテーブルを参照して、前記ソースコードの所定部分と、該所定部分に対応する前記ソフトウェア部品の適用対象であるデバイスのデータシートの部分と、をマッピングするデータシート・ソースマッピング手段をさらに備える、
ことを特徴とする請求項1乃至4の何れか1項に記載のソフトウェア再利用支援装置。
【請求項6】
前記マッピングテーブルを参照して、前記ソースコードの所定部分と該ソースコードの仕様書内の部分とをマッピングする仕様書・ソースマッピング手段をさらに備える、
ことを特徴とする請求項1乃至5の何れか1項に記載のソフトウェア再利用支援装置。
【請求項7】
前記ソースコードが変更された際に、前記仕様書・ソースマッピング手段が対応付けた対応関係を参照して、変更されたソースコードの部分に対応する前記仕様書の部分を表示する仕様書変更候補表示手段をさらに備える、
ことを特徴とする請求項6に記載のソフトウェア再利用支援装置。
【請求項8】
ソフトウェアを部品化したソフトウェア部品の機能を実現するための典型的な処理の内容を示す処理内容情報と見出語とが対応付けられた前記テンプレートデータを取得し、
前記ソフトウェア部品に対応するソースコード内から前記見出語を検出し、検出した見出語を含む部分と前記テンプレートデータ内で該見出語に対応付けられている処理内容情報とをマッピングし、マッピングした結果を保持するマッピングテーブルを作成し、
前記マッピングテーブルを参照して、前記ソースコードの所定部分と該所定部分に対応する処理内容情報とを、両者の対応関係がわかるように表示する、
ことを特徴とするソフトウェア再利用支援方法。
【請求項9】
コンピュータを、
ソフトウェアを部品化したソフトウェア部品の機能を実現するための典型的な処理の内容を示す処理内容情報と見出語とが対応付けられたテンプレートデータを記憶するテンプレート記憶手段、
前記ソフトウェア部品に対応するソースコード内から前記見出語を検出し、検出した見出語を含む部分と前記テンプレートデータ内で該見出語に対応付けられている処理内容情報とをマッピングし、マッピングした結果を保持するマッピングテーブルを作成する処理・ソースマッピング手段、
前記マッピングテーブルを参照して、前記ソースコードの所定部分と該所定部分に対応する処理内容情報とを、両者の対応関係がわかるように表示する処理・ソースマッピング結果表示手段、
として機能させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2013−80355(P2013−80355A)
【公開日】平成25年5月2日(2013.5.2)
【国際特許分類】
【出願番号】特願2011−219637(P2011−219637)
【出願日】平成23年10月3日(2011.10.3)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ETHERNET
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】