JP5041990B2 - ソフトウェア部品抽出支援装置 - Google Patents

ソフトウェア部品抽出支援装置 Download PDF

Info

Publication number
JP5041990B2
JP5041990B2 JP2007309042A JP2007309042A JP5041990B2 JP 5041990 B2 JP5041990 B2 JP 5041990B2 JP 2007309042 A JP2007309042 A JP 2007309042A JP 2007309042 A JP2007309042 A JP 2007309042A JP 5041990 B2 JP5041990 B2 JP 5041990B2
Authority
JP
Japan
Prior art keywords
software component
software
source code
structure diagram
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007309042A
Other languages
English (en)
Other versions
JP2009134445A (ja
Inventor
宙祥 平松
繁 大河原
卓也 藤本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2007309042A priority Critical patent/JP5041990B2/ja
Publication of JP2009134445A publication Critical patent/JP2009134445A/ja
Application granted granted Critical
Publication of JP5041990B2 publication Critical patent/JP5041990B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、ソフトウェアの再利用のために既存のソフトウェアのソースコードを部品化する装置に関するものである。
近年、例えば家電機器や携帯機器などの制御ソフトウェアなどに見られるように、ソフトウェアは複雑化と大型化が進む一方、ソフトウェアに求められるニーズは早いスピードで変化している。これに対応して複雑かつ大型のソフトウェアを早いスピードで開発するためには、既存のソフトウェアを出来るだけ効率よく再利用することが不可欠となっている。
ソフトウェアの再利用を効率よく行うためには、既存のソフトウェアのソースコードから再利用可能なソフトウェア部品をそのデータと制御構造によって抽出し、既存のソフトウェアの開発者でなくても理解して再利用できるように、使用しているデータやコメントなどからソフトウェア部品を自動的に分類、整理する技術が求められる。
このような技術に関連して、例えば特許文献1によれば、プログラムの部品を、プログラムの制御構造や処理の入れ子関係から抽出した実行パスごとに管理する方法が示されている。
特開平8−328904号公報
しかしながら、特許文献1に示されている技術は、プログラムのテストを正確に行う目的で実行パスによってプログラムの部品が特定されるシステムになっているので、各部品の機能との対応付けが行われておらず、再利用前のプログラムの開発者以外にはわかりにくく、プログラムの部品を再利用してプログラムの開発の効率化を図る目的での使用には適さない。
本発明は、上記に鑑みてなされたものであって、ソフトウェア部品を切り出し、該ソフトウェア部品を効率よく再利用できる部品管理機構を備えたソフトウェア部品抽出支援装置を得ることを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、ソフトウェアのソースコードを切り出して部品化するソフトウェア部品抽出支援装置において、ソースコード内のデータ入出力と制御構造に着目してコード断片を切り出すソースコード抽出部と、該コード断片に基本インターフェースを付与してソフトウェア部品を作成するソフトウェア部品作成部と、該ソフトウェア部品を、元のソースコードの構造を表現する構造図の構成要素および機能の構造を表現する機能構造図の構成要素に対応付けて保持するソフトウェア部品管理部と、を備え、前記ソースコード抽出部により切り出された夫々のコード断片に対して、該コード断片の元になった関数の呼び出し関係および呼び出し元・呼び出し先のコメントをソースコードから抽出してメタデータを作成するメタデータ生成部をさらに備え、前記ソフトウェア部品管理部は、前記メタデータを参照して前記ソフトウェア部品を前記構造図および機能構造図の構成要素に対応付ける、ことを特徴とする。
この発明によれば、既存のソフトウェアから切り出したソフトウェア部品を元のソフトウェアのソースコードの構造を表現する構造図の構成要素および機能の構造を表現する機能構造図の構成要素の両方に対応付けて保持するので、ソフトウェア部品を切り出し、該ソフトウェア部品を効率よく再利用できる部品管理機構を備えたソフトウェア部品抽出支援装置を得ることができるという効果を奏する。
以下に、本発明にかかるソフトウェア部品抽出支援装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態.
図1は、本発明にかかるソフトウェア部品抽出支援装置の実施の形態の機能構成図である。
図1において、ソフトウェア部品抽出支援装置1は、ソースコード抽出部10、ソフトウェア部品作成部11、ソフトウェア部品管理部12、ソフトウェア部品選択支援部13、メタデータ生成部14、対応付け結果修正操作部15、ソースコード保存庫20、基本インターフェース保存庫21、ソフトウェア仕様保存庫22を備える。
次に、ソフトウェア部品抽出支援装置1が備える各機能部の機能を説明する。
ソースコード抽出部10は、ソースコード保存庫20からソースコードを取り出し、ソースコード内の関数・繰り返し構文・分岐構文に着目してソースコードを分解し、そこに含まれる条件および処理を部品の候補(コード断片)として切り離す。また、ソースコード抽出部10は、複数の処理(関数呼び出しなど)と同じ処理を行っている部分があれば、同じ処理を行う複数の断片を一つのコード断片として扱う。
ここで、ソースコード抽出部10によるソースコードの切り出し方をより具体的に説明する。図2に、例としてセンサー入力に関するソフトウェアのソースコードの一部を示す。図2に示されるソースコードにおいて、ソースコード抽出部10は、コメント文「センサーデータのバックアップ」に示される関数のような小さい関数はそのまま切り出す。コメント文「センサーデータの更新」に示される関数のような大きな関数は、ソースコード抽出部10は、繰り返し構文および分岐構文に基づいていくつかの部分に分けて切り出す。さらに、ソースコード抽出部10は、11行目および12行目に記述されている「sensor_updtdrv(&sdata.data[i]);sensor_check(&sdata.data[i]);」と、16行目および17行目に記述されている「sensor_updtdrv(&sdata.data[end]);sensor_check(&sdata.data[end]);」のように、使われているデータが同じであって、かつ同じ条件または同じ処理手順の部分については、該複数の部分を同一の断片とみなして1つのコード断片として切り出す。
このように切り離されたコード断片は、ソースコード抽出部10によりソフトウェア部品作成部11に送られる。
ソフトウェア部品作成部11は、ソースコード抽出部10から送られてきたコード断片にインターフェースを与えて部品化する。インターフェースはインターフェース保存庫21に蓄えられており、ソフトウェア部品作成部11は、蓄えられているインターフェースのうち、送られてきたコード断片に最も適切なものを選択する。部品化されたソースコード(以下、単にソフトウェア部品という)はソフトウェア部品管理部12に送られる。
メタデータ生成部14は、夫々のコード断片に対応する付加的な情報(メタデータ)を作成する。メタデータは、ソフトウェア部品を後述する元のプログラムの構造を図示したクラス図および元のプログラムの機能の構造を図示したフィーチャモデルに対応付けるための情報であり、具体的には、メタデータ生成部14により、コード断片の周辺のソースコードおよびコード断片中で使用されているデータから、元になった関数の呼び出し関係や呼び出し元・呼び出し先のコメントが抜き出されて作成される。図2のソースコードの例においては、コメント文「センサーデータのバックアップ」の関数のコード断片に関しては、該コード断片に対するメタデータには、例えば、該コメント文と、代入先のデータ「sdata_bk」および代入されるデータ「sdata」とが記述される。作成されたメタデータは、コード断片から作成されるソースコードの部品と対にしてソフトウェア部品管理部12に送られる。
ソフトウェア部品管理部12は、メタデータに記述される情報を基に、ソフトウェア部品を、ソフトウェア仕様保存庫22に格納される元のプログラムのクラス図および元のプログラムのフィーチャモデルに対応付ける。
まず、クラス図への対応付けを説明する。クラス図は、クラス(名前、属性、および操作の観点から分類されたデータや機能の集まり)およびインターフェース(本段落のクラス図の説明では、操作のみの機能を指していう)の内容や相互関係などを表現することによりソフトウェアの構造を記述しているものである。
図3は、前述のセンサー入力に関するプログラムのクラス図の例を説明する図である。図3に示すクラス図は、クラスCと関連のあるクラスAは、インターフェースBを参照することによってクラスB1、クラスB2、およびクラスB3と関連を持つ、という構造をセンサー入力に関するプログラムが有しているということを表す。ソフトウェア部品管理部12は、ソフトウェア部品を、メタデータに記述される関数の呼び出し関係や呼び出し元・呼び出し先のコメントから判断して、クラスA、クラスB、クラスB1〜B3、およびクラスCに分類する。
このように、ソフトウェア部品管理部12が、クラス図中に表現されるインターフェースまたはクラスごとにソフトウェア部品を集約することによって、全てのソフトウェア部品は全体構造に従って体系化される。ここで、一つのソフトウェア部品が複数のクラス若しくはインターフェースに対応してもよい。
次に、フィーチャモデルへの対応付けを説明する。フィーチャモデルは、機能を表すフィーチャと呼ばれるボックスを、木構造で表示することで、プログラムの機能の構造を表現するモデルである。
図4に、前述のセンサー入力に関するプログラムのフィーチャモデルの例を示す。図4において、該プログラムは、フィーチャモデルの木構造の最上位に位置するフィーチャに示されるように、センサー入力にかかるものであり、センサー入力に関する機能は、温度センサーに関する機能とセンサーデータのバックアップ機能とに分類されている。さらに温度センサーに関する機能は、室外気温センサーに関する機能と、室内温度センサーに関する機能とに分けられ、室内温度センサーに関する機能は、床の温度センサー、天井の温度センサー、およびドアの温度センサーに関する機能にさらに分けられる。天井の温度センサーに関する機能と、ドアの温度センサーに関する機能とは、相互排他的なフィーチャとなっている。このようなフィーチャモデルに対して、例えば、図2に示されるソースコードにおいて、コメント文「センサーデータのバックアップ」の部分の関数から作成されるソフトウェア部品は、メタデータに該コメント文が記述されているので、ソフトウェア部品管理部12は、該メタデータを参照して、該ソフトウェア部品をフィーチャ「センサーデータのバックアップ」に分類する。
このように、機能を階層構造で表されたフィーチャに、ソフトウェア部品を割り当てていくことで、それぞれの部品をソフトウェアのかかわりのある機能に対応付けられる。フィーチャモデルに関しても、1つの部品が複数の機能にかかわっている場合は、1つの部品が複数のフィーチャに割り当てられてもよい。
対応付け結果修正操作部15は、使用者からの入力に応じて、ソフトウェアの部品と元のプログラムのクラス図およびフィーチャモデルとの対応付けの結果を適宜変更し、修正する。
ソフトウェア部品選択支援部13は、ソフトウェア部品抽出支援装置1の使用者が必要とするソフトウェアの機能の一部または全部を新規にフィーチャモデルまたはフィーチャモデル並びにクラス図として入力されることにより、該フィーチャモデルのソフトウェアに必要なソフトウェア部品で、かつソフトウェア部品管理部12に保持されているソフトウェア部品を出力する。
次に、本発明にかかるソフトウェア部品抽出支援装置の実施の形態の動作を説明する。図5は、実施の形態のソフトウェア部品抽出支援装置がソースコードからコード断片を切り出し、クラス図およびフィーチャモデルと対応付けられたソフトウェア部品としてソフトウェア部品管理部12に登録されるまでの動作を説明するフローチャートである。
図5において、ソースコード抽出部10は、ソースコード保存庫からソースコードを取り出して該ソースコードを断片化し、同時にメタデータ生成部14は夫々のコード断片に対応するメタデータを作成する(ステップS1)。
次に、ソフトウェア部品作成部11は、夫々のコード断片に対して、適切なインターフェースを基本インターフェース保存庫より取り出して付加し、コード断片を部品化してソフトウェア部品とする(ステップS2)。
次に、ソフトウェア部品管理部12は、ソフトウェア仕様保存庫より元のプログラムのクラス図を取り出し、夫々のソフトウェア部品に対応するメタデータに基づいて、ソフトウェア部品をクラス図に対応付ける(ステップS3)。
続いて、ソフトウェア部品管理部12は、ソフトウェア仕様保存庫より元のプログラムのフィーチャモデルを取り出し、夫々のソフトウェア部品に対応するメタデータに基づいて、ソフトウェア部品をフィーチャモデルに対応付ける(ステップS4)。
そして、ソフトウェア部品管理部12は、クラス図およびフィーチャモデルと対応付けられた夫々のソフトウェア部品をソフトウェア部品管理部12内に登録し(ステップS5)、動作を終了する。
使用者がソフトウェア部品選択支援部13に対して新規のフィーチャモデル、またはフィーチャモデル並びにクラス図を入力すると、上述の動作によりソフトウェア部品管理部12内に登録されたソフトウェア部品から、必要とするソフトウェアの機能の一部または全部のソフトウェア部品が選択されて出力される。また、使用者は、対応付け結果修正操作部15を操作することにより、ソフトウェア部品とクラス図およびフィーチャモデルとの対応付け結果を修正することが可能である。
なお、本実施の形態においては、プログラムの構造を表現するためにクラス図を用いる構成としたが、プログラムの構造をわかりやすく表現できる手法であれば、例えばオブジェクト図のように他の手法を用いてもかまわない。また、本実施の形態にて使用される機能構造の表現方法であるフィーチャモデルに関しても、プログラムの機能の構造をわかりやすく表現できる手法であればフィーチャモデルにこだわる必要はない。
このように、実施の形態にかかる本発明のソフトウェア部品抽出支援装置は、既存のソフトウェアのソースコードから切り出したコード断片からソフトウェア部品を作成し、該ソフトウェア部品を元のソフトウェアのソースコードの構造を表現する構造図の構成要素および機能の構造を表現する機能構造図の構成要素の両方に対応付けて保持するので、使用者が元のプログラムの開発者でなくても各ソフトウェア部品の元のプログラムの構造上および機能構造上の位置づけを直感的に把握することができるので、ソフトウェア部品を切り出し、該ソフトウェア部品を効率よく再利用できる部品管理機構を備えたソフトウェア部品抽出支援装置を得ることができる。
以上のように、本発明にかかるソフトウェア部品抽出支援装置は、ソフトウェアの再利用のために既存のソフトウェアのソースコードを部品化する装置に適用して好適である。
本発明の実施の形態にかかるソフトウェア部品抽出支援装置の機能構成図である。 コード断片が切り出される前の一部のソースコードの例を示す図である。 コード断片が切り出される前のソースコードのクラス図の例を示す図である。 コード断片が切り出される前のソースコードのフィーチャモデルの例を示す図である。 本発明の実施の形態にかかるソフトウェア部品抽出支援装置の動作を説明するフローチャートである。
符号の説明
1 ソフトウェア部品抽出支援装置
10 ソースコード抽出部
11 ソフトウェア部品作成部
12 ソフトウェア部品管理部
13 ソフトウェア部品選択支援部
14 メタデータ生成部
15 対応付け結果修正操作部
20 ソースコード保存庫
21 基本インターフェース保存庫
22 ソフトウェア仕様保存庫

Claims (3)

  1. ソフトウェアのソースコードを切り出して部品化するソフトウェア部品抽出支援装置において、
    ソースコード内のデータ入出力と制御構造に着目してコード断片を切り出すソースコード抽出部と、
    該コード断片に基本インターフェースを付与してソフトウェア部品を作成するソフトウェア部品作成部と、
    該ソフトウェア部品を、元のソースコードの構造を表現する構造図の構成要素および機能の構造を表現する機能構造図の構成要素に対応付けて保持するソフトウェア部品管理部と、
    を備え、
    前記ソースコード抽出部により切り出された夫々のコード断片に対して、該コード断片の元になった関数の呼び出し関係および呼び出し元・呼び出し先のコメントをソースコードから抽出してメタデータを作成するメタデータ生成部をさらに備え、
    前記ソフトウェア部品管理部は、前記メタデータを参照して前記ソフトウェア部品を前記構造図および機能構造図の構成要素に対応付ける、
    ことを特徴とするソフトウェア部品抽出支援装置。
  2. 前記ソフトウェア部品管理部に保持されている、ソフトウェア部品と前記構造図および機能構造図の構成要素との対応関係を、使用者の入力により変化させる対応付け結果修正操作部をさらに備えることを特徴とする請求項1に記載のソフトウェア部品抽出支援装置。
  3. 新規ソフトウェアの構造図および機能構造図を入力として受け付けると、入力された構造図および機能構造図の夫々の構成要素に対応するソフトウェア部品を前記ソフトウェア部品管理部から選択して出力するソフトウェア部品選択支援部をさらに備えることを特徴とする請求項1または2に記載のソフトウェア部品抽出支援装置。
JP2007309042A 2007-11-29 2007-11-29 ソフトウェア部品抽出支援装置 Expired - Fee Related JP5041990B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007309042A JP5041990B2 (ja) 2007-11-29 2007-11-29 ソフトウェア部品抽出支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007309042A JP5041990B2 (ja) 2007-11-29 2007-11-29 ソフトウェア部品抽出支援装置

Publications (2)

Publication Number Publication Date
JP2009134445A JP2009134445A (ja) 2009-06-18
JP5041990B2 true JP5041990B2 (ja) 2012-10-03

Family

ID=40866273

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007309042A Expired - Fee Related JP5041990B2 (ja) 2007-11-29 2007-11-29 ソフトウェア部品抽出支援装置

Country Status (1)

Country Link
JP (1) JP5041990B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5462213B2 (ja) * 2011-03-28 2014-04-02 株式会社日立製作所 ソフトウェア部品作成支援装置および方法
US10621526B2 (en) * 2015-11-09 2020-04-14 Dassault Systemes Americas Corp. Exporting hierarchical data from a product lifecycle management (PLM) system to a source code management (SCM) system
JP6665678B2 (ja) 2016-05-17 2020-03-13 富士通株式会社 メタデータ登録方法、メタデータ登録プログラムおよびメタデータ登録装置
JP7134068B2 (ja) * 2018-11-07 2022-09-09 三菱電機株式会社 プロダクトライン開発支援装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62177627A (ja) * 1986-01-31 1987-08-04 Hitachi Ltd 部品切り出しプログラム作成方法
JPH0311426A (ja) * 1989-06-08 1991-01-18 Hitachi Ltd 動的システムのソフトウェア部品再利用方法
JPH06214768A (ja) * 1993-01-13 1994-08-05 Hitachi Software Eng Co Ltd プログラム部品作成方法及びプログラム自動生成方法
JPH0916389A (ja) * 1995-07-03 1997-01-17 Nippon Telegr & Teleph Corp <Ntt> プログラム部品自動生成方法及び装置
JPH09134282A (ja) * 1995-11-08 1997-05-20 Hitachi Ltd プログラム作成方法
JP3335851B2 (ja) * 1996-09-10 2002-10-21 日本電気通信システム株式会社 ソフトウェアコーディングシステム
JP2003202984A (ja) * 2001-10-26 2003-07-18 Hitachi Ltd プログラム制御方法およびその実施システム並びにその処理プログラム
JP4001286B2 (ja) * 2003-06-23 2007-10-31 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム保守支援装置、プログラム保守支援方法、およびプログラム
JP2006079212A (ja) * 2004-09-07 2006-03-23 Sony Global Solutions Kk プログラムの設計管理方法並びにプログラムの設計管理システム、プログラムの設計管理装置、プログラムの設計管理プログラム

Also Published As

Publication number Publication date
JP2009134445A (ja) 2009-06-18

Similar Documents

Publication Publication Date Title
US9208059B2 (en) ETL debugger
JP2009116733A (ja) アプリケーション検索システム、アプリケーション検索方法、モニタ端末、検索サーバおよびプログラム
JP5041990B2 (ja) ソフトウェア部品抽出支援装置
WO2020075532A1 (ja) システム移行支援装置、システム移行支援方法及びプログラム
Zhang et al. Automated Extraction of Grammar Optimization Rule Configurations for Metamodel-Grammar Co-evolution
JP2005234959A (ja) テンプレート作成装置、プログラム、および方法
WO2004051470A1 (ja) プログラム自動変換方法およびプログラム自動変換装置
JP2005222221A (ja) 組込コントローラ開発ツール、組込コントローラ、及び組込コントローラ開発プロセス
JP2010218333A (ja) 解析ルール生成装置、解析ルール生成方法、解析ルール生成プログラム及び記録媒体
JP5275087B2 (ja) プログラム生成装置およびブロック線図生成装置
JP2008181311A (ja) リファクタリング支援装置及びプログラム
JP2016051367A (ja) データ解析装置、データ解析方法、および、プログラム。
JP5605370B2 (ja) システムモデル管理支援システム、システムモデル管理支援方法およびプログラム
JP2009211143A (ja) 情報処理装置および情報処理プログラム
TW201537372A (zh) 動作設計裝置及動作設計程式產品
JP6301783B2 (ja) ソースコード自動生成装置、及びプログラム
JP2006079484A (ja) システム移行に伴うソースプログラム変換プログラム
JPH0667871A (ja) プログラム自動更新方式
US11789727B2 (en) Conversion apparatus, conversion method and program
JP2007219586A (ja) ソースコード解析装置
JP2011113298A (ja) 流用ソースコード解析システム及びプログラム並びに記録媒体
JP5846853B2 (ja) 支援システム、支援方法、及び支援プログラム
JPWO2009128465A1 (ja) サービス変更部品生成システム、方法及びプログラム
JP2007164708A (ja) 変換データ生成装置、データ変換システム、及びこれらの方法並びにそのプログラム
JP2003177923A (ja) ポーティング支援システムにおける予約語変換方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100406

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120321

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120511

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120612

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120710

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150720

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees